r_socks 0.1.4 → 0.1.5
Sign up to get free protection for your applications and to get access to all the features.
- 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