Class: Arachni::UI::Web::Scheduler
- Includes:
- Utilities
- Defined in:
- lib/arachni/ui/web/scheduler.rb
Overview
Schedules and executes scan jobs.
@author: Tasos “Zapotek” Laskos
<[email protected]>
<[email protected]>
@version: 0.1.2
Defined Under Namespace
Classes: Job
Instance Method Summary collapse
-
#delete(id) ⇒ Object
Removed a job.
-
#delete_all ⇒ Object
Removes all jobs.
-
#initialize(opts, settings) ⇒ Scheduler
constructor
Initializes the Scheduler and starts the clock.
-
#jobs(*args) ⇒ Array
Returns all scheduled jobs.
-
#run(job, env = nil, session = nil, &block) ⇒ String
Runs a job.
-
#run_and_destroy(job, &block) ⇒ Object
Runs a job and removed it from the DB.
Methods included from Utilities
#escape, #escape_hash, #parse_datetime, #port_to_url, #remove_proto, #unescape, #unescape_hash
Constructor Details
#initialize(opts, settings) ⇒ Scheduler
Initializes the Scheduler and starts the clock.
51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/arachni/ui/web/scheduler.rb', line 51 def initialize( opts, settings ) @opts = opts @settings = settings DataMapper::setup( :default, "sqlite3://#{@settings.db}/default.db" ) DataMapper.finalize Job.auto_upgrade! ticktock! end |
Instance Method Details
#delete(id) ⇒ Object
Removed a job.
142 143 144 |
# File 'lib/arachni/ui/web/scheduler.rb', line 142 def delete( id ) Job.get( id ).destroy end |
#delete_all ⇒ Object
Removes all jobs.
133 134 135 |
# File 'lib/arachni/ui/web/scheduler.rb', line 133 def delete_all jobs.destroy end |
#jobs(*args) ⇒ Array
Returns all scheduled jobs.
126 127 128 |
# File 'lib/arachni/ui/web/scheduler.rb', line 126 def jobs( *args ) Job.all( *args ) end |
#run(job, env = nil, session = nil, &block) ⇒ String
Runs a job.
72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
# File 'lib/arachni/ui/web/scheduler.rb', line 72 def run( job, env = nil, session = nil, &block ) raise( "This method requires a block!" ) if !block_given? @settings.dispatchers.connect( job.dispatcher ).dispatch( job.url ){ |instance| if instance.rpc_exception? @settings.log.scheduler_instance_dispatch_failed( env ) next end env = { 'REMOTE_ADDR' => job.owner_addr, 'REMOTE_HOST' => job.owner_host } if env.nil? @settings.log.scheduler_instance_dispatched( env, instance['url'] ) @settings.log.scheduler_instance_owner_assigned( env, job.url ) arachni = @settings.instances.connect( instance['url'], session, instance['token'] ) opts = YAML::load( job.opts ) arachni.opts.set( opts['settings'] ){ arachni.plugins.load( opts['plugins'] ) { arachni.modules.load( opts['modules'] ) { arachni.framework.run{ @settings.log.scheduler_scan_started( env, job.url ) block.call( instance['url'] ) } } } } } end |
#run_and_destroy(job, &block) ⇒ Object
Runs a job and removed it from the DB.
113 114 115 116 117 118 119 |
# File 'lib/arachni/ui/web/scheduler.rb', line 113 def run_and_destroy( job, &block ) run( job ){ |url| job.destroy block.call( url ) if block_given? } end |