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.
- checksums.yaml +7 -0
- data/bin/nova-recv +43 -0
- data/bin/nova-send +60 -0
- 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: []
|