class Object

Overloads the {Object} class providing a {#deep_clone} method.

@author Tasos “Zapotek” Laskos <tasos.laskos@arachni-scanner.com>

Public Instance Methods

ap( obj ) click to toggle source
Calls superclass method
# File lib/arachni.rb, line 15
def ap( obj )
    super obj, raw: true
end
deep_clone() click to toggle source

Deep-clones self using a Marshal dump-load.

@return [Object]

Duplicate of self.
# File lib/arachni/ruby/object.rb, line 18
def deep_clone
    Marshal.load( Marshal.dump( self ) )
end
dispatcher_connect( *args ) click to toggle source

@param (see Arachni::Processes::Dispatchers#connect) @return (see Arachni::Processes::Dispatchers#connect)

# File lib/arachni/processes/helpers/dispatchers.rb, line 39
def dispatcher_connect( *args )
    Arachni::Processes::Dispatchers.connect( *args )
end
dispatcher_kill( *args ) click to toggle source

@param (see Arachni::Processes::Dispatchers#kill) @return (see Arachni::Processes::Dispatchers#kill)

# File lib/arachni/processes/helpers/dispatchers.rb, line 23
def dispatcher_kill( *args )
    Arachni::Processes::Dispatchers.kill( *args )
end
dispatcher_kill_by_instance( instance ) click to toggle source
# File lib/arachni/processes/helpers/dispatchers.rb, line 27
def dispatcher_kill_by_instance( instance )
    dispatcher_kill instance.options.datastore.dispatcher_url
end
dispatcher_killall() click to toggle source

@param (see Arachni::Processes::Dispatchers#killall) @return (see Arachni::Processes::Dispatchers#killall)

# File lib/arachni/processes/helpers/dispatchers.rb, line 33
def dispatcher_killall
    Arachni::Processes::Dispatchers.killall
end
dispatcher_light_spawn( *args ) click to toggle source

@param (see Arachni::Processes::Dispatchers#light_spawn) @return (see Arachni::Processes::Dispatchers#light_spawn)

# File lib/arachni/processes/helpers/dispatchers.rb, line 17
def dispatcher_light_spawn( *args )
    Arachni::Processes::Dispatchers.light_spawn( *args )
end
dispatcher_spawn( *args ) click to toggle source

@param (see Arachni::Processes::Dispatchers#spawn) @return (see Arachni::Processes::Dispatchers#spawn)

# File lib/arachni/processes/helpers/dispatchers.rb, line 11
def dispatcher_spawn( *args )
    Arachni::Processes::Dispatchers.spawn( *args )
end
exit?() click to toggle source
# File lib/arachni/processes/executables/browser.rb, line 11
def exit?
    $stdin.read_nonblock( 1 )
    false
rescue Errno::EWOULDBLOCK
    false
# Parent dead or willfully closed STDIN as a signal.
rescue EOFError, Errno::EPIPE => e
    print_exception( e )
    true
end
instance_connect( *args ) click to toggle source

@param (see Arachni::Processes::Instances#connect) @return (see Arachni::Processes::Instances#connect)

# File lib/arachni/processes/helpers/instances.rb, line 43
def instance_connect( *args )
    Arachni::Processes::Instances.connect( *args )
end
instance_dispatcher_spawn( *args ) click to toggle source

@param (see Arachni::Processes::Instances#dispatcher_spawn) @return (see Arachni::Processes::Instances#dispatcher_spawn)

# File lib/arachni/processes/helpers/instances.rb, line 27
def instance_dispatcher_spawn( *args )
    Arachni::Processes::Instances.dispatcher.spawn( *args )
end
instance_grid_spawn( *args ) click to toggle source

@param (see Arachni::Processes::Instances#grid_spawn) @return (see Arachni::Processes::Instances#grid_spawn)

# File lib/arachni/processes/helpers/instances.rb, line 17
def instance_grid_spawn( *args )
    Arachni::Processes::Instances.grid_spawn( *args )
end
instance_kill( url ) click to toggle source
# File lib/arachni/processes/helpers/instances.rb, line 31
def instance_kill( url )
    Arachni::Processes::Instances.kill url
end
instance_killall() click to toggle source

@param (see Arachni::Processes::Instances#killall) @return (see Arachni::Processes::Instances#killall)

# File lib/arachni/processes/helpers/instances.rb, line 37
def instance_killall
    Arachni::Processes::Instances.killall
end
instance_light_grid_spawn( *args ) click to toggle source
# File lib/arachni/processes/helpers/instances.rb, line 21
def instance_light_grid_spawn( *args )
    Arachni::Processes::Instances.light_grid_spawn( *args )
end
instance_spawn( *args ) click to toggle source

@param (see Arachni::Processes::Instances#spawn) @return (see Arachni::Processes::Instances#spawn)

# File lib/arachni/processes/helpers/instances.rb, line 11
def instance_spawn( *args )
    Arachni::Processes::Instances.spawn( *args )
end
instance_token_for( *args ) click to toggle source

@param (see Arachni::Processes::Instances#token_for) @return (see Arachni::Processes::Instances#token_for)

# File lib/arachni/processes/helpers/instances.rb, line 49
def instance_token_for( *args )
    Arachni::Processes::Instances.token_for( *args )
end
parent_alive?() click to toggle source
# File lib/arachni/processes/executables/base.rb, line 22
def parent_alive?
    # Windows is not big on POSIX so try it its own way if possible.
    if Gem.win_platform?
        begin
            alive = false
            wmi = WIN32OLE.connect( 'winmgmts://' )
            processes = wmi.ExecQuery( "select ProcessId from win32_process where ProcessID='#{ppid}'")
            processes.each do |proc|
                proc.ole_free
                alive = true
            end
            processes.ole_free
            wmi.ole_free

            return alive
        rescue WIN32OLERuntimeError
        end
    end

    !!(Process.kill( 0, ppid ) rescue false)
end
ppid() click to toggle source
# File lib/arachni/processes/executables/base.rb, line 18
def ppid
    $options[:ppid]
end
print_exception( e ) click to toggle source
process_kill( *args ) click to toggle source

@param (see Arachni::Processes::Manager#kill) @return (see Arachni::Processes::Manager#kill)

# File lib/arachni/processes/helpers/processes.rb, line 17
def process_kill( *args )
    Arachni::Processes::Manager.kill( *args )
end
process_kill_many( *args ) click to toggle source

@param (see Arachni::Processes::Manager#kill_many) @return (see Arachni::Processes::Manager#kill_many)

# File lib/arachni/processes/helpers/processes.rb, line 29
def process_kill_many( *args )
    Arachni::Processes::Manager.kill_many( *args )
end
process_kill_reactor( *args ) click to toggle source

@param (see Arachni::Processes::Manager#kill_reactor) @return (see Arachni::Processes::Manager#kill_reactor)

# File lib/arachni/processes/helpers/processes.rb, line 11
def process_kill_reactor( *args )
    Arachni::Processes::Manager.kill_reactor( *args )
end
process_killall( *args ) click to toggle source

@param (see Arachni::Processes::Manager#killall) @return (see Arachni::Processes::Manager#killall)

# File lib/arachni/processes/helpers/processes.rb, line 23
def process_killall( *args )
    Arachni::Processes::Manager.killall( *args )
end
puts_stderr( str ) click to toggle source
# File lib/arachni/processes/executables/base.rb, line 44
def puts_stderr( str )
    return if $stderr.closed?

    $stderr.puts str
rescue
end
rpc_clone() click to toggle source
# File lib/arachni/ruby/object.rb, line 22
def rpc_clone
    if self.class.respond_to?( :from_rpc_data )
        self.class.from_rpc_data(
            Arachni::RPC::Serializer.serializer.load(
                Arachni::RPC::Serializer.serializer.dump( to_rpc_data_or_self )
            )
        )
    else
        Arachni::RPC::Serializer.serializer.load(
            Arachni::RPC::Serializer.serializer.dump( self )
        )
    end
end
to_rpc_data_or_self() click to toggle source
# File lib/arachni/ruby/object.rb, line 36
def to_rpc_data_or_self
    respond_to?( :to_rpc_data ) ? to_rpc_data : self
end