#!/usr/bin/env 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 HttpCmdReceiver import Entry import Event import AdminFuncs #MSG_TIME_CORRIDOR = 120 #EVENT_LIFE_TIME = 120 #NULL_ADDRESS = '0.0.0.0' #TTL = 120 #EXPIRY_PERIOD = 120 #NAMESERVER = '127.0.0.1' #NAMESERVER_PORT = 5300 #TSIGKEY = { "yadyn." : "+xLH8GuZnEgBljuIEM/iDA==" } #PID_FILE = "/tmp/yadyn/yadyn.pid" #ENTRIES_FILE = "/tmp/yadyn/entries" #CUSTOMERS_FILE = "/tmp/yadyn/customers" #ACTIONLOG_DIR = "/tmp/yadyn/actionlog" #ADMIN_PWD = 'test123' #DNS_DUMMY = False #DEBUG = True MSG_TIME_CORRIDOR = 120 EVENT_LIFE_TIME = 600 NULL_ADDRESS = '0.0.0.0' TTL = 120 EXPIRY_PERIOD = 300 NAMESERVER = '127.0.0.1' NAMESERVER_PORT = 53 TSIGKEY = { "local." : "KEYVALUE" } PID_FILE = "/var/run/yadyn.pid" ENTRIES_FILE = "/opt/app/var/data/entries" CUSTOMERS_FILE = "/opt/app/var/data/customers" ACTIONLOG_DIR = "/opt/app/var/log/actionlog" ADMIN_PWD = 'test123' DNS_DUMMY = False DEBUG = True BACKGROUND = False if BACKGROUND: pid = os.fork() else: pid = 0 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("Entry shelve opened") for entry in entries.values(): entry.address = '0.0.0.0' entry.addressInDns = '0.0.0.0' entry.lastEventTime = int(time.time()) Logger.debug("Entry shelve cleared") customers = shelve.open(CUSTOMERS_FILE, flag='c', writeback=True) Logger.debug("Customer shelve opened") try: eventq = Queue.Queue() dnsq = Queue.Queue() Logger.debug("Queues created") Event.Event.setParams(entries, MSG_TIME_CORRIDOR, dnsq) AdminFuncs.AdminFuncs.setParams(entries, customers) dynHandler = DynHandler.DynHandler(eventq) dynHandler.start() Logger.debug("DynHandler started") dnsHandler = DnsHandler.DnsHandler(dnsq, DNS_DUMMY, TSIGKEY, NAMESERVER, NAMESERVER_PORT, 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(("127.0.0.1", 8023), entries, customers) cmdReceiver.start() Logger.debug("CmdReceiver started") # xmlRpcReceiver = XmlRpcReceiver.XmlRpcReceiver(("", 8024), entries) # xmlRpcReceiver.start() # Logger.debug("XmlRpcReceiver started") # httpCmdReceiver = HttpCmdReceiver.HttpCmdReceiver(("", 8025), entries, dnsq, NULL_ADDRESS) # httpCmdReceiver.start() # Logger.debug("httpCmdReceiver started") Logger.log("yadyn running") while True: entries.sync() customers.sync() time.sleep(10) finally: entries.close() customers.close() Logger.debug("Shelves closed") Logger.log("yadyn terminating")