class Metasploit::Aggregator::Forwarder

Constants

CONNECTION_TIMEOUT

Attributes

log_messages[RW]
response_queues[R]

Public Class Methods

new() click to toggle source
# File lib/metasploit/aggregator/forwarder.rb, line 9
def initialize
  @log_messages = false
  @response_queues = {}
  @forwarder_mutex = Mutex.new
  @router = Router.instance
end

Public Instance Methods

connection_info(connection) click to toggle source
# File lib/metasploit/aggregator/forwarder.rb, line 36
def connection_info(connection)
  info = {}
  info['TIME'] = @response_queues[connection].time unless @response_queues[connection].nil?
  info
end
connections() click to toggle source
# File lib/metasploit/aggregator/forwarder.rb, line 21
def connections
  # TODO: for now before reporting connections flush stale ones
  flush_stale_sessions
  connections = {}
  @response_queues.each_pair do |connection, _queue|
    forward = 'parked'
    _send, _recv, console = @router.get_forward(connection)
    unless console.nil?
      forward = "#{console}"
    end
    connections[connection] = forward
  end
  connections
end
forward(connection) click to toggle source

stub for indexing

# File lib/metasploit/aggregator/forwarder.rb, line 17
def forward(connection)

end

Private Instance Methods

flush_stale_sessions() click to toggle source
# File lib/metasploit/aggregator/forwarder.rb, line 42
def flush_stale_sessions
  @forwarder_mutex.synchronize do
    stale_sessions = []
    @response_queues.each_pair do |payload, queue|
      unless (queue.time + CONNECTION_TIMEOUT) > Time.now
        stale_sessions << payload
      end
    end
    stale_sessions.each do |payload|
      stale_queue = @response_queues.delete(payload)
      stale_queue.stop_processing unless stale_queue.nil?
    end
  end
end