Parent

Methods

Class/Module Index [+]

Quicksearch

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
                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

[Validate]

Generated with the Darkfish Rdoc Generator 2.