@@ -14,10 +14,12 @@ def initialize(host = nil, port = nil, local_host = nil, local_port = nil, **kwa
1414 socks_peer = host if host . is_a? ( SOCKSConnectionPeerAddress )
1515 socks_server = set_socks_server ( socks_peer )
1616 socks_port = set_socks_port ( socks_peer )
17+ socks_username = set_socks_username ( socks_peer )
18+ socks_password = set_socks_password ( socks_peer )
1719 socks_ignores = set_socks_ignores ( socks_peer )
1820 host = socks_peer . peer_host if socks_peer
1921 if socks_server && socks_port && !socks_ignores . include? ( host )
20- make_socks_connection ( host , port , socks_server , socks_port , **kwargs )
22+ make_socks_connection ( host , port , socks_server , socks_port , socks_username , socks_password , **kwargs )
2123 else
2224 make_direct_connection ( host , port , local_host , local_port , **kwargs )
2325 end
@@ -26,11 +28,13 @@ def initialize(host = nil, port = nil, local_host = nil, local_port = nil, **kwa
2628
2729 # string representation of the peer host address
2830 class SOCKSConnectionPeerAddress < String
29- attr_reader :socks_server , :socks_port
31+ attr_reader :socks_server , :socks_port , :socks_username , :socks_password
3032
31- def initialize ( socks_server , socks_port , peer_host )
33+ def initialize ( socks_server , socks_port , peer_host , socks_username = nil , socks_password = nil )
3234 @socks_server = socks_server
3335 @socks_port = socks_port
36+ @socks_username = socks_username
37+ @socks_password = socks_password
3438 super ( peer_host )
3539 end
3640
@@ -53,14 +57,22 @@ def set_socks_port(socks_peer = nil)
5357 socks_peer ? socks_peer . socks_port : self . class . socks_port
5458 end
5559
60+ def set_socks_username ( socks_peer = nil )
61+ socks_peer ? socks_peer . socks_username : self . class . socks_username
62+ end
63+
64+ def set_socks_password ( socks_peer = nil )
65+ socks_peer ? socks_peer . socks_password : self . class . socks_password
66+ end
67+
5668 def set_socks_ignores ( socks_peer = nil )
5769 socks_peer ? [ ] : self . class . socks_ignores
5870 end
5971
60- def make_socks_connection ( host , port , socks_server , socks_port , **kwargs )
72+ def make_socks_connection ( host , port , socks_server , socks_port , socks_username , socks_password , **kwargs )
6173 Socksify . debug_notice "Connecting to SOCKS server #{ socks_server } :#{ socks_port } "
6274 initialize_tcp socks_server , socks_port , **kwargs
63- socks_authenticate unless @socks_version =~ /^4/
75+ socks_authenticate ( socks_username , socks_password ) unless @socks_version =~ /^4/
6476 socks_connect ( host , port ) if host
6577 end
6678
0 commit comments