class Metasploit::Aggregator::ServerImpl
Public Class Methods
new()
click to toggle source
Calls superclass method
# File lib/metasploit/aggregator.rb, line 283 def initialize super @local_server = Server.new @requestThreads = {} @listeners = [] end
Public Instance Methods
add_cable(cable, _unused_call)
click to toggle source
# File lib/metasploit/aggregator.rb, line 321 def add_cable(cable, _unused_call) pem = nil pem = cable.pem unless cable.pem.empty? result = @local_server.add_cable(cable.type, cable.host, cable.port, pem) Metasploit::Aggregator::Message::Result.new( answer: result ) end
available(_no_params, _unused_call)
click to toggle source
# File lib/metasploit/aggregator.rb, line 290 def available(_no_params, _unused_call) Metasploit::Aggregator::Message::Result.new( answer: @local_server.available? ) end
available_addresses(_no_params, _unused_call)
click to toggle source
# File lib/metasploit/aggregator.rb, line 347 def available_addresses(_no_params, _unused_call) addresses = @local_server.available_addresses Metasploit::Aggregator::Message::String_array.new( value: addresses ) end
cables(_no_parms, _unused_call)
click to toggle source
# File lib/metasploit/aggregator.rb, line 302 def cables(_no_parms, _unused_call) Metasploit::Aggregator::Message::String_array.new( value: @local_server.cables() ) end
default(_no_params, _unused_call)
click to toggle source
# File lib/metasploit/aggregator.rb, line 341 def default(_no_params, _unused_call) uuid = @local_server.default return Metasploit::Aggregator::Message::String_array.new( value: [ uuid ] ) unless uuid.nil? Metasploit::Aggregator::Message::String_array.new() end
obtain_session(args, _unused_call)
click to toggle source
# File lib/metasploit/aggregator.rb, line 306 def obtain_session(args, _unused_call) payload, uuid = args.value Metasploit::Aggregator::Message::Result.new( answer: @local_server.obtain_session(payload, uuid) ) end
process(responses)
click to toggle source
# File lib/metasploit/aggregator.rb, line 352 def process(responses) requests = EnumeratorQueue.new(self) uuid = nil requestingThread = Thread.new do loop do sleep 0.1 # outer loop only occurs until uuid is set break unless uuid.nil? end while true request = @local_server.request(uuid) # TODO: with this in place we can just get the request queue and pop each item to process and forward sleep 0.1 unless request.nil? body = "" body = request.body unless request.body.nil? pb_request = Metasploit::Aggregator::Message::Request.new( headers: request.headers, body: body ) requests.push(pb_request) end end end Thread.new do responses.each do |response| uuid = response.uuid if uuid.nil? next if response.response.nil? request_pb = response.response request = Metasploit::Aggregator::Http::Request.new(request_pb.headers, request_pb.body, nil) @local_server.respond(response.uuid, request) end requestingThread.exit requestingThread.join requests.push(self) end requests.each_item end
register_default(register, _unused_call)
click to toggle source
# File lib/metasploit/aggregator.rb, line 334 def register_default(register, _unused_call) payloads = nil payloads = register.payloads unless register.payloads.empty? result = @local_server.register_default(register.uuid, payloads) Metasploit::Aggregator::Message::Result.new( answer: result ) end
release_session(args, _unused_call)
click to toggle source
# File lib/metasploit/aggregator.rb, line 311 def release_session(args, _unused_call) payload = args.value.shift Metasploit::Aggregator::Message::Result.new( answer: @local_server.release_session(payload) ) end
remove_cable(args, _unused_call)
click to toggle source
# File lib/metasploit/aggregator.rb, line 328 def remove_cable(args, _unused_call) host, port = args.value result = @local_server.remove_cable(host, port) Metasploit::Aggregator::Message::Result.new( answer: result ) end
session_details(args, _unused_call)
click to toggle source
# File lib/metasploit/aggregator.rb, line 316 def session_details(args, _unused_call) payload = args.value.shift Metasploit::Aggregator::Message::Result_map.new( map: @local_server.session_details(payload) ) end
sessions(_no_parms, _unused_call)
click to toggle source
# File lib/metasploit/aggregator.rb, line 298 def sessions(_no_parms, _unused_call) Metasploit::Aggregator::Message::Result_map.new( map: @local_server.sessions() ) end
version(_no_params, _unused_call)
click to toggle source
# File lib/metasploit/aggregator.rb, line 294 def version(_no_params, _unused_call) Metasploit::Aggregator::Message::String_array.new( value: [ @local_server.version ] ) end