X-Git-Url: https://git.distorted.org.uk/~mdw/hippotat/blobdiff_plain/d84dbf4bde624a66318086c61c387e6448c707e4..1d33eef34159fefbafbade2c09ead1c5c23ff32c:/hippotatd diff --git a/hippotatd b/hippotatd index f4bc551..bc55650 100755 --- a/hippotatd +++ b/hippotatd @@ -25,7 +25,7 @@ # the file AGPLv3+CAFv2. If not, email Ian Jackson # . - +#@ import sys; sys.path.append('@PYBUILD_INSTALL_DIR@') from hippotatlib import * import os @@ -38,7 +38,6 @@ import twisted.internet from twisted.web.server import NOT_DONE_YET import twisted.web.static -import twisted.python.syslog import hippotatlib.ownsource from hippotatlib.ownsource import SourceShipmentPreparer @@ -326,6 +325,12 @@ def process_cfg(_opts, putative_servers, putative_clients): ('peer', 'vrelay'), ('rnets','vnetwork'))) + if opts.printconfig is not None: + try: val = cfg.get(c.server, opts.printconfig) + except NoOptionError: pass + else: print(val) + sys.exit(0) + def catch_termination(): def run_cleanups(): for cleanup in cleanups: @@ -372,6 +377,8 @@ def daemonise(): daemonic_reactor = (twisted.internet.interfaces.IReactorDaemonize .providedBy(reactor)) if daemonic_reactor: reactor.beforeDaemonize() + if opts.pidfile is not None: + pidfile_h = open(opts.pidfile, 'w') rfd, wfd = os.pipe() childpid = os.fork() if childpid: @@ -389,11 +396,17 @@ def daemonise(): grandchildpid = os.fork() if grandchildpid: # we are the intermediate child + if opts.pidfile is not None: + print(grandchildpid, file=pfh) + pfh.close() os._exit(0) + mypid = os.getpid() + pfh.close() + logger = subprocess.Popen(['logger','-d', '-t','hippotat(stderr)', - '--id=%d' % os.getpid(), + '--id=%d' % mypid, '-p',opts.syslogfacility + '.err'], stdin=subprocess.PIPE, stdout=subprocess.DEVNULL, @@ -429,12 +442,23 @@ optparser.add_option('--daemon', action='store_true', dest='daemon', default=False, help='daemonize (and log to syslog)') +optparser.add_option('--pidfile', + nargs=1, type='string', + action='store', dest='pidfile', default=None, + help='write pid to this file') + optparser.add_option('--syslog-facility', nargs=1, type='string',action='store', metavar='FACILITY', dest='syslogfacility', default=None, help='log to syslog, with specified facility') +optparser.add_option('--print-config', + nargs=1, type='string',action='store', + metavar='OPTION', dest='printconfig', + default=None, + help='print one config option value and exit') + common_startup(process_cfg) catch_termination() start_http()