Introduction
Introduction Statistics Contact Development Disclaimer Help
worker.rb - warvox - VoIP based wardialing tool, forked from rapid7/warvox.
git clone git://jay.scot/warvox
Log
Files
Refs
README
---
worker.rb (1877B)
---
1 #!/usr/bin/env ruby
2 ###################
3
4 #
5 # Load the library path
6 #
7 base = __FILE__
8 while File.symlink?(base)
9 base = File.expand_path(File.readlink(base), File.dirname(base))
10 end
11 $:.unshift(File.join(File.expand_path(File.dirname(base)), '..', 'lib'))
12
13 require 'warvox'
14 require 'fileutils'
15
16
17 ENV['RAILS_ENV'] ||= 'production'
18 $:.unshift(File.join(File.expand_path(File.dirname(base)), '..'))
19
20 @task = nil
21 @job = nil
22
23 def usage
24 $stderr.puts "Usage: #{$0} [JID]"
25 exit(1)
26 end
27
28 def stop
29 if @task
30 @task.stop() rescue nil
31 end
32 if @job
33 Job.where(id: @job_id).update_all({ status: 'stopped', completed_at:…
34 end
35 exit(0)
36 end
37
38 #
39 # Script
40 #
41
42 jid = ARGV.shift() || usage()
43 if (jid and jid =="-h") or (! jid)
44 usage()
45 end
46
47 require 'config/boot'
48 require 'config/environment'
49
50 trap("SIGTERM") { stop() }
51
52 jid = jid.to_i
53
54 @job = Job.where(id: jid).first
55
56 unless @job
57 $stderr.puts "Error: Specified job not found"
58 WarVOX::Log.warn("Worker rejected invalid Job #{jid}")
59 exit(1)
60 end
61
62 $0 = "warvox worker: #{jid} "
63
64 Job.where(id: @job.id).update_all({ started_at: Time.now.utc, status: 'r…
65
66 args = Marshal.load(@job.args) rescue {}
67
68
69 WarVOX::Log.debug("Worker #{@job.id} #{@job.task} is running #{@job.task…
70
71 begin
72
73 case @job.task
74 when 'dialer'
75 @task = WarVOX::Jobs::Dialer.new(@job.id, args)
76 @task.start
77 when 'analysis'
78 @task = WarVOX::Jobs::Analysis.new(@job.id, args)
79 @task.start
80 else
81 Job.where(id: @job.id).update_all({ error: 'unsupported', status: 'err…
82 end
83
84 @job.update_progress(100)
85
86 rescue ::SignalException, ::SystemExit
87 raise $!
88 rescue ::Exception => e
89 WarVOX::Log.warn("Worker #{@job.id} #{@job.task} threw an exception: #…
90 Job.where(id: @job.id).update_all({ error: "Exception: #{e.class} #{e}…
91 end
You are viewing proxied material from jay.scot. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.