# # $Id$ # $Revision$ # module Msf ### # # This plugin is a simple editor command, designed to make it easy to edit modules in the console. # ### class Plugin::Editor < Msf::Plugin ### # # This class implements a single edit command. # ### class EditorCommandDispatcher include Msf::Ui::Console::ModuleCommandDispatcher # # The dispatcher's name. # def name "Editor" end # # Returns the hash of commands supported by this dispatcher. # def commands # Don't update super here since we don't want the commands from # super, just the methods { "edit" => "A handy editor commmand" } end # # This method handles the edit command. # def cmd_edit(*args) print_line("Launching editor...") e = Rex::Compat.getenv("EDITOR") || "vi" if (not mod) or (not (path = mod.file_path)) print_line("Error: No active module selected") return nil end ret = system(e, path) if not ret print_line("Failed to execute your editor (#{e})") return end reload ret end end def initialize(framework, opts) super # console dispatcher commands. add_console_dispatcher(EditorCommandDispatcher) end def cleanup remove_console_dispatcher('Editor') end def name "editor" end def desc "Simple Editor Plugin" end protected end end