| Class | Net::SSH::Proxy::HTTP |
| In: |
lib/net/ssh/proxy/http.rb
lib/net/ssh/proxy/http.rb |
| Parent: | Object |
An implementation of an HTTP proxy. To use it, instantiate it, then pass the instantiated object via the :proxy key to Net::SSH.start:
require 'net/ssh/proxy/http'
proxy = Net::SSH::Proxy::HTTP.new('proxy.host', proxy_port)
Net::SSH.start('host', 'user', :proxy => proxy) do |ssh|
...
end
If the proxy requires authentication, you can pass :user and :password to the proxy‘s constructor:
proxy = Net::SSH::Proxy::HTTP.new('proxy.host', proxy_port,
:user => "user", :password => "password")
Note that HTTP digest authentication is not supported; Basic only at this point.
| options | [R] | The map of additional options that were given to the object at initialization. |
| options | [R] | The map of additional options that were given to the object at initialization. |
| proxy_host | [R] | The hostname or IP address of the HTTP proxy. |
| proxy_host | [R] | The hostname or IP address of the HTTP proxy. |
| proxy_port | [R] | The port number of the proxy. |
| proxy_port | [R] | The port number of the proxy. |
Create a new socket factory that tunnels via the given host and port. The options parameter is a hash of additional settings that can be used to tweak this proxy connection. Specifically, the following options are supported:
# File lib/net/ssh/proxy/http.rb, line 43
43: def initialize(proxy_host, proxy_port=80, options={})
44: @proxy_host = proxy_host
45: @proxy_port = proxy_port
46: @options = options
47: end
Create a new socket factory that tunnels via the given host and port. The options parameter is a hash of additional settings that can be used to tweak this proxy connection. Specifically, the following options are supported:
# File lib/net/ssh/proxy/http.rb, line 43
43: def initialize(proxy_host, proxy_port=80, options={})
44: @proxy_host = proxy_host
45: @proxy_port = proxy_port
46: @options = options
47: end
Return a new socket connected to the given host and port via the proxy that was requested when the socket factory was instantiated.
# File lib/net/ssh/proxy/http.rb, line 51
51: def open(host, port)
52: socket = TCPSocket.new(proxy_host, proxy_port)
53: socket.write "CONNECT #{host}:#{port} HTTP/1.0\r\n"
54:
55: if options[:user]
56: credentials = ["#{options[:user]}:#{options[:password]}"].pack("m*").gsub(/\s/, "")
57: socket.write "Proxy-Authorization: Basic #{credentials}\r\n"
58: end
59:
60: socket.write "\r\n"
61:
62: resp = parse_response(socket)
63:
64: return socket if resp[:code] == 200
65:
66: socket.close
67: raise ConnectError, resp.inspect
68: end
Return a new socket connected to the given host and port via the proxy that was requested when the socket factory was instantiated.
# File lib/net/ssh/proxy/http.rb, line 51
51: def open(host, port)
52: socket = TCPSocket.new(proxy_host, proxy_port)
53: socket.write "CONNECT #{host}:#{port} HTTP/1.0\r\n"
54:
55: if options[:user]
56: credentials = ["#{options[:user]}:#{options[:password]}"].pack("m*").gsub(/\s/, "")
57: socket.write "Proxy-Authorization: Basic #{credentials}\r\n"
58: end
59:
60: socket.write "\r\n"
61:
62: resp = parse_response(socket)
63:
64: return socket if resp[:code] == 200
65:
66: socket.close
67: raise ConnectError, resp.inspect
68: end