yadyn/server/yadyn
2019-11-27 14:49:46 +00: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 = '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")