X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;f=hippotatd;h=1865dad819a7231b2b743ac071076ec2b0e2f5e6;hb=dd8fb46e1a70de5a3fa53434537025395d31764b;hp=e3e42fb18ee6790dfc8125206a720970c2316099;hpb=2eecd19c0f96d98e599b680447510aac06e8dd86;p=hippotat.git diff --git a/hippotatd b/hippotatd index e3e42fb..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,14 +397,14 @@ 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() - if opts.pidfile is not None: - pfh = open(opts.pidfile, 'w') - print(mypid, file=pfh) - pfh.close() - + pfh.close() + logger = subprocess.Popen(['logger','-d', '-t','hippotat(stderr)', '--id=%d' % mypid, @@ -446,6 +454,12 @@ optparser.add_option('--syslog-facility', 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()