class Excon::SOCKS5SSLSocket
Public Class Methods
new(data = {})
click to toggle source
Calls superclass method
# File lib/excon/socks5_ssl_socket.rb, line 7 def initialize(data = {}) @socks5_proxy = data[:socks5_proxy] @proxy_host, @proxy_port, @proxy_user, @proxy_pass = parse_socks5_proxy(@socks5_proxy) super(data) end
Private Instance Methods
connect()
click to toggle source
Proxy-swap pattern (same as SOCKS5Socket#connect).
Call chain:
SOCKS5SSLSocket#initialize -> super (SSLSocket#initialize)
-> super (Socket#initialize) -> connect
-> SOCKS5SSLSocket#connect (this method)
-> super -> SSLSocket#connect -> Socket#connect (TCP to proxy)
-> SOCKS5 handshake on raw TCP socket
<- returns to SSLSocket#initialize
-> @data[:proxy] is nil, so HTTP CONNECT is skipped (line 111)
-> SSL wrapping on the SOCKS5-tunneled socket
Calls superclass method
# File lib/excon/socks5_ssl_socket.rb, line 26 def connect @data[:proxy] = { host: @proxy_host, hostname: @proxy_host, port: @proxy_port.to_i } begin super ensure # Clear :proxy so SSLSocket#initialize skips HTTP CONNECT (line 111) @data.delete(:proxy) end socks5_authenticate socks5_connect(@data[:host], @data[:port]) end