import md5 from logger import Logger import Entry class AdminFuncException(Exception): def __init__(self, msg): Logger.log("Exception in AdminFuncs: %s" % msg) self.msg = msg class AdminFuncs(object): @classmethod def setParams(cls, entries, adminPwd): cls.entries = entries cls.adminPwd = adminPwd @classmethod def register(cls, dynid, subdomain, zone, sharedSecret, checksum): di = "%s %s %s %s %s" % (dynid, subdomain, zone, sharedSecret, AdminFuncs.adminPwd) d = md5.new(di).hexdigest() Logger.debug("%s, received: %s, calculated: %s" % (di, checksum, d)) if d != checksum: raise AdminFuncException("access denied: %s" % di) if AdminFuncs.entries.has_key(dynid): raise AdminFuncException("duplicate dynid") for entry in AdminFuncs.entries.values(): if entry.name == subdomain and entry.zone == zone: raise AdminFuncException("duplicate full name") newEntry = Entry.Entry(dynid, sharedSecret, subdomain, zone) AdminFuncs.entries[dynid] = newEntry