| author | Sandro Knauß <knauss@netzguerilla.net> |
| Wed, 28 Oct 2009 02:35:01 +0100 | |
| changeset 7 | 07dd2663ac90 |
| parent 6 | c5672760138b |
| child 8 | cec27aeb7e69 |
| permissions | -rw-r--r-- |
|
6
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
1 |
# -*- coding: utf-8 -*- |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
2 |
#Copyright (C) 2009 Sandro Knauß <bugs@sandroknauss.de> |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
3 |
|
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
4 |
#This program is free software; you can redistribute it and/or modify it under the terms |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
5 |
#of the GNU General Public License as published by the Free Software Foundation; |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
6 |
#either version 3 of the License, or any later version. |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
7 |
#This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
8 |
#without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
9 |
#See the GNU General Public License for more details. |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
10 |
|
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
11 |
#You should have received a copy of the GNU General Public License |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
12 |
#along with this program; if not, see <http://www.gnu.org/licenses/>. |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
13 |
|
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
14 |
# Server code |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
15 |
|
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
16 |
from xmlrpc import SecureUserDBXMLRPCServer,UserDB |
|
7
07dd2663ac90
provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
6
diff
changeset
|
17 |
|
|
6
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
18 |
from user import User, Admin, NotSupportedFeature |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
19 |
import anbieter |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
20 |
import ConfigParser |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
21 |
|
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
22 |
class MyUserDB(UserDB): |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
23 |
def __init__(self, userlist,jobqueue): |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
24 |
UserDB.__init__(self, None,userlist,jobqueue) |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
25 |
|
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
26 |
def createUser(self, user): |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
27 |
self.userlist[self.createHash(user)]=user["class"](self.jobqueue) |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
28 |
|
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
29 |
|
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
30 |
|
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
31 |
|
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
32 |
class MySipgate(anbieter.sipgate): |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
33 |
|
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
34 |
def __init__(self,user="",password="" ): |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
35 |
anbieter.sipgate.__init__(self, user, password) |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
36 |
|
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
37 |
def setJob(self, job): |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
38 |
self.job=job |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
39 |
|
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
40 |
def updateStatus(self, arranged=None, failed=None): |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
41 |
if arranged: |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
42 |
self.job.addGood(arranged) |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
43 |
|
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
44 |
if failed: |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
45 |
self.job.addFailed(failed) |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
46 |
|
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
47 |
class MySMTP(anbieter.SMTP): |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
48 |
|
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
49 |
def __init__(self,config_filename=None,section="smtp"): |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
50 |
anbieter.SMTP.__init__(self,config_filename,section) |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
51 |
|
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
52 |
def setJob(self, job): |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
53 |
self.job=job |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
54 |
|
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
55 |
def updateStatus(self, arranged=None, failed=None): |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
56 |
if arranged: |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
57 |
self.job.addGood(arranged) |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
58 |
|
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
59 |
if failed: |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
60 |
self.job.addFailed(failed) |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
61 |
|
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
62 |
class MySmstrade(anbieter.smstrade): |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
63 |
|
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
64 |
def __init__(self ): |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
65 |
anbieter.smstrade.__init__(self ) |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
66 |
|
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
67 |
def setJob(self, job): |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
68 |
self.job=job |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
69 |
|
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
70 |
def updateStatus(self, arranged=None, failed=None): |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
71 |
if arranged: |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
72 |
self.job.addGood(arranged) |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
73 |
|
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
74 |
if failed: |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
75 |
self.job.addFailed(failed) |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
76 |
|
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
77 |
|
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
78 |
|
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
79 |
def start(userlist): |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
80 |
from multiprocessing import Queue |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
81 |
from multiprocessing.managers import BaseManager |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
82 |
|
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
83 |
class MyManager(BaseManager): |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
84 |
pass |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
85 |
|
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
86 |
MyManager.register('MessageJob', MessageJob) |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
87 |
manager = MyManager() |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
88 |
manager.start() |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
89 |
|
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
90 |
|
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
91 |
#anbieter erzeugen und konfigurieren |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
92 |
|
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
93 |
sip=MySipgate() |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
94 |
sip.read_basic_config("iro.conf") |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
95 |
|
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
96 |
localhost=MySMTP() |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
97 |
localhost.read_basic_config("iro.conf") |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
98 |
|
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
99 |
smstrade=MySmstrade() |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
100 |
smstrade.read_basic_config("iro.conf") |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
101 |
|
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
102 |
#Benutzerdatenbank erstellen |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
103 |
queue = Queue() |
|
7
07dd2663ac90
provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
6
diff
changeset
|
104 |
provider={"sms":{"sipgate":sip, "smstrade":smstrade, "default":sip, }, |
|
07dd2663ac90
provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
6
diff
changeset
|
105 |
"fax":{"sipgate":sip, "default":sip, }, |
|
07dd2663ac90
provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
6
diff
changeset
|
106 |
"mail":{"localhost":localhost, "default":localhost, }, } |
|
07dd2663ac90
provider auswahl hinzugefügt
Sandro Knauß <knauss@netzguerilla.net>
parents:
6
diff
changeset
|
107 |
|
|
6
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
108 |
jobqueue=Jobs(manager, queue, provider) |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
109 |
userdb=MyUserDB(userlist,jobqueue) |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
110 |
|
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
111 |
#working thread erstellen |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
112 |
from worker import Worker |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
113 |
worker=Worker(queue) |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
114 |
worker.start() |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
115 |
|
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
116 |
#Server starten |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
117 |
cp = ConfigParser.ConfigParser() |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
118 |
cp.read(["iro.conf"]) |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
119 |
cert=cp.get('server', 'cert') |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
120 |
key=cp.get('server', 'key') |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
121 |
server = SecureUserDBXMLRPCServer(addr=("localhost", 8000), |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
122 |
userdb=userdb, |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
123 |
certificate=cert,privatekey=key) |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
124 |
server.relam="xmlrpc" |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
125 |
|
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
126 |
print "Server started..." |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
127 |
server.serve_forever() |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
128 |
|
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
129 |
worker.terminate() |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
130 |
|
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
131 |
if __name__ == '__main__': |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
132 |
userlist=[{"name":"test","password":"test", "class":User}, |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
133 |
{"name":"test2","password":"test2", "class": Admin}] |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
134 |
start(userlist) |
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
135 |
|
|
c5672760138b
user interface erweitert
Sandro Knauß <knauss@netzguerilla.net>
parents:
1
diff
changeset
|
136 |