module Sockit::Support

Public Instance Methods

connect_via_socks?(host) click to toggle source
# File lib/sockit/support.rb, line 20
def connect_via_socks?(host)
  (is_configured? && !config.ignore.flatten.any?{ |ignored_host| host =~ /#{ignored_host}/ })
end
dump(action, data) click to toggle source
# File lib/sockit/support.rb, line 47
def dump(action, data)
  return if !config.debug

  bytes = Array.new
  chars = Array.new
  for x in 0..(data.length - 1) do
    bytes << ("%03d" % data[x].ord)
    chars << ("%03s" % (data[x] =~ /^\w+$/ ? data[x].chr : "..."))
  end
  log(:blue, "#{action.to_s.upcase}: #{bytes.join(" ")}#{COLORS[:reset]}")
  log(:blue, "#{action.to_s.upcase}: #{chars.join(" ")}#{COLORS[:reset]}")
end
is_configured?() click to toggle source
# File lib/sockit/support.rb, line 16
def is_configured?
  (is_host_configured? && is_port_configured? && is_version_configured?)
end
is_host_configured?() click to toggle source
# File lib/sockit/support.rb, line 4
def is_host_configured?
  (!config.host.nil? && !config.host.empty?)
end
is_port_configured?() click to toggle source
# File lib/sockit/support.rb, line 8
def is_port_configured?
  (!config.port.nil? && !config.port.empty?)
end
is_socks_v4?() click to toggle source
# File lib/sockit/support.rb, line 28
def is_socks_v4?
  (is_configured? && config.version.to_i == 4)
end
is_socks_v5?() click to toggle source
# File lib/sockit/support.rb, line 24
def is_socks_v5?
  (is_configured? && config.version.to_i == 5)
end
is_version_configured?() click to toggle source
# File lib/sockit/support.rb, line 12
def is_version_configured?
  ((config.version == 4) || (config.version == 5))
end
log(color, message) click to toggle source
# File lib/sockit/support.rb, line 32
def log(color, message)
  return if !config.debug

  timestamp = Time.now.utc
  puts("%s%s.%06d %s%s" % [COLORS[color], timestamp.strftime("%Y-%m-%d|%H:%M:%S"), timestamp.usec, message, COLORS[:reset]])
end
resolve(host) click to toggle source
# File lib/sockit/support.rb, line 39
def resolve(host)
  # when doing proxy mode on SS5; we seemingly need to resolve all names first.
  if host !~ /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/
    host = Resolv::DNS.new.getaddress(host).to_s
  end
  host
end