r_socks 0.1.4 → 0.1.5
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 +4 -4
- data/Gemfile.lock +1 -1
- data/lib/r_socks/connection_handler.rb +8 -9
- data/lib/r_socks/target_connection_handler.rb +4 -4
- data/lib/r_socks/version.rb +1 -1
- data/lib/r_socks.rb +8 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 61198ecf92ea464b8bfc7c185ff7a723edc2f2d12baa27208edb3237649968c3
|
4
|
+
data.tar.gz: e809c8bc99cf8503f2e482893a3782b654bd3b0a3a732f6a8f4bcad0467f5140
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ebacf2bccba41f8ce5ed39be17b536706eb323edcdbe0790a11b5e7d3595623c8b2d3c6e97ce351fae7f7385b6e09b9ee910b52aa7c00c6be9742550bc47db37
|
7
|
+
data.tar.gz: 6e706ae3f7bb3cdcf518f92ce668660985865d602115847ae960d5df06684b3185ca8ecb336a6bceaf830db254fecb9d3591c63f0772bad406eefd3ea0376fc7
|
data/Gemfile.lock
CHANGED
@@ -55,14 +55,16 @@ module RSocks
|
|
55
55
|
|
56
56
|
if @state_machine.connect?
|
57
57
|
connect_request(data)
|
58
|
-
@target = EventMachine.attach(@current_socket, RSocks::TargetConnectionHandler)
|
59
|
-
@target.source_io = self
|
60
58
|
return
|
61
59
|
end
|
62
60
|
|
63
61
|
return send_data(not_accept) unless @state_machine.start?
|
64
|
-
@target.send_data(data)
|
65
62
|
|
63
|
+
if @target.nil?
|
64
|
+
@target = EventMachine.connect(@addr, @port, RSocks::TargetConnectionHandler, self)
|
65
|
+
end
|
66
|
+
|
67
|
+
@target.send_data(data)
|
66
68
|
rescue => error
|
67
69
|
puts "Error at #{@ip}:#{@port}, message: #{data}, error: #{error.message}"
|
68
70
|
puts error.backtrace
|
@@ -70,9 +72,7 @@ module RSocks
|
|
70
72
|
end
|
71
73
|
|
72
74
|
def unbind
|
73
|
-
|
74
|
-
@current_socket.close
|
75
|
-
end
|
75
|
+
@target.close_connection
|
76
76
|
end
|
77
77
|
|
78
78
|
private
|
@@ -118,8 +118,7 @@ module RSocks
|
|
118
118
|
return not_accept if version != RSocks::VERSION
|
119
119
|
|
120
120
|
begin
|
121
|
-
addr, port, type = check_sock_cmd(cmd, data[2..-1])
|
122
|
-
@current_socket = TCPSocket.new(addr, port)
|
121
|
+
@addr, @port, @type = check_sock_cmd(cmd, data[2..-1])
|
123
122
|
rescue
|
124
123
|
send_data([RSocks::VERSION,RSocks::CONNECT_FAIL].pack('CC'))
|
125
124
|
return close_connection
|
@@ -128,7 +127,7 @@ module RSocks
|
|
128
127
|
@state_machine.start!
|
129
128
|
|
130
129
|
send_data([RSocks::VERSION, RSocks::CONNECT_SUCCESS].
|
131
|
-
pack('CC') + pack_address_and_port_info(type))
|
130
|
+
pack('CC') + pack_address_and_port_info(@type))
|
132
131
|
end
|
133
132
|
|
134
133
|
def check_sock_cmd(cmd, data)
|
@@ -3,16 +3,16 @@ require 'eventmachine'
|
|
3
3
|
module RSocks
|
4
4
|
class TargetConnectionHandler < EM::Connection
|
5
5
|
|
6
|
-
def
|
7
|
-
@
|
6
|
+
def initialize(client)
|
7
|
+
@client = client
|
8
8
|
end
|
9
9
|
|
10
10
|
def receive_data(data)
|
11
|
-
@
|
11
|
+
@client.send_data(data)
|
12
12
|
end
|
13
13
|
|
14
14
|
def unbind
|
15
|
-
@
|
15
|
+
@client.close_connection_after_writing
|
16
16
|
end
|
17
17
|
end
|
18
18
|
end
|
data/lib/r_socks/version.rb
CHANGED
data/lib/r_socks.rb
CHANGED