@@ -10,14 +10,19 @@ class TCPSocket
1010
1111 # See http://tools.ietf.org/html/rfc1928
1212 # rubocop:disable Metrics/ParameterLists
13- def initialize ( host = nil , port = nil , local_host = nil , local_port = nil , **kwargs )
13+ def initialize ( host = nil , port = nil ,
14+ local_host = nil , local_port = nil ,
15+ **kwargs )
1416 socks_peer = host if host . is_a? ( SOCKSConnectionPeerAddress )
1517 socks_server = set_socks_server ( socks_peer )
1618 socks_port = set_socks_port ( socks_peer )
19+ socks_username = set_socks_username ( socks_peer )
20+ socks_password = set_socks_password ( socks_peer )
1721 socks_ignores = set_socks_ignores ( socks_peer )
1822 host = socks_peer . peer_host if socks_peer
23+
1924 if socks_server && socks_port && !socks_ignores . include? ( host )
20- make_socks_connection ( host , port , socks_server , socks_port , **kwargs )
25+ make_socks_connection ( host , port , socks_server , socks_port , socks_username , socks_password , **kwargs )
2126 else
2227 make_direct_connection ( host , port , local_host , local_port , **kwargs )
2328 end
@@ -26,11 +31,13 @@ def initialize(host = nil, port = nil, local_host = nil, local_port = nil, **kwa
2631
2732 # string representation of the peer host address
2833 class SOCKSConnectionPeerAddress < String
29- attr_reader :socks_server , :socks_port
34+ attr_reader :socks_server , :socks_port , :socks_username , :socks_password
3035
31- def initialize ( socks_server , socks_port , peer_host )
36+ def initialize ( socks_server , socks_port , peer_host , socks_username = nil , socks_password = nil )
3237 @socks_server = socks_server
3338 @socks_port = socks_port
39+ @socks_username = socks_username
40+ @socks_password = socks_password
3441 super ( peer_host )
3542 end
3643
@@ -53,14 +60,25 @@ def set_socks_port(socks_peer = nil)
5360 socks_peer ? socks_peer . socks_port : self . class . socks_port
5461 end
5562
63+ def set_socks_username ( socks_peer = nil )
64+ socks_peer ? socks_peer . socks_username : self . class . socks_username
65+ end
66+
67+ def set_socks_password ( socks_peer = nil )
68+ socks_peer ? socks_peer . socks_password : self . class . socks_password
69+ end
70+
5671 def set_socks_ignores ( socks_peer = nil )
5772 socks_peer ? [ ] : self . class . socks_ignores
5873 end
5974
60- def make_socks_connection ( host , port , socks_server , socks_port , **kwargs )
75+ def make_socks_connection ( host , port ,
76+ socks_server , socks_port ,
77+ socks_username , socks_password ,
78+ **kwargs )
6179 Socksify . debug_notice "Connecting to SOCKS server #{ socks_server } :#{ socks_port } "
6280 initialize_tcp socks_server , socks_port , **kwargs
63- socks_authenticate unless @socks_version =~ /^4/
81+ socks_authenticate ( socks_username , socks_password ) unless @socks_version =~ /^4/
6482 socks_connect ( host , port ) if host
6583 end
6684
0 commit comments