95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
# File 'lib/httpx/plugins/proxy/socks4.rb', line 95
def connect(parameters, uri)
packet = [VERSION, CONNECT, uri.port].pack("CCn")
begin
ip = IPAddr.new(uri.host)
raise Error, "Socks4 connection to #{ip} not supported" unless ip.ipv4?
packet << [ip.to_i].pack("N")
rescue IPAddr::InvalidAddressError
if parameters.uri.scheme == "socks4"
ip = IPAddr.new(Resolv.getaddress(uri.host))
packet << [ip.to_i].pack("N")
else
packet << "\x0\x0\x0\x1" << "\x7\x0" << uri.host
end
end
packet << [parameters.username].pack("Z*")
packet
end
|