r_socks 0.2.6 → 0.2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f3e3ebfd9f09c01afeafb934e7f8896bc1995222836d781b4970e95faf99e6b4
4
- data.tar.gz: 2854a33a484d8a958f27bdb5194c4fe6e30de11b24d86bf5eede79f02e22ab80
3
+ metadata.gz: 2499018b47dd3233d537be32107df8e398150a21b4b3aef5eca8a960123b52a7
4
+ data.tar.gz: f0c479c2e0de2be8e1bc1851b9755225a35d4eb36a9344aa7f946ebe8576e5d7
5
5
  SHA512:
6
- metadata.gz: 2c9674f0ab2988329a3bfdd461e39eac4cb3ccc2102f504a7a75d68ecc92abc5a3b24cf3c615aa98c7043245f265b31acc73681463cf6001e755816fbae4f20f
7
- data.tar.gz: 37fbcfc1d17518bec910cb485f4b4fa2cb78e263ef46044fb5129ca01d3a89e5c6124eb6a4882d3d28ec2445380665c88293f76fddd47f0dba76e267ae07e8e3
6
+ metadata.gz: 025e9d38508b50bc500fc2484874c4f70610365932d9f974609d5f4d2bc0c626a9588296373cbc2fcb18fffab96536b8b2f20cddf061da890d3f43ad6c2a0bc5
7
+ data.tar.gz: cd82808668a124bd4d601cd31f2f85a45c08b7212c27fa020627cadbe968710084ac23f823ff2b06cdb81c18d64e50e64ffbe6755578e6c91ac70661905e8f83
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- r_socks (0.2.5)
4
+ r_socks (0.2.7)
5
5
  eventmachine (~> 1.2, >= 1.2.7)
6
6
 
7
7
  GEM
@@ -2,6 +2,8 @@ module RSocks
2
2
 
3
3
  class Authenticator
4
4
 
5
+ attr_reader :username, :password
6
+
5
7
  def initialize(adaptor = nil)
6
8
  @default_user = ENV['RSOCKS_USER'] || 'default'
7
9
  @default_password = ENV['RSOCKS_PASSWORD'] || 'default'
@@ -16,13 +18,13 @@ module RSocks
16
18
  private
17
19
 
18
20
  def validate(data)
19
- username, remain = get_username(data)
20
- password = get_password(remain)
21
+ @username, remain = get_username(data)
22
+ @password = get_password(remain)
21
23
 
22
24
  if @adaptor.nil?
23
- username == @default_user && password == @default_password
25
+ @username == @default_user && @password == @default_password
24
26
  else
25
- @adaptor.call(username, password)
27
+ @adaptor.call(@username, @password)
26
28
  end
27
29
  end
28
30
 
@@ -53,8 +53,11 @@ module RSocks
53
53
 
54
54
  return unless @state_machine.start?
55
55
 
56
+ @username = @parser.username
57
+ @password = @parser.password
56
58
  if @target.nil?
57
59
  @target = EventMachine.connect(@addr, @port, RSocks::TargetConnectionHandler, self, @config)
60
+ @target.assign_user_and_password(@username, @password)
58
61
  end
59
62
  rescue => error
60
63
  puts "Error at #{@ip}:#{@port}, message: #{data}, error: #{error.message}"
@@ -68,7 +71,7 @@ module RSocks
68
71
  @target.close_connection_after_writing if @target
69
72
 
70
73
  if @config.unbind_handler
71
- @config.unbind_handler.call(get_proxied_bytes)
74
+ @config.unbind_handler.call(get_proxied_bytes, @username, @password)
72
75
  end
73
76
  end
74
77
 
@@ -3,6 +3,8 @@ require 'base64'
3
3
  module RSocks
4
4
  class HttpProxyParser
5
5
 
6
+ attr_reader :username, :password
7
+
6
8
  def initialize(state_machine, config)
7
9
  @state_machine = state_machine
8
10
  @auth_method = config.auth_method
@@ -36,15 +38,15 @@ module RSocks
36
38
  token = temp.gsub(pattern, '')
37
39
  begin
38
40
  str = Base64.decode64(token)
39
- @user, @password = str.split(':')
41
+ @username, @password = str.split(':')
40
42
  rescue
41
43
  raise RSocks::HttpNotSupport, "token parse failed #{token}"
42
44
  end
43
45
 
44
46
  if @adaptor
45
- return @adaptor.call(@user, @password)
47
+ return @adaptor.call(@username, @password)
46
48
  else
47
- return @password == @default_password && @user == @default_user
49
+ return @password == @default_password && @username == @default_user
48
50
  end
49
51
  end
50
52
 
@@ -8,6 +8,9 @@ require 'r_socks/socks5_proxy_parser'
8
8
 
9
9
  module RSocks
10
10
  class Socks5ProxyParser
11
+
12
+ attr_reader :username, :password
13
+
11
14
  def initialize(state_machine, config, client)
12
15
  @state_machine = state_machine
13
16
  @auth_method = config.auth_method
@@ -42,6 +45,8 @@ module RSocks
42
45
 
43
46
  if @state_machine.connect?
44
47
  connect_request(data)
48
+ @username = @authenticator.username
49
+ @password = @authenticator.password
45
50
  return [@addr, @port]
46
51
  end
47
52
 
@@ -9,6 +9,11 @@ module RSocks
9
9
  @config = config
10
10
  end
11
11
 
12
+ def assign_user_and_password(username, password)
13
+ @username = username
14
+ @password = password
15
+ end
16
+
12
17
  def connection_completed
13
18
  if @config.proxy_type == :http
14
19
  @client.send_data(RSocks::HttpProxyResponseCodes::SUCCESS)
@@ -28,7 +33,7 @@ module RSocks
28
33
  def unbind
29
34
  @client.close_connection_after_writing
30
35
  if @config.unbind_handler
31
- @config.unbind_handler.call(get_proxied_bytes)
36
+ @config.unbind_handler.call(get_proxied_bytes, @username, @password)
32
37
  end
33
38
  end
34
39
  end
@@ -1,3 +1,3 @@
1
1
  module RSocks
2
- VERSION = "0.2.6"
2
+ VERSION = "0.2.7"
3
3
  end
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.2.6
4
+ version: 0.2.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nick An