nova-tcp 1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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: []