From b370beb8291ced1fe65ecb6ae9af0328a6e9077c Mon Sep 17 00:00:00 2001 From: Wolfgang Hottgenroth Date: Fri, 16 Nov 2007 09:19:26 +0100 Subject: [PATCH] fix debugging --- client/c/Makefile | 7 +++---- client/c/yadync.c | 4 ++-- server/CmdReceiver.py | 17 ++++++++++++++--- server/DnsHandler.py | 25 +++++++++++++++---------- server/DynHandler.py | 4 ++-- server/Expirer.py | 8 ++++---- server/logger.py | 18 +++++++++++------- server/yadyn | 16 ++++++++++++---- 8 files changed, 63 insertions(+), 36 deletions(-) diff --git a/client/c/Makefile b/client/c/Makefile index 756449d..77194db 100644 --- a/client/c/Makefile +++ b/client/c/Makefile @@ -1,14 +1,13 @@ +CC=gcc CFLAGS=-g all: yadync -md5.o: md5.c md5.h - -yadync.o: yadync.c md5.h +%.o : %.c + $(CC) -c $(CFLAGS) $< -o $@ yadync: yadync.o md5.o - clean: -rm *.o yadync diff --git a/client/c/yadync.c b/client/c/yadync.c index df39e18..cad88c2 100644 --- a/client/c/yadync.c +++ b/client/c/yadync.c @@ -38,10 +38,10 @@ int main(int argc, char **argv) { md5_state_t state; md5_init(&state); - md5_append(&state, buf, strlen(buf)); + md5_append(&state, (const unsigned char *) buf, strlen(buf)); 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", dynid, t, diff --git a/server/CmdReceiver.py b/server/CmdReceiver.py index 5666300..399dfc3 100644 --- a/server/CmdReceiver.py +++ b/server/CmdReceiver.py @@ -22,9 +22,6 @@ class MyCmd(cmd.Cmd): self.intro = "Hello at the yadyn cli\n" self.prompt = "yadyn> " - def do_hello(self, l): - self.stdout.write("DO: %s\n" % l) - def do_list(self, l): try: parts = l.split(' ') @@ -89,6 +86,20 @@ class MyCmd(cmd.Cmd): except LocalMyCmdException, e: 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): self.stdout.write("Bye\n") diff --git a/server/DnsHandler.py b/server/DnsHandler.py index d19dfb6..03b50b2 100644 --- a/server/DnsHandler.py +++ b/server/DnsHandler.py @@ -24,7 +24,8 @@ class DnsHandler(threading.Thread): while(True): msg = self.msgQueue.get() - name = msg.name + dynid = msg.dynid + name = msg.name zone = msg.zone address = msg.address @@ -32,15 +33,15 @@ class DnsHandler(threading.Thread): if self.statusMap.has_key(fullName): if self.statusMap[fullName] != address: - self.deleteARR(name, zone, self.statusMap[fullName]) - self.insertARR(name, zone, address) + self.deleteARR(dynid, name, zone, self.statusMap[fullName]) + self.insertARR(dynid, name, zone, address) self.statusMap[fullName] = address else: - self.insertARR(name, zone, address) + self.insertARR(dynid, name, zone, 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 rr = dns.rdtypes.IN.A.A(dns.rdataclass.IN, dns.rdatatype.A, address) u = dns.update.Update(zone, keyring=self.keyring) @@ -49,13 +50,15 @@ class DnsHandler(threading.Thread): if r.rcode() != 0: # 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: # 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 rr = dns.rdtypes.IN.A.A(dns.rdataclass.IN, dns.rdatatype.A, address) u = dns.update.Update(zone, keyring=self.keyring) @@ -64,10 +67,12 @@ class DnsHandler(threading.Thread): if r.rcode() != 0: # 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: # 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)) diff --git a/server/DynHandler.py b/server/DynHandler.py index 574405e..9344a89 100644 --- a/server/DynHandler.py +++ b/server/DynHandler.py @@ -14,7 +14,7 @@ class DynHandler(threading.Thread): event = self.eventq.get() try: event.prepare() - Logger.log("Processing event %s" % str(event)) + Logger.debug("Processing event %s" % str(event)) event.process() except Event.IllegalEventException, e: - Logger.log("Some failure: %s" % e.msg) + Logger.log("Some failure: %s when processing event %s" % (e.msg, str(event))) diff --git a/server/Expirer.py b/server/Expirer.py index 27f9f15..2af00d0 100644 --- a/server/Expirer.py +++ b/server/Expirer.py @@ -14,15 +14,15 @@ class Expirer(threading.Thread): def run(self): while True: - Logger.log("Expiring ...") + Logger.debug("Expiring ...") currentTime = int(time.time()) 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: - Logger.log("Entry %s expired" % entry.dynid) + Logger.debug("Entry %s expired" % entry.dynid) entry.lastEventTime = 0 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: self.dnsq.put_nowait(entry) except Queue.Full, e: diff --git a/server/logger.py b/server/logger.py index e035109..e351742 100644 --- a/server/logger.py +++ b/server/logger.py @@ -2,25 +2,29 @@ import syslog class Logger(object): + @staticmethod def log(data): syslog.syslog(syslog.LOG_INFO, data) if Logger.debugFlag: print data - + + @staticmethod def debug(data): - syslog.syslog(syslog.LOG_DEBUG, data) if Logger.debugFlag: + syslog.syslog(syslog.LOG_DEBUG, data) print data + @staticmethod def openlog(): - syslog.openlog('hsc', syslog.LOG_PID, syslog.LOG_LOCAL0) + syslog.openlog('yadyn', syslog.LOG_PID, syslog.LOG_LOCAL0) + @staticmethod def debugEnable(): Logger.debugFlag = True - log = staticmethod(log) - debug = staticmethod(debug) - openlog = staticmethod(openlog) - debugEnable = staticmethod(debugEnable) + @staticmethod + def debugDisable(): + Logger.debugFlag = False + debugFlag = False diff --git a/server/yadyn b/server/yadyn index c8d099a..91c8cc0 100755 --- a/server/yadyn +++ b/server/yadyn @@ -49,38 +49,46 @@ Logger.openlog() if DEBUG: Logger.debugEnable() +Logger.log("yadyn starting") + entries = shelve.open(ENTRIES_FILE, flag='c', writeback=True) statusMap = shelve.open(STATUSMAP_FILE, flag='c', writeback=True) - - - +Logger.debug("Shelves opened") try: eventq = Queue.Queue() dnsq = Queue.Queue() + Logger.debug("Queues created") Event.Event.setParams(entries, MSG_TIME_CORRIDOR, dnsq) dynHandler = DynHandler.DynHandler(eventq) dynHandler.start() + Logger.debug("DynHandler started") dnsHandler = DnsHandler.DnsHandler(dnsq, TSIGKEY, NAMESERVER, TTL, statusMap) 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, ADMIN_PWD) cmdReceiver.start() + Logger.debug("CmdReceiver started") + Logger.log("yadyn running") while True: entries.sync() statusMap.sync() time.sleep(10) finally: - Logger.log("Closing shelves") entries.close() statusMap.close() + Logger.debug("Shelves closed") + Logger.log("yadyn terminating")