| author | Sandro Knauß <knauss@netzguerilla.net> |
| Tue, 10 Jan 2012 06:04:35 +0100 | |
| branch | devel |
| changeset 94 | 4349f10d77a6 |
| parent 81 | fea4c6760ca5 |
| permissions | -rw-r--r-- |
|
61
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
1 |
import ConfigParser |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
2 |
|
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
3 |
import threading |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
4 |
|
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
5 |
from multiprocessing import Queue |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
6 |
from multiprocessing.managers import BaseManager |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
7 |
|
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
8 |
from iro import xmlrpc,anbieter |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
9 |
from iro.user import User, Admin |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
10 |
from iro.iro import MySMTP,MySmstrade,MyUserDB |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
11 |
from iro.job import SMSJob, FAXJob, MailJob |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
12 |
from iro.joblist import Joblist |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
13 |
from iro.providerlist import Providerlist |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
14 |
|
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
15 |
class StoppableXMLRPCServer(xmlrpc.SecureUserDBXMLRPCServer, threading.Thread): |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
16 |
running=False |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
17 |
def __init__(self, *args, **kwargs): |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
18 |
xmlrpc.SecureUserDBXMLRPCServer.__init__(self, *args, **kwargs) |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
19 |
threading.Thread.__init__(self) |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
20 |
self.timeout=.5 |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
21 |
|
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
22 |
def start(self): |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
23 |
self.running=True |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
24 |
threading.Thread.start(self) |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
25 |
|
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
26 |
|
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
27 |
def run(self): |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
28 |
# *serve_forever* muss in einem eigenen Thread laufen, damit man es |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
29 |
# unterbrochen werden kann! |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
30 |
while (self.running): |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
31 |
try: |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
32 |
self.handle_request() |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
33 |
except : |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
34 |
break |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
35 |
|
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
36 |
def stop(self): |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
37 |
if (self.running): |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
38 |
self.running=False |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
39 |
self.server_close() |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
40 |
self.join() |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
41 |
|
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
42 |
def __del__(self): |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
43 |
self.stop() |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
44 |
|
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
45 |
def __enter__(self): |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
46 |
self.start() |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
47 |
return self |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
48 |
|
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
49 |
def __exit__(self,type,value,traceback): |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
50 |
self.stop() |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
51 |
|
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
52 |
|
|
63
3df3da063cff
testJob - prüft, ob SMS, Fax und MailJobs richtig in der Queue landen
Sandro Knauß <knauss@netzguerilla.net>
parents:
61
diff
changeset
|
53 |
class Internal: |
|
3df3da063cff
testJob - prüft, ob SMS, Fax und MailJobs richtig in der Queue landen
Sandro Knauß <knauss@netzguerilla.net>
parents:
61
diff
changeset
|
54 |
pass |
|
61
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
55 |
|
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
56 |
def init_server(): |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
57 |
userlist=[{"name":"test","password":"test", "class":User}, |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
58 |
{"name":"test2","password":"test2", "class": User}, |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
59 |
{"name":"admin","password":"admin", "class": Admin}] |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
60 |
|
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
61 |
|
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
62 |
|
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
63 |
class MyManager(BaseManager): |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
64 |
pass |
|
63
3df3da063cff
testJob - prüft, ob SMS, Fax und MailJobs richtig in der Queue landen
Sandro Knauß <knauss@netzguerilla.net>
parents:
61
diff
changeset
|
65 |
|
|
3df3da063cff
testJob - prüft, ob SMS, Fax und MailJobs richtig in der Queue landen
Sandro Knauß <knauss@netzguerilla.net>
parents:
61
diff
changeset
|
66 |
internal=Internal() |
|
61
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
67 |
|
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
68 |
MyManager.register('SMSJob', SMSJob) |
|
63
3df3da063cff
testJob - prüft, ob SMS, Fax und MailJobs richtig in der Queue landen
Sandro Knauß <knauss@netzguerilla.net>
parents:
61
diff
changeset
|
69 |
MyManager.register('FaxJob', FAXJob) |
|
61
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
70 |
MyManager.register('MailJob',MailJob) |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
71 |
MyManager.register('Providerlist',Providerlist) |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
72 |
manager = MyManager() |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
73 |
manager.start() |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
74 |
|
|
63
3df3da063cff
testJob - prüft, ob SMS, Fax und MailJobs richtig in der Queue landen
Sandro Knauß <knauss@netzguerilla.net>
parents:
61
diff
changeset
|
75 |
internal.manager=manager |
|
61
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
76 |
|
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
77 |
#anbieter erzeugen und konfigurieren |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
78 |
sip=anbieter.sipgate() |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
79 |
sip.read_basic_config("iro.conf") |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
80 |
|
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
81 |
localhost=MySMTP() |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
82 |
localhost.read_basic_config("iro.conf") |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
83 |
|
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
84 |
smstrade=MySmstrade() |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
85 |
smstrade.read_basic_config("iro.conf") |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
86 |
|
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
87 |
#Benutzerdatenbank erstellen |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
88 |
queue = Queue() |
|
63
3df3da063cff
testJob - prüft, ob SMS, Fax und MailJobs richtig in der Queue landen
Sandro Knauß <knauss@netzguerilla.net>
parents:
61
diff
changeset
|
89 |
internal.queue=queue |
|
61
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
90 |
provider=Providerlist() |
|
63
3df3da063cff
testJob - prüft, ob SMS, Fax und MailJobs richtig in der Queue landen
Sandro Knauß <knauss@netzguerilla.net>
parents:
61
diff
changeset
|
91 |
internal.provider=provider |
|
61
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
92 |
provider.add("sipgate", sip, ["sms", "fax", ]) |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
93 |
provider.add("smstrade", smstrade, ["sms", ]) |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
94 |
provider.add("geonet", None, ["sms", "fax", ]) |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
95 |
provider.add("fax.de", None, ["sms", "fax", ]) |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
96 |
provider.add("localhost", localhost, ["mail", ]) |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
97 |
provider.setDefault("sms","smstrade") |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
98 |
provider.setDefault("fax","sipgate") |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
99 |
provider.setDefault("mail","localhost") |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
100 |
jobqueue=Joblist(manager, queue, provider) |
|
63
3df3da063cff
testJob - prüft, ob SMS, Fax und MailJobs richtig in der Queue landen
Sandro Knauß <knauss@netzguerilla.net>
parents:
61
diff
changeset
|
101 |
internal.jobqueue=jobqueue |
|
61
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
102 |
userdb=MyUserDB(userlist,jobqueue) |
|
63
3df3da063cff
testJob - prüft, ob SMS, Fax und MailJobs richtig in der Queue landen
Sandro Knauß <knauss@netzguerilla.net>
parents:
61
diff
changeset
|
103 |
internal.userdb=userdb |
|
61
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
104 |
|
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
105 |
|
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
106 |
#Server starten |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
107 |
cp = ConfigParser.ConfigParser() |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
108 |
cp.read(["iro.conf"]) |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
109 |
cert=cp.get('server', 'cert') |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
110 |
key=cp.get('server', 'key') |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
111 |
serv = StoppableXMLRPCServer(addr=("localhost", 8000), |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
112 |
userdb=userdb, |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
113 |
certificate=cert,privatekey=key, |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
114 |
logRequests=False) |
|
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
115 |
serv.relam="xmlrpc" |
|
63
3df3da063cff
testJob - prüft, ob SMS, Fax und MailJobs richtig in der Queue landen
Sandro Knauß <knauss@netzguerilla.net>
parents:
61
diff
changeset
|
116 |
internal.serv=serv |
|
3df3da063cff
testJob - prüft, ob SMS, Fax und MailJobs richtig in der Queue landen
Sandro Knauß <knauss@netzguerilla.net>
parents:
61
diff
changeset
|
117 |
return internal |
|
61
04dfd43dfecc
nun wird hashlib benutzt anstatt md5
Sandro Knauß <knauss@netzguerilla.net>
parents:
diff
changeset
|
118 |