aboutsummaryrefslogtreecommitdiff
path: root/rpkid/rpki/rpkid.py
diff options
context:
space:
mode:
authorRob Austein <sra@hactrn.net>2012-05-09 22:09:13 +0000
committerRob Austein <sra@hactrn.net>2012-05-09 22:09:13 +0000
commit7d72caf49ea375c573bc1b9b96575d35e8fa627f (patch)
tree9a24a5c1789bfe22aa1af39edcdeff99b22957d8 /rpkid/rpki/rpkid.py
parent9383dbe4d8826b94b48f7bb162e313207bc05de6 (diff)
Run daemons as, well, daemons. Closes #246.
svn path=/trunk/; revision=4481
Diffstat (limited to 'rpkid/rpki/rpkid.py')
-rw-r--r--rpkid/rpki/rpkid.py43
1 files changed, 34 insertions, 9 deletions
diff --git a/rpkid/rpki/rpkid.py b/rpkid/rpki/rpkid.py
index 7501a16a..0fbf4093 100644
--- a/rpkid/rpki/rpkid.py
+++ b/rpkid/rpki/rpkid.py
@@ -2,12 +2,14 @@
RPKI engine daemon.
Usage: python rpkid.py [ { -c | --config } configfile ]
+ [ { -d | --debug } ]
+ [ { -f | --foreground } ]
[ { -h | --help } ]
[ { -p | --profile } outputfile ]
$Id$
-Copyright (C) 2009--2011 Internet Systems Consortium ("ISC")
+Copyright (C) 2009--2012 Internet Systems Consortium ("ISC")
Permission to use, copy, modify, and distribute this software for any
purpose with or without fee is hereby granted, provided that the above
@@ -36,9 +38,25 @@ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
"""
-import os, time, getopt, sys, lxml.etree, re, random
-import rpki.resource_set, rpki.up_down, rpki.left_right, rpki.x509, rpki.sql
-import rpki.http, rpki.config, rpki.exceptions, rpki.relaxng, rpki.log, rpki.async
+import os
+import time
+import getopt
+import sys
+import lxml.etree
+import re
+import random
+import rpki.resource_set
+import rpki.up_down
+import rpki.left_right
+import rpki.x509
+import rpki.sql
+import rpki.http
+import rpki.config
+import rpki.exceptions
+import rpki.relaxng
+import rpki.log
+import rpki.async
+import rpki.daemonize
class main(object):
"""
@@ -52,14 +70,19 @@ class main(object):
self.cfg_file = None
self.profile = None
+ self.foreground = False
- opts, argv = getopt.getopt(sys.argv[1:], "c:dhp:?", ["config=", "debug", "help", "profile="])
+ opts, argv = getopt.getopt(sys.argv[1:], "c:dfhp:?",
+ ["config=", "debug", "foreground", "help", "profile="])
for o, a in opts:
if o in ("-h", "--help", "-?"):
print __doc__
sys.exit(0)
elif o in ("-d", "--debug"):
rpki.log.use_syslog = False
+ self.foreground = True
+ elif o in ("-f", "--foreground"):
+ self.foreground = True
elif o in ("-c", "--config"):
self.cfg_file = a
elif o in ("-p", "--profile"):
@@ -69,6 +92,12 @@ class main(object):
rpki.log.init("rpkid")
+ self.cfg = rpki.config.parser(self.cfg_file, "rpkid")
+ self.cfg.set_global_flags()
+
+ if not self.foreground:
+ rpki.daemonize.daemon()
+
if self.profile:
import cProfile
cProfile.run("self.main()", self.profile)
@@ -77,8 +106,6 @@ class main(object):
def main(self):
- self.cfg = rpki.config.parser(self.cfg_file, "rpkid")
-
startup_msg = self.cfg.get("startup-message", "")
if startup_msg:
rpki.log.info(startup_msg)
@@ -86,8 +113,6 @@ class main(object):
if self.profile:
rpki.log.info("Running in profile mode with output to %s" % self.profile)
- self.cfg.set_global_flags()
-
self.sql = rpki.sql.session(self.cfg)
self.bpki_ta = rpki.x509.X509(Auto_update = self.cfg.get("bpki-ta"))