#!/usr/bin/python import Queue import time import shelve import os import sys from logger import Logger import DynHandler import DnsHandler import Expirer import DynReceiver import CmdReceiver import XmlRpcReceiver import Entry import Event MSG_TIME_CORRIDOR = 120 EVENT_LIFE_TIME = 5 NULL_ADDRESS = '0.0.0.0' TTL = 120 EXPIRY_PERIOD = 10 NAMESERVER = '88.198.170.2' TSIGKEY = { "monitoring." : "+xLH8GuZnEgBljuIEM/iDA==" } PID_FILE = "/var/db/yadyn/yadyn.pid" ENTRIES_FILE = "/var/db/yadyn/entries" ACTIONLOG_DIR = "/var/db/yadyn/actionlog" ADMIN_PWD = 'test123' DNS_DUMMY = True DEBUG = True if DEBUG: pid = 0 else: pid = os.fork() if pid: pidFile = file(PID_FILE , mode='w') pidFile.write("%i\n" % pid) pidFile.close() sys.exit(0) Logger.openlog() if DEBUG: Logger.debugEnable() Logger.log("yadyn starting") entries = shelve.open(ENTRIES_FILE, flag='c', writeback=True) Logger.debug("Shelve opened") try: eventq = Queue.Queue() dnsq = Queue.Queue() Logger.debug("Queues created") Event.Event.setParams(entries, MSG_TIME_CORRIDOR, dnsq) dynHandler = DynHandler.DynHandler(eventq) dynHandler.start() Logger.debug("DynHandler started") dnsHandler = DnsHandler.DnsHandler(dnsq, DNS_DUMMY, TSIGKEY, NAMESERVER, TTL, ACTIONLOG_DIR) dnsHandler.start() Logger.debug("DnsHandler started") dynReceiver = DynReceiver.DynReceiver(("", 8053), eventq) dynReceiver.start() Logger.debug("DynReceiver started") expirer = Expirer.Expirer(entries, EVENT_LIFE_TIME, NULL_ADDRESS, EXPIRY_PERIOD, dnsq) expirer.start() Logger.debug("Expirer started") cmdReceiver = CmdReceiver.CmdReceiver(("", 8023), entries, ADMIN_PWD) cmdReceiver.start() Logger.debug("CmdReceiver started") xmlRpcReceiver = XmlRpcReceiver.XmlRpcReceiver(("", 8024), entries, ADMIN_PWD) xmlRpcReceiver.start() Logger.debug("XmlRpcReceiver started") Logger.log("yadyn running") while True: entries.sync() time.sleep(10) finally: entries.close() Logger.debug("Shelves closed") Logger.log("yadyn terminating")