--- a/iro/iro.py Fri Oct 23 01:37:44 2009 +0200
+++ b/iro/iro.py Wed Oct 28 02:35:01 2009 +0100
@@ -14,9 +14,8 @@
# Server code
from xmlrpc import SecureUserDBXMLRPCServer,UserDB
-import time, os, md5
+
from user import User, Admin, NotSupportedFeature
-import content
import anbieter
import ConfigParser
@@ -27,68 +26,7 @@
def createUser(self, user):
self.userlist[self.createHash(user)]=user["class"](self.jobqueue)
-class Job(object):
- '''
- Basic class for all jobs
- '''
- def __init__(self,provider,name):
- self.provider=provider
- self.name=name
- self.status = "init"
- self.dStatus={"good":[], "failed":[]}
- def start(self):
- self.status = "started"
-
- def stop(self):
- self.status = "stopped"
-
- def getStatus(self,detailed):
- if detailed and self.status == "started" or self.status == "sended":
- return self.status, self.dStatus
- return self.status, {}
-
- def getName(self):
- return self.name
-
- def getProvider(self):
- return self.provider
-
- def addGood(self, good):
- if type(good) == list:
- self.dStatus['good']=self.dStatus['good']+good
- else:
- self.dStatus['good'].append(good)
-
- def addFailed(self, failed):
- if type(failed) == list:
- self.dStatus['failed']=self.dStatus['failed']+failed
- else:
- self.dStatus['failed'].append(failed)
-
-class MessageJob(Job):
- '''
- A specialized class for smsjobs
- '''
- def __init__(self,provider,name, message,recipients):
- self.message=message
- self.recipients=recipients
- Job.__init__(self,provider, name)
-
- def stop(self):
- pass
-
- def start(self):
- Job.start(self)
- self.provider.setJob(self)
- self.message.sendto(self.provider, self.recipients)
- self.status="sended"
-
- def getMessage(self):
- return self.message
-
- def getRecipients(self):
- return self.recipients
class MySipgate(anbieter.sipgate):
@@ -135,60 +73,8 @@
if failed:
self.job.addFailed(failed)
-
-class Jobs:
- '''
- Providing an list of jobs; each new job gets a hash id
- '''
- def __init__(self,manager, queue,provider):
- self.jobs={}
- self.manager=manager
- self.queue=queue
- self.provider=provider
-
-
- def __getitem__(self,key):
- return self.jobs[key]
-
- def __registerJob__(self, job):
- id = self._createID()
- self.jobs[id]=job
- self.queue.put(job)
- return id
- def newSMS(self,message,recipients):
- '''
- creates a new SMS
- '''
- job=self.manager.MessageJob(self.provider["sms"],message, content.SMS(message),recipients)
- return self.__registerJob__(job)
- def newFAX(self,subject, fax,recipients):
- '''
- creates a new Fax
- '''
- job=self.manager.MessageJob(self.provider["fax"],subject, content.FAX(subject, fax),recipients)
- return self.__registerJob__(job)
-
- def newMail(self,subject, body,recipients):
- '''
- creates a new Mail
- '''
- job=self.manager.MessageJob(self.provider["mail"],subject, content.Mail(subject, body),recipients)
- return self.__registerJob__(job)
-
- def _createID(self):
- '''
- creats a random hash id
- '''
- 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()
def start(userlist):
from multiprocessing import Queue
@@ -215,7 +101,10 @@
#Benutzerdatenbank erstellen
queue = Queue()
- provider={"sms":sip, "fax":sip, "mail":localhost}
+ provider={"sms":{"sipgate":sip, "smstrade":smstrade, "default":sip, },
+ "fax":{"sipgate":sip, "default":sip, },
+ "mail":{"localhost":localhost, "default":localhost, }, }
+
jobqueue=Jobs(manager, queue, provider)
userdb=MyUserDB(userlist,jobqueue)