class Rex::Ui::Text::IrbShell
This class wraps the creation of an IRB shell.
Public Class Methods
new(binding)
click to toggle source
# File lib/rex/ui/text/irb_shell.rb, line 14 def initialize(binding) @binding_ctx = binding end
Public Instance Methods
run()
click to toggle source
Runs the IRB shell until completion. The binding parameter initializes IRB to the appropriate binding context.
# File lib/rex/ui/text/irb_shell.rb, line 22 def run # Initialize IRB by setting up its internal configuration hash and # stuff. if (@@IrbInitialized == false) load('irb.rb') IRB.setup(nil) IRB.conf[:PROMPT_MODE] = :SIMPLE @@IrbInitialized = true end # Create a new IRB instance irb = IRB::Irb.new(IRB::WorkSpace.new(@binding_ctx)) # Set the primary irb context so that exit and other intrinsic # commands will work. IRB.conf[:MAIN_CONTEXT] = irb.context # Trap interrupt old_sigint = trap("SIGINT") do begin irb.signal_handle rescue RubyLex::TerminateLineInput irb.eval_input end end # Keep processing input until the cows come home... catch(:IRB_EXIT) do irb.eval_input end trap("SIGINT", old_sigint) end