Module: Rex::Post::SMB::Ui::Console::CommandDispatcher
- Defined in:
- lib/rex/post/smb/ui/console/command_dispatcher.rb
Overview
Base class for all command dispatchers within the SMB console user interface.
Defined Under Namespace
Instance Attribute Summary
Attributes included from Ui::Text::DispatcherShell::CommandDispatcher
Instance Method Summary collapse
-
#active_share ⇒ RubySMB::SMB2::Tree
Returns the active share.
-
#client ⇒ RubySMB::Client
Returns the smb client context.
-
#docs_dir ⇒ Object
Return the subdir of the ‘documentation/` directory that should be used to find usage documentation.
-
#filter_commands(all, reqs) ⇒ Object
Returns the commands that meet the requirements.
-
#initialize(console) ⇒ Object
Initializes an instance of the core command set using the supplied session and client for interactivity.
-
#log_error(msg) ⇒ Object
Log that an error occurred.
-
#msf_loaded? ⇒ Boolean
Returns true if the client has a framework object.
-
#session ⇒ Msf::Sessions::SMB
Returns the smb session context.
-
#simple_client ⇒ Rex::Proto::SMB::SimpleClient
Returns the smb simple client.
- #unknown_command(cmd, line) ⇒ Object
Methods included from Msf::Ui::Console::CommandDispatcher::Session
#cmd_background, #cmd_background_help, #cmd_exit, #cmd_irb, #cmd_irb_help, #cmd_irb_tabs, #cmd_pry, #cmd_pry_help, #cmd_resource, #cmd_resource_help, #cmd_resource_tabs, #cmd_sessions, #cmd_sessions_help, #commands
Methods included from Ui::Text::DispatcherShell::CommandDispatcher
#cmd_help, #cmd_help_help, #cmd_help_tabs, #commands, #deprecated_cmd, #deprecated_commands, #deprecated_help, #help_to_s, included, #print, #print_error, #print_good, #print_line, #print_status, #print_warning, #tab_complete_directory, #tab_complete_filenames, #tab_complete_generic, #tab_complete_source_address, #update_prompt
Instance Method Details
#active_share ⇒ RubySMB::SMB2::Tree
Returns the active share
60 61 62 63 |
# File 'lib/rex/post/smb/ui/console/command_dispatcher.rb', line 60 def active_share console = shell console.active_share end |
#client ⇒ RubySMB::Client
Returns the smb client context.
34 35 36 37 |
# File 'lib/rex/post/smb/ui/console/command_dispatcher.rb', line 34 def client console = shell console.client end |
#docs_dir ⇒ Object
Return the subdir of the ‘documentation/` directory that should be used to find usage documentation
90 91 92 |
# File 'lib/rex/post/smb/ui/console/command_dispatcher.rb', line 90 def docs_dir File.join(super, 'smb_session') end |
#filter_commands(all, reqs) ⇒ Object
Returns the commands that meet the requirements
68 69 70 71 72 73 74 75 |
# File 'lib/rex/post/smb/ui/console/command_dispatcher.rb', line 68 def filter_commands(all, reqs) all.delete_if do |cmd, _desc| if reqs[cmd]&.any? { |req| !client.commands.include?(req) } @filtered_commands << cmd true end end end |
#initialize(console) ⇒ Object
Initializes an instance of the core command set using the supplied session and client for interactivity.
24 25 26 27 28 |
# File 'lib/rex/post/smb/ui/console/command_dispatcher.rb', line 24 def initialize(console) super @msf_loaded = nil @filtered_commands = [] end |
#log_error(msg) ⇒ Object
Log that an error occurred.
111 112 113 114 115 116 117 |
# File 'lib/rex/post/smb/ui/console/command_dispatcher.rb', line 111 def log_error(msg) print_error(msg) elog(msg, 'smb') dlog("Call stack:\n#{$ERROR_POSITION.join("\n")}", 'smb') end |
#msf_loaded? ⇒ Boolean
Returns true if the client has a framework object.
Used for firing framework session events
99 100 101 102 103 104 105 106 |
# File 'lib/rex/post/smb/ui/console/command_dispatcher.rb', line 99 def msf_loaded? return @msf_loaded unless @msf_loaded.nil? # if we get here we must not have initialized yet @msf_loaded = !session.framework.nil? @msf_loaded end |
#session ⇒ Msf::Sessions::SMB
Returns the smb session context.
51 52 53 54 |
# File 'lib/rex/post/smb/ui/console/command_dispatcher.rb', line 51 def session console = shell console.session end |
#simple_client ⇒ Rex::Proto::SMB::SimpleClient
Returns the smb simple client.
43 44 45 |
# File 'lib/rex/post/smb/ui/console/command_dispatcher.rb', line 43 def simple_client shell.simple_client end |
#unknown_command(cmd, line) ⇒ Object
77 78 79 80 81 82 83 84 |
# File 'lib/rex/post/smb/ui/console/command_dispatcher.rb', line 77 def unknown_command(cmd, line) if @filtered_commands.include?(cmd) print_error("The \"#{cmd}\" command is not supported by this session type (#{session.session_type})") return :handled end super end |