module TorControl

Constants

VERSION

Attributes

connection[RW]
control_port[RW]
host[RW]
password[RW]

Public Class Methods

authenticate() click to toggle source
# File lib/tor-control.rb, line 50
def authenticate
  check_connection
  if @password
    send_line "AUTHENTICATE \"#{@password}\""
  else
    send_line "AUTHENTICATE"
  end
  check_response { logger.error "Tor Control: Authentication Failure!" }
end
close() click to toggle source
# File lib/tor-control.rb, line 60
def close
  check_connection
  send_line "QUIT"
  @connection = false
  return ! @connection
end
configure(options={}) click to toggle source
# File lib/tor-control.rb, line 14
def configure(options={})
  if options[:host]
    @host = options[:host].to_s
  end
  if options[:control_port]
    @port = options[:control_port].to_i
  end
end
connect() click to toggle source
# File lib/tor-control.rb, line 35
def connect
  return @connection if @connection
  begin
  @connection = TCPSocket.new(@host, @control_port)
  rescue
    logger.error "TorControl: Failed to connection to tor service"
  end
end
logger() click to toggle source
# File lib/tor-control.rb, line 30
def logger
  return @logger if @logger
  @logger = Logger.new(STDERR)
end
new_identity() click to toggle source
# File lib/tor-control.rb, line 23
def new_identity
  connect
  authenticate
  signal_new_identity
  close
end
signal_new_identity() click to toggle source
# File lib/tor-control.rb, line 44
def signal_new_identity
  check_connection
  send_line "SIGNAL NEWNYM"
  check_response { logger.error "TorControl: Error getting new indentity" }
end

Private Class Methods

check_connection() click to toggle source
# File lib/tor-control.rb, line 80
def check_connection
  raise "Not connected" unless @connection
  true
end
check_response(&block) click to toggle source
# File lib/tor-control.rb, line 85
def check_response(&block)
  unless read_line == "250 OK"
    block.call
  end
  true
end
read_line() click to toggle source
# File lib/tor-control.rb, line 75
def read_line
  check_connection
  @connection.readline.chomp
end
send_line(command) click to toggle source
# File lib/tor-control.rb, line 69
def send_line command
  check_connection
  @connection.write command.to_s + "\r\n"
  @connection.flush
end