Class: Rex::Ui::Text::IrbShell
- Inherits:
-
Object
- Object
- Rex::Ui::Text::IrbShell
- Defined in:
- lib/rex/ui/text/irb_shell.rb
Overview
This class wraps the creation of an IRB shell.
Constant Summary collapse
- @@IrbInitialized =
false
Instance Method Summary collapse
-
#initialize(binding) ⇒ IrbShell
constructor
A new instance of IrbShell.
-
#run ⇒ Object
Runs the IRB shell until completion.
Constructor Details
#initialize(binding) ⇒ IrbShell
Returns a new instance of IrbShell.
14 15 16 |
# File 'lib/rex/ui/text/irb_shell.rb', line 14 def initialize(binding) @binding_ctx = binding end |
Instance Method Details
#run ⇒ Object
Runs the IRB shell until completion. The binding parameter initializes IRB to the appropriate binding context.
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# 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 irb.signal_handle end # Keep processing input until the cows come home... catch(:IRB_EXIT) do irb.eval_input end trap("SIGINT", old_sigint) end |