]> jfr.im git - irc/quakenet/qwebirc.git/blame - run.py
Add pidfile option to run.py.
[irc/quakenet/qwebirc.git] / run.py
CommitLineData
8b8ebb78 1#!/usr/bin/env python
1d924d97 2# this entire thing is a hack and badly needs reimplementing
a409b906
CP
3import bin.compile
4bin.compile.vcheck()
5
8b8ebb78
CP
6DEFAULT_PORT = 9090
7
8from twisted.scripts.twistd import run
9from optparse import OptionParser
42fdc4c6 10import sys, os, config
8b8ebb78
CP
11
12def run_twistd(args1=None, args2=None):
13 args = [sys.argv[0]]
14 if args1 is not None:
15 args.extend(args1)
16 args.append("qwebirc")
17 if args2 is not None:
18 args.extend(args2)
19 sys.argv = args
20 run()
21
22def help_reactors(*args):
23 run_twistd(["--help-reactors"])
24 sys.exit(1)
25
26DEFAULT_REACTOR = "select" if os.name == "nt" else "poll"
27
28parser = OptionParser()
29parser.add_option("-n", "--no-daemon", help="Don't run in the background.", action="store_false", dest="daemonise", default=True)
30parser.add_option("--help-reactors", help="Display a list of reactor names.", action="callback", callback=help_reactors)
31parser.add_option("-b", "--debug", help="Run in the Python Debugger.", action="store_true", dest="debug", default=False)
0f3c92dc 32parser.add_option("-t", "--tracebacks", help="Display tracebacks in error pages (this reveals a LOT of information, do NOT use in production!)", action="store_true", dest="tracebacks", default=False)
8b8ebb78
CP
33parser.add_option("-r", "--reactor", help="Which reactor to use (see --help-reactors for a list).", dest="reactor", default=DEFAULT_REACTOR)
34parser.add_option("-p", "--port", help="Port to start the server on.", type="int", dest="port", default=DEFAULT_PORT)
ef74f2c1 35parser.add_option("-i", "--ip", help="IP address to listen on.", dest="ip", default="0.0.0.0")
8b8ebb78
CP
36parser.add_option("-l", "--logfile", help="Path to twisted log file.", dest="logfile")
37parser.add_option("-c", "--clf", help="Path to web CLF (Combined Log Format) log file.", dest="clogfile")
64429ed7
CP
38parser.add_option("-C", "--certificate", help="Path to SSL certificate.", dest="sslcertificate")
39parser.add_option("-k", "--key", help="Path to SSL key.", dest="sslkey")
4cfa1a92 40parser.add_option("-P", "--pidfile", help="Path to store PID file", dest="pidfile")
42fdc4c6
CP
41
42sargs = sys.argv[1:]
43if "ARGS" in dir(config):
44 import shlex
45 sargs = shlex.split(config.ARGS) + sargs
46
47(options, args) = parser.parse_args(args=sargs)
8b8ebb78
CP
48
49args1, args2 = [], []
50
51if not options.daemonise:
52 args1.append("-n")
53if options.debug:
54 args1.append("-b")
4bc06f30
CP
55
56if options.reactor != DEFAULT_REACTOR:
57 args1+=["--reactor", options.reactor]
8b8ebb78 58if options.logfile:
4cfa1a92
CP
59 args1+=["--logfile", options.logfile]
60if options.pidfile:
61 args1+=["--pidfile", options.pidfile]
8b8ebb78 62
0f3c92dc
CP
63if not options.tracebacks:
64 args2.append("-n")
8b8ebb78
CP
65if options.clogfile:
66 args2+=["--logfile", options.clogfile]
0f3c92dc 67
64429ed7
CP
68if options.sslcertificate and options.sslkey:
69 args2+=["--certificate", options.sslcertificate, "--privkey", options.sslkey, "--https", options.port]
70else:
71 args2+=["--port", options.port]
72
ef74f2c1 73args2+=["--ip", options.ip]
74
8b8ebb78 75run_twistd(args1, args2)