changes
This commit is contained in:
@ -4,7 +4,19 @@ import Event
|
|||||||
from logger import Logger
|
from logger import Logger
|
||||||
from SimpleXMLRPCServer import SimpleXMLRPCServer
|
from SimpleXMLRPCServer import SimpleXMLRPCServer
|
||||||
|
|
||||||
|
import Entry
|
||||||
|
|
||||||
|
class LocalExcepion(Exception):
|
||||||
|
def __init__(self, msg):
|
||||||
|
self.msg = msg
|
||||||
|
|
||||||
class XmlRpcServer(SimpleXMLRPCServer):
|
class XmlRpcServer(SimpleXMLRPCServer):
|
||||||
|
@classmethod
|
||||||
|
def setClassParams(cls, entries, adminPwd):
|
||||||
|
cls.entries = entries
|
||||||
|
cls.adminPwd = adminPwd
|
||||||
|
|
||||||
|
|
||||||
def _dispatch(self, method, params):
|
def _dispatch(self, method, params):
|
||||||
try:
|
try:
|
||||||
# We are forcing the 'export_' prefix on methods that are
|
# We are forcing the 'export_' prefix on methods that are
|
||||||
@ -16,15 +28,32 @@ class XmlRpcServer(SimpleXMLRPCServer):
|
|||||||
else:
|
else:
|
||||||
return func(*params)
|
return func(*params)
|
||||||
|
|
||||||
def export_add(self, x, y):
|
def export_register(self, subdomain, sharedSecret, email):
|
||||||
return x + y
|
try:
|
||||||
|
dynid = subdomain
|
||||||
|
zone = 'yadynns.net'
|
||||||
|
|
||||||
|
if XmlRpcServer.entries.has_key(dynid):
|
||||||
|
raise LocalException("duplicate dynid")
|
||||||
|
for entry in MyCmd.entries.values():
|
||||||
|
if entry.name == name and entry.zone == zone:
|
||||||
|
raise LocalException("duplicate full name")
|
||||||
|
newEntry = Entry.Entry(dynid, sharedSecret, subdomain, zone)
|
||||||
|
XmlRpcServer.entries[dynid] = newEntry
|
||||||
|
|
||||||
|
return 'ok'
|
||||||
|
except LocalException, e:
|
||||||
|
return 'nok ' + e.msg
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class XmlRpcReceiver(threading.Thread):
|
class XmlRpcReceiver(threading.Thread):
|
||||||
def __init__(self, xmlRpcRecvAddr):
|
def __init__(self, xmlRpcRecvAddr, entries, adminPwd):
|
||||||
threading.Thread.__init__(self)
|
threading.Thread.__init__(self)
|
||||||
self.xmlRpcRecvAddr = xmlRpcRecvAddr
|
self.xmlRpcRecvAddr = xmlRpcRecvAddr
|
||||||
|
XmlRpcServer.setClassParams(entries, adminPwd)
|
||||||
self.setDaemon(True)
|
self.setDaemon(True)
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
|
@ -12,6 +12,7 @@ import DnsHandler
|
|||||||
import Expirer
|
import Expirer
|
||||||
import DynReceiver
|
import DynReceiver
|
||||||
import CmdReceiver
|
import CmdReceiver
|
||||||
|
import XmlRpcReceiver
|
||||||
import Entry
|
import Entry
|
||||||
import Event
|
import Event
|
||||||
|
|
||||||
@ -82,6 +83,12 @@ try:
|
|||||||
cmdReceiver.start()
|
cmdReceiver.start()
|
||||||
Logger.debug("CmdReceiver started")
|
Logger.debug("CmdReceiver started")
|
||||||
|
|
||||||
|
xmlRpcReceiver = XmlRpcReceiver.XmlRpcReceiver(("", 8024), entries, ADMIN_PWD)
|
||||||
|
xmlRpcReceiver.start()
|
||||||
|
Logger.debug("XmlRpcReceiver started")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Logger.log("yadyn running")
|
Logger.log("yadyn running")
|
||||||
while True:
|
while True:
|
||||||
entries.sync()
|
entries.sync()
|
||||||
|
Reference in New Issue
Block a user