Module: Socksify
- Defined in:
- lib/socksify.rb,
lib/socksify/debug.rb
Class Method Summary collapse
- .debug=(enabled) ⇒ Object
- .debug_debug(str) ⇒ Object
- .debug_error(str) ⇒ Object
- .debug_notice(str) ⇒ Object
- .proxy(server, port) ⇒ Object
- .resolve(host) ⇒ Object
Class Method Details
.debug=(enabled) ⇒ Object
28 29 30 |
# File 'lib/socksify/debug.rb', line 28 def self.debug=(enabled) @@debug = enabled end |
.debug_debug(str) ⇒ Object
32 33 34 |
# File 'lib/socksify/debug.rb', line 32 def self.debug_debug(str) debug(Color::Green, str) end |
.debug_error(str) ⇒ Object
40 41 42 |
# File 'lib/socksify/debug.rb', line 40 def self.debug_error(str) debug(Color::Red, str) end |
.debug_notice(str) ⇒ Object
36 37 38 |
# File 'lib/socksify/debug.rb', line 36 def self.debug_notice(str) debug(Color::Yellow, str) end |
.proxy(server, port) ⇒ Object
302 303 304 305 306 307 308 309 310 311 312 313 |
# File 'lib/socksify.rb', line 302 def self.proxy(server, port) default_server = TCPSocket::socks_server default_port = TCPSocket::socks_port begin TCPSocket::socks_server = server TCPSocket::socks_port = port yield ensure TCPSocket::socks_server = default_server TCPSocket::socks_port = default_port end end |
.resolve(host) ⇒ Object
274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 |
# File 'lib/socksify.rb', line 274 def self.resolve(host) s = TCPSocket.new begin Socksify::debug_debug "Sending hostname to resolve: #{host}" s.write "\005" if host =~ /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/ # to IPv4 address s.write "\xF1\000\001" + [$1.to_i, $2.to_i, $3.to_i, $4.to_i ].pack('CCCC') elsif host =~ /^[:0-9a-f]+$/ # to IPv6 address raise "TCP/IPv6 over SOCKS is not yet supported (inet_pton missing in Ruby & not supported by Tor" s.write "\004" else # to hostname s.write "\xF0\000\003" + [host.size].pack('C') + host end s.write [0].pack('n') # Port addr, port = s.socks_receive_reply Socksify::debug_notice "Resolved #{host} as #{addr} over SOCKS" addr ensure s.close end end |