#!/usr/bin/python import SocketServer import socket import os import ConfigParser import getopt import sys from Logging import * from SendmailSocketMapHandler import SendmailDispatcher def usage(): print "Usage" try: opts, args = getopt.getopt(sys.argv[1:], "hC:F", ["help", "ConfigFile=", "ForeGround"]) except getopt.GetoptError: usage() sys.exit(2) configFile = '/etc/smmapd.ini' foreGround = None for o, a in opts: if o in ("-h", "--help"): usage() sys.exit() if o in ("-C", "--ConfigFile"): configFile = a if o in ("-F", "--ForeGround"): foreGround = 1 config = ConfigParser.ConfigParser() config.read(configFile) openlog(config) if foreGround: pid = 0 else: pid = os.fork() if pid: pidFile = file(config.get('Daemon', 'PidFile'), mode='w') pidFile.write("%i\n" % pid) pidFile.close() print "daemon started with pid ", pid else: log("daemon started") SendmailDispatcher.registerAll(config) try: address = config.get('Daemon', 'Address') port = int(config.get('Daemon', 'Port')) srv = SocketServer.ThreadingTCPServer((address, port), SendmailDispatcher) srv.serve_forever() except socket.error, arg: log("got a socket error: %s" % str(arg)) log("daemon died")