rncp 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/rncp +5 -0
- data/lib/rncp.rb +39 -0
- data/lib/rncp/files.rb +65 -0
- data/lib/rncp/listen_cmd.rb +26 -0
- data/lib/rncp/listener.rb +84 -0
- data/lib/rncp/networking.rb +54 -0
- data/lib/rncp/params.rb +22 -0
- data/lib/rncp/poll_cmd.rb +27 -0
- data/lib/rncp/push_cmd.rb +29 -0
- data/lib/rncp/pusher.rb +109 -0
- data/lib/rncp/send_cmd.rb +30 -0
- data/lib/rncp/version.rb +17 -0
- metadata +90 -0
data/bin/rncp
ADDED
data/lib/rncp.rb
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
# RNCP - a fast file copy tool for LANs port in Ruby
|
2
|
+
#
|
3
|
+
# Copyright (c) 2013 Jeff Parent
|
4
|
+
#
|
5
|
+
# This program is free software: you can redistribute it and/or modify
|
6
|
+
# it under the terms of the GNU General Public License as published by
|
7
|
+
# the Free Software Foundation, either version 2 of the License or
|
8
|
+
# (at your option) any later version.
|
9
|
+
#
|
10
|
+
# This program is distributed in the hope that it will be useful,
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
+
# GNU General Public License for more details.
|
14
|
+
require 'rncp/version'
|
15
|
+
|
16
|
+
require 'clamp'
|
17
|
+
|
18
|
+
require 'rncp/listen_cmd'
|
19
|
+
require 'rncp/send_cmd'
|
20
|
+
require 'rncp/poll_cmd'
|
21
|
+
require 'rncp/push_cmd'
|
22
|
+
|
23
|
+
module RNCP
|
24
|
+
def self.version_string
|
25
|
+
"RNCP version #{RNCP::VERSION}"
|
26
|
+
end
|
27
|
+
|
28
|
+
module Cli
|
29
|
+
class CommandLineRunner < Clamp::Command
|
30
|
+
self.default_subcommand = "listen"
|
31
|
+
|
32
|
+
subcommand 'listen', "runs in listener mode, waits for connection", ListenCommand
|
33
|
+
subcommand 'send', "sends files to a listener mode receiver", SendCommand
|
34
|
+
subcommand 'push', "broadcasts for clients, waits for connection", PushCommand
|
35
|
+
subcommand 'poll', "waits for broadcast, connects to broadcaster", PollCommand
|
36
|
+
end
|
37
|
+
end # Cli
|
38
|
+
end
|
39
|
+
|
data/lib/rncp/files.rb
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
# RNCP - a fast file copy tool for LANs port in Ruby
|
2
|
+
#
|
3
|
+
# Copyright (c) 2013 Jeff Parent
|
4
|
+
#
|
5
|
+
# This program is free software: you can redistribute it and/or modify
|
6
|
+
# it under the terms of the GNU General Public License as published by
|
7
|
+
# the Free Software Foundation, either version 2 of the License or
|
8
|
+
# (at your option) any later version.
|
9
|
+
#
|
10
|
+
# This program is distributed in the hope that it will be useful,
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
+
# GNU General Public License for more details.
|
14
|
+
require 'zlib'
|
15
|
+
require 'archive/tar/minitar'
|
16
|
+
require 'stringio'
|
17
|
+
|
18
|
+
module RNCP
|
19
|
+
module Files
|
20
|
+
def directory_list(path)
|
21
|
+
return [path].flatten if File.directory?(path) == false
|
22
|
+
|
23
|
+
data = []
|
24
|
+
Dir["#{path}**/*", "#{path}**/.*"].each do |entry|
|
25
|
+
next if entry[/^.*\/\.+$/]
|
26
|
+
data << directory_list(entry)
|
27
|
+
end
|
28
|
+
return data.flatten
|
29
|
+
end # directory_list
|
30
|
+
|
31
|
+
def tar(files)
|
32
|
+
data = StringIO.new("")
|
33
|
+
sgz = Zlib::GzipWriter.new(data)
|
34
|
+
tar = Archive::Tar::Minitar::Output.new sgz
|
35
|
+
|
36
|
+
puts "[#] start writing files"
|
37
|
+
files.each do |f|
|
38
|
+
directory_list(f).each do |entry|
|
39
|
+
puts "[*] adding: #{entry}"
|
40
|
+
Archive::Tar::Minitar.pack_file(entry, tar)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
sgz.flush
|
45
|
+
sgz.close
|
46
|
+
sgz = nil
|
47
|
+
|
48
|
+
data.rewind
|
49
|
+
return data
|
50
|
+
end # tar
|
51
|
+
|
52
|
+
def untar(data)
|
53
|
+
sgz = Zlib::GzipReader.new(StringIO.new(data))
|
54
|
+
tar = Archive::Tar::Minitar::Input.new sgz
|
55
|
+
|
56
|
+
tar.each do |entry|
|
57
|
+
puts "[*] #{entry.name}"
|
58
|
+
tar.extract_entry "./", entry
|
59
|
+
end
|
60
|
+
|
61
|
+
sgz.close
|
62
|
+
end # untar
|
63
|
+
|
64
|
+
end # Files
|
65
|
+
end # RNCP
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# RNCP - a fast file copy tool for LANs port in Ruby
|
2
|
+
#
|
3
|
+
# Copyright (c) 2013 Jeff Parent
|
4
|
+
#
|
5
|
+
# This program is free software: you can redistribute it and/or modify
|
6
|
+
# it under the terms of the GNU General Public License as published by
|
7
|
+
# the Free Software Foundation, either version 2 of the License or
|
8
|
+
# (at your option) any later version.
|
9
|
+
#
|
10
|
+
# This program is distributed in the hope that it will be useful,
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
+
# GNU General Public License for more details.
|
14
|
+
require 'rncp/listener'
|
15
|
+
|
16
|
+
module RNCP
|
17
|
+
module Cli
|
18
|
+
class ListenCommand < Clamp::Command
|
19
|
+
|
20
|
+
def execute
|
21
|
+
RNCP::NcpListener.new.listen
|
22
|
+
end
|
23
|
+
|
24
|
+
end # ListenCommand
|
25
|
+
end # Cli
|
26
|
+
end # RNCP
|
@@ -0,0 +1,84 @@
|
|
1
|
+
# RNCP - a fast file copy tool for LANs port in Ruby
|
2
|
+
#
|
3
|
+
# Copyright (c) 2013 Jeff Parent
|
4
|
+
#
|
5
|
+
# This program is free software: you can redistribute it and/or modify
|
6
|
+
# it under the terms of the GNU General Public License as published by
|
7
|
+
# the Free Software Foundation, either version 2 of the License or
|
8
|
+
# (at your option) any later version.
|
9
|
+
#
|
10
|
+
# This program is distributed in the hope that it will be useful,
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
+
# GNU General Public License for more details.
|
14
|
+
require 'rncp/networking'
|
15
|
+
require 'rncp/files'
|
16
|
+
|
17
|
+
module RNCP
|
18
|
+
class NcpListener
|
19
|
+
include RNCP::Networking
|
20
|
+
include RNCP::Files
|
21
|
+
|
22
|
+
def initialize
|
23
|
+
end
|
24
|
+
|
25
|
+
def listen
|
26
|
+
puts "[#] rncp Listener: creating new connection"
|
27
|
+
l = bind_tcp
|
28
|
+
puts "[*] waiting for connections"
|
29
|
+
|
30
|
+
sock, info = l.accept
|
31
|
+
printf "[*] connection from %s:%s\n", info.ip_address, info.ip_port
|
32
|
+
puts "[*] receiving..."
|
33
|
+
|
34
|
+
data = ""
|
35
|
+
while (sock.eof? == false)
|
36
|
+
data += sock.gets()
|
37
|
+
end
|
38
|
+
|
39
|
+
untar data
|
40
|
+
puts "[*] received: "
|
41
|
+
|
42
|
+
puts "[#] finished"
|
43
|
+
sock.close
|
44
|
+
l.close
|
45
|
+
end # listen
|
46
|
+
|
47
|
+
def poll
|
48
|
+
addr = nil
|
49
|
+
msock = join_multicast
|
50
|
+
puts "[*] waiting for something-cast"
|
51
|
+
loop do
|
52
|
+
begin
|
53
|
+
data, addr = msock.recvfrom 1024
|
54
|
+
if addr[1] == RNCP::PORT
|
55
|
+
puts "[*] found pusher at #{addr[3]}:#{addr[1]}"
|
56
|
+
puts "[#] Anouncement: #{data}"
|
57
|
+
break
|
58
|
+
else
|
59
|
+
puts "[?] received garbase from #{addr}"
|
60
|
+
end
|
61
|
+
rescue Execeptione => e
|
62
|
+
puts "exception #{e}"
|
63
|
+
end # begin
|
64
|
+
end #loop
|
65
|
+
|
66
|
+
msock.close if msock.nil? == false
|
67
|
+
|
68
|
+
sock = TCPSocket::new addr[3], addr[1]
|
69
|
+
sock.send "I am ready!", 0
|
70
|
+
|
71
|
+
data = ""
|
72
|
+
while (sock.eof? == false)
|
73
|
+
data += sock.gets()
|
74
|
+
end
|
75
|
+
|
76
|
+
untar data
|
77
|
+
puts "[*] received: "
|
78
|
+
|
79
|
+
puts "[#] finished"
|
80
|
+
sock.close
|
81
|
+
end # poll
|
82
|
+
|
83
|
+
end # NcpListener
|
84
|
+
end # RNCP
|
@@ -0,0 +1,54 @@
|
|
1
|
+
# RNCP - a fast file copy tool for LANs port in Ruby
|
2
|
+
#
|
3
|
+
# Copyright (c) 2013 Jeff Parent
|
4
|
+
#
|
5
|
+
# This program is free software: you can redistribute it and/or modify
|
6
|
+
# it under the terms of the GNU General Public License as published by
|
7
|
+
# the Free Software Foundation, either version 2 of the License or
|
8
|
+
# (at your option) any later version.
|
9
|
+
#
|
10
|
+
# This program is distributed in the hope that it will be useful,
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
+
# GNU General Public License for more details.
|
14
|
+
require 'socket'
|
15
|
+
require 'ipaddr'
|
16
|
+
require 'rncp/params'
|
17
|
+
|
18
|
+
module RNCP
|
19
|
+
module Networking
|
20
|
+
def bind_tcp
|
21
|
+
sock = Socket::new Socket::AF_INET, Socket::SOCK_STREAM, 0
|
22
|
+
opts = [1].pack("i")
|
23
|
+
addr = [Socket::AF_INET, RNCP::PORT, 0, 0, 0, 0, 0, 0]
|
24
|
+
.pack("snCCCCNN")
|
25
|
+
|
26
|
+
sock.setsockopt Socket::SOL_SOCKET, Socket::SO_REUSEADDR, opts
|
27
|
+
sock.bind addr
|
28
|
+
sock.listen 1
|
29
|
+
return sock
|
30
|
+
end # bind_tcp
|
31
|
+
|
32
|
+
def join_multicast
|
33
|
+
msock = UDPSocket.new
|
34
|
+
membership = IPAddr.new(RNCP::IPV4_GROUP).hton +
|
35
|
+
IPAddr.new("0.0.0.0").hton
|
36
|
+
|
37
|
+
puts "[#] Joining Multicast group"
|
38
|
+
msock.setsockopt :IPPROTO_IP, :IP_ADD_MEMBERSHIP, membership
|
39
|
+
msock.setsockopt :SOL_SOCKET, :SO_REUSEADDR, 1
|
40
|
+
msock.bind "0.0.0.0", RNCP::PORT
|
41
|
+
|
42
|
+
return msock
|
43
|
+
end # join_multicast
|
44
|
+
|
45
|
+
def bind_multicast
|
46
|
+
msock = UDPSocket.open
|
47
|
+
msock.setsockopt :IPPROTO_IP, :IP_MULTICAST_TTL, [32].pack("i")
|
48
|
+
msock.setsockopt :SOL_SOCKET, :SO_REUSEADDR, 1
|
49
|
+
msock.bind '', RNCP::PORT
|
50
|
+
msock.setsockopt :IPPROTO_IP, :IP_MULTICAST_LOOP, 1
|
51
|
+
return msock
|
52
|
+
end # bind_multicast
|
53
|
+
end # Networking
|
54
|
+
end # RNCP
|
data/lib/rncp/params.rb
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
# RNCP - a fast file copy tool for LANs port in Ruby
|
2
|
+
#
|
3
|
+
# Copyright (c) 2013 Jeff Parent
|
4
|
+
#
|
5
|
+
# This program is free software: you can redistribute it and/or modify
|
6
|
+
# it under the terms of the GNU General Public License as published by
|
7
|
+
# the Free Software Foundation, either version 2 of the License or
|
8
|
+
# (at your option) any later version.
|
9
|
+
#
|
10
|
+
# This program is distributed in the hope that it will be useful,
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
+
# GNU General Public License for more details.
|
14
|
+
require 'rncp/version'
|
15
|
+
|
16
|
+
module RNCP
|
17
|
+
IPV4_GROUP = '224.110.99.112'
|
18
|
+
IPV4_BC = '255.255.255.255'
|
19
|
+
PORT = 8002
|
20
|
+
MC_MSG = "Multicasting for rncp Version #{RNCP::VERSION}"
|
21
|
+
BC_MSG = "Broadcasting for rncp Version #{RNCP::VERSION}"
|
22
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# RNCP - a fast file copy tool for LANs port in Ruby
|
2
|
+
#
|
3
|
+
# Copyright (c) 2013 Jeff Parent
|
4
|
+
#
|
5
|
+
# This program is free software: you can redistribute it and/or modify
|
6
|
+
# it under the terms of the GNU General Public License as published by
|
7
|
+
# the Free Software Foundation, either version 2 of the License or
|
8
|
+
# (at your option) any later version.
|
9
|
+
#
|
10
|
+
# This program is distributed in the hope that it will be useful,
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
+
# GNU General Public License for more details.
|
14
|
+
require 'rncp/listener'
|
15
|
+
|
16
|
+
module RNCP
|
17
|
+
module Cli
|
18
|
+
class PollCommand < Clamp::Command
|
19
|
+
|
20
|
+
def execute
|
21
|
+
RNCP::NcpListener.new.poll
|
22
|
+
end
|
23
|
+
|
24
|
+
end # PollCommand
|
25
|
+
end # Cli
|
26
|
+
end # RNCP
|
27
|
+
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# RNCP - a fast file copy tool for LANs port in Ruby
|
2
|
+
#
|
3
|
+
# Copyright (c) 2013 Jeff Parent
|
4
|
+
#
|
5
|
+
# This program is free software: you can redistribute it and/or modify
|
6
|
+
# it under the terms of the GNU General Public License as published by
|
7
|
+
# the Free Software Foundation, either version 2 of the License or
|
8
|
+
# (at your option) any later version.
|
9
|
+
#
|
10
|
+
# This program is distributed in the hope that it will be useful,
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
+
# GNU General Public License for more details.
|
14
|
+
require 'rncp/pusher'
|
15
|
+
|
16
|
+
module RNCP
|
17
|
+
module Cli
|
18
|
+
class PushCommand < Clamp::Command
|
19
|
+
|
20
|
+
parameter "FILE ...", "Files to send"
|
21
|
+
|
22
|
+
def execute
|
23
|
+
RNCP::NcpPusher.new.push file_list
|
24
|
+
end
|
25
|
+
|
26
|
+
end # PushCommand
|
27
|
+
end # Cli
|
28
|
+
end # RNCP
|
29
|
+
|
data/lib/rncp/pusher.rb
ADDED
@@ -0,0 +1,109 @@
|
|
1
|
+
# RNCP - a fast file copy tool for LANs port in Ruby
|
2
|
+
#
|
3
|
+
# Copyright (c) 2013 Jeff Parent
|
4
|
+
#
|
5
|
+
# This program is free software: you can redistribute it and/or modify
|
6
|
+
# it under the terms of the GNU General Public License as published by
|
7
|
+
# the Free Software Foundation, either version 2 of the License or
|
8
|
+
# (at your option) any later version.
|
9
|
+
#
|
10
|
+
# This program is distributed in the hope that it will be useful,
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
+
# GNU General Public License for more details.
|
14
|
+
require 'rncp/networking'
|
15
|
+
require 'stringio'
|
16
|
+
require 'fileutils'
|
17
|
+
require 'zlib'
|
18
|
+
require 'archive/tar/minitar'
|
19
|
+
require 'tempfile'
|
20
|
+
|
21
|
+
module RNCP
|
22
|
+
class NcpPusher
|
23
|
+
include RNCP::Networking
|
24
|
+
include RNCP::Files
|
25
|
+
|
26
|
+
def initialize
|
27
|
+
end
|
28
|
+
|
29
|
+
def send_to(ip, files)
|
30
|
+
begin
|
31
|
+
puts "[*] copying #{files} to ip : #{ip}"
|
32
|
+
sock = TCPSocket::new ip, RNCP::PORT
|
33
|
+
sock.setsockopt Socket::IPPROTO_TCP, Socket::TCP_NODELAY, 1
|
34
|
+
|
35
|
+
data = tar files
|
36
|
+
|
37
|
+
sock.send data.string, 0
|
38
|
+
sock.flush
|
39
|
+
|
40
|
+
rescue Exception => e
|
41
|
+
puts "[!] cannot create connection to host, bailing out"
|
42
|
+
puts e
|
43
|
+
ensure
|
44
|
+
sock.close if sock.nil? == false
|
45
|
+
puts "[#] finished"
|
46
|
+
end
|
47
|
+
end # send_to
|
48
|
+
|
49
|
+
def push(files)
|
50
|
+
begin
|
51
|
+
sock = nil
|
52
|
+
addr = nil
|
53
|
+
msock = bind_multicast
|
54
|
+
|
55
|
+
# check broadcast
|
56
|
+
|
57
|
+
if msock.nil? == true
|
58
|
+
puts "[!] cannot continue without atleast one announcement socket!"
|
59
|
+
return 1
|
60
|
+
end
|
61
|
+
|
62
|
+
dsock = bind_tcp
|
63
|
+
|
64
|
+
if dsock.nil? == true
|
65
|
+
puts "[!] cannot continue without data socket"
|
66
|
+
return -1
|
67
|
+
end
|
68
|
+
|
69
|
+
puts "[*] starting X-Casting, waiting for TCP connect"
|
70
|
+
while sock.nil? == true
|
71
|
+
if msock.nil? == false
|
72
|
+
msock.send RNCP::MC_MSG, 0, RNCP::IPV4_GROUP, RNCP::PORT
|
73
|
+
end
|
74
|
+
# Broadcast
|
75
|
+
puts "."
|
76
|
+
result = select( [dsock], nil, nil, 2 )
|
77
|
+
|
78
|
+
next if result.nil? == true
|
79
|
+
for inp in result[0]
|
80
|
+
if inp == dsock
|
81
|
+
sock, addr = dsock.accept
|
82
|
+
printf "[*] connection from %s:%s\n",
|
83
|
+
addr.ip_address, addr.ip_port
|
84
|
+
puts "[*] Client answer: #{sock.recv 1024}"
|
85
|
+
end # if
|
86
|
+
end # for inp
|
87
|
+
end # while sock.nil?
|
88
|
+
|
89
|
+
msock.close if msock.nil? == false
|
90
|
+
msock = nil
|
91
|
+
dsock.close if dsock.nil? == false
|
92
|
+
dsock = nil
|
93
|
+
|
94
|
+
data = tar files
|
95
|
+
|
96
|
+
sock.send data.string, 0
|
97
|
+
sock.flush
|
98
|
+
rescue Exception => e
|
99
|
+
puts "[!] cannot push data, bailing out"
|
100
|
+
puts e
|
101
|
+
ensure
|
102
|
+
sock.close if sock.nil? == false
|
103
|
+
puts "[*] finished"
|
104
|
+
msock.close if msock.nil? == false
|
105
|
+
dsock.close if dsock.nil? == false
|
106
|
+
end # begin
|
107
|
+
end # push
|
108
|
+
end # NcpPusher
|
109
|
+
end # RNCP
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# RNCP - a fast file copy tool for LANs port in Ruby
|
2
|
+
#
|
3
|
+
# Copyright (c) 2013 Jeff Parent
|
4
|
+
#
|
5
|
+
# This program is free software: you can redistribute it and/or modify
|
6
|
+
# it under the terms of the GNU General Public License as published by
|
7
|
+
# the Free Software Foundation, either version 2 of the License or
|
8
|
+
# (at your option) any later version.
|
9
|
+
#
|
10
|
+
# This program is distributed in the hope that it will be useful,
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
+
# GNU General Public License for more details.
|
14
|
+
require 'rncp/pusher'
|
15
|
+
|
16
|
+
module RNCP
|
17
|
+
module Cli
|
18
|
+
class SendCommand < Clamp::Command
|
19
|
+
|
20
|
+
parameter "IP", "Destination IP Address"
|
21
|
+
parameter "FILE ...", "Files to send"
|
22
|
+
|
23
|
+
def execute
|
24
|
+
RNCP::NcpPusher.new.send_to ip, file_list
|
25
|
+
end
|
26
|
+
|
27
|
+
end # ListenCommand
|
28
|
+
end # Cli
|
29
|
+
end # RNCP
|
30
|
+
|
data/lib/rncp/version.rb
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
# RNCP - a fast file copy tool for LANs port in Ruby
|
2
|
+
#
|
3
|
+
# Copyright (c) 2013 Jeff Parent
|
4
|
+
#
|
5
|
+
# This program is free software: you can redistribute it and/or modify
|
6
|
+
# it under the terms of the GNU General Public License as published by
|
7
|
+
# the Free Software Foundation, either version 2 of the License or
|
8
|
+
# (at your option) any later version.
|
9
|
+
#
|
10
|
+
# This program is distributed in the hope that it will be useful,
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
+
# GNU General Public License for more details.
|
14
|
+
|
15
|
+
module RNCP
|
16
|
+
VERSION = '0.0.1'
|
17
|
+
end
|
metadata
ADDED
@@ -0,0 +1,90 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: rncp
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Jeff Parent
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2013-03-20 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: minitar
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 0.5.4
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 0.5.4
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: clamp
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ~>
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0.3'
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0.3'
|
46
|
+
description: A port of NCP written in Ruby
|
47
|
+
email:
|
48
|
+
- jecxjo@sdf.lonestar.org
|
49
|
+
executables:
|
50
|
+
- rncp
|
51
|
+
extensions: []
|
52
|
+
extra_rdoc_files: []
|
53
|
+
files:
|
54
|
+
- lib/rncp.rb
|
55
|
+
- lib/rncp/params.rb
|
56
|
+
- lib/rncp/listener.rb
|
57
|
+
- lib/rncp/files.rb
|
58
|
+
- lib/rncp/pusher.rb
|
59
|
+
- lib/rncp/listen_cmd.rb
|
60
|
+
- lib/rncp/poll_cmd.rb
|
61
|
+
- lib/rncp/version.rb
|
62
|
+
- lib/rncp/send_cmd.rb
|
63
|
+
- lib/rncp/networking.rb
|
64
|
+
- lib/rncp/push_cmd.rb
|
65
|
+
- bin/rncp
|
66
|
+
homepage: http://github.com/jecxjo/rncp
|
67
|
+
licenses: []
|
68
|
+
post_install_message:
|
69
|
+
rdoc_options: []
|
70
|
+
require_paths:
|
71
|
+
- lib
|
72
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
79
|
+
none: false
|
80
|
+
requirements:
|
81
|
+
- - ! '>='
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: '0'
|
84
|
+
requirements: []
|
85
|
+
rubyforge_project:
|
86
|
+
rubygems_version: 1.8.23
|
87
|
+
signing_key:
|
88
|
+
specification_version: 3
|
89
|
+
summary: a fast file copy tool for LANs
|
90
|
+
test_files: []
|