annotate sat_pubsub/tap.py @ 365:9fbb31ce495b

misc: date update (yes it's a bit late :p )
author Goffi <goffi@goffi.org>
date Fri, 03 Nov 2017 14:36:19 +0100
parents efbdca10f0fb
children 618a92080812
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
233
564ae55219e1 sublicensed under AGPL V3
Goffi <goffi@goffi.org>
parents: 232
diff changeset
1 #!/usr/bin/python
564ae55219e1 sublicensed under AGPL V3
Goffi <goffi@goffi.org>
parents: 232
diff changeset
2 #-*- coding: utf-8 -*-
564ae55219e1 sublicensed under AGPL V3
Goffi <goffi@goffi.org>
parents: 232
diff changeset
3
365
9fbb31ce495b misc: date update (yes it's a bit late :p )
Goffi <goffi@goffi.org>
parents: 352
diff changeset
4 # Copyright (c) 2012-2017 Jérôme Poisson
312
5d7c3787672e fixed copyright put in docstring instead of comments
Goffi <goffi@goffi.org>
parents: 311
diff changeset
5 # Copyright (c) 2003-2011 Ralph Meijer
233
564ae55219e1 sublicensed under AGPL V3
Goffi <goffi@goffi.org>
parents: 232
diff changeset
6
564ae55219e1 sublicensed under AGPL V3
Goffi <goffi@goffi.org>
parents: 232
diff changeset
7
312
5d7c3787672e fixed copyright put in docstring instead of comments
Goffi <goffi@goffi.org>
parents: 311
diff changeset
8 # 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
9 # 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
10 # 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
11 # (at your option) any later version.
233
564ae55219e1 sublicensed under AGPL V3
Goffi <goffi@goffi.org>
parents: 232
diff changeset
12
312
5d7c3787672e fixed copyright put in docstring instead of comments
Goffi <goffi@goffi.org>
parents: 311
diff changeset
13 # 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
14 # 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
15 # 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
16 # GNU Affero General Public License for more details.
233
564ae55219e1 sublicensed under AGPL V3
Goffi <goffi@goffi.org>
parents: 232
diff changeset
17
312
5d7c3787672e fixed copyright put in docstring instead of comments
Goffi <goffi@goffi.org>
parents: 311
diff changeset
18 # 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
19 # 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
20 # --
233
564ae55219e1 sublicensed under AGPL V3
Goffi <goffi@goffi.org>
parents: 232
diff changeset
21
312
5d7c3787672e fixed copyright put in docstring instead of comments
Goffi <goffi@goffi.org>
parents: 311
diff changeset
22 # 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
23 # 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
24 # 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
25 # license.
233
564ae55219e1 sublicensed under AGPL V3
Goffi <goffi@goffi.org>
parents: 232
diff changeset
26
312
5d7c3787672e fixed copyright put in docstring instead of comments
Goffi <goffi@goffi.org>
parents: 311
diff changeset
27 # --
233
564ae55219e1 sublicensed under AGPL V3
Goffi <goffi@goffi.org>
parents: 232
diff changeset
28
312
5d7c3787672e fixed copyright put in docstring instead of comments
Goffi <goffi@goffi.org>
parents: 311
diff changeset
29 # 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
30
5d7c3787672e fixed copyright put in docstring instead of comments
Goffi <goffi@goffi.org>
parents: 311
diff changeset
31 # Copyright (c) 2003-2011 Ralph Meijer
233
564ae55219e1 sublicensed under AGPL V3
Goffi <goffi@goffi.org>
parents: 232
diff changeset
32
312
5d7c3787672e fixed copyright put in docstring instead of comments
Goffi <goffi@goffi.org>
parents: 311
diff changeset
33 # 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
34 # 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
35 # "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
36 # 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
37 # 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
38 # 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
39 # the following conditions:
233
564ae55219e1 sublicensed under AGPL V3
Goffi <goffi@goffi.org>
parents: 232
diff changeset
40
312
5d7c3787672e fixed copyright put in docstring instead of comments
Goffi <goffi@goffi.org>
parents: 311
diff changeset
41 # 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
42 # included in all copies or substantial portions of the Software.
233
564ae55219e1 sublicensed under AGPL V3
Goffi <goffi@goffi.org>
parents: 232
diff changeset
43
312
5d7c3787672e fixed copyright put in docstring instead of comments
Goffi <goffi@goffi.org>
parents: 311
diff changeset
44 # 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
45 # 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
46 # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
5d7c3787672e fixed copyright put in docstring instead of comments
Goffi <goffi@goffi.org>
parents: 311
diff changeset
47 # 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
48 # 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
49 # 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
50 # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
233
564ae55219e1 sublicensed under AGPL V3
Goffi <goffi@goffi.org>
parents: 232
diff changeset
51
155
5191ba7c4df8 Work towards first release 0.5.0.
Ralph Meijer <ralphm@ik.nu>
parents: 97
diff changeset
52
167
ef22e4150caa Move protocol implementations (pubsub, disco, forms) to and depend on wokkel.
Ralph Meijer <ralphm@ik.nu>
parents: 163
diff changeset
53 from twisted.application import service
1
4cc41776b7d7 Initial revision
Ralph Meijer <ralphm@ik.nu>
parents:
diff changeset
54 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
55 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
56
ef22e4150caa Move protocol implementations (pubsub, disco, forms) to and depend on wokkel.
Ralph Meijer <ralphm@ik.nu>
parents: 163
diff changeset
57 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
58 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
59 from wokkel.generic import FallbackHandler, VersionHandler
222
698af5d720ad Reshape Idavoll as a PubSubResource.
Ralph Meijer <ralphm@ik.nu>
parents: 218
diff changeset
60 from wokkel.iwokkel import IPubSubResource
323
8496af26be45 mam: added filtering by category
Goffi <goffi@goffi.org>
parents: 321
diff changeset
61 from wokkel import data_form
8496af26be45 mam: added filtering by category
Goffi <goffi@goffi.org>
parents: 321
diff changeset
62 from wokkel import pubsub
8496af26be45 mam: added filtering by category
Goffi <goffi@goffi.org>
parents: 321
diff changeset
63 from wokkel import rsm
8496af26be45 mam: added filtering by category
Goffi <goffi@goffi.org>
parents: 321
diff changeset
64 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
65
321
c7fe09894952 privilege: better handling of main message 'to' attribute (i.e. privileged entity's server)
Goffi <goffi@goffi.org>
parents: 312
diff changeset
66 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
67 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
68 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
69 from sat_pubsub.backend import BackendService
352
efbdca10f0fb schema: node schema implementation
Goffi <goffi@goffi.org>
parents: 345
diff changeset
70 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
71 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
72 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
73
280
798cb8962c0b MAM (XEP-0313) support: first draft
souliane <souliane@mailoo.org>
parents: 278
diff changeset
74
1
4cc41776b7d7 Initial revision
Ralph Meijer <ralphm@ik.nu>
parents:
diff changeset
75 class Options(usage.Options):
156
6250905b72f6 Fix spacing errors. Do 0.5.0 release.
Ralph Meijer <ralphm@ik.nu>
parents: 155
diff changeset
76 optParameters = [
170
958e69630e52 Provide twistd parameters for connecting to a remote PostgreSQL database.
Ralph Meijer <ralphm@ik.nu>
parents: 169
diff changeset
77 ('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
78 ('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
79 ('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
80 ('rport', None, '5347', 'Jabber server port'),
246
2a948abb77ed default backend value is now pgsql
Goffi <goffi@goffi.org>
parents: 242
diff changeset
81 ('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
82 ('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
83 ('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
84 ('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
85 ('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
86 ('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
87 ]
76
66fac7cd9edc Added -v (--verbose) flag to print out all traffic.
Ralph Meijer <ralphm@ik.nu>
parents: 42
diff changeset
88
156
6250905b72f6 Fix spacing errors. Do 0.5.0 release.
Ralph Meijer <ralphm@ik.nu>
parents: 155
diff changeset
89 optFlags = [
6250905b72f6 Fix spacing errors. Do 0.5.0 release.
Ralph Meijer <ralphm@ik.nu>
parents: 155
diff changeset
90 ('verbose', 'v', 'Show traffic'),
6250905b72f6 Fix spacing errors. Do 0.5.0 release.
Ralph Meijer <ralphm@ik.nu>
parents: 155
diff changeset
91 ('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
92 ]
167
ef22e4150caa Move protocol implementations (pubsub, disco, forms) to and depend on wokkel.
Ralph Meijer <ralphm@ik.nu>
parents: 163
diff changeset
93
156
6250905b72f6 Fix spacing errors. Do 0.5.0 release.
Ralph Meijer <ralphm@ik.nu>
parents: 155
diff changeset
94 def postOptions(self):
6250905b72f6 Fix spacing errors. Do 0.5.0 release.
Ralph Meijer <ralphm@ik.nu>
parents: 155
diff changeset
95 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
96 raise usage.UsageError, "Unknown backend!"
345
83122f15b993 raise NotImplementedError if memory backend is used
Goffi <goffi@goffi.org>
parents: 328
diff changeset
97 if self['backend'] == 'memory':
83122f15b993 raise NotImplementedError if memory backend is used
Goffi <goffi@goffi.org>
parents: 328
diff changeset
98 raise NotImplementedError('memory backend is not available at the moment')
1
4cc41776b7d7 Initial revision
Ralph Meijer <ralphm@ik.nu>
parents:
diff changeset
99
177
faf1c9bc2612 Add HTTP gateway in a separate plugin.
Ralph Meijer <ralphm@ik.nu>
parents: 176
diff changeset
100 self['jid'] = JID(self['jid'])
faf1c9bc2612 Add HTTP gateway in a separate plugin.
Ralph Meijer <ralphm@ik.nu>
parents: 176
diff changeset
101
222
698af5d720ad Reshape Idavoll as a PubSubResource.
Ralph Meijer <ralphm@ik.nu>
parents: 218
diff changeset
102
698af5d720ad Reshape Idavoll as a PubSubResource.
Ralph Meijer <ralphm@ik.nu>
parents: 218
diff changeset
103
1
4cc41776b7d7 Initial revision
Ralph Meijer <ralphm@ik.nu>
parents:
diff changeset
104 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
105 s = service.MultiService()
ef22e4150caa Move protocol implementations (pubsub, disco, forms) to and depend on wokkel.
Ralph Meijer <ralphm@ik.nu>
parents: 163
diff changeset
106
176
17fc5dd77158 Move around service setup.
Ralph Meijer <ralphm@ik.nu>
parents: 170
diff changeset
107 # 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
108
ef22e4150caa Move protocol implementations (pubsub, disco, forms) to and depend on wokkel.
Ralph Meijer <ralphm@ik.nu>
parents: 163
diff changeset
109 if config['backend'] == 'pgsql':
204
b4bf0a5ce50d Implement storage facilities for the HTTP gateway.
Ralph Meijer <ralphm@ik.nu>
parents: 193
diff changeset
110 from twisted.enterprise import adbapi
234
51af2ed8bd50 replaced idavoll imports by sat_pubsub imports
Goffi <goffi@goffi.org>
parents: 233
diff changeset
111 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
112 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
113 keys_map = {
ae37289007c3 fixed database config : None values can't be used anymore
Goffi <goffi@goffi.org>
parents: 323
diff changeset
114 'dbuser': 'user',
ae37289007c3 fixed database config : None values can't be used anymore
Goffi <goffi@goffi.org>
parents: 323
diff changeset
115 'dbpass': 'password',
ae37289007c3 fixed database config : None values can't be used anymore
Goffi <goffi@goffi.org>
parents: 323
diff changeset
116 'dbname': 'database',
ae37289007c3 fixed database config : None values can't be used anymore
Goffi <goffi@goffi.org>
parents: 323
diff changeset
117 'dbhost': 'host',
ae37289007c3 fixed database config : None values can't be used anymore
Goffi <goffi@goffi.org>
parents: 323
diff changeset
118 'dbport': 'port',
ae37289007c3 fixed database config : None values can't be used anymore
Goffi <goffi@goffi.org>
parents: 323
diff changeset
119 }
ae37289007c3 fixed database config : None values can't be used anymore
Goffi <goffi@goffi.org>
parents: 323
diff changeset
120 kwargs = {}
ae37289007c3 fixed database config : None values can't be used anymore
Goffi <goffi@goffi.org>
parents: 323
diff changeset
121 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
122 v = config.get(config_k)
ae37289007c3 fixed database config : None values can't be used anymore
Goffi <goffi@goffi.org>
parents: 323
diff changeset
123 if v is None:
ae37289007c3 fixed database config : None values can't be used anymore
Goffi <goffi@goffi.org>
parents: 323
diff changeset
124 continue
ae37289007c3 fixed database config : None values can't be used anymore
Goffi <goffi@goffi.org>
parents: 323
diff changeset
125 kwargs[k] = v
227
8540825f85e0 Replaced unmaintained pyPgSQL by Psycopg 2
Goffi <goffi@goffi.org>
parents: 223
diff changeset
126 dbpool = adbapi.ConnectionPool('psycopg2',
204
b4bf0a5ce50d Implement storage facilities for the HTTP gateway.
Ralph Meijer <ralphm@ik.nu>
parents: 193
diff changeset
127 cp_reconnect=True,
b4bf0a5ce50d Implement storage facilities for the HTTP gateway.
Ralph Meijer <ralphm@ik.nu>
parents: 193
diff changeset
128 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
129 connection_factory=NamedTupleConnection,
328
ae37289007c3 fixed database config : None values can't be used anymore
Goffi <goffi@goffi.org>
parents: 323
diff changeset
130 **kwargs
204
b4bf0a5ce50d Implement storage facilities for the HTTP gateway.
Ralph Meijer <ralphm@ik.nu>
parents: 193
diff changeset
131 )
b4bf0a5ce50d Implement storage facilities for the HTTP gateway.
Ralph Meijer <ralphm@ik.nu>
parents: 193
diff changeset
132 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
133 elif config['backend'] == 'memory':
234
51af2ed8bd50 replaced idavoll imports by sat_pubsub imports
Goffi <goffi@goffi.org>
parents: 233
diff changeset
134 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
135 st = Storage()
ef22e4150caa Move protocol implementations (pubsub, disco, forms) to and depend on wokkel.
Ralph Meijer <ralphm@ik.nu>
parents: 163
diff changeset
136
ef22e4150caa Move protocol implementations (pubsub, disco, forms) to and depend on wokkel.
Ralph Meijer <ralphm@ik.nu>
parents: 163
diff changeset
137 bs = BackendService(st)
177
faf1c9bc2612 Add HTTP gateway in a separate plugin.
Ralph Meijer <ralphm@ik.nu>
parents: 176
diff changeset
138 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
139 bs.setServiceParent(s)
ef22e4150caa Move protocol implementations (pubsub, disco, forms) to and depend on wokkel.
Ralph Meijer <ralphm@ik.nu>
parents: 163
diff changeset
140
176
17fc5dd77158 Move around service setup.
Ralph Meijer <ralphm@ik.nu>
parents: 170
diff changeset
141 # Set up XMPP server-side component with publish-subscribe capabilities
17fc5dd77158 Move around service setup.
Ralph Meijer <ralphm@ik.nu>
parents: 170
diff changeset
142
17fc5dd77158 Move around service setup.
Ralph Meijer <ralphm@ik.nu>
parents: 170
diff changeset
143 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
144 config["jid"].full(), config["secret"])
faf1c9bc2612 Add HTTP gateway in a separate plugin.
Ralph Meijer <ralphm@ik.nu>
parents: 176
diff changeset
145 cs.setName('component')
176
17fc5dd77158 Move around service setup.
Ralph Meijer <ralphm@ik.nu>
parents: 170
diff changeset
146 cs.setServiceParent(s)
17fc5dd77158 Move around service setup.
Ralph Meijer <ralphm@ik.nu>
parents: 170
diff changeset
147
17fc5dd77158 Move around service setup.
Ralph Meijer <ralphm@ik.nu>
parents: 170
diff changeset
148 cs.factory.maxDelay = 900
17fc5dd77158 Move around service setup.
Ralph Meijer <ralphm@ik.nu>
parents: 170
diff changeset
149
17fc5dd77158 Move around service setup.
Ralph Meijer <ralphm@ik.nu>
parents: 170
diff changeset
150 if config["verbose"]:
17fc5dd77158 Move around service setup.
Ralph Meijer <ralphm@ik.nu>
parents: 170
diff changeset
151 cs.logTraffic = True
17fc5dd77158 Move around service setup.
Ralph Meijer <ralphm@ik.nu>
parents: 170
diff changeset
152
17fc5dd77158 Move around service setup.
Ralph Meijer <ralphm@ik.nu>
parents: 170
diff changeset
153 FallbackHandler().setHandlerParent(cs)
241
d2bdff8a4b45 changed version handler to SàT Pubsub
Goffi <goffi@goffi.org>
parents: 235
diff changeset
154 VersionHandler(u'SàT Pubsub', __version__).setHandlerParent(cs)
176
17fc5dd77158 Move around service setup.
Ralph Meijer <ralphm@ik.nu>
parents: 170
diff changeset
155 DiscoHandler().setHandlerParent(cs)
17fc5dd77158 Move around service setup.
Ralph Meijer <ralphm@ik.nu>
parents: 170
diff changeset
156
321
c7fe09894952 privilege: better handling of main message 'to' attribute (i.e. privileged entity's server)
Goffi <goffi@goffi.org>
parents: 312
diff changeset
157 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
158 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
159 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
160
222
698af5d720ad Reshape Idavoll as a PubSubResource.
Ralph Meijer <ralphm@ik.nu>
parents: 218
diff changeset
161 resource = IPubSubResource(bs)
698af5d720ad Reshape Idavoll as a PubSubResource.
Ralph Meijer <ralphm@ik.nu>
parents: 218
diff changeset
162 resource.hideNodes = config["hide-nodes"]
698af5d720ad Reshape Idavoll as a PubSubResource.
Ralph Meijer <ralphm@ik.nu>
parents: 218
diff changeset
163 resource.serviceJID = config["jid"]
698af5d720ad Reshape Idavoll as a PubSubResource.
Ralph Meijer <ralphm@ik.nu>
parents: 218
diff changeset
164
278
8a71486c3e95 implements RSM (XEP-0059)
souliane <souliane@mailoo.org>
parents: 276
diff changeset
165 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
166 ps.setHandlerParent(cs)
222
698af5d720ad Reshape Idavoll as a PubSubResource.
Ralph Meijer <ralphm@ik.nu>
parents: 218
diff changeset
167 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
168
280
798cb8962c0b MAM (XEP-0313) support: first draft
souliane <souliane@mailoo.org>
parents: 278
diff changeset
169 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
170 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
171 mam_s = mam.MAMService(mam_resource)
323
8496af26be45 mam: added filtering by category
Goffi <goffi@goffi.org>
parents: 321
diff changeset
172 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
173 mam_s.setHandlerParent(cs)
798cb8962c0b MAM (XEP-0313) support: first draft
souliane <souliane@mailoo.org>
parents: 278
diff changeset
174
352
efbdca10f0fb schema: node schema implementation
Goffi <goffi@goffi.org>
parents: 345
diff changeset
175 sh = SchemaHandler()
efbdca10f0fb schema: node schema implementation
Goffi <goffi@goffi.org>
parents: 345
diff changeset
176 sh.setHandlerParent(cs)
efbdca10f0fb schema: node schema implementation
Goffi <goffi@goffi.org>
parents: 345
diff changeset
177
321
c7fe09894952 privilege: better handling of main message 'to' attribute (i.e. privileged entity's server)
Goffi <goffi@goffi.org>
parents: 312
diff changeset
178 # 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
179 # 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
180 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
181 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
182 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
183
167
ef22e4150caa Move protocol implementations (pubsub, disco, forms) to and depend on wokkel.
Ralph Meijer <ralphm@ik.nu>
parents: 163
diff changeset
184 return s