r_socks 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: eedc173179a56ad67727bdecfe8624e116d460d51929ab39087a37fc3261813e
4
- data.tar.gz: efc729c5cf92ede55d578d8d6d37228175e3db6940a22b6c79c3cb63873b7073
3
+ metadata.gz: f41d6fb140bb7ae00bcf456e514764dcfbc3fe6d35ea829697b223552a7ec400
4
+ data.tar.gz: 240c58c0258d93a55dc5ec625ae7a56c0cc823a956c991ce757d4c7e6a9a1ee6
5
5
  SHA512:
6
- metadata.gz: 56496f12b33b1ba403015b26e1e9d5c6867031093fe4bfcccd5f42666e83a216d22f8b70cdf80c6891efe53fda1d0625f075e58b2aafb0d4eb2a44219a009b1c
7
- data.tar.gz: 26565fd6aa0566cb97ca3cea88928683816d9e2232ee870a105e1cf6b6781cb3e3ff5a9222d566a11562a3984adde3535a52eadbef4b18dc02f6932e5201b6ab
6
+ metadata.gz: cebd665f25d59e3cd88d277e55916b7ffe4cd999a89f52c406d0588486a67ba999289dab5b7f441b8ada63426af4e19714e9c09cbb789b96092e5ab617567073
7
+ data.tar.gz: 4c80ef76836e1b3a776c465116d152dd79ee66d4eed65d630170fbfdd4d407e13c294f81fb0689a3648c5790a87c08dc3a5c9afcdabd1f73e3c5740bf82ffe49
data/Gemfile.lock CHANGED
@@ -1,7 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- r_socks (0.1.0)
4
+ r_socks (0.1.2)
5
+ eventmachine (~> 1.2, >= 1.2.7)
5
6
 
6
7
  GEM
7
8
  remote: https://rubygems.org/
@@ -23,40 +23,48 @@ module RSocks
23
23
 
24
24
  def post_init
25
25
  @port, @ip = Socket.unpack_sockaddr_in(get_peername)
26
- puts "new #{@ip}:#{@port} connected."
27
26
  end
28
27
  # sample \x05\x01\x00\x03\ngoogle.com\x00P
29
28
 
30
29
  def receive_data(data)
31
- if @state_machine.handshake?
32
- return init_handshake(data)
33
- end
34
30
 
35
- if @state_machine.auth?
36
- passed = @authenticator.auth!(data)
37
- if passed
38
- send_data(RSocks::SUCCESS_RESPONSE)
39
- @state_machine.connect!
31
+ return send_data(not_accept) if data.nil? || data == ''
32
+
33
+ begin
34
+
35
+ if @state_machine.handshake?
36
+ return init_handshake(data)
37
+ end
38
+
39
+ if @state_machine.auth?
40
+ passed = @authenticator.auth!(data)
41
+ if passed
42
+ send_data(RSocks::SUCCESS_RESPONSE)
43
+ @state_machine.connect!
44
+ return
45
+ end
46
+
47
+ send_data(RSocks::FAILED_RESPONSE)
40
48
  return
41
49
  end
42
50
 
43
- send_data(RSocks::FAILED_RESPONSE)
44
- return
45
- end
51
+ if @state_machine.connect?
52
+ connect_request(data)
53
+ @target = EventMachine.attach(@current_socket, RSocks::TargetConnectionHandler)
54
+ @target.source_io = self
55
+ return
56
+ end
46
57
 
47
- if @state_machine.connect?
48
- connect_request(data)
49
- @target = EventMachine.attach(@current_socket, RSocks::TargetConnectionHandler)
50
- @target.source_io = self
51
- return
52
- end
58
+ return send_data(not_accept) unless @state_machine.start?
59
+ @target.send_data(data)
53
60
 
54
- return send_data(not_accept) unless @state_machine.start?
55
- @target.send_data(data)
61
+ rescue => error
62
+ put "Error at #{@ip}:#{@port}, message: #{data}, error: #{error.message}"
63
+ puts error.backtrace
64
+ end
56
65
  end
57
66
 
58
67
  def unbind
59
- puts "#{@ip}:#{@port} had disconnected."
60
68
  if @current_socket && !@current_socket.closed?
61
69
  @current_socket.close
62
70
  end
@@ -1,3 +1,3 @@
1
1
  module RSocks
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
data/r_socks.gemspec CHANGED
@@ -5,6 +5,7 @@ Gem::Specification.new do |spec|
5
5
  spec.version = RSocks::VERSION
6
6
  spec.authors = ["Nick An"]
7
7
  spec.email = ["anning0322@gmail.com"]
8
+ spec.licenses = ['Apache-2.0']
8
9
 
9
10
  spec.summary = %q{socks5 proxy server}
10
11
  spec.description = %q{ruby proxy socks5 shadowsocks}
@@ -24,4 +25,6 @@ Gem::Specification.new do |spec|
24
25
  spec.bindir = "exe"
25
26
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
26
27
  spec.require_paths = ["lib"]
28
+
29
+ spec.add_runtime_dependency 'eventmachine', '~> 1.2', '>= 1.2.7'
27
30
  end
metadata CHANGED
@@ -1,15 +1,35 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: r_socks
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nick An
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-03-19 00:00:00.000000000 Z
12
- dependencies: []
11
+ date: 2020-03-20 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: eventmachine
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.2'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 1.2.7
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '1.2'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 1.2.7
13
33
  description: ruby proxy socks5 shadowsocks
14
34
  email:
15
35
  - anning0322@gmail.com
@@ -38,7 +58,8 @@ files:
38
58
  - lib/r_socks/version.rb
39
59
  - r_socks.gemspec
40
60
  homepage: https://github.com/nickoan/r_socks
41
- licenses: []
61
+ licenses:
62
+ - Apache-2.0
42
63
  metadata:
43
64
  homepage_uri: https://github.com/nickoan/r_socks
44
65
  source_code_uri: https://github.com/nickoan/r_socks