fix debugging
This commit is contained in:
@ -1,14 +1,13 @@
|
|||||||
|
CC=gcc
|
||||||
CFLAGS=-g
|
CFLAGS=-g
|
||||||
|
|
||||||
|
|
||||||
all: yadync
|
all: yadync
|
||||||
|
|
||||||
md5.o: md5.c md5.h
|
%.o : %.c
|
||||||
|
$(CC) -c $(CFLAGS) $< -o $@
|
||||||
yadync.o: yadync.c md5.h
|
|
||||||
|
|
||||||
yadync: yadync.o md5.o
|
yadync: yadync.o md5.o
|
||||||
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
-rm *.o yadync
|
-rm *.o yadync
|
||||||
|
@ -38,10 +38,10 @@ int main(int argc, char **argv) {
|
|||||||
md5_state_t state;
|
md5_state_t state;
|
||||||
|
|
||||||
md5_init(&state);
|
md5_init(&state);
|
||||||
md5_append(&state, buf, strlen(buf));
|
md5_append(&state, (const unsigned char *) buf, strlen(buf));
|
||||||
|
|
||||||
char c[16];
|
char c[16];
|
||||||
md5_finish(&state, c);
|
md5_finish(&state, (unsigned char *) c);
|
||||||
|
|
||||||
sprintf(buf, "%s %d %02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",
|
sprintf(buf, "%s %d %02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",
|
||||||
dynid, t,
|
dynid, t,
|
||||||
|
@ -22,9 +22,6 @@ class MyCmd(cmd.Cmd):
|
|||||||
self.intro = "Hello at the yadyn cli\n"
|
self.intro = "Hello at the yadyn cli\n"
|
||||||
self.prompt = "yadyn> "
|
self.prompt = "yadyn> "
|
||||||
|
|
||||||
def do_hello(self, l):
|
|
||||||
self.stdout.write("DO: %s\n" % l)
|
|
||||||
|
|
||||||
def do_list(self, l):
|
def do_list(self, l):
|
||||||
try:
|
try:
|
||||||
parts = l.split(' ')
|
parts = l.split(' ')
|
||||||
@ -89,6 +86,20 @@ class MyCmd(cmd.Cmd):
|
|||||||
except LocalMyCmdException, e:
|
except LocalMyCmdException, e:
|
||||||
self.stdout.write("Failure: %s\n" % str(e.msg))
|
self.stdout.write("Failure: %s\n" % str(e.msg))
|
||||||
|
|
||||||
|
def do_debug(self, l):
|
||||||
|
try:
|
||||||
|
parts = l.split(' ')
|
||||||
|
if len(parts) != 1:
|
||||||
|
raise LocalMyCmdException("illegal number of arguments")
|
||||||
|
if parts[0] == 'on':
|
||||||
|
Logger.debugEnable()
|
||||||
|
elif parts[0] == 'off':
|
||||||
|
Logger.debugDisable()
|
||||||
|
else:
|
||||||
|
raise LocalMyCmdException("illegal argument")
|
||||||
|
except LocalMyCmdException, e:
|
||||||
|
self.stdout.write("Failure: %s\n" % str(e.msg))
|
||||||
|
|
||||||
|
|
||||||
def do_quit(self, l):
|
def do_quit(self, l):
|
||||||
self.stdout.write("Bye\n")
|
self.stdout.write("Bye\n")
|
||||||
|
@ -24,7 +24,8 @@ class DnsHandler(threading.Thread):
|
|||||||
while(True):
|
while(True):
|
||||||
msg = self.msgQueue.get()
|
msg = self.msgQueue.get()
|
||||||
|
|
||||||
name = msg.name
|
dynid = msg.dynid
|
||||||
|
name = msg.name
|
||||||
zone = msg.zone
|
zone = msg.zone
|
||||||
address = msg.address
|
address = msg.address
|
||||||
|
|
||||||
@ -32,15 +33,15 @@ class DnsHandler(threading.Thread):
|
|||||||
|
|
||||||
if self.statusMap.has_key(fullName):
|
if self.statusMap.has_key(fullName):
|
||||||
if self.statusMap[fullName] != address:
|
if self.statusMap[fullName] != address:
|
||||||
self.deleteARR(name, zone, self.statusMap[fullName])
|
self.deleteARR(dynid, name, zone, self.statusMap[fullName])
|
||||||
self.insertARR(name, zone, address)
|
self.insertARR(dynid, name, zone, address)
|
||||||
self.statusMap[fullName] = address
|
self.statusMap[fullName] = address
|
||||||
else:
|
else:
|
||||||
self.insertARR(name, zone, address)
|
self.insertARR(dynid, name, zone, address)
|
||||||
self.statusMap[fullName] = address
|
self.statusMap[fullName] = address
|
||||||
|
|
||||||
|
|
||||||
def insertARR(self, name, zone, address):
|
def insertARR(self, dynid, name, zone, address):
|
||||||
# send A-RR insertion for ip to DNS server
|
# send A-RR insertion for ip to DNS server
|
||||||
rr = dns.rdtypes.IN.A.A(dns.rdataclass.IN, dns.rdatatype.A, address)
|
rr = dns.rdtypes.IN.A.A(dns.rdataclass.IN, dns.rdatatype.A, address)
|
||||||
u = dns.update.Update(zone, keyring=self.keyring)
|
u = dns.update.Update(zone, keyring=self.keyring)
|
||||||
@ -49,13 +50,15 @@ class DnsHandler(threading.Thread):
|
|||||||
|
|
||||||
if r.rcode() != 0:
|
if r.rcode() != 0:
|
||||||
# failure
|
# failure
|
||||||
Logger.log("failure when inserting A-RR %s -> %s into %s" % (name, address, zone))
|
Logger.log("failure for %s when inserting A-RR %s -> %s into %s" %
|
||||||
|
(dynid, name, address, zone))
|
||||||
else:
|
else:
|
||||||
# success
|
# success
|
||||||
Logger.log("insert ARR %s -> %s into %s" % (name, address, zone))
|
Logger.log("insert for %s ARR %s -> %s into %s" %
|
||||||
|
(dynid, name, address, zone))
|
||||||
|
|
||||||
|
|
||||||
def deleteARR(self, name, zone, address):
|
def deleteARR(self, dynid, name, zone, address):
|
||||||
# send A-RR deletion for ip to DNS server
|
# send A-RR deletion for ip to DNS server
|
||||||
rr = dns.rdtypes.IN.A.A(dns.rdataclass.IN, dns.rdatatype.A, address)
|
rr = dns.rdtypes.IN.A.A(dns.rdataclass.IN, dns.rdatatype.A, address)
|
||||||
u = dns.update.Update(zone, keyring=self.keyring)
|
u = dns.update.Update(zone, keyring=self.keyring)
|
||||||
@ -64,10 +67,12 @@ class DnsHandler(threading.Thread):
|
|||||||
|
|
||||||
if r.rcode() != 0:
|
if r.rcode() != 0:
|
||||||
# failure
|
# failure
|
||||||
Logger.log("failure when deleting A-RR %s -> %s from %s" % (name, address, zone))
|
Logger.log("failure for %s when deleting A-RR %s -> %s from %s" %
|
||||||
|
(dynid, name, address, zone))
|
||||||
else:
|
else:
|
||||||
# success
|
# success
|
||||||
Logger.log("delete ARR %s -> %s from %s" % (name, address, zone))
|
Logger.log("delete for %s ARR %s -> %s from %s" %
|
||||||
|
(dynid, name, address, zone))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@ class DynHandler(threading.Thread):
|
|||||||
event = self.eventq.get()
|
event = self.eventq.get()
|
||||||
try:
|
try:
|
||||||
event.prepare()
|
event.prepare()
|
||||||
Logger.log("Processing event %s" % str(event))
|
Logger.debug("Processing event %s" % str(event))
|
||||||
event.process()
|
event.process()
|
||||||
except Event.IllegalEventException, e:
|
except Event.IllegalEventException, e:
|
||||||
Logger.log("Some failure: %s" % e.msg)
|
Logger.log("Some failure: %s when processing event %s" % (e.msg, str(event)))
|
||||||
|
@ -14,15 +14,15 @@ class Expirer(threading.Thread):
|
|||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
while True:
|
while True:
|
||||||
Logger.log("Expiring ...")
|
Logger.debug("Expiring ...")
|
||||||
currentTime = int(time.time())
|
currentTime = int(time.time())
|
||||||
for entry in self.entries.values():
|
for entry in self.entries.values():
|
||||||
Logger.log("Checking %s" % str(entry))
|
Logger.debug("Checking %s" % str(entry))
|
||||||
if entry.lastEventTime != 0 and entry.lastEventTime + self.eventLifeTime < currentTime:
|
if entry.lastEventTime != 0 and entry.lastEventTime + self.eventLifeTime < currentTime:
|
||||||
Logger.log("Entry %s expired" % entry.dynid)
|
Logger.debug("Entry %s expired" % entry.dynid)
|
||||||
entry.lastEventTime = 0
|
entry.lastEventTime = 0
|
||||||
entry.address = self.nullAddress
|
entry.address = self.nullAddress
|
||||||
Logger.log("Set in DNS: %s -> %s" % (entry.name, entry.address))
|
Logger.debug("Set in DNS: %s -> %s" % (entry.name, entry.address))
|
||||||
try:
|
try:
|
||||||
self.dnsq.put_nowait(entry)
|
self.dnsq.put_nowait(entry)
|
||||||
except Queue.Full, e:
|
except Queue.Full, e:
|
||||||
|
@ -2,25 +2,29 @@ import syslog
|
|||||||
|
|
||||||
|
|
||||||
class Logger(object):
|
class Logger(object):
|
||||||
|
@staticmethod
|
||||||
def log(data):
|
def log(data):
|
||||||
syslog.syslog(syslog.LOG_INFO, data)
|
syslog.syslog(syslog.LOG_INFO, data)
|
||||||
if Logger.debugFlag:
|
if Logger.debugFlag:
|
||||||
print data
|
print data
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
def debug(data):
|
def debug(data):
|
||||||
syslog.syslog(syslog.LOG_DEBUG, data)
|
|
||||||
if Logger.debugFlag:
|
if Logger.debugFlag:
|
||||||
|
syslog.syslog(syslog.LOG_DEBUG, data)
|
||||||
print data
|
print data
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
def openlog():
|
def openlog():
|
||||||
syslog.openlog('hsc', syslog.LOG_PID, syslog.LOG_LOCAL0)
|
syslog.openlog('yadyn', syslog.LOG_PID, syslog.LOG_LOCAL0)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
def debugEnable():
|
def debugEnable():
|
||||||
Logger.debugFlag = True
|
Logger.debugFlag = True
|
||||||
|
|
||||||
log = staticmethod(log)
|
@staticmethod
|
||||||
debug = staticmethod(debug)
|
def debugDisable():
|
||||||
openlog = staticmethod(openlog)
|
Logger.debugFlag = False
|
||||||
debugEnable = staticmethod(debugEnable)
|
|
||||||
debugFlag = False
|
debugFlag = False
|
||||||
|
|
||||||
|
16
server/yadyn
16
server/yadyn
@ -49,38 +49,46 @@ Logger.openlog()
|
|||||||
if DEBUG:
|
if DEBUG:
|
||||||
Logger.debugEnable()
|
Logger.debugEnable()
|
||||||
|
|
||||||
|
Logger.log("yadyn starting")
|
||||||
|
|
||||||
entries = shelve.open(ENTRIES_FILE, flag='c', writeback=True)
|
entries = shelve.open(ENTRIES_FILE, flag='c', writeback=True)
|
||||||
statusMap = shelve.open(STATUSMAP_FILE, flag='c', writeback=True)
|
statusMap = shelve.open(STATUSMAP_FILE, flag='c', writeback=True)
|
||||||
|
Logger.debug("Shelves opened")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
eventq = Queue.Queue()
|
eventq = Queue.Queue()
|
||||||
dnsq = Queue.Queue()
|
dnsq = Queue.Queue()
|
||||||
|
Logger.debug("Queues created")
|
||||||
|
|
||||||
Event.Event.setParams(entries, MSG_TIME_CORRIDOR, dnsq)
|
Event.Event.setParams(entries, MSG_TIME_CORRIDOR, dnsq)
|
||||||
|
|
||||||
dynHandler = DynHandler.DynHandler(eventq)
|
dynHandler = DynHandler.DynHandler(eventq)
|
||||||
dynHandler.start()
|
dynHandler.start()
|
||||||
|
Logger.debug("DynHandler started")
|
||||||
|
|
||||||
dnsHandler = DnsHandler.DnsHandler(dnsq, TSIGKEY, NAMESERVER, TTL, statusMap)
|
dnsHandler = DnsHandler.DnsHandler(dnsq, TSIGKEY, NAMESERVER, TTL, statusMap)
|
||||||
dnsHandler.start()
|
dnsHandler.start()
|
||||||
|
Logger.debug("DnsHandler started")
|
||||||
|
|
||||||
dynReceiver = DynReceiver.DynReceiver(("", 8053), eventq)
|
dynReceiver = DynReceiver.DynReceiver(("", 8053), eventq)
|
||||||
dynReceiver.start()
|
dynReceiver.start()
|
||||||
|
Logger.debug("DynReceiver started")
|
||||||
|
|
||||||
expirer = Expirer.Expirer(entries, EVENT_LIFE_TIME, NULL_ADDRESS, EXPIRY_PERIOD, dnsq)
|
expirer = Expirer.Expirer(entries, EVENT_LIFE_TIME, NULL_ADDRESS, EXPIRY_PERIOD, dnsq)
|
||||||
expirer.start()
|
expirer.start()
|
||||||
|
Logger.debug("Expirer started")
|
||||||
|
|
||||||
cmdReceiver = CmdReceiver.CmdReceiver(("", 8023), entries, ADMIN_PWD)
|
cmdReceiver = CmdReceiver.CmdReceiver(("", 8023), entries, ADMIN_PWD)
|
||||||
cmdReceiver.start()
|
cmdReceiver.start()
|
||||||
|
Logger.debug("CmdReceiver started")
|
||||||
|
|
||||||
|
Logger.log("yadyn running")
|
||||||
while True:
|
while True:
|
||||||
entries.sync()
|
entries.sync()
|
||||||
statusMap.sync()
|
statusMap.sync()
|
||||||
time.sleep(10)
|
time.sleep(10)
|
||||||
finally:
|
finally:
|
||||||
Logger.log("Closing shelves")
|
|
||||||
entries.close()
|
entries.close()
|
||||||
statusMap.close()
|
statusMap.close()
|
||||||
|
Logger.debug("Shelves closed")
|
||||||
|
Logger.log("yadyn terminating")
|
||||||
|
Reference in New Issue
Block a user