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.
451 452 453 454 |
# File 'lib/metasploit/aggregator.rb', line 451 def initialize @router = Router.instance @manager = ConnectionManager.instance end |
Instance Method Details
#add_cable(type, host, port, certificate = nil) ⇒ Object
485 486 487 488 489 490 491 492 493 494 495 496 497 498 |
# File 'lib/metasploit/aggregator.rb', line 485 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
456 457 458 |
# File 'lib/metasploit/aggregator.rb', line 456 def available? !@manager.nil? end |
#available_addresses ⇒ Object
518 519 520 521 522 523 524 525 |
# File 'lib/metasploit/aggregator.rb', line 518 def available_addresses addr_list = Socket.ip_address_list addresses = [] addr_list.each do |addr| addresses << addr.ip_address end addresses end |
#cables ⇒ Object
464 465 466 |
# File 'lib/metasploit/aggregator.rb', line 464 def cables @manager.cables end |
#default ⇒ Object
513 514 515 516 |
# File 'lib/metasploit/aggregator.rb', line 513 def default _send, _recv, console = @router.get_forward('default') console end |
#obtain_session(payload, uuid) ⇒ Object
468 469 470 471 472 473 474 |
# File 'lib/metasploit/aggregator.rb', line 468 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
506 507 508 509 510 511 |
# File 'lib/metasploit/aggregator.rb', line 506 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
550 551 552 553 554 555 |
# File 'lib/metasploit/aggregator.rb', line 550 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
476 477 478 479 |
# File 'lib/metasploit/aggregator.rb', line 476 def release_session(payload) @manager.park(payload) true # return always return success for now end |
#remove_cable(host, port) ⇒ Object
500 501 502 503 504 |
# File 'lib/metasploit/aggregator.rb', line 500 def remove_cable(host, port) unless @manager.nil? @manager.remove_cable(host, port) end end |
#request(uuid) ⇒ Object
535 536 537 538 539 540 541 542 |
# File 'lib/metasploit/aggregator.rb', line 535 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
544 545 546 547 548 |
# File 'lib/metasploit/aggregator.rb', line 544 def respond(uuid, data) _send, recv = @router.get_forward(uuid) recv << data unless recv.nil? true end |
#session_details(payload) ⇒ Object
481 482 483 |
# File 'lib/metasploit/aggregator.rb', line 481 def session_details(payload) @manager.connection_details(payload) end |
#sessions ⇒ Object
460 461 462 |
# File 'lib/metasploit/aggregator.rb', line 460 def sessions @manager.connections end |
#stop ⇒ Object
527 528 529 530 531 532 533 |
# File 'lib/metasploit/aggregator.rb', line 527 def stop unless @manager.nil? @manager.stop end @manager = nil true end |