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