--- a/iro/xmlserver_test.py Thu Oct 22 10:00:01 2009 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,139 +0,0 @@
-# Server code
-
-from xmlrpc import SecureXMLRPCServer,SecureAuthentificateXMLRPCRequestHandler
-import md5, time, os
-
-class Job:
- def __init__(self,provider,name):
- self.provider=provider
- self.name=name
- self.status="stopped"
-
- def start(self):
- self.status="started"
-
- def stop(self):
- self.status="stopped"
-
-class SMSJob(Job):
- def __init__(self,provider,message,recipients):
- self.message=message
- self.recipients=recipients
- Job.__init__(self,provider,message)
-
-class Jobs:
- def __init__(self,queue,provider):
- self.jobs={}
- self.queue=queue
- self.provider=provider
-
- def __getitem__(self,key):
- return self.jobs[key]
-
- def newSMS(self,message,recipients):
- job=SMSJob(self.provider,message,recipients)
- id = self._createID()
- self.jobs[id]=job
- #self.queue.put(job)
- return id
-
- def _createID(self):
- while True:
- m = md5.new()
- m.update(str(time.time()))
- m.update(os.urandom(10))
- if not self.jobs.has_key(m.hexdigest):
- self.jobs[m.hexdigest()]=None
- break
- return m.hexdigest()
-
-
-class User:
- def __init__(self,jobqueue):
- self.jobqueue=jobqueue
- self.jobs={}
-
- def status(self,id=None):
- if id==None:
- jobs=self.jobs
- else:
- try:
- jobs={id:self.jobs[id]}
- except:
- raise String("No Job with ID: %i" %(id))
- ret={}
- for key in jobs:
- job=jobs[key]
- ret[key]={"name":job.name,"status":job.status}
- return ret
-
- def stop(self,id):
- try:
- job=self.jobs[id]
- except:
- raise String("No Job with ID: %i" %(id))
-
- job.stop()
-
-
- def startSMS(self,message,recipients):
- id = self.jobqueue.newSMS(message,recipients)
- self.jobs[id]=self.jobqueue[id]
- return id
-
-class UserDB:
- def __init__(self,userlist,jobqueue):
- self.salt=os.urandom(20)
- self.jobqueue=jobqueue
- self.userlist={}
- for user in userlist:
- self.createUser(user)
-
- def createHash(self,username,password):
- m=md5.new()
- m.update(self.salt)
- m.update(username)
- m.update(password)
- return m.hexdigest()
-
- def createUser(self,user):
- self.userlist[self.createHash(user.username,user.password)]=User(self.jobqueue)
-
- def __getitem__(self,key):
- return self.userlist[key]
-
-
-class SecureAuthentificateXMLRPCRequestHandler2(SecureAuthentificateXMLRPCRequestHandler):
-
- def testUser(self,username,password):
- return self.server.activateUser(username,password)
-
-class SecureUserDBXMLRPCServer(SecureXMLRPCServer):
- def __init__(self, addr, userdb,
- requestHandler=SecureAuthentificateXMLRPCRequestHandler2,
- certificate="server.cert", privatekey="server.pem",
- logRequests=1):
- SecureXMLRPCServer.__init__(self, addr, requestHandler, certificate, privatekey, logRequests)
- self.userdb=userdb
-
- def activateUser(self,username,password):
- try:
- user = self.userdb[self.userdb.createHash(username,password)]
- self.register_instance(user)
- return True
- except KeyError:
- return False
-
-
-
-def test():
- server = SecureXMLRPCServer(("localhost", 8000),requestHandler=SecureAuthentificateXMLRPCRequestHandler,certificate="./certs/test.cert.pem",privatekey="./certs/test.key.pem")
- server.register_introspection_functions()
- server.register_instance(StringFunctions())
- server.register_function(lambda x: x*x, 'square')
- server.serve_forever()
-
-if __name__ == '__main__':
- test()
-
-