rtunnel 0.3.6 → 0.3.7
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.
- data/History.txt +0 -0
- data/README.txt +0 -0
- data/bin/rtunnel_client +0 -0
- data/bin/rtunnel_server +0 -0
- data/lib/core.rb +1 -1
- data/lib/rtunnel_client_cmd.rb +0 -0
- data/lib/rtunnel_server_cmd.rb +0 -0
- data/lib/server.rb +40 -19
- data/rtunnel_client.rb +0 -0
- data/rtunnel_server.rb +0 -0
- metadata +68 -58
data/History.txt
CHANGED
File without changes
|
data/README.txt
CHANGED
File without changes
|
data/bin/rtunnel_client
CHANGED
File without changes
|
data/bin/rtunnel_server
CHANGED
File without changes
|
data/lib/core.rb
CHANGED
data/lib/rtunnel_client_cmd.rb
CHANGED
File without changes
|
data/lib/rtunnel_server_cmd.rb
CHANGED
File without changes
|
data/lib/server.rb
CHANGED
@@ -16,9 +16,11 @@ module RTunnel
|
|
16
16
|
# listens for incoming connections to tunnel
|
17
17
|
class RemoteListenServer < GServer
|
18
18
|
CONNECTIONS = SyncHash.new
|
19
|
+
CONTROL_CONNECTION_MAPPING = SyncHash.new
|
19
20
|
|
20
|
-
def initialize(port, host
|
21
|
+
def initialize(port, host, control_connection)
|
21
22
|
super(port, host, 10)
|
23
|
+
@control_connection = control_connection
|
22
24
|
end
|
23
25
|
|
24
26
|
def serve(sock)
|
@@ -26,6 +28,7 @@ module RTunnel
|
|
26
28
|
|
27
29
|
conn_id = UUID.t
|
28
30
|
CONNECTIONS[conn_id] = sock
|
31
|
+
CONTROL_CONNECTION_MAPPING[conn_id] = @control_connection
|
29
32
|
begin
|
30
33
|
ControlServer.new_tunnel(conn_id)
|
31
34
|
|
@@ -36,9 +39,11 @@ module RTunnel
|
|
36
39
|
D "error talking on control connection, dropping incoming connection: #{$!.inspect}"
|
37
40
|
end
|
38
41
|
|
39
|
-
CONNECTIONS.delete conn_id
|
40
42
|
ControlServer.close_tunnel(conn_id)
|
41
43
|
|
44
|
+
CONNECTIONS.delete conn_id
|
45
|
+
CONTROL_CONNECTION_MAPPING.delete conn_id
|
46
|
+
|
42
47
|
D "sock closed"
|
43
48
|
rescue
|
44
49
|
p $!
|
@@ -47,32 +52,40 @@ module RTunnel
|
|
47
52
|
end
|
48
53
|
|
49
54
|
class ControlServer < GServer
|
50
|
-
@@
|
51
|
-
@@
|
55
|
+
@@control_connections = []
|
56
|
+
@@remote_listen_servers = []
|
52
57
|
|
53
58
|
@@m = Mutex.new
|
54
59
|
|
55
60
|
attr_accessor :ping_interval
|
56
61
|
|
57
|
-
|
58
|
-
|
62
|
+
class << self
|
63
|
+
def new_tunnel(conn_id)
|
64
|
+
D "sending create connection command: #{conn_id}"
|
59
65
|
|
60
|
-
|
61
|
-
|
66
|
+
@@m.synchronize { control_connection_for(conn_id).write CreateConnectionCommand.new(conn_id) }
|
67
|
+
end
|
62
68
|
|
63
|
-
|
64
|
-
|
65
|
-
|
69
|
+
def send_data(conn_id, data)
|
70
|
+
@@m.synchronize { control_connection_for(conn_id).write SendDataCommand.new(conn_id, data) }
|
71
|
+
end
|
72
|
+
|
73
|
+
def close_tunnel(conn_id)
|
74
|
+
D "sending close connection command"
|
66
75
|
|
67
|
-
|
68
|
-
|
76
|
+
@@m.synchronize { control_connection_for(conn_id).write CloseConnectionCommand.new(conn_id) }
|
77
|
+
end
|
69
78
|
|
70
|
-
|
79
|
+
private
|
80
|
+
|
81
|
+
def control_connection_for(conn_id)
|
82
|
+
RemoteListenServer::CONTROL_CONNECTION_MAPPING[conn_id]
|
83
|
+
end
|
71
84
|
end
|
72
85
|
|
73
86
|
def serve(sock)
|
74
87
|
D "new control connection"
|
75
|
-
@@
|
88
|
+
@@control_connections << sock
|
76
89
|
sock.sync = true
|
77
90
|
|
78
91
|
cmd_queue = ""
|
@@ -84,8 +97,13 @@ module RTunnel
|
|
84
97
|
case cmd
|
85
98
|
when RemoteListenCommand
|
86
99
|
@@m.synchronize do
|
87
|
-
|
88
|
-
|
100
|
+
addr, port = cmd.address.split(/:/)
|
101
|
+
if rls = @@remote_listen_servers.detect {|s| s.port == port.to_i }
|
102
|
+
rls.stop
|
103
|
+
@@remote_listen_servers.delete rls
|
104
|
+
end
|
105
|
+
(new_rls = RemoteListenServer.new(port, addr, sock)).start
|
106
|
+
@@remote_listen_servers << new_rls
|
89
107
|
end
|
90
108
|
D "listening for remote connections on #{cmd.address}"
|
91
109
|
when SendDataCommand
|
@@ -106,12 +124,15 @@ module RTunnel
|
|
106
124
|
end
|
107
125
|
end
|
108
126
|
|
109
|
-
|
127
|
+
# TODO: only do this every ping_interval instead of after each socket read
|
128
|
+
@@m.synchronize { @@control_connections.each {|cc| cc.write PingCommand.new } }
|
110
129
|
end
|
111
130
|
rescue
|
112
131
|
D $!.inspect
|
113
132
|
D $!.backtrace.join("\n")
|
114
133
|
raise
|
134
|
+
ensure
|
135
|
+
@@control_connections.delete sock
|
115
136
|
end
|
116
137
|
|
117
138
|
def stopping
|
@@ -151,4 +172,4 @@ module RTunnel
|
|
151
172
|
ControlServer.stop(@control_server.port, @control_server.host)
|
152
173
|
end
|
153
174
|
end
|
154
|
-
end
|
175
|
+
end
|
data/rtunnel_client.rb
CHANGED
File without changes
|
data/rtunnel_server.rb
CHANGED
File without changes
|
metadata
CHANGED
@@ -1,68 +1,22 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
|
-
rubygems_version: 0.9.4
|
3
|
-
specification_version: 1
|
4
2
|
name: rtunnel
|
5
3
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.3.
|
7
|
-
date: 2008-02-12 00:00:00 +07:00
|
8
|
-
summary: The author was too lazy to write a summary
|
9
|
-
require_paths:
|
10
|
-
- lib
|
11
|
-
email: ryand-ruby@zenspider.com
|
12
|
-
homepage: http://www.zenspider.com/ZSS/Products/rtunnel/
|
13
|
-
rubyforge_project: coderrr
|
14
|
-
description: "OkExtensions by steved http://code.google.com/p/rtunnel == DESCRIPTION: http://code.google.com/p/rtunnel"
|
15
|
-
autorequire:
|
16
|
-
default_executable:
|
17
|
-
bindir: bin
|
18
|
-
has_rdoc: true
|
19
|
-
required_ruby_version: !ruby/object:Gem::Version::Requirement
|
20
|
-
requirements:
|
21
|
-
- - ">"
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version: 0.0.0
|
24
|
-
version:
|
4
|
+
version: 0.3.7
|
25
5
|
platform: ruby
|
26
|
-
signing_key:
|
27
|
-
cert_chain:
|
28
|
-
post_install_message:
|
29
6
|
authors:
|
30
|
-
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
- README.txt
|
35
|
-
- rtunnel_client.rb
|
36
|
-
- rtunnel_server.rb
|
37
|
-
- bin/rtunnel_client
|
38
|
-
- bin/rtunnel_server
|
39
|
-
- lib/rtunnel_client_cmd.rb
|
40
|
-
- lib/rtunnel_server_cmd.rb
|
41
|
-
- lib/client.rb
|
42
|
-
- lib/core.rb
|
43
|
-
- lib/server.rb
|
44
|
-
- lib/cmds.rb
|
45
|
-
test_files: []
|
46
|
-
|
47
|
-
rdoc_options:
|
48
|
-
- --main
|
49
|
-
- README.txt
|
50
|
-
extra_rdoc_files:
|
51
|
-
- History.txt
|
52
|
-
- Manifest.txt
|
53
|
-
- README.txt
|
54
|
-
executables:
|
55
|
-
- rtunnel_client
|
56
|
-
- rtunnel_server
|
57
|
-
extensions: []
|
58
|
-
|
59
|
-
requirements: []
|
7
|
+
- coderrr
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
60
11
|
|
12
|
+
date: 2008-09-15 00:00:00 +07:00
|
13
|
+
default_executable:
|
61
14
|
dependencies:
|
62
15
|
- !ruby/object:Gem::Dependency
|
63
16
|
name: uuidtools
|
17
|
+
type: :runtime
|
64
18
|
version_requirement:
|
65
|
-
version_requirements: !ruby/object:Gem::
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
20
|
requirements:
|
67
21
|
- - ">="
|
68
22
|
- !ruby/object:Gem::Version
|
@@ -70,8 +24,9 @@ dependencies:
|
|
70
24
|
version:
|
71
25
|
- !ruby/object:Gem::Dependency
|
72
26
|
name: facets
|
27
|
+
type: :runtime
|
73
28
|
version_requirement:
|
74
|
-
version_requirements: !ruby/object:Gem::
|
29
|
+
version_requirements: !ruby/object:Gem::Requirement
|
75
30
|
requirements:
|
76
31
|
- - ">="
|
77
32
|
- !ruby/object:Gem::Version
|
@@ -79,10 +34,65 @@ dependencies:
|
|
79
34
|
version:
|
80
35
|
- !ruby/object:Gem::Dependency
|
81
36
|
name: hoe
|
37
|
+
type: :runtime
|
82
38
|
version_requirement:
|
83
|
-
version_requirements: !ruby/object:Gem::
|
39
|
+
version_requirements: !ruby/object:Gem::Requirement
|
84
40
|
requirements:
|
85
41
|
- - ">="
|
86
42
|
- !ruby/object:Gem::Version
|
87
|
-
version: 1.3
|
43
|
+
version: 1.5.3
|
88
44
|
version:
|
45
|
+
description: "OkExtensions by steved http://code.google.com/p/rtunnel == DESCRIPTION: http://code.google.com/p/rtunnel"
|
46
|
+
email: coderrr.contact@gmail.com
|
47
|
+
executables:
|
48
|
+
- rtunnel_client
|
49
|
+
- rtunnel_server
|
50
|
+
extensions: []
|
51
|
+
|
52
|
+
extra_rdoc_files:
|
53
|
+
- History.txt
|
54
|
+
- Manifest.txt
|
55
|
+
- README.txt
|
56
|
+
files:
|
57
|
+
- History.txt
|
58
|
+
- Manifest.txt
|
59
|
+
- README.txt
|
60
|
+
- rtunnel_client.rb
|
61
|
+
- rtunnel_server.rb
|
62
|
+
- bin/rtunnel_client
|
63
|
+
- bin/rtunnel_server
|
64
|
+
- lib/rtunnel_client_cmd.rb
|
65
|
+
- lib/rtunnel_server_cmd.rb
|
66
|
+
- lib/client.rb
|
67
|
+
- lib/core.rb
|
68
|
+
- lib/server.rb
|
69
|
+
- lib/cmds.rb
|
70
|
+
has_rdoc: true
|
71
|
+
homepage: http://code.google.com/p/rtunnel
|
72
|
+
post_install_message:
|
73
|
+
rdoc_options:
|
74
|
+
- --main
|
75
|
+
- README.txt
|
76
|
+
require_paths:
|
77
|
+
- lib
|
78
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: "0"
|
83
|
+
version:
|
84
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
85
|
+
requirements:
|
86
|
+
- - ">="
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: "0"
|
89
|
+
version:
|
90
|
+
requirements: []
|
91
|
+
|
92
|
+
rubyforge_project: coderrr
|
93
|
+
rubygems_version: 1.2.0
|
94
|
+
signing_key:
|
95
|
+
specification_version: 2
|
96
|
+
summary: http://code.google.com/p/rtunnel
|
97
|
+
test_files: []
|
98
|
+
|