Files
yadyn/server/yadyn
2011-01-20 15:29:49 +01:00

140 lines
3.2 KiB
Python
Executable File

#!/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 = '46.4.171.193'
NAMESERVER_PORT = 53
TSIGKEY = { "yadyn." : "+xLH8GuZnEgBljuIEM/iDA==" }
PID_FILE = "/var/db/yadyn/yadyn.pid"
ENTRIES_FILE = "/var/db/yadyn/entries"
CUSTOMERS_FILE = "/var/db/yadyn/customers"
ACTIONLOG_DIR = "/var/db/yadyn/actionlog"
ADMIN_PWD = 'test123'
DNS_DUMMY = False
DEBUG = False
BACKGROUND = True
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(("", 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")