nun wird hashlib benutzt anstatt md5
tests laufen sauber wieder duch (Meldung das Worker läuft wieder hinzugefügt)
--- a/iro/joblist.py Thu Nov 04 22:47:00 2010 +0100
+++ b/iro/joblist.py Thu Nov 18 01:25:28 2010 +0100
@@ -12,7 +12,7 @@
#along with this program; if not, see <http://www.gnu.org/licenses/>.
from anbieter import content
-import md5, os, time
+import hashlib, os, time
import logging
logger=logging.getLogger("iro.joblist");
@@ -66,7 +66,7 @@
creats a random hash id
'''
while True:
- m = md5.new()
+ m = hashlib.sha1()
m.update(str(time.time()))
m.update(os.urandom(10))
if not self.jobs.has_key(m.hexdigest):
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/iro/tests/stopableServer.py Thu Nov 18 01:25:28 2010 +0100
@@ -0,0 +1,108 @@
+import ConfigParser
+
+import threading
+
+from multiprocessing import Queue
+from multiprocessing.managers import BaseManager
+
+from iro import xmlrpc,anbieter
+from iro.user import User, Admin
+from iro.iro import MySMTP,MySmstrade,MyUserDB
+from iro.job import SMSJob, FAXJob, MailJob
+from iro.joblist import Joblist
+from iro.providerlist import Providerlist
+
+class StoppableXMLRPCServer(xmlrpc.SecureUserDBXMLRPCServer, threading.Thread):
+ running=False
+ def __init__(self, *args, **kwargs):
+ xmlrpc.SecureUserDBXMLRPCServer.__init__(self, *args, **kwargs)
+ threading.Thread.__init__(self)
+ self.timeout=.5
+
+ def start(self):
+ self.running=True
+ threading.Thread.start(self)
+
+
+ def run(self):
+ # *serve_forever* muss in einem eigenen Thread laufen, damit man es
+ # unterbrochen werden kann!
+ while (self.running):
+ try:
+ self.handle_request()
+ except :
+ break
+
+ def stop(self):
+ if (self.running):
+ self.running=False
+ self.server_close()
+ self.join()
+
+ def __del__(self):
+ self.stop()
+
+ def __enter__(self):
+ self.start()
+ return self
+
+ def __exit__(self,type,value,traceback):
+ self.stop()
+
+
+
+def init_server():
+ userlist=[{"name":"test","password":"test", "class":User},
+ {"name":"test2","password":"test2", "class": User},
+ {"name":"admin","password":"admin", "class": Admin}]
+
+
+
+ class MyManager(BaseManager):
+ pass
+
+ MyManager.register('SMSJob', SMSJob)
+ MyManager.register('FAXob', FAXJob)
+ MyManager.register('MailJob',MailJob)
+ MyManager.register('Providerlist',Providerlist)
+ manager = MyManager()
+ manager.start()
+
+
+ #anbieter erzeugen und konfigurieren
+ sip=anbieter.sipgate()
+ sip.read_basic_config("iro.conf")
+
+ localhost=MySMTP()
+ localhost.read_basic_config("iro.conf")
+
+ smstrade=MySmstrade()
+ smstrade.read_basic_config("iro.conf")
+
+ #Benutzerdatenbank erstellen
+ queue = Queue()
+ provider=Providerlist()
+ provider.add("sipgate", sip, ["sms", "fax", ])
+ provider.add("smstrade", smstrade, ["sms", ])
+ provider.add("geonet", None, ["sms", "fax", ])
+ provider.add("fax.de", None, ["sms", "fax", ])
+ provider.add("localhost", localhost, ["mail", ])
+ provider.setDefault("sms","smstrade")
+ provider.setDefault("fax","sipgate")
+ provider.setDefault("mail","localhost")
+ jobqueue=Joblist(manager, queue, provider)
+ userdb=MyUserDB(userlist,jobqueue)
+
+
+ #Server starten
+ cp = ConfigParser.ConfigParser()
+ cp.read(["iro.conf"])
+ cert=cp.get('server', 'cert')
+ key=cp.get('server', 'key')
+ serv = StoppableXMLRPCServer(addr=("localhost", 8000),
+ userdb=userdb,
+ certificate=cert,privatekey=key,
+ logRequests=False)
+ serv.relam="xmlrpc"
+ return serv
+
--- a/iro/tests/testXMLRPCServer.py Thu Nov 04 22:47:00 2010 +0100
+++ b/iro/tests/testXMLRPCServer.py Thu Nov 18 01:25:28 2010 +0100
@@ -1,111 +1,10 @@
# -*- coding: utf-8 -*-
-import unittest, ConfigParser
-
-import threading, xmlrpclib
-from multiprocessing import Queue
-from multiprocessing.managers import BaseManager
-
-from iro import xmlrpc,anbieter
-from iro.iro import MySMTP,MySmstrade,MyUserDB
-from iro.job import SMSJob, FAXJob, MailJob
-from iro.joblist import Joblist
-from iro.providerlist import Providerlist
-from iro.user import User, Admin
-
-
-class StoppableXMLRPCServer(xmlrpc.SecureUserDBXMLRPCServer, threading.Thread):
- running=False
- def __init__(self, *args, **kwargs):
- xmlrpc.SecureUserDBXMLRPCServer.__init__(self, *args, **kwargs)
- threading.Thread.__init__(self)
- self.timeout=.5
-
- def start(self):
- self.running=True
- threading.Thread.start(self)
-
-
- def run(self):
- # *serve_forever* muss in einem eigenen Thread laufen, damit man es
- # unterbrochen werden kann!
- while (self.running):
- self.handle_request()
-
- def stop(self):
- if (self.running):
- self.running=False
- self.server_close()
- self.join()
-
- def __del__(self):
- self.stop()
-
- def __enter__(self):
- self.start()
- return self
-
- def __exit__(self,type,value,traceback):
- self.stop()
-
-
+import unittest
-def init_server():
- userlist=[{"name":"test","password":"test", "class":User},
- {"name":"test2","password":"test2", "class": User},
- {"name":"admin","password":"admin", "class": Admin}]
-
-
-
- class MyManager(BaseManager):
- pass
-
- MyManager.register('SMSJob', SMSJob)
- MyManager.register('FAXob', FAXJob)
- MyManager.register('MailJob',MailJob)
- MyManager.register('Providerlist',Providerlist)
- manager = MyManager()
- manager.start()
-
-
- #anbieter erzeugen und konfigurieren
- sip=anbieter.sipgate()
- sip.read_basic_config("iro.conf")
-
- localhost=MySMTP()
- localhost.read_basic_config("iro.conf")
-
- smstrade=MySmstrade()
- smstrade.read_basic_config("iro.conf")
+import xmlrpclib
+from stopableServer import init_server
- #Benutzerdatenbank erstellen
- queue = Queue()
- provider=Providerlist()
- provider.add("sipgate", sip, ["sms", "fax", ])
- provider.add("smstrade", smstrade, ["sms", ])
- provider.add("geonet", None, ["sms", "fax", ])
- provider.add("fax.de", None, ["sms", "fax", ])
- provider.add("localhost", localhost, ["mail", ])
- provider.setDefault("sms","smstrade")
- provider.setDefault("fax","sipgate")
- provider.setDefault("mail","localhost")
- jobqueue=Joblist(manager, queue, provider)
- userdb=MyUserDB(userlist,jobqueue)
-
-
- #Server starten
- cp = ConfigParser.ConfigParser()
- cp.read(["iro.conf"])
- cert=cp.get('server', 'cert')
- key=cp.get('server', 'key')
- serv = StoppableXMLRPCServer(addr=("localhost", 8000),
- userdb=userdb,
- certificate=cert,privatekey=key,
- logRequests=False)
- serv.relam="xmlrpc"
- return serv
-
-
class TestServer(unittest.TestCase):
def setUp(self):
--- a/iro/worker.py Thu Nov 04 22:47:00 2010 +0100
+++ b/iro/worker.py Thu Nov 18 01:25:28 2010 +0100
@@ -11,6 +11,7 @@
self.queue=queue
def run(self):
+ logger.info('Workerprocess läuft nun...')
indifier=0
while 1:
job=self.queue.get()
--- a/iro/xmlrpc/SecureUserdbXMLRPCServer.py Thu Nov 04 22:47:00 2010 +0100
+++ b/iro/xmlrpc/SecureUserdbXMLRPCServer.py Thu Nov 18 01:25:28 2010 +0100
@@ -1,6 +1,6 @@
from SecureAuthentificateXMLRPCServer import SecureAuthentificateXMLRPCRequestHandler
from SecureXMLRPCServer import SecureXMLRPCServer
-import os, md5
+import os, hashlib
class UserDB:
'''
@@ -20,7 +20,7 @@
returns a hash out of username and the password and self.salt
user is a directory with two keys: username and password
"""
- m=md5.new()
+ m=hashlib.sha512()
m.update(user["name"])
m.update(self.salt)
m.update(user["password"])