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