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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4437c0dc6d60a5e4b7d70c4dea5074bddcd0eefe4e677a7530e30405c2752da3
4
- data.tar.gz: bac15e8ca3fa6b945720c3699d8c0b1325323556f4ac54bcd64bd5438d68159c
3
+ metadata.gz: 61198ecf92ea464b8bfc7c185ff7a723edc2f2d12baa27208edb3237649968c3
4
+ data.tar.gz: e809c8bc99cf8503f2e482893a3782b654bd3b0a3a732f6a8f4bcad0467f5140
5
5
  SHA512:
6
- metadata.gz: 1651e0dcdf4ff5af0ede3643cfb9990c2c654e2de79e9989c3c61a96ba2b84bbb84d16ae548eb7e071c62aef484c3cceadae4172308597f5081b4d8f1b9b686d
7
- data.tar.gz: 483e9ee7aeec558334a27553cfbed7a5623e0e240c96b81a4ce96c2c597db6810a83e327124baaf178da0f3d1e13fe4658c385ae04d49797799206f3575933a8
6
+ metadata.gz: ebacf2bccba41f8ce5ed39be17b536706eb323edcdbe0790a11b5e7d3595623c8b2d3c6e97ce351fae7f7385b6e09b9ee910b52aa7c00c6be9742550bc47db37
7
+ data.tar.gz: 6e706ae3f7bb3cdcf518f92ce668660985865d602115847ae960d5df06684b3185ca8ecb336a6bceaf830db254fecb9d3591c63f0772bad406eefd3ea0376fc7
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- r_socks (0.1.3)
4
+ r_socks (0.1.5)
5
5
  eventmachine (~> 1.2, >= 1.2.7)
6
6
 
7
7
  GEM
@@ -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
- if @current_socket && !@current_socket.closed?
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 source_io=(io)
7
- @source_io = io
6
+ def initialize(client)
7
+ @client = client
8
8
  end
9
9
 
10
10
  def receive_data(data)
11
- @source_io.send_data(data)
11
+ @client.send_data(data)
12
12
  end
13
13
 
14
14
  def unbind
15
- @source_io.close_connection
15
+ @client.close_connection_after_writing
16
16
  end
17
17
  end
18
18
  end
@@ -1,3 +1,3 @@
1
1
  module RSocks
2
- VERSION = "0.1.4"
2
+ VERSION = "0.1.5"
3
3
  end
data/lib/r_socks.rb CHANGED
@@ -1 +1,8 @@
1
- require 'r_socks/tcp_server'
1
+ require 'r_socks/tcp_server'
2
+ # example
3
+ #
4
+ # server = RSocks::TcpServer.new('127.0.0.1', 8081)
5
+ #
6
+ # server.config.auth_method = :password
7
+ #
8
+ # server.run!
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: r_socks
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nick An