Class: Metasploit::Aggregator::Server
- Defined in:
- lib/metasploit/aggregator.rb
Instance Method Summary collapse
- #add_cable(type, host, port, certificate = nil) ⇒ Object
- #available? ⇒ Boolean
- #available_addresses ⇒ Object
- #cables ⇒ Object
- #default ⇒ Object
-
#initialize ⇒ Server
constructor
A new instance of Server.
- #obtain_session(payload, uuid) ⇒ Object
- #register_default(uuid, payload_list) ⇒ Object
- #register_response_channel(io) ⇒ Object
- #release_session(payload) ⇒ Object
- #remove_cable(host, port) ⇒ Object
- #request(uuid) ⇒ Object
- #respond(uuid, data) ⇒ Object
- #session_details(payload) ⇒ Object
- #sessions ⇒ Object
- #stop ⇒ Object
Methods inherited from Service
Constructor Details
#initialize ⇒ Server
Returns a new instance of Server.
440 441 442 443 |
# File 'lib/metasploit/aggregator.rb', line 440 def initialize @router = Router.instance @manager = ConnectionManager.instance end |
Instance Method Details
#add_cable(type, host, port, certificate = nil) ⇒ Object
474 475 476 477 478 479 480 481 482 483 484 485 486 487 |
# File 'lib/metasploit/aggregator.rb', line 474 def add_cable(type, host, port, certificate = nil) unless @manager.nil? case type when Cable::HTTPS # TODO: check if already listening on that port @manager.add_cable_https(host, port, certificate) when Cable::HTTP @manager.add_cable_http(host, port) else Logger.log("#{type} cables are not supported.") end end true end |
#available? ⇒ Boolean
445 446 447 |
# File 'lib/metasploit/aggregator.rb', line 445 def available? !@manager.nil? end |
#available_addresses ⇒ Object
507 508 509 510 511 512 513 514 |
# File 'lib/metasploit/aggregator.rb', line 507 def available_addresses addr_list = Socket.ip_address_list addresses = [] addr_list.each do |addr| addresses << addr.ip_address end addresses end |
#cables ⇒ Object
453 454 455 |
# File 'lib/metasploit/aggregator.rb', line 453 def cables @manager.cables end |
#default ⇒ Object
502 503 504 505 |
# File 'lib/metasploit/aggregator.rb', line 502 def default _send, _recv, console = @router.get_forward('default') console end |
#obtain_session(payload, uuid) ⇒ Object
457 458 459 460 461 462 463 |
# File 'lib/metasploit/aggregator.rb', line 457 def obtain_session(payload, uuid) # return session object details or UUID/uri # forwarding will cause new session creation on the console # TODO: check and set lock on payload requested see note below in register_default @manager.register_forward(uuid, [ payload ]) true # update later to return if lock obtained end |
#register_default(uuid, payload_list) ⇒ Object
495 496 497 498 499 500 |
# File 'lib/metasploit/aggregator.rb', line 495 def register_default(uuid, payload_list) # add this payload list to each forwarder for this remote console # TODO: consider adding boolean param to ConnectionManager.register_forward to 'lock' @manager.register_forward(uuid, payload_list) true end |
#register_response_channel(io) ⇒ Object
539 540 541 542 543 544 |
# File 'lib/metasploit/aggregator.rb', line 539 def register_response_channel(io) # not implemented "client only method" response = "register_response_channel not implemented on server" Logger.log response response end |
#release_session(payload) ⇒ Object
465 466 467 468 |
# File 'lib/metasploit/aggregator.rb', line 465 def release_session(payload) @manager.park(payload) true # return always return success for now end |
#remove_cable(host, port) ⇒ Object
489 490 491 492 493 |
# File 'lib/metasploit/aggregator.rb', line 489 def remove_cable(host, port) unless @manager.nil? @manager.remove_cable(host, port) end end |
#request(uuid) ⇒ Object
524 525 526 527 528 529 530 531 |
# File 'lib/metasploit/aggregator.rb', line 524 def request(uuid) # return requests here send, _recv = @router.reverse_route(uuid) if send.length > 0 result = send.pop end result end |
#respond(uuid, data) ⇒ Object
533 534 535 536 537 |
# File 'lib/metasploit/aggregator.rb', line 533 def respond(uuid, data) _send, recv = @router.get_forward(uuid) recv << data unless recv.nil? true end |
#session_details(payload) ⇒ Object
470 471 472 |
# File 'lib/metasploit/aggregator.rb', line 470 def session_details(payload) @manager.connection_details(payload) end |
#sessions ⇒ Object
449 450 451 |
# File 'lib/metasploit/aggregator.rb', line 449 def sessions @manager.connections end |
#stop ⇒ Object
516 517 518 519 520 521 522 |
# File 'lib/metasploit/aggregator.rb', line 516 def stop unless @manager.nil? @manager.stop end @manager = nil true end |