X-Git-Url: https://git.distorted.org.uk/~mdw/hippotat/blobdiff_plain/d84dbf4bde624a66318086c61c387e6448c707e4..7852bfc8a1ba1cb194c78c3ee2826886bc1cc0f3:/hippotatd diff --git a/hippotatd b/hippotatd index f4bc551..1865dad 100755 --- a/hippotatd +++ b/hippotatd @@ -25,7 +25,7 @@ # the file AGPLv3+CAFv2. If not, email Ian Jackson # . - +#@ sys.path.append(@PYBUILD_INSTALL_DIR@) from hippotatlib import * import os @@ -326,6 +326,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 +378,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 +397,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 +443,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()