fix debugging
This commit is contained in:
@ -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
|
||||
|
@ -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,
|
||||
|
@ -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")
|
||||
|
@ -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))
|
||||
|
||||
|
||||
|
||||
|
@ -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)))
|
||||
|
@ -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:
|
||||
|
@ -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
|
||||
|
||||
|
16
server/yadyn
16
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")
|
||||
|
Reference in New Issue
Block a user