From 4412e92e6d8d2a8314bd82ef0f212e01b6183fb8 Mon Sep 17 00:00:00 2001 From: Adrian Likins Date: Tue, 25 Sep 2007 18:27:02 -0400 Subject: move code.py and utils.py to func/ update scripts/funcd and func/certmaster to use them --- func/certmaster.py | 12 +++++++++--- func/codes.py | 25 +++++++++++++++++++++++++ func/utils.py | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 81 insertions(+), 3 deletions(-) create mode 100755 func/codes.py create mode 100755 func/utils.py (limited to 'func') diff --git a/func/certmaster.py b/func/certmaster.py index 5305b68..89b68a0 100755 --- a/func/certmaster.py +++ b/func/certmaster.py @@ -28,7 +28,8 @@ import sha #from func.server import codes import func import func.certs -import func.minion.utils +import func.codes +import func.utils class SimpleConfigFile(object): """simple config file object: @@ -164,6 +165,11 @@ class CertMaster(object): return False, '', '' return False, '', '' + +class CertmasterXMLRPCServer(SimpleXMLRPCServer.SimpleXMLRPCServer): + def __init__(self, args): + self.allow_reuse_address = True + SimpleXMLRPCServer.SimpleXMLRPCServer.__init__(self, args) def serve(xmlrpcinstance): @@ -172,7 +178,7 @@ def serve(xmlrpcinstance): Code for starting the XMLRPC service. """ - server = SimpleXMLRPCServer.SimpleXMLRPCServer((xmlrpcinstance.cfg.listen_addr, xmlrpcinstance.cfg.listen_port)) + server = CertmasterXMLRPCServer((xmlrpcinstance.cfg.listen_addr, xmlrpcinstance.cfg.listen_port)) server.logRequests = 0 # don't print stuff to console server.register_instance(xmlrpcinstance) server.serve_forever() @@ -192,7 +198,7 @@ def main(argv): cm = CertMaster('/etc/func/certmaster.conf', defaults) if "daemon" in argv or "--daemon" in argv: - func.minion.utils.daemonize("/var/run/certmaster.pid") + func.utils.daemonize("/var/run/certmaster.pid") else: print "serving...\n" diff --git a/func/codes.py b/func/codes.py new file mode 100755 index 0000000..c549709 --- /dev/null +++ b/func/codes.py @@ -0,0 +1,25 @@ +#!/usr/bin/python +""" +func + +Copyright 2007, Red Hat, Inc +See AUTHORS + +This software may be freely redistributed under the terms of the GNU +general public license. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +""" + +import exceptions + + +class FuncException(exceptions.Exception): + pass + +class InvalidMethodException(FuncException): + pass + +# FIXME: more sub-exceptions maybe diff --git a/func/utils.py b/func/utils.py new file mode 100755 index 0000000..724c847 --- /dev/null +++ b/func/utils.py @@ -0,0 +1,47 @@ +#!/usr/bin/python + +""" +Copyright 2007, Red Hat, Inc +see AUTHORS + +This software may be freely redistributed under the terms of the GNU +general public license. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +""" + +import os +import string +import sys +import traceback + +# this is kind of handy, so keep it around for now +# but we really need to fix out server side logging and error +# reporting so we don't need it +def trace_me(): + x = traceback.extract_stack() + bar = string.join(traceback.format_list(x)) + return bar + + +def daemonize(pidfile=None): + """ + Daemonize this process with the UNIX double-fork trick. + Writes the new PID to the provided file name if not None. + """ + + print pidfile + pid = os.fork() + if pid > 0: + sys.exit(0) + os.setsid() + os.umask(0) + pid = os.fork() + + + if pid > 0: + if pidfile is not None: + open(pidfile, "w").write(str(pid)) + sys.exit(0) -- cgit