Class: Net::SSH::Proxy::HTTP
- Inherits:
-
Object
- Object
- Net::SSH::Proxy::HTTP
- Defined in:
- lib/net/ssh/proxy/http.rb
Overview
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.
Instance Attribute Summary collapse
-
#options ⇒ Object
readonly
The map of additional options that were given to the object at initialization.
-
#proxy_host ⇒ Object
readonly
The hostname or IP address of the HTTP proxy.
-
#proxy_port ⇒ Object
readonly
The port number of the proxy.
Instance Method Summary collapse
-
#initialize(proxy_host, proxy_port = 80, options = {}) ⇒ HTTP
constructor
Create a new socket factory that tunnels via the given host and port.
-
#open(host, port) ⇒ Object
Return a new socket connected to the given host and port via the proxy that was requested when the socket factory was instantiated.
Constructor Details
#initialize(proxy_host, proxy_port = 80, options = {}) ⇒ HTTP
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:
-
:user => the user name to use when authenticating to the proxy
-
:password => the password to use when authenticating
43 44 45 46 47 |
# File 'lib/net/ssh/proxy/http.rb', line 43 def initialize(proxy_host, proxy_port=80, ={}) @proxy_host = proxy_host @proxy_port = proxy_port @options = end |
Instance Attribute Details
#options ⇒ Object (readonly)
The map of additional options that were given to the object at initialization.
34 35 36 |
# File 'lib/net/ssh/proxy/http.rb', line 34 def @options end |
#proxy_host ⇒ Object (readonly)
The hostname or IP address of the HTTP proxy.
27 28 29 |
# File 'lib/net/ssh/proxy/http.rb', line 27 def proxy_host @proxy_host end |
#proxy_port ⇒ Object (readonly)
The port number of the proxy.
30 31 32 |
# File 'lib/net/ssh/proxy/http.rb', line 30 def proxy_port @proxy_port end |
Instance Method Details
#open(host, port) ⇒ Object
Return a new socket connected to the given host and port via the proxy that was requested when the socket factory was instantiated.
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/net/ssh/proxy/http.rb', line 51 def open(host, port) socket = TCPSocket.new(proxy_host, proxy_port) socket.write "CONNECT #{host}:#{port} HTTP/1.0\r\n" if [:user] credentials = ["#{[:user]}:#{[:password]}"].pack("m*").gsub(/\s/, "") socket.write "Proxy-Authorization: Basic #{credentials}\r\n" end socket.write "\r\n" resp = parse_response(socket) return socket if resp[:code] == 200 socket.close raise ConnectError, resp.inspect end |