class Object
Overloads the {Object} class providing a {#deep_clone} method.
@author Tasos “Zapotek” Laskos <tasos.laskos@arachni-scanner.com>
Public Instance Methods
# File lib/arachni.rb, line 15 def ap( obj ) super obj, raw: true end
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
@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
@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
# File lib/arachni/processes/helpers/dispatchers.rb, line 27 def dispatcher_kill_by_instance( instance ) dispatcher_kill instance.options.datastore.dispatcher_url end
@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
@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
@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
# 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
@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
@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
@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
# File lib/arachni/processes/helpers/instances.rb, line 31 def instance_kill( url ) Arachni::Processes::Instances.kill url end
@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
# File lib/arachni/processes/helpers/instances.rb, line 21 def instance_light_grid_spawn( *args ) Arachni::Processes::Instances.light_grid_spawn( *args ) end
@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
@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
# 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
# File lib/arachni/processes/executables/base.rb, line 18 def ppid $options[:ppid] end
# File lib/arachni/processes/executables/browser.rb, line 3 def print_exception( e ) puts_stderr "#{Process.pid}: [#{e.class}] #{e}" e.backtrace.each do |line| puts_stderr "#{Process.pid}: #{line}" end rescue end
@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
@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
@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
@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
# File lib/arachni/processes/executables/base.rb, line 44 def puts_stderr( str ) return if $stderr.closed? $stderr.puts str rescue end
# 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
# File lib/arachni/ruby/object.rb, line 36 def to_rpc_data_or_self respond_to?( :to_rpc_data ) ? to_rpc_data : self end