Class: Arachni::UI::Web::Scheduler
- Inherits:
-
Object
- Object
- Arachni::UI::Web::Scheduler
- Includes:
- Utilities
- Defined in:
- lib/arachni/ui/web/scheduler.rb
Overview
Schedules and executes scan jobs.
@author: Tasos "Zapotek" Laskos
<tasos.laskos@gmail.com>
<zapotek@segfault.gr>
@version: 0.1.2
Defined Under Namespace
Classes: Job
Instance Method Summary (collapse)
-
- (Object) delete(id)
Removed a job.
-
- (Object) delete_all
Removes all jobs.
-
- (Scheduler) initialize(opts, settings)
constructor
Initializes the Scheduler and starts the clock.
-
- (Array) jobs(*args)
Returns all scheduled jobs.
-
- (String) run(job, env = nil, session = nil, &block)
Runs a job.
-
- (Object) run_and_destroy(job, &block)
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
- (Scheduler) initialize(opts, settings)
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
- (Object) delete(id)
Removed a job.
142 143 144 |
# File 'lib/arachni/ui/web/scheduler.rb', line 142 def delete( id ) Job.get( id ).destroy end |
- (Object) delete_all
Removes all jobs.
133 134 135 |
# File 'lib/arachni/ui/web/scheduler.rb', line 133 def delete_all jobs.destroy end |
- (Array) jobs(*args)
Returns all scheduled jobs.
126 127 128 |
# File 'lib/arachni/ui/web/scheduler.rb', line 126 def jobs( *args ) Job.all( *args ) end |
- (String) run(job, env = nil, session = nil, &block)
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 |
- (Object) run_and_destroy(job, &block)
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 |