Mercurial > libervia-backend
annotate sat/plugins/plugin_xep_0077.py @ 2738:eb58f26ed236
plugin XEP-0384: update to last python-omemo + trust management:
- Plugin has been updated to use last version of python-omemo (10.0.3).
- A temporary method remove all storage data if they are found, this method must be removed before 0.7 release (only people using dev version should have old omemo data in there storage).
- Trust management is not implemented, using new encryptionTrustUIGet method (an UI is also displayed when trust handling is needed before sending a message).
- omemo.DefaultOTPKPolicy is now used, instead of previous test policy of always deleting.
OMEMO e2e encryption is now functional for one2one conversations, including fingerprint management.
author | Goffi <goffi@goffi.org> |
---|---|
date | Wed, 02 Jan 2019 18:50:28 +0100 |
parents | 6c89cf856d28 |
children | 378188abe941 |
rev | line source |
---|---|
1934
2daf7b4c6756
use of /usr/bin/env instead of /usr/bin/python in shebang
Goffi <goffi@goffi.org>
parents:
1766
diff
changeset
|
1 #!/usr/bin/env python2 |
30
d6b613764dd7
new plugin for xep 0077 (In-Band registration): first draft
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
2 # -*- coding: utf-8 -*- |
d6b613764dd7
new plugin for xep 0077 (In-Band registration): first draft
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
3 |
609
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
594
diff
changeset
|
4 # SAT plugin for managing xep-0077 |
2483 | 5 # Copyright (C) 2009-2018 Jérôme Poisson (goffi@goffi.org) |
30
d6b613764dd7
new plugin for xep 0077 (In-Band registration): first draft
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
6 |
609
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
594
diff
changeset
|
7 # This program is free software: you can redistribute it and/or modify |
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
594
diff
changeset
|
8 # it under the terms of the GNU Affero General Public License as published by |
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
594
diff
changeset
|
9 # the Free Software Foundation, either version 3 of the License, or |
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
594
diff
changeset
|
10 # (at your option) any later version. |
30
d6b613764dd7
new plugin for xep 0077 (In-Band registration): first draft
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
11 |
609
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
594
diff
changeset
|
12 # This program is distributed in the hope that it will be useful, |
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
594
diff
changeset
|
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
594
diff
changeset
|
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
594
diff
changeset
|
15 # GNU Affero General Public License for more details. |
30
d6b613764dd7
new plugin for xep 0077 (In-Band registration): first draft
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
16 |
609
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
594
diff
changeset
|
17 # You should have received a copy of the GNU Affero General Public License |
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
594
diff
changeset
|
18 # along with this program. If not, see <http://www.gnu.org/licenses/>. |
30
d6b613764dd7
new plugin for xep 0077 (In-Band registration): first draft
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
19 |
771 | 20 from sat.core.i18n import _ |
916
1a759096ccbd
core: use of Const for profile_key + replaced '@DEFAULT@' default profile_key by '@NONE@'
Goffi <goffi@goffi.org>
parents:
876
diff
changeset
|
21 from sat.core.constants import Const as C |
807
be4c5e24dab9
plugin XEP-0077, plugin XEP-0100, frontends: gateways have been entirely implemented in backend using the new refactored XMLUI and AdvancedListContainer. The now useless code has been removed from frontends.
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
22 from sat.core import exceptions |
993
301b342c697a
core: use of the new core.log module:
Goffi <goffi@goffi.org>
parents:
941
diff
changeset
|
23 from sat.core.log import getLogger |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
24 |
993
301b342c697a
core: use of the new core.log module:
Goffi <goffi@goffi.org>
parents:
941
diff
changeset
|
25 log = getLogger(__name__) |
2634
6c89cf856d28
plugin XEP-0077: fixed RegisteringAuthenticator to use TLS if possible
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
26 from twisted.words.protocols.jabber import jid, xmlstream, client |
2172
545a1261ac3b
core, plugin XEP-0077: in-band registration fix and move:
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
27 from twisted.internet import defer, reactor |
807
be4c5e24dab9
plugin XEP-0077, plugin XEP-0100, frontends: gateways have been entirely implemented in backend using the new refactored XMLUI and AdvancedListContainer. The now useless code has been removed from frontends.
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
28 from sat.tools import xml_tools |
30
d6b613764dd7
new plugin for xep 0077 (In-Band registration): first draft
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
29 |
2172
545a1261ac3b
core, plugin XEP-0077: in-band registration fix and move:
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
30 from wokkel import data_form |
33
b9bb5d8e0cc7
In-band-registration: data form 2 xml conversion
Goffi <goffi@goffi.org>
parents:
30
diff
changeset
|
31 |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
32 NS_REG = "jabber:iq:register" |
30
d6b613764dd7
new plugin for xep 0077 (In-Band registration): first draft
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
33 |
d6b613764dd7
new plugin for xep 0077 (In-Band registration): first draft
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
34 PLUGIN_INFO = { |
2145
33c8c4973743
core (plugins): added missing contants + use of new constants in PLUGIN_INFO
Goffi <goffi@goffi.org>
parents:
1934
diff
changeset
|
35 C.PI_NAME: "XEP 0077 Plugin", |
33c8c4973743
core (plugins): added missing contants + use of new constants in PLUGIN_INFO
Goffi <goffi@goffi.org>
parents:
1934
diff
changeset
|
36 C.PI_IMPORT_NAME: "XEP-0077", |
33c8c4973743
core (plugins): added missing contants + use of new constants in PLUGIN_INFO
Goffi <goffi@goffi.org>
parents:
1934
diff
changeset
|
37 C.PI_TYPE: "XEP", |
33c8c4973743
core (plugins): added missing contants + use of new constants in PLUGIN_INFO
Goffi <goffi@goffi.org>
parents:
1934
diff
changeset
|
38 C.PI_PROTOCOLS: ["XEP-0077"], |
33c8c4973743
core (plugins): added missing contants + use of new constants in PLUGIN_INFO
Goffi <goffi@goffi.org>
parents:
1934
diff
changeset
|
39 C.PI_DEPENDENCIES: [], |
33c8c4973743
core (plugins): added missing contants + use of new constants in PLUGIN_INFO
Goffi <goffi@goffi.org>
parents:
1934
diff
changeset
|
40 C.PI_MAIN: "XEP_0077", |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
41 C.PI_DESCRIPTION: _("""Implementation of in-band registration"""), |
30
d6b613764dd7
new plugin for xep 0077 (In-Band registration): first draft
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
42 } |
d6b613764dd7
new plugin for xep 0077 (In-Band registration): first draft
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
43 |
2172
545a1261ac3b
core, plugin XEP-0077: in-band registration fix and move:
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
44 # FIXME: this implementation is incomplete |
545a1261ac3b
core, plugin XEP-0077: in-band registration fix and move:
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
45 |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
46 |
2172
545a1261ac3b
core, plugin XEP-0077: in-band registration fix and move:
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
47 class RegisteringAuthenticator(xmlstream.ConnectAuthenticator): |
2634
6c89cf856d28
plugin XEP-0077: fixed RegisteringAuthenticator to use TLS if possible
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
48 # FIXME: request IQ is not send to check available fields, |
6c89cf856d28
plugin XEP-0077: fixed RegisteringAuthenticator to use TLS if possible
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
49 # while XEP recommand to use it |
2172
545a1261ac3b
core, plugin XEP-0077: in-band registration fix and move:
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
50 # FIXME: doesn't handle data form or oob |
2634
6c89cf856d28
plugin XEP-0077: fixed RegisteringAuthenticator to use TLS if possible
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
51 namespace = 'jabber:client' |
2172
545a1261ac3b
core, plugin XEP-0077: in-band registration fix and move:
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
52 |
545a1261ac3b
core, plugin XEP-0077: in-band registration fix and move:
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
53 def __init__(self, jid_, password, email=None): |
2634
6c89cf856d28
plugin XEP-0077: fixed RegisteringAuthenticator to use TLS if possible
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
54 log.debug(_(u"Registration asked for {jid}").format(jid=jid_)) |
2172
545a1261ac3b
core, plugin XEP-0077: in-band registration fix and move:
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
55 xmlstream.ConnectAuthenticator.__init__(self, jid_.host) |
545a1261ac3b
core, plugin XEP-0077: in-band registration fix and move:
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
56 self.jid = jid_ |
545a1261ac3b
core, plugin XEP-0077: in-band registration fix and move:
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
57 self.password = password |
545a1261ac3b
core, plugin XEP-0077: in-band registration fix and move:
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
58 self.email = email |
545a1261ac3b
core, plugin XEP-0077: in-band registration fix and move:
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
59 self.registered = defer.Deferred() |
2634
6c89cf856d28
plugin XEP-0077: fixed RegisteringAuthenticator to use TLS if possible
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
60 |
6c89cf856d28
plugin XEP-0077: fixed RegisteringAuthenticator to use TLS if possible
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
61 def associateWithStream(self, xs): |
6c89cf856d28
plugin XEP-0077: fixed RegisteringAuthenticator to use TLS if possible
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
62 xmlstream.ConnectAuthenticator.associateWithStream(self, xs) |
6c89cf856d28
plugin XEP-0077: fixed RegisteringAuthenticator to use TLS if possible
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
63 xs.addObserver(xmlstream.STREAM_AUTHD_EVENT, self.register) |
6c89cf856d28
plugin XEP-0077: fixed RegisteringAuthenticator to use TLS if possible
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
64 |
6c89cf856d28
plugin XEP-0077: fixed RegisteringAuthenticator to use TLS if possible
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
65 xs.initializers = [client.CheckVersionInitializer(xs)] |
6c89cf856d28
plugin XEP-0077: fixed RegisteringAuthenticator to use TLS if possible
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
66 inits = [ (xmlstream.TLSInitiatingInitializer, False), |
6c89cf856d28
plugin XEP-0077: fixed RegisteringAuthenticator to use TLS if possible
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
67 ] |
2172
545a1261ac3b
core, plugin XEP-0077: in-band registration fix and move:
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
68 |
2634
6c89cf856d28
plugin XEP-0077: fixed RegisteringAuthenticator to use TLS if possible
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
69 for initClass, required in inits: |
6c89cf856d28
plugin XEP-0077: fixed RegisteringAuthenticator to use TLS if possible
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
70 init = initClass(xs) |
6c89cf856d28
plugin XEP-0077: fixed RegisteringAuthenticator to use TLS if possible
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
71 init.required = required |
6c89cf856d28
plugin XEP-0077: fixed RegisteringAuthenticator to use TLS if possible
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
72 xs.initializers.append(init) |
2172
545a1261ac3b
core, plugin XEP-0077: in-band registration fix and move:
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
73 |
2634
6c89cf856d28
plugin XEP-0077: fixed RegisteringAuthenticator to use TLS if possible
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
74 def register(self, xmlstream): |
6c89cf856d28
plugin XEP-0077: fixed RegisteringAuthenticator to use TLS if possible
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
75 log.debug(_(u"Stream started with {server}, now registering" |
6c89cf856d28
plugin XEP-0077: fixed RegisteringAuthenticator to use TLS if possible
Goffi <goffi@goffi.org>
parents:
2624
diff
changeset
|
76 .format(server=self.jid.host))) |
2175
75002ac33801
plugin XEP-0077: added changePassword and removeRegistration methods
Goffi <goffi@goffi.org>
parents:
2172
diff
changeset
|
77 iq = XEP_0077.buildRegisterIQ(self.xmlstream, self.jid, self.password, self.email) |
2172
545a1261ac3b
core, plugin XEP-0077: in-band registration fix and move:
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
78 d = iq.send(self.jid.host).addCallbacks(self.registrationCb, self.registrationEb) |
545a1261ac3b
core, plugin XEP-0077: in-band registration fix and move:
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
79 d.chainDeferred(self.registered) |
545a1261ac3b
core, plugin XEP-0077: in-band registration fix and move:
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
80 |
545a1261ac3b
core, plugin XEP-0077: in-band registration fix and move:
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
81 def registrationCb(self, answer): |
545a1261ac3b
core, plugin XEP-0077: in-band registration fix and move:
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
82 log.debug(_(u"Registration answer: {}").format(answer.toXml())) |
545a1261ac3b
core, plugin XEP-0077: in-band registration fix and move:
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
83 self.xmlstream.sendFooter() |
545a1261ac3b
core, plugin XEP-0077: in-band registration fix and move:
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
84 |
545a1261ac3b
core, plugin XEP-0077: in-band registration fix and move:
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
85 def registrationEb(self, failure_): |
545a1261ac3b
core, plugin XEP-0077: in-band registration fix and move:
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
86 log.info(_("Registration failure: {}").format(unicode(failure_.value))) |
545a1261ac3b
core, plugin XEP-0077: in-band registration fix and move:
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
87 self.xmlstream.sendFooter() |
2183 | 88 raise failure_ |
2172
545a1261ac3b
core, plugin XEP-0077: in-band registration fix and move:
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
89 |
594
e629371a28d3
Fix pep8 support in src/plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
588
diff
changeset
|
90 |
588
beaf6bec2fcd
Remove every old-style class.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
587
diff
changeset
|
91 class XEP_0077(object): |
30
d6b613764dd7
new plugin for xep 0077 (In-Band registration): first draft
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
92 def __init__(self, host): |
993
301b342c697a
core: use of the new core.log module:
Goffi <goffi@goffi.org>
parents:
941
diff
changeset
|
93 log.info(_("Plugin XEP_0077 initialization")) |
30
d6b613764dd7
new plugin for xep 0077 (In-Band registration): first draft
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
94 self.host = host |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
95 host.bridge.addMethod( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
96 "inBandRegister", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
97 ".plugin", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
98 in_sign="ss", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
99 out_sign="", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
100 method=self._inBandRegister, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
101 async=True, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
102 ) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
103 host.bridge.addMethod( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
104 "inBandAccountNew", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
105 ".plugin", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
106 in_sign="ssssi", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
107 out_sign="", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
108 method=self._registerNewAccount, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
109 async=True, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
110 ) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
111 host.bridge.addMethod( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
112 "inBandUnregister", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
113 ".plugin", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
114 in_sign="ss", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
115 out_sign="", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
116 method=self._unregister, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
117 async=True, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
118 ) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
119 host.bridge.addMethod( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
120 "inBandPasswordChange", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
121 ".plugin", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
122 in_sign="ss", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
123 out_sign="", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
124 method=self._changePassword, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
125 async=True, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
126 ) |
587
952322b1d490
Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
572
diff
changeset
|
127 |
2175
75002ac33801
plugin XEP-0077: added changePassword and removeRegistration methods
Goffi <goffi@goffi.org>
parents:
2172
diff
changeset
|
128 @staticmethod |
75002ac33801
plugin XEP-0077: added changePassword and removeRegistration methods
Goffi <goffi@goffi.org>
parents:
2172
diff
changeset
|
129 def buildRegisterIQ(xmlstream_, jid_, password, email=None): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
130 iq_elt = xmlstream.IQ(xmlstream_, "set") |
2175
75002ac33801
plugin XEP-0077: added changePassword and removeRegistration methods
Goffi <goffi@goffi.org>
parents:
2172
diff
changeset
|
131 iq_elt["to"] = jid_.host |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
132 query_elt = iq_elt.addElement(("jabber:iq:register", "query")) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
133 username_elt = query_elt.addElement("username") |
2175
75002ac33801
plugin XEP-0077: added changePassword and removeRegistration methods
Goffi <goffi@goffi.org>
parents:
2172
diff
changeset
|
134 username_elt.addContent(jid_.user) |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
135 password_elt = query_elt.addElement("password") |
2175
75002ac33801
plugin XEP-0077: added changePassword and removeRegistration methods
Goffi <goffi@goffi.org>
parents:
2172
diff
changeset
|
136 password_elt.addContent(password) |
75002ac33801
plugin XEP-0077: added changePassword and removeRegistration methods
Goffi <goffi@goffi.org>
parents:
2172
diff
changeset
|
137 if email is not None: |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
138 email_elt = query_elt.addElement("email") |
2175
75002ac33801
plugin XEP-0077: added changePassword and removeRegistration methods
Goffi <goffi@goffi.org>
parents:
2172
diff
changeset
|
139 email_elt.addContent(email) |
75002ac33801
plugin XEP-0077: added changePassword and removeRegistration methods
Goffi <goffi@goffi.org>
parents:
2172
diff
changeset
|
140 return iq_elt |
75002ac33801
plugin XEP-0077: added changePassword and removeRegistration methods
Goffi <goffi@goffi.org>
parents:
2172
diff
changeset
|
141 |
2172
545a1261ac3b
core, plugin XEP-0077: in-band registration fix and move:
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
142 def _regCb(self, answer, client, post_treat_cb): |
30
d6b613764dd7
new plugin for xep 0077 (In-Band registration): first draft
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
143 """Called after the first get IQ""" |
39
2e3411a6baad
Wix: external server management in gateways manager, SàT: bug fixes in gateway management
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
144 try: |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
145 query_elt = answer.elements(NS_REG, "query").next() |
807
be4c5e24dab9
plugin XEP-0077, plugin XEP-0100, frontends: gateways have been entirely implemented in backend using the new refactored XMLUI and AdvancedListContainer. The now useless code has been removed from frontends.
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
146 except StopIteration: |
be4c5e24dab9
plugin XEP-0077, plugin XEP-0100, frontends: gateways have been entirely implemented in backend using the new refactored XMLUI and AdvancedListContainer. The now useless code has been removed from frontends.
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
147 raise exceptions.DataError("Can't find expected query element") |
be4c5e24dab9
plugin XEP-0077, plugin XEP-0100, frontends: gateways have been entirely implemented in backend using the new refactored XMLUI and AdvancedListContainer. The now useless code has been removed from frontends.
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
148 |
be4c5e24dab9
plugin XEP-0077, plugin XEP-0100, frontends: gateways have been entirely implemented in backend using the new refactored XMLUI and AdvancedListContainer. The now useless code has been removed from frontends.
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
149 try: |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
150 x_elem = query_elt.elements(data_form.NS_X_DATA, "x").next() |
807
be4c5e24dab9
plugin XEP-0077, plugin XEP-0100, frontends: gateways have been entirely implemented in backend using the new refactored XMLUI and AdvancedListContainer. The now useless code has been removed from frontends.
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
151 except StopIteration: |
be4c5e24dab9
plugin XEP-0077, plugin XEP-0100, frontends: gateways have been entirely implemented in backend using the new refactored XMLUI and AdvancedListContainer. The now useless code has been removed from frontends.
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
152 # XXX: it seems we have an old service which doesn't manage data forms |
993
301b342c697a
core: use of the new core.log module:
Goffi <goffi@goffi.org>
parents:
941
diff
changeset
|
153 log.warning(_("Can't find data form")) |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
154 raise exceptions.DataError( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
155 _("This gateway can't be managed by SàT, sorry :(") |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
156 ) |
807
be4c5e24dab9
plugin XEP-0077, plugin XEP-0100, frontends: gateways have been entirely implemented in backend using the new refactored XMLUI and AdvancedListContainer. The now useless code has been removed from frontends.
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
157 |
be4c5e24dab9
plugin XEP-0077, plugin XEP-0100, frontends: gateways have been entirely implemented in backend using the new refactored XMLUI and AdvancedListContainer. The now useless code has been removed from frontends.
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
158 def submitForm(data, profile): |
be4c5e24dab9
plugin XEP-0077, plugin XEP-0100, frontends: gateways have been entirely implemented in backend using the new refactored XMLUI and AdvancedListContainer. The now useless code has been removed from frontends.
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
159 form_elt = xml_tools.XMLUIResultToElt(data) |
be4c5e24dab9
plugin XEP-0077, plugin XEP-0100, frontends: gateways have been entirely implemented in backend using the new refactored XMLUI and AdvancedListContainer. The now useless code has been removed from frontends.
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
160 |
2172
545a1261ac3b
core, plugin XEP-0077: in-band registration fix and move:
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
161 iq_elt = client.IQ() |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
162 iq_elt["id"] = answer["id"] |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
163 iq_elt["to"] = answer["from"] |
807
be4c5e24dab9
plugin XEP-0077, plugin XEP-0100, frontends: gateways have been entirely implemented in backend using the new refactored XMLUI and AdvancedListContainer. The now useless code has been removed from frontends.
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
164 query_elt = iq_elt.addElement("query", NS_REG) |
be4c5e24dab9
plugin XEP-0077, plugin XEP-0100, frontends: gateways have been entirely implemented in backend using the new refactored XMLUI and AdvancedListContainer. The now useless code has been removed from frontends.
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
165 query_elt.addChild(form_elt) |
be4c5e24dab9
plugin XEP-0077, plugin XEP-0100, frontends: gateways have been entirely implemented in backend using the new refactored XMLUI and AdvancedListContainer. The now useless code has been removed from frontends.
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
166 d = iq_elt.send() |
be4c5e24dab9
plugin XEP-0077, plugin XEP-0100, frontends: gateways have been entirely implemented in backend using the new refactored XMLUI and AdvancedListContainer. The now useless code has been removed from frontends.
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
167 d.addCallback(self._regSuccess, client, post_treat_cb) |
be4c5e24dab9
plugin XEP-0077, plugin XEP-0100, frontends: gateways have been entirely implemented in backend using the new refactored XMLUI and AdvancedListContainer. The now useless code has been removed from frontends.
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
168 d.addErrback(self._regFailure, client) |
be4c5e24dab9
plugin XEP-0077, plugin XEP-0100, frontends: gateways have been entirely implemented in backend using the new refactored XMLUI and AdvancedListContainer. The now useless code has been removed from frontends.
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
169 return d |
587
952322b1d490
Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
572
diff
changeset
|
170 |
39
2e3411a6baad
Wix: external server management in gateways manager, SàT: bug fixes in gateway management
Goffi <goffi@goffi.org>
parents:
37
diff
changeset
|
171 form = data_form.Form.fromElement(x_elem) |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
172 submit_reg_id = self.host.registerCallback( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
173 submitForm, with_data=True, one_shot=True |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
174 ) |
807
be4c5e24dab9
plugin XEP-0077, plugin XEP-0100, frontends: gateways have been entirely implemented in backend using the new refactored XMLUI and AdvancedListContainer. The now useless code has been removed from frontends.
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
175 return xml_tools.dataForm2XMLUI(form, submit_reg_id) |
30
d6b613764dd7
new plugin for xep 0077 (In-Band registration): first draft
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
176 |
2172
545a1261ac3b
core, plugin XEP-0077: in-band registration fix and move:
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
177 def _regEb(self, failure, client): |
30
d6b613764dd7
new plugin for xep 0077 (In-Band registration): first draft
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
178 """Called when something is wrong with registration""" |
1409
3265a2639182
massive (preventive) addition of 'u' (unicode) before the strings passed to logging functions
souliane <souliane@mailoo.org>
parents:
1396
diff
changeset
|
179 log.info(_("Registration failure: %s") % unicode(failure.value)) |
807
be4c5e24dab9
plugin XEP-0077, plugin XEP-0100, frontends: gateways have been entirely implemented in backend using the new refactored XMLUI and AdvancedListContainer. The now useless code has been removed from frontends.
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
180 raise failure |
587
952322b1d490
Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
572
diff
changeset
|
181 |
807
be4c5e24dab9
plugin XEP-0077, plugin XEP-0100, frontends: gateways have been entirely implemented in backend using the new refactored XMLUI and AdvancedListContainer. The now useless code has been removed from frontends.
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
182 def _regSuccess(self, answer, client, post_treat_cb): |
1409
3265a2639182
massive (preventive) addition of 'u' (unicode) before the strings passed to logging functions
souliane <souliane@mailoo.org>
parents:
1396
diff
changeset
|
183 log.debug(_(u"registration answer: %s") % answer.toXml()) |
807
be4c5e24dab9
plugin XEP-0077, plugin XEP-0100, frontends: gateways have been entirely implemented in backend using the new refactored XMLUI and AdvancedListContainer. The now useless code has been removed from frontends.
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
184 if post_treat_cb is not None: |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
185 post_treat_cb(jid.JID(answer["from"]), client.profile) |
807
be4c5e24dab9
plugin XEP-0077, plugin XEP-0100, frontends: gateways have been entirely implemented in backend using the new refactored XMLUI and AdvancedListContainer. The now useless code has been removed from frontends.
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
186 return {} |
587
952322b1d490
Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
572
diff
changeset
|
187 |
807
be4c5e24dab9
plugin XEP-0077, plugin XEP-0100, frontends: gateways have been entirely implemented in backend using the new refactored XMLUI and AdvancedListContainer. The now useless code has been removed from frontends.
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
188 def _regFailure(self, failure, client): |
1409
3265a2639182
massive (preventive) addition of 'u' (unicode) before the strings passed to logging functions
souliane <souliane@mailoo.org>
parents:
1396
diff
changeset
|
189 log.info(_(u"Registration failure: %s") % unicode(failure.value)) |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
190 if failure.value.condition == "conflict": |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
191 raise exceptions.ConflictError( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
192 _("Username already exists, please choose an other one") |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
193 ) |
807
be4c5e24dab9
plugin XEP-0077, plugin XEP-0100, frontends: gateways have been entirely implemented in backend using the new refactored XMLUI and AdvancedListContainer. The now useless code has been removed from frontends.
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
194 raise failure |
37
a61beb21d16d
Gateway registration, unregistration & edition
Goffi <goffi@goffi.org>
parents:
36
diff
changeset
|
195 |
916
1a759096ccbd
core: use of Const for profile_key + replaced '@DEFAULT@' default profile_key by '@NONE@'
Goffi <goffi@goffi.org>
parents:
876
diff
changeset
|
196 def _inBandRegister(self, to_jid_s, profile_key=C.PROF_KEY_NONE): |
807
be4c5e24dab9
plugin XEP-0077, plugin XEP-0100, frontends: gateways have been entirely implemented in backend using the new refactored XMLUI and AdvancedListContainer. The now useless code has been removed from frontends.
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
197 return self.inBandRegister, jid.JID(to_jid_s, profile_key) |
587
952322b1d490
Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
572
diff
changeset
|
198 |
916
1a759096ccbd
core: use of Const for profile_key + replaced '@DEFAULT@' default profile_key by '@NONE@'
Goffi <goffi@goffi.org>
parents:
876
diff
changeset
|
199 def inBandRegister(self, to_jid, post_treat_cb=None, profile_key=C.PROF_KEY_NONE): |
2177
09cfec4d8d19
plugin XEP-0077: added inBandAccountNew, inBandUnregister and inBandPasswordChange bridge methods
Goffi <goffi@goffi.org>
parents:
2175
diff
changeset
|
200 """register to a service |
09cfec4d8d19
plugin XEP-0077: added inBandAccountNew, inBandUnregister and inBandPasswordChange bridge methods
Goffi <goffi@goffi.org>
parents:
2175
diff
changeset
|
201 |
09cfec4d8d19
plugin XEP-0077: added inBandAccountNew, inBandUnregister and inBandPasswordChange bridge methods
Goffi <goffi@goffi.org>
parents:
2175
diff
changeset
|
202 @param to_jid(jid.JID): jid of the service to register to |
09cfec4d8d19
plugin XEP-0077: added inBandAccountNew, inBandUnregister and inBandPasswordChange bridge methods
Goffi <goffi@goffi.org>
parents:
2175
diff
changeset
|
203 """ |
09cfec4d8d19
plugin XEP-0077: added inBandAccountNew, inBandUnregister and inBandPasswordChange bridge methods
Goffi <goffi@goffi.org>
parents:
2175
diff
changeset
|
204 # FIXME: this post_treat_cb arguments seems wrong, check it |
538
2c4016921403
core, frontends, bridgen plugins: fixed methods which were unproperly managing multi-profiles
Goffi <goffi@goffi.org>
parents:
480
diff
changeset
|
205 client = self.host.getClient(profile_key) |
2172
545a1261ac3b
core, plugin XEP-0077: in-band registration fix and move:
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
206 log.debug(_(u"Asking registration for {}").format(to_jid.full())) |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
207 reg_request = client.IQ(u"get") |
594
e629371a28d3
Fix pep8 support in src/plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
588
diff
changeset
|
208 reg_request["from"] = client.jid.full() |
30
d6b613764dd7
new plugin for xep 0077 (In-Band registration): first draft
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
209 reg_request["to"] = to_jid.full() |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
210 reg_request.addElement("query", NS_REG) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
211 d = reg_request.send(to_jid.full()).addCallbacks( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
212 self._regCb, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
213 self._regEb, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
214 callbackArgs=[client, post_treat_cb], |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
215 errbackArgs=[client], |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
216 ) |
807
be4c5e24dab9
plugin XEP-0077, plugin XEP-0100, frontends: gateways have been entirely implemented in backend using the new refactored XMLUI and AdvancedListContainer. The now useless code has been removed from frontends.
Goffi <goffi@goffi.org>
parents:
771
diff
changeset
|
217 return d |
2172
545a1261ac3b
core, plugin XEP-0077: in-band registration fix and move:
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
218 |
2177
09cfec4d8d19
plugin XEP-0077: added inBandAccountNew, inBandUnregister and inBandPasswordChange bridge methods
Goffi <goffi@goffi.org>
parents:
2175
diff
changeset
|
219 def _registerNewAccount(self, jid_, password, email, host, port): |
09cfec4d8d19
plugin XEP-0077: added inBandAccountNew, inBandUnregister and inBandPasswordChange bridge methods
Goffi <goffi@goffi.org>
parents:
2175
diff
changeset
|
220 kwargs = {} |
09cfec4d8d19
plugin XEP-0077: added inBandAccountNew, inBandUnregister and inBandPasswordChange bridge methods
Goffi <goffi@goffi.org>
parents:
2175
diff
changeset
|
221 if email: |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
222 kwargs["email"] = email |
2177
09cfec4d8d19
plugin XEP-0077: added inBandAccountNew, inBandUnregister and inBandPasswordChange bridge methods
Goffi <goffi@goffi.org>
parents:
2175
diff
changeset
|
223 if host: |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
224 kwargs["host"] = host |
2177
09cfec4d8d19
plugin XEP-0077: added inBandAccountNew, inBandUnregister and inBandPasswordChange bridge methods
Goffi <goffi@goffi.org>
parents:
2175
diff
changeset
|
225 if port: |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
226 kwargs["port"] = port |
2177
09cfec4d8d19
plugin XEP-0077: added inBandAccountNew, inBandUnregister and inBandPasswordChange bridge methods
Goffi <goffi@goffi.org>
parents:
2175
diff
changeset
|
227 return self.registerNewAccount(jid.JID(jid_), password, **kwargs) |
09cfec4d8d19
plugin XEP-0077: added inBandAccountNew, inBandUnregister and inBandPasswordChange bridge methods
Goffi <goffi@goffi.org>
parents:
2175
diff
changeset
|
228 |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
229 def registerNewAccount( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
230 self, jid_, password, email=None, host=u"127.0.0.1", port=C.XMPP_C2S_PORT |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
231 ): |
2172
545a1261ac3b
core, plugin XEP-0077: in-band registration fix and move:
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
232 """register a new account on a XMPP server |
545a1261ac3b
core, plugin XEP-0077: in-band registration fix and move:
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
233 |
545a1261ac3b
core, plugin XEP-0077: in-band registration fix and move:
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
234 @param jid_(jid.JID): request jid to register |
545a1261ac3b
core, plugin XEP-0077: in-band registration fix and move:
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
235 @param password(unicode): password of the account |
545a1261ac3b
core, plugin XEP-0077: in-band registration fix and move:
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
236 @param email(unicode): email of the account |
545a1261ac3b
core, plugin XEP-0077: in-band registration fix and move:
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
237 @param host(unicode): host of the server to register to |
545a1261ac3b
core, plugin XEP-0077: in-band registration fix and move:
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
238 @param port(int): port of the server to register to |
545a1261ac3b
core, plugin XEP-0077: in-band registration fix and move:
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
239 """ |
545a1261ac3b
core, plugin XEP-0077: in-band registration fix and move:
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
240 authenticator = RegisteringAuthenticator(jid_, password, email) |
545a1261ac3b
core, plugin XEP-0077: in-band registration fix and move:
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
241 registered_d = authenticator.registered |
545a1261ac3b
core, plugin XEP-0077: in-band registration fix and move:
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
242 serverRegistrer = xmlstream.XmlStreamFactory(authenticator) |
545a1261ac3b
core, plugin XEP-0077: in-band registration fix and move:
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
243 connector = reactor.connectTCP(host, port, serverRegistrer) |
545a1261ac3b
core, plugin XEP-0077: in-band registration fix and move:
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
244 serverRegistrer.clientConnectionLost = lambda conn, reason: connector.disconnect() |
545a1261ac3b
core, plugin XEP-0077: in-band registration fix and move:
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
245 return registered_d |
2175
75002ac33801
plugin XEP-0077: added changePassword and removeRegistration methods
Goffi <goffi@goffi.org>
parents:
2172
diff
changeset
|
246 |
2177
09cfec4d8d19
plugin XEP-0077: added inBandAccountNew, inBandUnregister and inBandPasswordChange bridge methods
Goffi <goffi@goffi.org>
parents:
2175
diff
changeset
|
247 def _changePassword(self, new_password, profile_key): |
09cfec4d8d19
plugin XEP-0077: added inBandAccountNew, inBandUnregister and inBandPasswordChange bridge methods
Goffi <goffi@goffi.org>
parents:
2175
diff
changeset
|
248 client = self.host.getClient(profile_key) |
09cfec4d8d19
plugin XEP-0077: added inBandAccountNew, inBandUnregister and inBandPasswordChange bridge methods
Goffi <goffi@goffi.org>
parents:
2175
diff
changeset
|
249 return self.changePassword(client, new_password) |
09cfec4d8d19
plugin XEP-0077: added inBandAccountNew, inBandUnregister and inBandPasswordChange bridge methods
Goffi <goffi@goffi.org>
parents:
2175
diff
changeset
|
250 |
2175
75002ac33801
plugin XEP-0077: added changePassword and removeRegistration methods
Goffi <goffi@goffi.org>
parents:
2172
diff
changeset
|
251 def changePassword(self, client, new_password): |
75002ac33801
plugin XEP-0077: added changePassword and removeRegistration methods
Goffi <goffi@goffi.org>
parents:
2172
diff
changeset
|
252 iq_elt = self.buildRegisterIQ(client.xmlstream, client.jid, new_password) |
2177
09cfec4d8d19
plugin XEP-0077: added inBandAccountNew, inBandUnregister and inBandPasswordChange bridge methods
Goffi <goffi@goffi.org>
parents:
2175
diff
changeset
|
253 d = iq_elt.send(client.jid.host) |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
254 d.addCallback( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
255 lambda dummy: self.host.memory.setParam( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
256 "Password", new_password, "Connection", profile_key=client.profile |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
257 ) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
258 ) |
2177
09cfec4d8d19
plugin XEP-0077: added inBandAccountNew, inBandUnregister and inBandPasswordChange bridge methods
Goffi <goffi@goffi.org>
parents:
2175
diff
changeset
|
259 return d |
09cfec4d8d19
plugin XEP-0077: added inBandAccountNew, inBandUnregister and inBandPasswordChange bridge methods
Goffi <goffi@goffi.org>
parents:
2175
diff
changeset
|
260 |
09cfec4d8d19
plugin XEP-0077: added inBandAccountNew, inBandUnregister and inBandPasswordChange bridge methods
Goffi <goffi@goffi.org>
parents:
2175
diff
changeset
|
261 def _unregister(self, to_jid_s, profile_key): |
09cfec4d8d19
plugin XEP-0077: added inBandAccountNew, inBandUnregister and inBandPasswordChange bridge methods
Goffi <goffi@goffi.org>
parents:
2175
diff
changeset
|
262 client = self.host.getClient(profile_key) |
09cfec4d8d19
plugin XEP-0077: added inBandAccountNew, inBandUnregister and inBandPasswordChange bridge methods
Goffi <goffi@goffi.org>
parents:
2175
diff
changeset
|
263 return self.unregister(client, jid.JID(to_jid_s)) |
2175
75002ac33801
plugin XEP-0077: added changePassword and removeRegistration methods
Goffi <goffi@goffi.org>
parents:
2172
diff
changeset
|
264 |
2177
09cfec4d8d19
plugin XEP-0077: added inBandAccountNew, inBandUnregister and inBandPasswordChange bridge methods
Goffi <goffi@goffi.org>
parents:
2175
diff
changeset
|
265 def unregister(self, client, to_jid): |
09cfec4d8d19
plugin XEP-0077: added inBandAccountNew, inBandUnregister and inBandPasswordChange bridge methods
Goffi <goffi@goffi.org>
parents:
2175
diff
changeset
|
266 """remove registration from a server/service |
09cfec4d8d19
plugin XEP-0077: added inBandAccountNew, inBandUnregister and inBandPasswordChange bridge methods
Goffi <goffi@goffi.org>
parents:
2175
diff
changeset
|
267 |
09cfec4d8d19
plugin XEP-0077: added inBandAccountNew, inBandUnregister and inBandPasswordChange bridge methods
Goffi <goffi@goffi.org>
parents:
2175
diff
changeset
|
268 BEWARE! if you remove registration from profile own server, this will |
09cfec4d8d19
plugin XEP-0077: added inBandAccountNew, inBandUnregister and inBandPasswordChange bridge methods
Goffi <goffi@goffi.org>
parents:
2175
diff
changeset
|
269 DELETE THE XMPP ACCOUNT WITHOUT WARNING |
09cfec4d8d19
plugin XEP-0077: added inBandAccountNew, inBandUnregister and inBandPasswordChange bridge methods
Goffi <goffi@goffi.org>
parents:
2175
diff
changeset
|
270 @param to_jid(jid.JID): jid of the service or server |
09cfec4d8d19
plugin XEP-0077: added inBandAccountNew, inBandUnregister and inBandPasswordChange bridge methods
Goffi <goffi@goffi.org>
parents:
2175
diff
changeset
|
271 """ |
2175
75002ac33801
plugin XEP-0077: added changePassword and removeRegistration methods
Goffi <goffi@goffi.org>
parents:
2172
diff
changeset
|
272 iq_elt = client.IQ() |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
273 iq_elt["to"] = to_jid.full() |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
274 query_elt = iq_elt.addElement((NS_REG, u"query")) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
275 query_elt.addElement(u"remove") |
2177
09cfec4d8d19
plugin XEP-0077: added inBandAccountNew, inBandUnregister and inBandPasswordChange bridge methods
Goffi <goffi@goffi.org>
parents:
2175
diff
changeset
|
276 return iq_elt.send() |