nova-tcp 1.0 → 1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/bin/nova-recv +13 -11
  3. data/bin/nova-send +25 -4
  4. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1f8fe2b622d887c5011abd418e945a4fa1b7b343
4
- data.tar.gz: 87aa1091cf3dc63afba12c1a775623e432eda668
3
+ metadata.gz: ddb256dd595fee01e634e71ae00eb6f07ea78e9c
4
+ data.tar.gz: 28b9e8824315c8d754ad2c45857ef40671efc2a7
5
5
  SHA512:
6
- metadata.gz: 95917df98fbb39c3a7ab380b1522b6879ef28583de82c4bbde781557639b30ff580585f9b6344f81a6f47822fc6b381420fbdd7513842de1370b4fae1db584fb
7
- data.tar.gz: 3da52b29c3c3ef9aad775b9d529287601e96581778af50aeb1b25317769edf9224a5f96fc0324886b66ace232ae4bebcf2198b93ee4579f526a3a9b868b20bc8
6
+ metadata.gz: 1a30becc06357bd9476598dc96a50321420e454132bff6ba4d9821a5fefa4b3d3ae89003cc1b9bd1ad0834801d47bbcdd2a8f09065e97d92d6302e133d1173b3
7
+ data.tar.gz: d90a9a63a92bdb86d913f6ba893786b97c025140c2e4b11d338805ce4b62b48f12736b114cd308eaa7d09b8dcdb0abba985e99692cc61a6c29fad9d82e9b8898
@@ -2,6 +2,7 @@
2
2
 
3
3
  require 'socket'
4
4
  require 'base64'
5
+ require 'digest'
5
6
 
6
7
  unless ARGV.length==1
7
8
  abort "USAGE: nova-recv PORT"
@@ -22,22 +23,23 @@ c = $server.accept
22
23
  puts "Got connection from #{c.peeraddr[-1]}"
23
24
  puts "Waiting for data"
24
25
 
25
- def socket_eof
26
- puts "Client has finished transmission"
27
- exit
28
- end
26
+ md5 = {}
29
27
 
30
28
  loop do
31
29
  fname = c.gets.chomp
32
- fname=="SOCKET_EOF"&&socket_eof
30
+ fname=="SOCKET_EOF"&&(break)
33
31
  puts "Receiving file #{fname}"
34
32
  len = c.gets.chomp.to_i
35
- content = ""
36
- begin
37
- content << c.read_nonblock(len)
38
- rescue IO::EAGAINWaitReadable
39
- retry
40
- end
33
+ content = c.gets.chomp
41
34
  File.write(fname,Base64.decode64(content))
35
+ md5[fname] = Digest::MD5.hexdigest(File.read(fname))
42
36
  c.puts("ok")
37
+ end
38
+
39
+ printf("\n")
40
+ printf("Check your MD5s!\n")
41
+ md5.each_pair do |k,v|
42
+ printf("%s:\n",k)
43
+ printf(" %s\n",v)
44
+ printf("\n")
43
45
  end
@@ -1,3 +1,4 @@
1
+
1
2
  #!/usr/bin/env ruby
2
3
 
3
4
  =begin
@@ -20,13 +21,20 @@
20
21
 
21
22
  require 'socket'
22
23
  require 'base64'
24
+ require 'digest'
23
25
 
24
26
  unless ARGV.length >= 3 # address, port, file(s)
25
27
  abort("USAGE: nova-send ADDRESS PORT FILE1 FILE2 ... FILEn")
26
28
  end
27
29
 
28
30
  addr, port = ARGV
29
- files = ARGV.drop(2)
31
+ files_rel = ARGV.drop(2)
32
+
33
+ files = []
34
+
35
+ for f in files_rel
36
+ files.concat Dir.glob(f)
37
+ end
30
38
 
31
39
  ARGV.clear
32
40
 
@@ -42,9 +50,13 @@ else
42
50
  puts "Connected."
43
51
  end
44
52
 
53
+ md5 = {}
54
+
45
55
  files.each_with_index do |file, index|
46
56
  puts "Preparing transfer of file #{index+1}/#{files.length}"
47
- fname,content = [ file , Base64.encode64( File.read(file) ) ]
57
+ raw_content = File.read(file)
58
+ fname,content = [ file , Base64.encode64(raw_content).gsub("\n","") ]
59
+ md5[file] = Digest::MD5.hexdigest(raw_content)
48
60
  len = content.length
49
61
  puts "Sending #{file}"
50
62
  $sock.puts [fname,len,content].join("\n")
@@ -55,6 +67,15 @@ files.each_with_index do |file, index|
55
67
  when "err"
56
68
  puts "SENDING FAILED"
57
69
  abort
58
- end
59
- $sock.puts("SOCKET_EOF");exit
70
+ end
71
+ end
72
+
73
+ $sock.puts("SOCKET_EOF")
74
+
75
+ printf("\n")
76
+ printf("Check your MD5s!\n")
77
+ md5.each_pair do |k,v|
78
+ printf("%s:\n",k)
79
+ printf(" %s\n",v)
80
+ printf("\n")
60
81
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nova-tcp
3
3
  version: !ruby/object:Gem::Version
4
- version: '1.0'
4
+ version: '1.1'
5
5
  platform: ruby
6
6
  authors:
7
7
  - sesshomariu