140 lines
3.2 KiB
Python
Executable File
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 = '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")
|