improve http and xmlrpc interfaces

This commit is contained in:
Wolfgang Hottgenroth
2009-02-19 22:07:34 +01:00
parent a2d3bd6e79
commit 399483b7b5
4 changed files with 40 additions and 30 deletions

View File

@ -1,29 +1,35 @@
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):
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 != self.checksum:
raise AdminFuncException("access denied" % di)
@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")
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")
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
newEntry = Entry.Entry(dynid, sharedSecret, subdomain, zone)
AdminFuncs.entries[dynid] = newEntry