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