warvox - warvox - VoIP based wardialing tool, forked from rapid7/warvox.
(HTM) git clone git://jay.scot/warvox
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
---
warvox (2083B)
---
1 #!/usr/bin/env ruby
2 ###################
3
4 require 'getoptlong'
5 require 'open3'
6
7 #
8 # Load the library path
9 #
10 base = __FILE__
11 while File.symlink?(base)
12 base = File.expand_path(File.readlink(base), File.dirname(base))
13 end
14
15 $:.unshift(File.join(File.expand_path(File.dirname(base)), '..', 'lib'))
16
17 voxroot = File.expand_path(File.join(File.dirname(base), '..'))
18 manager = File.expand_path(File.join(File.dirname(base), 'worker_manager.rb'))
19
20 require 'warvox'
21
22
23 Dir.chdir(voxroot)
24
25 def stop
26 $stderr.puts "[-] Interrupt received, shutting down workers and web server..."
27 Process.kill("TERM", @manager_pid) if @manager_pid
28 exit(0)
29 end
30
31 def usage
32 $stderr.puts "#{$0} [--address IP] [--port PORT] --background"
33 exit(0)
34 end
35
36 opts =
37 {
38 'ServerPort' => 7777,
39 'ServerHost' => '127.0.0.1',
40 'Background' => false,
41 }
42
43 args = GetoptLong.new(
44 ["--address", "-a", GetoptLong::REQUIRED_ARGUMENT ],
45 ["--port", "-p", GetoptLong::REQUIRED_ARGUMENT ],
46 ["--daemon", "-d", GetoptLong::NO_ARGUMENT ],
47 ["--help", "-h", GetoptLong::NO_ARGUMENT]
48 )
49
50 args.each do |opt,arg|
51 case opt
52 when '--address'
53 opts['ServerHost'] = arg
54 when '--port'
55 opts['ServerPort'] = arg
56 when '--daemon'
57 opts['Background'] = true
58 when '--help'
59 usage()
60 end
61 end
62
63 args = [
64 'server',
65 '-p', opts['ServerPort'].to_s,
66 '-b', opts['ServerHost'],
67 '-e', 'production',
68 ]
69
70 if opts['Background']
71 args.push("-d")
72 end
73
74
75 trap("SIGINT") { Thread.new{ stop } }
76
77 $browser_url = "http://#{opts['ServerHost']}:#{opts['ServerPort']}/"
78
79 WarVOX::Log.info("")
80 WarVOX::Log.info("[*] Starting WarVOX on #{$browser_url}")
81 WarVOX::Log.info("")
82 WarVOX::Log.info("WarVOX is starting up...")
83
84 @manager_pid = Process.fork()
85 if not @manager_pid
86 while ARGV.shift do
87 end
88 load(manager)
89 exit(0)
90 end
91
92 WarVOX::Log.info("Worker Manager has PID #{@manager_pid}")
93
94 @webserver_pid = $$
95
96 WarVOX::Log.info("Web Server has PID #{@webserver_pid}")
97
98 while(ARGV.length > 0); ARGV.shift; end
99 args.each {|arg| ARGV.push(arg) }
100
101 # need to pass config opts above into the system command below
102 system "bin/rails", *args