nova-tcp 1.0

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 +7 -0
  2. data/bin/nova-recv +43 -0
  3. data/bin/nova-send +60 -0
  4. metadata +47 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 1f8fe2b622d887c5011abd418e945a4fa1b7b343
4
+ data.tar.gz: 87aa1091cf3dc63afba12c1a775623e432eda668
5
+ SHA512:
6
+ metadata.gz: 95917df98fbb39c3a7ab380b1522b6879ef28583de82c4bbde781557639b30ff580585f9b6344f81a6f47822fc6b381420fbdd7513842de1370b4fae1db584fb
7
+ data.tar.gz: 3da52b29c3c3ef9aad775b9d529287601e96581778af50aeb1b25317769edf9224a5f96fc0324886b66ace232ae4bebcf2198b93ee4579f526a3a9b868b20bc8
data/bin/nova-recv ADDED
@@ -0,0 +1,43 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'socket'
4
+ require 'base64'
5
+
6
+ unless ARGV.length==1
7
+ abort "USAGE: nova-recv PORT"
8
+ end
9
+
10
+ def puts(s=nil); $stdout << (s ? "#{Time.now} :: #{s}" : "") << "\n" ;end
11
+
12
+ port = ARGV[0].to_i
13
+ ARGV.clear
14
+
15
+ $server = TCPServer.new(port)
16
+
17
+ puts "Hosting server on :#{port}"
18
+ puts "Waiting for connection"
19
+
20
+ c = $server.accept
21
+
22
+ puts "Got connection from #{c.peeraddr[-1]}"
23
+ puts "Waiting for data"
24
+
25
+ def socket_eof
26
+ puts "Client has finished transmission"
27
+ exit
28
+ end
29
+
30
+ loop do
31
+ fname = c.gets.chomp
32
+ fname=="SOCKET_EOF"&&socket_eof
33
+ puts "Receiving file #{fname}"
34
+ len = c.gets.chomp.to_i
35
+ content = ""
36
+ begin
37
+ content << c.read_nonblock(len)
38
+ rescue IO::EAGAINWaitReadable
39
+ retry
40
+ end
41
+ File.write(fname,Base64.decode64(content))
42
+ c.puts("ok")
43
+ end
data/bin/nova-send ADDED
@@ -0,0 +1,60 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ =begin
4
+
5
+ DEVELOPER COMMENTS
6
+
7
+ COOKIE(SHA256):
8
+ /home/$USER/.nova.cookie (for permanent file sharing systems)
9
+
10
+ USAGE:
11
+ ruby __FILE__ address port file1 file2 ... fileN
12
+
13
+ SENDING FORMAT:
14
+
15
+ $FILENAME\n
16
+ $LENGTH\n
17
+ $FILE_BASE64
18
+
19
+ =end
20
+
21
+ require 'socket'
22
+ require 'base64'
23
+
24
+ unless ARGV.length >= 3 # address, port, file(s)
25
+ abort("USAGE: nova-send ADDRESS PORT FILE1 FILE2 ... FILEn")
26
+ end
27
+
28
+ addr, port = ARGV
29
+ files = ARGV.drop(2)
30
+
31
+ ARGV.clear
32
+
33
+ def puts(s=nil); $stdout << (s ? "#{Time.now} :: #{s}" : "") << "\n" ;end
34
+
35
+ puts "Connecting to #{addr}:#{port}..."
36
+
37
+ begin
38
+ $sock = TCPSocket.new(addr, port.to_i)
39
+ rescue Errno::ECONNREFUSED
40
+ abort("Could not connect to #{addr}:#{port}. Please check your settings")
41
+ else
42
+ puts "Connected."
43
+ end
44
+
45
+ files.each_with_index do |file, index|
46
+ puts "Preparing transfer of file #{index+1}/#{files.length}"
47
+ fname,content = [ file , Base64.encode64( File.read(file) ) ]
48
+ len = content.length
49
+ puts "Sending #{file}"
50
+ $sock.puts [fname,len,content].join("\n")
51
+ resp = $sock.gets.chomp
52
+ case resp
53
+ when "ok"
54
+ puts "Sending complete"
55
+ when "err"
56
+ puts "SENDING FAILED"
57
+ abort
58
+ end
59
+ $sock.puts("SOCKET_EOF");exit
60
+ end
metadata ADDED
@@ -0,0 +1,47 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: nova-tcp
3
+ version: !ruby/object:Gem::Version
4
+ version: '1.0'
5
+ platform: ruby
6
+ authors:
7
+ - sesshomariu
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-03-23 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Can transfer multiple files at once.
14
+ email:
15
+ executables:
16
+ - nova-send
17
+ - nova-recv
18
+ extensions: []
19
+ extra_rdoc_files: []
20
+ files:
21
+ - bin/nova-recv
22
+ - bin/nova-send
23
+ homepage:
24
+ licenses:
25
+ - MIT
26
+ metadata: {}
27
+ post_install_message:
28
+ rdoc_options: []
29
+ require_paths:
30
+ - lib
31
+ required_ruby_version: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - ">="
34
+ - !ruby/object:Gem::Version
35
+ version: '0'
36
+ required_rubygems_version: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ requirements: []
42
+ rubyforge_project:
43
+ rubygems_version: 2.6.8
44
+ signing_key:
45
+ specification_version: 4
46
+ summary: Nova Filesharing
47
+ test_files: []