nova-tcp 1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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: []
|