X-Git-Url: https://pwan.org/git/?a=blobdiff_plain;f=certmaster%2Fcertmaster.py;h=9548b8b77d0071d6e3dccbf2a5e382fc026d74c6;hb=67070b83b2873cd26228d5002989cae73ead0167;hp=aba3f7cb7ad72d4ed5840d1faafdb7a7cba3d58a;hpb=5bb4be3edcfdf031d7446e434ef4f51309ce32c7;p=certmaster.git diff --git a/certmaster/certmaster.py b/certmaster/certmaster.py old mode 100755 new mode 100644 index aba3f7c..9548b8b --- a/certmaster/certmaster.py +++ b/certmaster/certmaster.py @@ -16,7 +16,9 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # standard modules import SimpleXMLRPCServer +import string import sys +import traceback import os import os.path from OpenSSL import crypto @@ -234,7 +236,6 @@ class CertMaster(object): self._run_triggers(requesting_host,'/var/lib/certmaster/triggers/sign/pre/*') - requesting_host = self._sanitize_cn(csrreq.get_subject().CN) certfile = '%s/%s.cert' % (self.cfg.certroot, requesting_host) self.logger.info("Signing for csr %s requested" % certfile) thiscert = certs.create_slave_certificate(csrreq, self.cakey, self.cacert, self.cfg.cadir) @@ -275,6 +276,13 @@ class CertMaster(object): return signed_certs + def get_peer_certs(self): + """ + Returns a list of all certs under peerroot + """ + myglob = os.path.join(self.cfg.peerroot, '*.%s' % self.cfg.cert_extension) + return glob.glob(myglob) + # return a list of the cert hash string we use to identify systems def get_cert_hashes(self, hostglobs=None): certglob = "%s/*.cert" % (self.cfg.certroot) @@ -312,24 +320,47 @@ def serve(xmlrpcinstance): """ - server = CertmasterXMLRPCServer((xmlrpcinstance.cfg.listen_addr, CERTMASTER_LISTEN_PORT)) + config = read_config(CERTMASTER_CONFIG, CMConfig) + listen_addr = config.listen_addr + listen_port = config.listen_port + if listen_port == '': + listen_port = CERTMASTER_LISTEN_PORT + server = CertmasterXMLRPCServer((listen_addr,listen_port)) server.logRequests = 0 # don't print stuff to console server.register_instance(xmlrpcinstance) xmlrpcinstance.logger.info("certmaster started") xmlrpcinstance.audit_logger.logger.info("certmaster started") server.serve_forever() +def excepthook(exctype, value, tracebackobj): + exctype_blurb = "Exception occured: %s" % exctype + excvalue_blurb = "Exception value: %s" % value + exctb_blurb = "Exception Info:\n%s" % string.join(traceback.format_list(traceback.extract_tb(tracebackobj))) + + print exctype_blurb + print excvalue_blurb + print exctb_blurb + + log = logger.Logger().logger + log.info(exctype_blurb) + log.info(excvalue_blurb) + log.info(exctb_blurb) + def main(argv): - + + sys.excepthook = excepthook cm = CertMaster('/etc/certmaster/certmaster.conf') + if "--version" in sys.argv or "-v" in sys.argv: + print >> sys.stderr, file("/etc/certmaster/version").read().strip() + sys.exit(0) + if "daemon" in argv or "--daemon" in argv: utils.daemonize("/var/run/certmaster.pid") else: print "serving...\n" - # just let exceptions bubble up for now serve(cm)