Mercurial > libervia-pubsub
annotate sat_pubsub/tap.py @ 355:c72fcbdcdab7
backend: fixed subscription, PEP was not handled correctly
author | Goffi <goffi@goffi.org> |
---|---|
date | Fri, 08 Sep 2017 08:02:05 +0200 |
parents | efbdca10f0fb |
children | 9fbb31ce495b |
rev | line source |
---|---|
233 | 1 #!/usr/bin/python |
2 #-*- coding: utf-8 -*- | |
3 | |
312
5d7c3787672e
fixed copyright put in docstring instead of comments
Goffi <goffi@goffi.org>
parents:
311
diff
changeset
|
4 # Copyright (c) 2012-2016 Jérôme Poisson |
5d7c3787672e
fixed copyright put in docstring instead of comments
Goffi <goffi@goffi.org>
parents:
311
diff
changeset
|
5 # Copyright (c) 2013-2016 Jérôme Poisson |
5d7c3787672e
fixed copyright put in docstring instead of comments
Goffi <goffi@goffi.org>
parents:
311
diff
changeset
|
6 # Copyright (c) 2003-2011 Ralph Meijer |
233 | 7 |
8 | |
312
5d7c3787672e
fixed copyright put in docstring instead of comments
Goffi <goffi@goffi.org>
parents:
311
diff
changeset
|
9 # This program is free software: you can redistribute it and/or modify |
5d7c3787672e
fixed copyright put in docstring instead of comments
Goffi <goffi@goffi.org>
parents:
311
diff
changeset
|
10 # it under the terms of the GNU Affero General Public License as published by |
5d7c3787672e
fixed copyright put in docstring instead of comments
Goffi <goffi@goffi.org>
parents:
311
diff
changeset
|
11 # the Free Software Foundation, either version 3 of the License, or |
5d7c3787672e
fixed copyright put in docstring instead of comments
Goffi <goffi@goffi.org>
parents:
311
diff
changeset
|
12 # (at your option) any later version. |
233 | 13 |
312
5d7c3787672e
fixed copyright put in docstring instead of comments
Goffi <goffi@goffi.org>
parents:
311
diff
changeset
|
14 # This program is distributed in the hope that it will be useful, |
5d7c3787672e
fixed copyright put in docstring instead of comments
Goffi <goffi@goffi.org>
parents:
311
diff
changeset
|
15 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
5d7c3787672e
fixed copyright put in docstring instead of comments
Goffi <goffi@goffi.org>
parents:
311
diff
changeset
|
16 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
5d7c3787672e
fixed copyright put in docstring instead of comments
Goffi <goffi@goffi.org>
parents:
311
diff
changeset
|
17 # GNU Affero General Public License for more details. |
233 | 18 |
312
5d7c3787672e
fixed copyright put in docstring instead of comments
Goffi <goffi@goffi.org>
parents:
311
diff
changeset
|
19 # You should have received a copy of the GNU Affero General Public License |
5d7c3787672e
fixed copyright put in docstring instead of comments
Goffi <goffi@goffi.org>
parents:
311
diff
changeset
|
20 # along with this program. If not, see <http://www.gnu.org/licenses/>. |
5d7c3787672e
fixed copyright put in docstring instead of comments
Goffi <goffi@goffi.org>
parents:
311
diff
changeset
|
21 # -- |
233 | 22 |
312
5d7c3787672e
fixed copyright put in docstring instead of comments
Goffi <goffi@goffi.org>
parents:
311
diff
changeset
|
23 # This program is based on Idavoll (http://idavoll.ik.nu/), |
5d7c3787672e
fixed copyright put in docstring instead of comments
Goffi <goffi@goffi.org>
parents:
311
diff
changeset
|
24 # originaly written by Ralph Meijer (http://ralphm.net/blog/) |
5d7c3787672e
fixed copyright put in docstring instead of comments
Goffi <goffi@goffi.org>
parents:
311
diff
changeset
|
25 # It is sublicensed under AGPL v3 (or any later version) as allowed by the original |
5d7c3787672e
fixed copyright put in docstring instead of comments
Goffi <goffi@goffi.org>
parents:
311
diff
changeset
|
26 # license. |
233 | 27 |
312
5d7c3787672e
fixed copyright put in docstring instead of comments
Goffi <goffi@goffi.org>
parents:
311
diff
changeset
|
28 # -- |
233 | 29 |
312
5d7c3787672e
fixed copyright put in docstring instead of comments
Goffi <goffi@goffi.org>
parents:
311
diff
changeset
|
30 # Here is a copy of the original license: |
5d7c3787672e
fixed copyright put in docstring instead of comments
Goffi <goffi@goffi.org>
parents:
311
diff
changeset
|
31 |
5d7c3787672e
fixed copyright put in docstring instead of comments
Goffi <goffi@goffi.org>
parents:
311
diff
changeset
|
32 # Copyright (c) 2003-2011 Ralph Meijer |
233 | 33 |
312
5d7c3787672e
fixed copyright put in docstring instead of comments
Goffi <goffi@goffi.org>
parents:
311
diff
changeset
|
34 # Permission is hereby granted, free of charge, to any person obtaining |
5d7c3787672e
fixed copyright put in docstring instead of comments
Goffi <goffi@goffi.org>
parents:
311
diff
changeset
|
35 # a copy of this software and associated documentation files (the |
5d7c3787672e
fixed copyright put in docstring instead of comments
Goffi <goffi@goffi.org>
parents:
311
diff
changeset
|
36 # "Software"), to deal in the Software without restriction, including |
5d7c3787672e
fixed copyright put in docstring instead of comments
Goffi <goffi@goffi.org>
parents:
311
diff
changeset
|
37 # without limitation the rights to use, copy, modify, merge, publish, |
5d7c3787672e
fixed copyright put in docstring instead of comments
Goffi <goffi@goffi.org>
parents:
311
diff
changeset
|
38 # distribute, sublicense, and/or sell copies of the Software, and to |
5d7c3787672e
fixed copyright put in docstring instead of comments
Goffi <goffi@goffi.org>
parents:
311
diff
changeset
|
39 # permit persons to whom the Software is furnished to do so, subject to |
5d7c3787672e
fixed copyright put in docstring instead of comments
Goffi <goffi@goffi.org>
parents:
311
diff
changeset
|
40 # the following conditions: |
233 | 41 |
312
5d7c3787672e
fixed copyright put in docstring instead of comments
Goffi <goffi@goffi.org>
parents:
311
diff
changeset
|
42 # The above copyright notice and this permission notice shall be |
5d7c3787672e
fixed copyright put in docstring instead of comments
Goffi <goffi@goffi.org>
parents:
311
diff
changeset
|
43 # included in all copies or substantial portions of the Software. |
233 | 44 |
312
5d7c3787672e
fixed copyright put in docstring instead of comments
Goffi <goffi@goffi.org>
parents:
311
diff
changeset
|
45 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
5d7c3787672e
fixed copyright put in docstring instead of comments
Goffi <goffi@goffi.org>
parents:
311
diff
changeset
|
46 # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
5d7c3787672e
fixed copyright put in docstring instead of comments
Goffi <goffi@goffi.org>
parents:
311
diff
changeset
|
47 # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
5d7c3787672e
fixed copyright put in docstring instead of comments
Goffi <goffi@goffi.org>
parents:
311
diff
changeset
|
48 # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE |
5d7c3787672e
fixed copyright put in docstring instead of comments
Goffi <goffi@goffi.org>
parents:
311
diff
changeset
|
49 # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION |
5d7c3787672e
fixed copyright put in docstring instead of comments
Goffi <goffi@goffi.org>
parents:
311
diff
changeset
|
50 # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION |
5d7c3787672e
fixed copyright put in docstring instead of comments
Goffi <goffi@goffi.org>
parents:
311
diff
changeset
|
51 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
233 | 52 |
155
5191ba7c4df8
Work towards first release 0.5.0.
Ralph Meijer <ralphm@ik.nu>
parents:
97
diff
changeset
|
53 |
167
ef22e4150caa
Move protocol implementations (pubsub, disco, forms) to and depend on wokkel.
Ralph Meijer <ralphm@ik.nu>
parents:
163
diff
changeset
|
54 from twisted.application import service |
1 | 55 from twisted.python import usage |
167
ef22e4150caa
Move protocol implementations (pubsub, disco, forms) to and depend on wokkel.
Ralph Meijer <ralphm@ik.nu>
parents:
163
diff
changeset
|
56 from twisted.words.protocols.jabber.jid import JID |
ef22e4150caa
Move protocol implementations (pubsub, disco, forms) to and depend on wokkel.
Ralph Meijer <ralphm@ik.nu>
parents:
163
diff
changeset
|
57 |
ef22e4150caa
Move protocol implementations (pubsub, disco, forms) to and depend on wokkel.
Ralph Meijer <ralphm@ik.nu>
parents:
163
diff
changeset
|
58 from wokkel.component import Component |
ef22e4150caa
Move protocol implementations (pubsub, disco, forms) to and depend on wokkel.
Ralph Meijer <ralphm@ik.nu>
parents:
163
diff
changeset
|
59 from wokkel.disco import DiscoHandler |
ef22e4150caa
Move protocol implementations (pubsub, disco, forms) to and depend on wokkel.
Ralph Meijer <ralphm@ik.nu>
parents:
163
diff
changeset
|
60 from wokkel.generic import FallbackHandler, VersionHandler |
222
698af5d720ad
Reshape Idavoll as a PubSubResource.
Ralph Meijer <ralphm@ik.nu>
parents:
218
diff
changeset
|
61 from wokkel.iwokkel import IPubSubResource |
323 | 62 from wokkel import data_form |
63 from wokkel import pubsub | |
64 from wokkel import rsm | |
65 from wokkel import mam | |
167
ef22e4150caa
Move protocol implementations (pubsub, disco, forms) to and depend on wokkel.
Ralph Meijer <ralphm@ik.nu>
parents:
163
diff
changeset
|
66 |
321
c7fe09894952
privilege: better handling of main message 'to' attribute (i.e. privileged entity's server)
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
67 from sat_pubsub import __version__ |
c7fe09894952
privilege: better handling of main message 'to' attribute (i.e. privileged entity's server)
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
68 from sat_pubsub import const |
c7fe09894952
privilege: better handling of main message 'to' attribute (i.e. privileged entity's server)
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
69 from sat_pubsub import mam as pubsub_mam |
234
51af2ed8bd50
replaced idavoll imports by sat_pubsub imports
Goffi <goffi@goffi.org>
parents:
233
diff
changeset
|
70 from sat_pubsub.backend import BackendService |
352 | 71 from sat_pubsub.schema import SchemaHandler |
285
a87c155d0fd5
replaced former roster dirty hack by a XEP-0356 first draft implementation, only roster get is implemented so far
Goffi <goffi@goffi.org>
parents:
283
diff
changeset
|
72 from sat_pubsub.privilege import PrivilegesHandler |
287
61f92273fb69
implementation of XEP-0355 (Namespace Delegation) to use SàT Pubsub as PEP service, first draft
Goffi <goffi@goffi.org>
parents:
285
diff
changeset
|
73 from sat_pubsub.delegation import DelegationsHandler |
167
ef22e4150caa
Move protocol implementations (pubsub, disco, forms) to and depend on wokkel.
Ralph Meijer <ralphm@ik.nu>
parents:
163
diff
changeset
|
74 |
280
798cb8962c0b
MAM (XEP-0313) support: first draft
souliane <souliane@mailoo.org>
parents:
278
diff
changeset
|
75 |
1 | 76 class Options(usage.Options): |
156
6250905b72f6
Fix spacing errors. Do 0.5.0 release.
Ralph Meijer <ralphm@ik.nu>
parents:
155
diff
changeset
|
77 optParameters = [ |
170
958e69630e52
Provide twistd parameters for connecting to a remote PostgreSQL database.
Ralph Meijer <ralphm@ik.nu>
parents:
169
diff
changeset
|
78 ('jid', None, 'pubsub', 'JID this component will be available at'), |
958e69630e52
Provide twistd parameters for connecting to a remote PostgreSQL database.
Ralph Meijer <ralphm@ik.nu>
parents:
169
diff
changeset
|
79 ('secret', None, 'secret', 'Jabber server component secret'), |
958e69630e52
Provide twistd parameters for connecting to a remote PostgreSQL database.
Ralph Meijer <ralphm@ik.nu>
parents:
169
diff
changeset
|
80 ('rhost', None, '127.0.0.1', 'Jabber server host'), |
958e69630e52
Provide twistd parameters for connecting to a remote PostgreSQL database.
Ralph Meijer <ralphm@ik.nu>
parents:
169
diff
changeset
|
81 ('rport', None, '5347', 'Jabber server port'), |
246 | 82 ('backend', None, 'pgsql', 'Choice of storage backend'), |
190
6e6c89eca9db
Make sure optional PostgreSQL connect parameters are passed as None, require
Ralph Meijer <ralphm@ik.nu>
parents:
189
diff
changeset
|
83 ('dbuser', None, None, 'Database user (pgsql backend)'), |
170
958e69630e52
Provide twistd parameters for connecting to a remote PostgreSQL database.
Ralph Meijer <ralphm@ik.nu>
parents:
169
diff
changeset
|
84 ('dbname', None, 'pubsub', 'Database name (pgsql backend)'), |
190
6e6c89eca9db
Make sure optional PostgreSQL connect parameters are passed as None, require
Ralph Meijer <ralphm@ik.nu>
parents:
189
diff
changeset
|
85 ('dbpass', None, None, 'Database password (pgsql backend)'), |
6e6c89eca9db
Make sure optional PostgreSQL connect parameters are passed as None, require
Ralph Meijer <ralphm@ik.nu>
parents:
189
diff
changeset
|
86 ('dbhost', None, None, 'Database host (pgsql backend)'), |
6e6c89eca9db
Make sure optional PostgreSQL connect parameters are passed as None, require
Ralph Meijer <ralphm@ik.nu>
parents:
189
diff
changeset
|
87 ('dbport', None, None, 'Database port (pgsql backend)'), |
156
6250905b72f6
Fix spacing errors. Do 0.5.0 release.
Ralph Meijer <ralphm@ik.nu>
parents:
155
diff
changeset
|
88 ] |
76
66fac7cd9edc
Added -v (--verbose) flag to print out all traffic.
Ralph Meijer <ralphm@ik.nu>
parents:
42
diff
changeset
|
89 |
156
6250905b72f6
Fix spacing errors. Do 0.5.0 release.
Ralph Meijer <ralphm@ik.nu>
parents:
155
diff
changeset
|
90 optFlags = [ |
6250905b72f6
Fix spacing errors. Do 0.5.0 release.
Ralph Meijer <ralphm@ik.nu>
parents:
155
diff
changeset
|
91 ('verbose', 'v', 'Show traffic'), |
6250905b72f6
Fix spacing errors. Do 0.5.0 release.
Ralph Meijer <ralphm@ik.nu>
parents:
155
diff
changeset
|
92 ('hide-nodes', None, 'Hide all nodes for disco') |
6250905b72f6
Fix spacing errors. Do 0.5.0 release.
Ralph Meijer <ralphm@ik.nu>
parents:
155
diff
changeset
|
93 ] |
167
ef22e4150caa
Move protocol implementations (pubsub, disco, forms) to and depend on wokkel.
Ralph Meijer <ralphm@ik.nu>
parents:
163
diff
changeset
|
94 |
156
6250905b72f6
Fix spacing errors. Do 0.5.0 release.
Ralph Meijer <ralphm@ik.nu>
parents:
155
diff
changeset
|
95 def postOptions(self): |
6250905b72f6
Fix spacing errors. Do 0.5.0 release.
Ralph Meijer <ralphm@ik.nu>
parents:
155
diff
changeset
|
96 if self['backend'] not in ['pgsql', 'memory']: |
6250905b72f6
Fix spacing errors. Do 0.5.0 release.
Ralph Meijer <ralphm@ik.nu>
parents:
155
diff
changeset
|
97 raise usage.UsageError, "Unknown backend!" |
345
83122f15b993
raise NotImplementedError if memory backend is used
Goffi <goffi@goffi.org>
parents:
328
diff
changeset
|
98 if self['backend'] == 'memory': |
83122f15b993
raise NotImplementedError if memory backend is used
Goffi <goffi@goffi.org>
parents:
328
diff
changeset
|
99 raise NotImplementedError('memory backend is not available at the moment') |
1 | 100 |
177
faf1c9bc2612
Add HTTP gateway in a separate plugin.
Ralph Meijer <ralphm@ik.nu>
parents:
176
diff
changeset
|
101 self['jid'] = JID(self['jid']) |
faf1c9bc2612
Add HTTP gateway in a separate plugin.
Ralph Meijer <ralphm@ik.nu>
parents:
176
diff
changeset
|
102 |
222
698af5d720ad
Reshape Idavoll as a PubSubResource.
Ralph Meijer <ralphm@ik.nu>
parents:
218
diff
changeset
|
103 |
698af5d720ad
Reshape Idavoll as a PubSubResource.
Ralph Meijer <ralphm@ik.nu>
parents:
218
diff
changeset
|
104 |
1 | 105 def makeService(config): |
167
ef22e4150caa
Move protocol implementations (pubsub, disco, forms) to and depend on wokkel.
Ralph Meijer <ralphm@ik.nu>
parents:
163
diff
changeset
|
106 s = service.MultiService() |
ef22e4150caa
Move protocol implementations (pubsub, disco, forms) to and depend on wokkel.
Ralph Meijer <ralphm@ik.nu>
parents:
163
diff
changeset
|
107 |
176 | 108 # Create backend service with storage |
167
ef22e4150caa
Move protocol implementations (pubsub, disco, forms) to and depend on wokkel.
Ralph Meijer <ralphm@ik.nu>
parents:
163
diff
changeset
|
109 |
ef22e4150caa
Move protocol implementations (pubsub, disco, forms) to and depend on wokkel.
Ralph Meijer <ralphm@ik.nu>
parents:
163
diff
changeset
|
110 if config['backend'] == 'pgsql': |
204
b4bf0a5ce50d
Implement storage facilities for the HTTP gateway.
Ralph Meijer <ralphm@ik.nu>
parents:
193
diff
changeset
|
111 from twisted.enterprise import adbapi |
234
51af2ed8bd50
replaced idavoll imports by sat_pubsub imports
Goffi <goffi@goffi.org>
parents:
233
diff
changeset
|
112 from sat_pubsub.pgsql_storage import Storage |
276
b757c29b20d7
import changes from idavoll changeset 233 (24be3a11ddbc), by Ralph Meijer and based on a patch by Nuno Santos
souliane <souliane@mailoo.org>
parents:
255
diff
changeset
|
113 from psycopg2.extras import NamedTupleConnection |
328
ae37289007c3
fixed database config : None values can't be used anymore
Goffi <goffi@goffi.org>
parents:
323
diff
changeset
|
114 keys_map = { |
ae37289007c3
fixed database config : None values can't be used anymore
Goffi <goffi@goffi.org>
parents:
323
diff
changeset
|
115 'dbuser': 'user', |
ae37289007c3
fixed database config : None values can't be used anymore
Goffi <goffi@goffi.org>
parents:
323
diff
changeset
|
116 'dbpass': 'password', |
ae37289007c3
fixed database config : None values can't be used anymore
Goffi <goffi@goffi.org>
parents:
323
diff
changeset
|
117 'dbname': 'database', |
ae37289007c3
fixed database config : None values can't be used anymore
Goffi <goffi@goffi.org>
parents:
323
diff
changeset
|
118 'dbhost': 'host', |
ae37289007c3
fixed database config : None values can't be used anymore
Goffi <goffi@goffi.org>
parents:
323
diff
changeset
|
119 'dbport': 'port', |
ae37289007c3
fixed database config : None values can't be used anymore
Goffi <goffi@goffi.org>
parents:
323
diff
changeset
|
120 } |
ae37289007c3
fixed database config : None values can't be used anymore
Goffi <goffi@goffi.org>
parents:
323
diff
changeset
|
121 kwargs = {} |
ae37289007c3
fixed database config : None values can't be used anymore
Goffi <goffi@goffi.org>
parents:
323
diff
changeset
|
122 for config_k, k in keys_map.iteritems(): |
ae37289007c3
fixed database config : None values can't be used anymore
Goffi <goffi@goffi.org>
parents:
323
diff
changeset
|
123 v = config.get(config_k) |
ae37289007c3
fixed database config : None values can't be used anymore
Goffi <goffi@goffi.org>
parents:
323
diff
changeset
|
124 if v is None: |
ae37289007c3
fixed database config : None values can't be used anymore
Goffi <goffi@goffi.org>
parents:
323
diff
changeset
|
125 continue |
ae37289007c3
fixed database config : None values can't be used anymore
Goffi <goffi@goffi.org>
parents:
323
diff
changeset
|
126 kwargs[k] = v |
227
8540825f85e0
Replaced unmaintained pyPgSQL by Psycopg 2
Goffi <goffi@goffi.org>
parents:
223
diff
changeset
|
127 dbpool = adbapi.ConnectionPool('psycopg2', |
204
b4bf0a5ce50d
Implement storage facilities for the HTTP gateway.
Ralph Meijer <ralphm@ik.nu>
parents:
193
diff
changeset
|
128 cp_reconnect=True, |
b4bf0a5ce50d
Implement storage facilities for the HTTP gateway.
Ralph Meijer <ralphm@ik.nu>
parents:
193
diff
changeset
|
129 client_encoding='utf-8', |
276
b757c29b20d7
import changes from idavoll changeset 233 (24be3a11ddbc), by Ralph Meijer and based on a patch by Nuno Santos
souliane <souliane@mailoo.org>
parents:
255
diff
changeset
|
130 connection_factory=NamedTupleConnection, |
328
ae37289007c3
fixed database config : None values can't be used anymore
Goffi <goffi@goffi.org>
parents:
323
diff
changeset
|
131 **kwargs |
204
b4bf0a5ce50d
Implement storage facilities for the HTTP gateway.
Ralph Meijer <ralphm@ik.nu>
parents:
193
diff
changeset
|
132 ) |
b4bf0a5ce50d
Implement storage facilities for the HTTP gateway.
Ralph Meijer <ralphm@ik.nu>
parents:
193
diff
changeset
|
133 st = Storage(dbpool) |
167
ef22e4150caa
Move protocol implementations (pubsub, disco, forms) to and depend on wokkel.
Ralph Meijer <ralphm@ik.nu>
parents:
163
diff
changeset
|
134 elif config['backend'] == 'memory': |
234
51af2ed8bd50
replaced idavoll imports by sat_pubsub imports
Goffi <goffi@goffi.org>
parents:
233
diff
changeset
|
135 from sat_pubsub.memory_storage import Storage |
167
ef22e4150caa
Move protocol implementations (pubsub, disco, forms) to and depend on wokkel.
Ralph Meijer <ralphm@ik.nu>
parents:
163
diff
changeset
|
136 st = Storage() |
ef22e4150caa
Move protocol implementations (pubsub, disco, forms) to and depend on wokkel.
Ralph Meijer <ralphm@ik.nu>
parents:
163
diff
changeset
|
137 |
ef22e4150caa
Move protocol implementations (pubsub, disco, forms) to and depend on wokkel.
Ralph Meijer <ralphm@ik.nu>
parents:
163
diff
changeset
|
138 bs = BackendService(st) |
177
faf1c9bc2612
Add HTTP gateway in a separate plugin.
Ralph Meijer <ralphm@ik.nu>
parents:
176
diff
changeset
|
139 bs.setName('backend') |
167
ef22e4150caa
Move protocol implementations (pubsub, disco, forms) to and depend on wokkel.
Ralph Meijer <ralphm@ik.nu>
parents:
163
diff
changeset
|
140 bs.setServiceParent(s) |
ef22e4150caa
Move protocol implementations (pubsub, disco, forms) to and depend on wokkel.
Ralph Meijer <ralphm@ik.nu>
parents:
163
diff
changeset
|
141 |
176 | 142 # Set up XMPP server-side component with publish-subscribe capabilities |
143 | |
144 cs = Component(config["rhost"], int(config["rport"]), | |
177
faf1c9bc2612
Add HTTP gateway in a separate plugin.
Ralph Meijer <ralphm@ik.nu>
parents:
176
diff
changeset
|
145 config["jid"].full(), config["secret"]) |
faf1c9bc2612
Add HTTP gateway in a separate plugin.
Ralph Meijer <ralphm@ik.nu>
parents:
176
diff
changeset
|
146 cs.setName('component') |
176 | 147 cs.setServiceParent(s) |
148 | |
149 cs.factory.maxDelay = 900 | |
150 | |
151 if config["verbose"]: | |
152 cs.logTraffic = True | |
153 | |
154 FallbackHandler().setHandlerParent(cs) | |
241
d2bdff8a4b45
changed version handler to SàT Pubsub
Goffi <goffi@goffi.org>
parents:
235
diff
changeset
|
155 VersionHandler(u'SàT Pubsub', __version__).setHandlerParent(cs) |
176 | 156 DiscoHandler().setHandlerParent(cs) |
157 | |
321
c7fe09894952
privilege: better handling of main message 'to' attribute (i.e. privileged entity's server)
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
158 ph = PrivilegesHandler(config['jid']) |
285
a87c155d0fd5
replaced former roster dirty hack by a XEP-0356 first draft implementation, only roster get is implemented so far
Goffi <goffi@goffi.org>
parents:
283
diff
changeset
|
159 ph.setHandlerParent(cs) |
a87c155d0fd5
replaced former roster dirty hack by a XEP-0356 first draft implementation, only roster get is implemented so far
Goffi <goffi@goffi.org>
parents:
283
diff
changeset
|
160 bs.privilege = ph |
a87c155d0fd5
replaced former roster dirty hack by a XEP-0356 first draft implementation, only roster get is implemented so far
Goffi <goffi@goffi.org>
parents:
283
diff
changeset
|
161 |
222
698af5d720ad
Reshape Idavoll as a PubSubResource.
Ralph Meijer <ralphm@ik.nu>
parents:
218
diff
changeset
|
162 resource = IPubSubResource(bs) |
698af5d720ad
Reshape Idavoll as a PubSubResource.
Ralph Meijer <ralphm@ik.nu>
parents:
218
diff
changeset
|
163 resource.hideNodes = config["hide-nodes"] |
698af5d720ad
Reshape Idavoll as a PubSubResource.
Ralph Meijer <ralphm@ik.nu>
parents:
218
diff
changeset
|
164 resource.serviceJID = config["jid"] |
698af5d720ad
Reshape Idavoll as a PubSubResource.
Ralph Meijer <ralphm@ik.nu>
parents:
218
diff
changeset
|
165 |
278 | 166 ps = (rsm if const.FLAG_ENABLE_RSM else pubsub).PubSubService(resource) |
169
96afb248df5e
Fix typos in service creation. Make disco not respond when a resource is provided.
Ralph Meijer <ralphm@ik.nu>
parents:
167
diff
changeset
|
167 ps.setHandlerParent(cs) |
222
698af5d720ad
Reshape Idavoll as a PubSubResource.
Ralph Meijer <ralphm@ik.nu>
parents:
218
diff
changeset
|
168 resource.pubsubService = ps |
167
ef22e4150caa
Move protocol implementations (pubsub, disco, forms) to and depend on wokkel.
Ralph Meijer <ralphm@ik.nu>
parents:
163
diff
changeset
|
169 |
280
798cb8962c0b
MAM (XEP-0313) support: first draft
souliane <souliane@mailoo.org>
parents:
278
diff
changeset
|
170 if const.FLAG_ENABLE_MAM: |
321
c7fe09894952
privilege: better handling of main message 'to' attribute (i.e. privileged entity's server)
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
171 mam_resource = pubsub_mam.MAMResource(bs) |
c7fe09894952
privilege: better handling of main message 'to' attribute (i.e. privileged entity's server)
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
172 mam_s = mam.MAMService(mam_resource) |
323 | 173 mam_s.addFilter(data_form.Field(var=const.MAM_FILTER_CATEGORY)) |
280
798cb8962c0b
MAM (XEP-0313) support: first draft
souliane <souliane@mailoo.org>
parents:
278
diff
changeset
|
174 mam_s.setHandlerParent(cs) |
798cb8962c0b
MAM (XEP-0313) support: first draft
souliane <souliane@mailoo.org>
parents:
278
diff
changeset
|
175 |
352 | 176 sh = SchemaHandler() |
177 sh.setHandlerParent(cs) | |
178 | |
321
c7fe09894952
privilege: better handling of main message 'to' attribute (i.e. privileged entity's server)
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
179 # XXX: delegation must be instancied at the end, |
c7fe09894952
privilege: better handling of main message 'to' attribute (i.e. privileged entity's server)
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
180 # because it does some MonkeyPatching on handlers |
c7fe09894952
privilege: better handling of main message 'to' attribute (i.e. privileged entity's server)
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
181 dh = DelegationsHandler() |
c7fe09894952
privilege: better handling of main message 'to' attribute (i.e. privileged entity's server)
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
182 dh.setHandlerParent(cs) |
c7fe09894952
privilege: better handling of main message 'to' attribute (i.e. privileged entity's server)
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
183 bs.delegation = dh |
c7fe09894952
privilege: better handling of main message 'to' attribute (i.e. privileged entity's server)
Goffi <goffi@goffi.org>
parents:
312
diff
changeset
|
184 |
167
ef22e4150caa
Move protocol implementations (pubsub, disco, forms) to and depend on wokkel.
Ralph Meijer <ralphm@ik.nu>
parents:
163
diff
changeset
|
185 return s |