Mercurial > libervia-backend
annotate src/plugins/plugin_misc_account.py @ 2177:09cfec4d8d19
plugin XEP-0077: added inBandAccountNew, inBandUnregister and inBandPasswordChange bridge methods
author | Goffi <goffi@goffi.org> |
---|---|
date | Thu, 09 Mar 2017 23:07:38 +0100 |
parents | 61128d260eef |
children | 968b0d13bcc7 |
rev | line source |
---|---|
1934
2daf7b4c6756
use of /usr/bin/env instead of /usr/bin/python in shebang
Goffi <goffi@goffi.org>
parents:
1916
diff
changeset
|
1 #!/usr/bin/env python2 |
569
06faf5bffbc0
plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
2 # -*- coding: utf-8 -*- |
06faf5bffbc0
plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
3 |
730
32bbabe809da
plugin account: configuration constants can be overriden in sat.conf (section "plugin account") + better deferred management in email sending
Goffi <goffi@goffi.org>
parents:
672
diff
changeset
|
4 # SAT plugin for account creation (experimental) |
1766 | 5 # Copyright (C) 2009-2016 Jérôme Poisson (goffi@goffi.org) |
569
06faf5bffbc0
plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
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. |
569
06faf5bffbc0
plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
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. |
569
06faf5bffbc0
plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
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/>. |
569
06faf5bffbc0
plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
19 |
895
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
20 from sat.core.i18n import _, D_ |
993
301b342c697a
core: use of the new core.log module:
Goffi <goffi@goffi.org>
parents:
987
diff
changeset
|
21 from sat.core.log import getLogger |
301b342c697a
core: use of the new core.log module:
Goffi <goffi@goffi.org>
parents:
987
diff
changeset
|
22 log = getLogger(__name__) |
569
06faf5bffbc0
plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
23 from sat.core import exceptions |
1041
9095263011b6
plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents:
1040
diff
changeset
|
24 from sat.tools import xml_tools |
9095263011b6
plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents:
1040
diff
changeset
|
25 from sat.memory.memory import Sessions |
9095263011b6
plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents:
1040
diff
changeset
|
26 from sat.memory.crypto import PasswordHasher |
9095263011b6
plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents:
1040
diff
changeset
|
27 from sat.core.constants import Const as C |
1855
1c9b2c184663
plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents:
1804
diff
changeset
|
28 import ConfigParser |
2176
61128d260eef
plugin account: removed dependency to Prosody/prosodyctl and properly use in-band registration instead
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
29 from twisted.internet import defer |
644
53de6954e94e
plugin misc_account: fix for sending a failure message
souliane <souliane@mailoo.org>
parents:
641
diff
changeset
|
30 from twisted.python.failure import Failure |
2176
61128d260eef
plugin account: removed dependency to Prosody/prosodyctl and properly use in-band registration instead
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
31 from twisted.words.protocols.jabber import jid |
1041
9095263011b6
plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents:
1040
diff
changeset
|
32 from twisted.mail.smtp import sendmail |
571
1cb24325485c
plugin account: errReceived fix + emails are now sent on new account + generic example server constants
Goffi <goffi@goffi.org>
parents:
569
diff
changeset
|
33 from email.mime.text import MIMEText |
569
06faf5bffbc0
plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
34 |
1653
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
35 import random |
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
36 |
2176
61128d260eef
plugin account: removed dependency to Prosody/prosodyctl and properly use in-band registration instead
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
37 # FIXME: this plugin code is old and need a cleaning |
61128d260eef
plugin account: removed dependency to Prosody/prosodyctl and properly use in-band registration instead
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
38 # TODO: account deletion/password change need testing |
61128d260eef
plugin account: removed dependency to Prosody/prosodyctl and properly use in-band registration instead
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
39 |
1653
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
40 |
569
06faf5bffbc0
plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
41 PLUGIN_INFO = { |
2145
33c8c4973743
core (plugins): added missing contants + use of new constants in PLUGIN_INFO
Goffi <goffi@goffi.org>
parents:
2144
diff
changeset
|
42 C.PI_NAME: "Account Plugin", |
33c8c4973743
core (plugins): added missing contants + use of new constants in PLUGIN_INFO
Goffi <goffi@goffi.org>
parents:
2144
diff
changeset
|
43 C.PI_IMPORT_NAME: "MISC-ACCOUNT", |
33c8c4973743
core (plugins): added missing contants + use of new constants in PLUGIN_INFO
Goffi <goffi@goffi.org>
parents:
2144
diff
changeset
|
44 C.PI_TYPE: "MISC", |
33c8c4973743
core (plugins): added missing contants + use of new constants in PLUGIN_INFO
Goffi <goffi@goffi.org>
parents:
2144
diff
changeset
|
45 C.PI_PROTOCOLS: [], |
2176
61128d260eef
plugin account: removed dependency to Prosody/prosodyctl and properly use in-band registration instead
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
46 C.PI_DEPENDENCIES: ["XEP-0077"], |
2145
33c8c4973743
core (plugins): added missing contants + use of new constants in PLUGIN_INFO
Goffi <goffi@goffi.org>
parents:
2144
diff
changeset
|
47 C.PI_RECOMMENDATIONS: ['GROUPBLOG'], |
33c8c4973743
core (plugins): added missing contants + use of new constants in PLUGIN_INFO
Goffi <goffi@goffi.org>
parents:
2144
diff
changeset
|
48 C.PI_MAIN: "MiscAccount", |
33c8c4973743
core (plugins): added missing contants + use of new constants in PLUGIN_INFO
Goffi <goffi@goffi.org>
parents:
2144
diff
changeset
|
49 C.PI_HANDLER: "no", |
33c8c4973743
core (plugins): added missing contants + use of new constants in PLUGIN_INFO
Goffi <goffi@goffi.org>
parents:
2144
diff
changeset
|
50 C.PI_DESCRIPTION: _(u"""SàT account creation""") |
569
06faf5bffbc0
plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
51 } |
06faf5bffbc0
plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
52 |
730
32bbabe809da
plugin account: configuration constants can be overriden in sat.conf (section "plugin account") + better deferred management in email sending
Goffi <goffi@goffi.org>
parents:
672
diff
changeset
|
53 CONFIG_SECTION = "plugin account" |
32bbabe809da
plugin account: configuration constants can be overriden in sat.conf (section "plugin account") + better deferred management in email sending
Goffi <goffi@goffi.org>
parents:
672
diff
changeset
|
54 |
32bbabe809da
plugin account: configuration constants can be overriden in sat.conf (section "plugin account") + better deferred management in email sending
Goffi <goffi@goffi.org>
parents:
672
diff
changeset
|
55 # You need do adapt the following consts to your server |
32bbabe809da
plugin account: configuration constants can be overriden in sat.conf (section "plugin account") + better deferred management in email sending
Goffi <goffi@goffi.org>
parents:
672
diff
changeset
|
56 # all theses values (key=option name, value=default) can (and should) be overriden in sat.conf |
32bbabe809da
plugin account: configuration constants can be overriden in sat.conf (section "plugin account") + better deferred management in email sending
Goffi <goffi@goffi.org>
parents:
672
diff
changeset
|
57 # in section CONFIG_SECTION |
569
06faf5bffbc0
plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
58 |
730
32bbabe809da
plugin account: configuration constants can be overriden in sat.conf (section "plugin account") + better deferred management in email sending
Goffi <goffi@goffi.org>
parents:
672
diff
changeset
|
59 default_conf = {"email_from": "NOREPLY@example.net", |
32bbabe809da
plugin account: configuration constants can be overriden in sat.conf (section "plugin account") + better deferred management in email sending
Goffi <goffi@goffi.org>
parents:
672
diff
changeset
|
60 "email_server": "localhost", |
1855
1c9b2c184663
plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents:
1804
diff
changeset
|
61 "email_sender_domain": "", |
1c9b2c184663
plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents:
1804
diff
changeset
|
62 "email_port": 25, |
1c9b2c184663
plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents:
1804
diff
changeset
|
63 "email_username": "", |
1c9b2c184663
plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents:
1804
diff
changeset
|
64 "email_password": "", |
1c9b2c184663
plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents:
1804
diff
changeset
|
65 "email_starttls": "false", |
1c9b2c184663
plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents:
1804
diff
changeset
|
66 "email_auth": "false", |
1c9b2c184663
plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents:
1804
diff
changeset
|
67 "email_admins_list": [], |
1c9b2c184663
plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents:
1804
diff
changeset
|
68 "admin_email": "", |
730
32bbabe809da
plugin account: configuration constants can be overriden in sat.conf (section "plugin account") + better deferred management in email sending
Goffi <goffi@goffi.org>
parents:
672
diff
changeset
|
69 "new_account_server": "localhost", |
32bbabe809da
plugin account: configuration constants can be overriden in sat.conf (section "plugin account") + better deferred management in email sending
Goffi <goffi@goffi.org>
parents:
672
diff
changeset
|
70 "new_account_domain": "example.net", |
1727
68e498b3367e
reverted revision 2ebe66a96d05
souliane <souliane@mailoo.org>
parents:
1726
diff
changeset
|
71 "reserved_list": ['libervia'] # profiles which can't be used |
730
32bbabe809da
plugin account: configuration constants can be overriden in sat.conf (section "plugin account") + better deferred management in email sending
Goffi <goffi@goffi.org>
parents:
672
diff
changeset
|
72 } |
569
06faf5bffbc0
plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
73 |
594
e629371a28d3
Fix pep8 support in src/plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
588
diff
changeset
|
74 |
2176
61128d260eef
plugin account: removed dependency to Prosody/prosodyctl and properly use in-band registration instead
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
75 class MiscAccount(object): |
61128d260eef
plugin account: removed dependency to Prosody/prosodyctl and properly use in-band registration instead
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
76 """Account plugin: create a SàT + XMPP account, used by Libervia""" |
61128d260eef
plugin account: removed dependency to Prosody/prosodyctl and properly use in-band registration instead
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
77 # XXX: This plugin was initialy a Q&D one used for the demo. |
61128d260eef
plugin account: removed dependency to Prosody/prosodyctl and properly use in-band registration instead
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
78 # TODO: cleaning, separate email handling, more configuration/tests, fixes |
587
952322b1d490
Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
572
diff
changeset
|
79 |
569
06faf5bffbc0
plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
80 |
06faf5bffbc0
plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
81 def __init__(self, host): |
993
301b342c697a
core: use of the new core.log module:
Goffi <goffi@goffi.org>
parents:
987
diff
changeset
|
82 log.info(_(u"Plugin Account initialization")) |
569
06faf5bffbc0
plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
83 self.host = host |
594
e629371a28d3
Fix pep8 support in src/plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
588
diff
changeset
|
84 host.bridge.addMethod("registerSatAccount", ".plugin", in_sign='sss', out_sign='', method=self._registerAccount, async=True) |
987
3a96920c07b7
core, frontends: unify the roster management UIs in sat/stdui/ui_contact_list.py
souliane <souliane@mailoo.org>
parents:
954
diff
changeset
|
85 host.bridge.addMethod("getNewAccountDomain", ".plugin", in_sign='', out_sign='s', method=self.getNewAccountDomain, async=False) |
895
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
86 host.bridge.addMethod("getAccountDialogUI", ".plugin", in_sign='s', out_sign='s', method=self._getAccountDialogUI, async=False) |
1653
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
87 host.bridge.addMethod("asyncConnectWithXMPPCredentials", ".plugin", in_sign='ss', out_sign='b', method=self.asyncConnectWithXMPPCredentials, async=True) |
569
06faf5bffbc0
plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
88 |
1892
8a5b178ff28b
plugin misc_account: fixes handling of deprecater parameter "admin_email"
souliane <souliane@mailoo.org>
parents:
1856
diff
changeset
|
89 self.fixEmailAdmins() |
1041
9095263011b6
plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents:
1040
diff
changeset
|
90 self._sessions = Sessions() |
9095263011b6
plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents:
1040
diff
changeset
|
91 |
895
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
92 self.__account_cb_id = host.registerCallback(self._accountDialogCb, with_data=True) |
1041
9095263011b6
plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents:
1040
diff
changeset
|
93 self.__change_password_id = host.registerCallback(self.__changePasswordCb, with_data=True) |
895
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
94 |
938
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
95 def deleteBlogCallback(posts, comments): |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
96 return lambda data, profile: self.__deleteBlogPostsCb(posts, comments, data, profile) |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
97 |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
98 self.__delete_posts_id = host.registerCallback(deleteBlogCallback(True, False), with_data=True) |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
99 self.__delete_comments_id = host.registerCallback(deleteBlogCallback(False, True), with_data=True) |
1041
9095263011b6
plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents:
1040
diff
changeset
|
100 self.__delete_posts_comments_id = host.registerCallback(deleteBlogCallback(True, True), with_data=True) |
9095263011b6
plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents:
1040
diff
changeset
|
101 |
9095263011b6
plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents:
1040
diff
changeset
|
102 self.__delete_account_id = host.registerCallback(self.__deleteAccountCb, with_data=True) |
938
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
103 |
1892
8a5b178ff28b
plugin misc_account: fixes handling of deprecater parameter "admin_email"
souliane <souliane@mailoo.org>
parents:
1856
diff
changeset
|
104 |
8a5b178ff28b
plugin misc_account: fixes handling of deprecater parameter "admin_email"
souliane <souliane@mailoo.org>
parents:
1856
diff
changeset
|
105 # FIXME: remove this after some time, when the deprecated parameter is really abandoned |
8a5b178ff28b
plugin misc_account: fixes handling of deprecater parameter "admin_email"
souliane <souliane@mailoo.org>
parents:
1856
diff
changeset
|
106 def fixEmailAdmins(self): |
8a5b178ff28b
plugin misc_account: fixes handling of deprecater parameter "admin_email"
souliane <souliane@mailoo.org>
parents:
1856
diff
changeset
|
107 """Handle deprecated config option "admin_email" to fix the admin emails list""" |
8a5b178ff28b
plugin misc_account: fixes handling of deprecater parameter "admin_email"
souliane <souliane@mailoo.org>
parents:
1856
diff
changeset
|
108 admin_email = self.getConfig('admin_email') |
8a5b178ff28b
plugin misc_account: fixes handling of deprecater parameter "admin_email"
souliane <souliane@mailoo.org>
parents:
1856
diff
changeset
|
109 if not admin_email: |
8a5b178ff28b
plugin misc_account: fixes handling of deprecater parameter "admin_email"
souliane <souliane@mailoo.org>
parents:
1856
diff
changeset
|
110 return |
8a5b178ff28b
plugin misc_account: fixes handling of deprecater parameter "admin_email"
souliane <souliane@mailoo.org>
parents:
1856
diff
changeset
|
111 log.warning(u"admin_email parameter is deprecated, please use email_admins_list instead") |
8a5b178ff28b
plugin misc_account: fixes handling of deprecater parameter "admin_email"
souliane <souliane@mailoo.org>
parents:
1856
diff
changeset
|
112 param_name = "email_admins_list" |
8a5b178ff28b
plugin misc_account: fixes handling of deprecater parameter "admin_email"
souliane <souliane@mailoo.org>
parents:
1856
diff
changeset
|
113 try: |
8a5b178ff28b
plugin misc_account: fixes handling of deprecater parameter "admin_email"
souliane <souliane@mailoo.org>
parents:
1856
diff
changeset
|
114 section = "" |
8a5b178ff28b
plugin misc_account: fixes handling of deprecater parameter "admin_email"
souliane <souliane@mailoo.org>
parents:
1856
diff
changeset
|
115 value = self.host.memory.getConfig(section, param_name, Exception) |
8a5b178ff28b
plugin misc_account: fixes handling of deprecater parameter "admin_email"
souliane <souliane@mailoo.org>
parents:
1856
diff
changeset
|
116 except (ConfigParser.NoOptionError, ConfigParser.NoSectionError): |
8a5b178ff28b
plugin misc_account: fixes handling of deprecater parameter "admin_email"
souliane <souliane@mailoo.org>
parents:
1856
diff
changeset
|
117 section = CONFIG_SECTION |
8a5b178ff28b
plugin misc_account: fixes handling of deprecater parameter "admin_email"
souliane <souliane@mailoo.org>
parents:
1856
diff
changeset
|
118 value = self.host.memory.getConfig(section, param_name, default_conf[param_name]) |
8a5b178ff28b
plugin misc_account: fixes handling of deprecater parameter "admin_email"
souliane <souliane@mailoo.org>
parents:
1856
diff
changeset
|
119 |
8a5b178ff28b
plugin misc_account: fixes handling of deprecater parameter "admin_email"
souliane <souliane@mailoo.org>
parents:
1856
diff
changeset
|
120 value = set(value) |
8a5b178ff28b
plugin misc_account: fixes handling of deprecater parameter "admin_email"
souliane <souliane@mailoo.org>
parents:
1856
diff
changeset
|
121 value.add(admin_email) |
8a5b178ff28b
plugin misc_account: fixes handling of deprecater parameter "admin_email"
souliane <souliane@mailoo.org>
parents:
1856
diff
changeset
|
122 self.host.memory.config.set(section, param_name, ",".join(value)) |
8a5b178ff28b
plugin misc_account: fixes handling of deprecater parameter "admin_email"
souliane <souliane@mailoo.org>
parents:
1856
diff
changeset
|
123 |
730
32bbabe809da
plugin account: configuration constants can be overriden in sat.conf (section "plugin account") + better deferred management in email sending
Goffi <goffi@goffi.org>
parents:
672
diff
changeset
|
124 def getConfig(self, name): |
1855
1c9b2c184663
plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents:
1804
diff
changeset
|
125 if name.startswith("email_"): |
1c9b2c184663
plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents:
1804
diff
changeset
|
126 # XXX: email_ parameters were first in [plugin account] section |
1c9b2c184663
plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents:
1804
diff
changeset
|
127 # but as it make more sense to have them in common with other plugins, |
1c9b2c184663
plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents:
1804
diff
changeset
|
128 # they can now be in [DEFAULT] section |
1c9b2c184663
plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents:
1804
diff
changeset
|
129 try: |
1c9b2c184663
plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents:
1804
diff
changeset
|
130 value = self.host.memory.getConfig(None, name, Exception) |
1c9b2c184663
plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents:
1804
diff
changeset
|
131 except (ConfigParser.NoOptionError, ConfigParser.NoSectionError): |
1c9b2c184663
plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents:
1804
diff
changeset
|
132 pass |
1c9b2c184663
plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents:
1804
diff
changeset
|
133 else: |
1c9b2c184663
plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents:
1804
diff
changeset
|
134 return value |
1c9b2c184663
plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents:
1804
diff
changeset
|
135 |
1234
9c17bd37e6e5
core: better management of default value in getConfig
Goffi <goffi@goffi.org>
parents:
1212
diff
changeset
|
136 return self.host.memory.getConfig(CONFIG_SECTION, name, default_conf[name]) |
730
32bbabe809da
plugin account: configuration constants can be overriden in sat.conf (section "plugin account") + better deferred management in email sending
Goffi <goffi@goffi.org>
parents:
672
diff
changeset
|
137 |
1653
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
138 def generatePassword(self): |
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
139 """Generate a password with random characters. |
1696
9a7a27c44611
plugin account: fixed profile creation: session is started to set the connection parameters, then stopped
Goffi <goffi@goffi.org>
parents:
1691
diff
changeset
|
140 |
1653
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
141 @return unicode |
569
06faf5bffbc0
plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
142 """ |
06faf5bffbc0
plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
143 random.seed() |
1653
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
144 #charset = [chr(i) for i in range(0x21,0x7F)] #XXX: this charset seems to have some issues with openfire |
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
145 charset = [chr(i) for i in range(0x30,0x3A) + range(0x41,0x5B) + range (0x61,0x7B)] |
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
146 return ''.join([random.choice(charset) for i in range(15)]) |
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
147 |
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
148 def _registerAccount(self, email, password, profile): |
1727
68e498b3367e
reverted revision 2ebe66a96d05
souliane <souliane@mailoo.org>
parents:
1726
diff
changeset
|
149 return self.registerAccount(email, password, None, profile) |
1653
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
150 |
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
151 def registerAccount(self, email, password, jid_s, profile): |
1907
0b748ad46ede
plugin misc account: separate profile creation and sending emails, so we can wait and send the emails at the right time (when we know that no error occured)
souliane <souliane@mailoo.org>
parents:
1901
diff
changeset
|
152 """Register a new profile, its associated XMPP account, send the confirmation emails. |
0b748ad46ede
plugin misc account: separate profile creation and sending emails, so we can wait and send the emails at the right time (when we know that no error occured)
souliane <souliane@mailoo.org>
parents:
1901
diff
changeset
|
153 |
0b748ad46ede
plugin misc account: separate profile creation and sending emails, so we can wait and send the emails at the right time (when we know that no error occured)
souliane <souliane@mailoo.org>
parents:
1901
diff
changeset
|
154 @param email (unicode): where to send to confirmation email to |
0b748ad46ede
plugin misc account: separate profile creation and sending emails, so we can wait and send the emails at the right time (when we know that no error occured)
souliane <souliane@mailoo.org>
parents:
1901
diff
changeset
|
155 @param password (unicode): password chosen by the user |
0b748ad46ede
plugin misc account: separate profile creation and sending emails, so we can wait and send the emails at the right time (when we know that no error occured)
souliane <souliane@mailoo.org>
parents:
1901
diff
changeset
|
156 while be used for profile *and* XMPP account |
0b748ad46ede
plugin misc account: separate profile creation and sending emails, so we can wait and send the emails at the right time (when we know that no error occured)
souliane <souliane@mailoo.org>
parents:
1901
diff
changeset
|
157 @param jid_s (unicode): JID to re-use or to register: |
0b748ad46ede
plugin misc account: separate profile creation and sending emails, so we can wait and send the emails at the right time (when we know that no error occured)
souliane <souliane@mailoo.org>
parents:
1901
diff
changeset
|
158 - non empty value: bind this JID to the new sat profile |
0b748ad46ede
plugin misc account: separate profile creation and sending emails, so we can wait and send the emails at the right time (when we know that no error occured)
souliane <souliane@mailoo.org>
parents:
1901
diff
changeset
|
159 - None or "": register a new JID on the local XMPP server |
0b748ad46ede
plugin misc account: separate profile creation and sending emails, so we can wait and send the emails at the right time (when we know that no error occured)
souliane <souliane@mailoo.org>
parents:
1901
diff
changeset
|
160 @param profile |
0b748ad46ede
plugin misc account: separate profile creation and sending emails, so we can wait and send the emails at the right time (when we know that no error occured)
souliane <souliane@mailoo.org>
parents:
1901
diff
changeset
|
161 @return Deferred |
0b748ad46ede
plugin misc account: separate profile creation and sending emails, so we can wait and send the emails at the right time (when we know that no error occured)
souliane <souliane@mailoo.org>
parents:
1901
diff
changeset
|
162 """ |
0b748ad46ede
plugin misc account: separate profile creation and sending emails, so we can wait and send the emails at the right time (when we know that no error occured)
souliane <souliane@mailoo.org>
parents:
1901
diff
changeset
|
163 d = self.createProfile(password, jid_s, profile) |
1916
72837638f076
plugin misc_account: fixes two bugs introduced by revision 1907 (0b748ad46ede):
souliane <souliane@mailoo.org>
parents:
1907
diff
changeset
|
164 d.addCallback(lambda dummy: self.sendEmails(email, profile)) |
1907
0b748ad46ede
plugin misc account: separate profile creation and sending emails, so we can wait and send the emails at the right time (when we know that no error occured)
souliane <souliane@mailoo.org>
parents:
1901
diff
changeset
|
165 return d |
0b748ad46ede
plugin misc account: separate profile creation and sending emails, so we can wait and send the emails at the right time (when we know that no error occured)
souliane <souliane@mailoo.org>
parents:
1901
diff
changeset
|
166 |
0b748ad46ede
plugin misc account: separate profile creation and sending emails, so we can wait and send the emails at the right time (when we know that no error occured)
souliane <souliane@mailoo.org>
parents:
1901
diff
changeset
|
167 def createProfile(self, password, jid_s, profile): |
1653
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
168 """Register a new profile and its associated XMPP account. |
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
169 |
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
170 @param password (unicode): password chosen by the user |
1696
9a7a27c44611
plugin account: fixed profile creation: session is started to set the connection parameters, then stopped
Goffi <goffi@goffi.org>
parents:
1691
diff
changeset
|
171 while be used for profile *and* XMPP account |
1653
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
172 @param jid_s (unicode): JID to re-use or to register: |
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
173 - non empty value: bind this JID to the new sat profile |
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
174 - None or "": register a new JID on the local XMPP server |
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
175 @param profile |
1696
9a7a27c44611
plugin account: fixed profile creation: session is started to set the connection parameters, then stopped
Goffi <goffi@goffi.org>
parents:
1691
diff
changeset
|
176 @return Deferred |
569
06faf5bffbc0
plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
177 """ |
1653
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
178 if not password or not profile: |
569
06faf5bffbc0
plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
179 raise exceptions.DataError |
06faf5bffbc0
plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
180 |
730
32bbabe809da
plugin account: configuration constants can be overriden in sat.conf (section "plugin account") + better deferred management in email sending
Goffi <goffi@goffi.org>
parents:
672
diff
changeset
|
181 if profile.lower() in self.getConfig('reserved_list'): |
751
1def5b7edf9f
core, bridge: better GenericException handling
Goffi <goffi@goffi.org>
parents:
733
diff
changeset
|
182 return defer.fail(Failure(exceptions.ConflictError)) |
569
06faf5bffbc0
plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
183 |
2144
1d3f73e065e1
core, jp: component handling + client handling refactoring:
Goffi <goffi@goffi.org>
parents:
2142
diff
changeset
|
184 d = self.host.memory.createProfile(profile, password) |
1907
0b748ad46ede
plugin misc account: separate profile creation and sending emails, so we can wait and send the emails at the right time (when we know that no error occured)
souliane <souliane@mailoo.org>
parents:
1901
diff
changeset
|
185 d.addCallback(lambda dummy: self.profileCreated(password, jid_s, profile)) |
569
06faf5bffbc0
plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
186 return d |
06faf5bffbc0
plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
187 |
1907
0b748ad46ede
plugin misc account: separate profile creation and sending emails, so we can wait and send the emails at the right time (when we know that no error occured)
souliane <souliane@mailoo.org>
parents:
1901
diff
changeset
|
188 def profileCreated(self, password, jid_s, profile): |
0b748ad46ede
plugin misc account: separate profile creation and sending emails, so we can wait and send the emails at the right time (when we know that no error occured)
souliane <souliane@mailoo.org>
parents:
1901
diff
changeset
|
189 """Create the XMPP account and set the profile connection parameters. |
587
952322b1d490
Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
572
diff
changeset
|
190 |
1653
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
191 @param password (unicode): password chosen by the user |
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
192 @param jid_s (unicode): JID to re-use or to register: |
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
193 - non empty value: bind this JID to the new sat profile |
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
194 - None or empty: register a new JID on the local XMPP server |
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
195 @param profile |
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
196 @return: Deferred |
1031
e90125d07072
plugins misc_account, misc_smtp: update the plugins that deal with passwords
souliane <souliane@mailoo.org>
parents:
993
diff
changeset
|
197 """ |
1653
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
198 if jid_s: |
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
199 d = defer.succeed(None) |
2176
61128d260eef
plugin account: removed dependency to Prosody/prosodyctl and properly use in-band registration instead
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
200 jid_ = jid.JID(jid_s) |
1653
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
201 else: |
2176
61128d260eef
plugin account: removed dependency to Prosody/prosodyctl and properly use in-band registration instead
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
202 jid_s = profile + u"@" + self.getConfig('new_account_domain') |
61128d260eef
plugin account: removed dependency to Prosody/prosodyctl and properly use in-band registration instead
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
203 jid_ = jid.JID(jid_s) |
61128d260eef
plugin account: removed dependency to Prosody/prosodyctl and properly use in-band registration instead
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
204 d = self.host.plugins['XEP-0077'].registerNewAccount(jid_, password) |
1729
9037161e28f0
plugin misc_account: send email to the admins when a new profile is created for an external XMPP account
souliane <souliane@mailoo.org>
parents:
1727
diff
changeset
|
205 |
1080
f25ec9fd7cc4
plugin misc_account: suppress the profile after its creation if the XMPP account registration failed
souliane <souliane@mailoo.org>
parents:
1044
diff
changeset
|
206 def setParams(dummy): |
1091
2d035aaea13b
plugin misc_account: delete the profile session after the registration is done
souliane <souliane@mailoo.org>
parents:
1089
diff
changeset
|
207 self.host.memory.setParam("JabberID", jid_s, "Connection", profile_key=profile) |
2d035aaea13b
plugin misc_account: delete the profile session after the registration is done
souliane <souliane@mailoo.org>
parents:
1089
diff
changeset
|
208 d = self.host.memory.setParam("Password", password, "Connection", profile_key=profile) |
1696
9a7a27c44611
plugin account: fixed profile creation: session is started to set the connection parameters, then stopped
Goffi <goffi@goffi.org>
parents:
1691
diff
changeset
|
209 return d |
1080
f25ec9fd7cc4
plugin misc_account: suppress the profile after its creation if the XMPP account registration failed
souliane <souliane@mailoo.org>
parents:
1044
diff
changeset
|
210 |
f25ec9fd7cc4
plugin misc_account: suppress the profile after its creation if the XMPP account registration failed
souliane <souliane@mailoo.org>
parents:
1044
diff
changeset
|
211 def removeProfile(failure): |
f25ec9fd7cc4
plugin misc_account: suppress the profile after its creation if the XMPP account registration failed
souliane <souliane@mailoo.org>
parents:
1044
diff
changeset
|
212 self.host.memory.asyncDeleteProfile(profile) |
f25ec9fd7cc4
plugin misc_account: suppress the profile after its creation if the XMPP account registration failed
souliane <souliane@mailoo.org>
parents:
1044
diff
changeset
|
213 return failure |
f25ec9fd7cc4
plugin misc_account: suppress the profile after its creation if the XMPP account registration failed
souliane <souliane@mailoo.org>
parents:
1044
diff
changeset
|
214 |
1696
9a7a27c44611
plugin account: fixed profile creation: session is started to set the connection parameters, then stopped
Goffi <goffi@goffi.org>
parents:
1691
diff
changeset
|
215 d.addCallback(lambda dummy: self.host.memory.startSession(password, profile)) |
1080
f25ec9fd7cc4
plugin misc_account: suppress the profile after its creation if the XMPP account registration failed
souliane <souliane@mailoo.org>
parents:
1044
diff
changeset
|
216 d.addCallback(setParams) |
1696
9a7a27c44611
plugin account: fixed profile creation: session is started to set the connection parameters, then stopped
Goffi <goffi@goffi.org>
parents:
1691
diff
changeset
|
217 d.addCallback(lambda dummy: self.host.memory.stopSession(profile)) |
1080
f25ec9fd7cc4
plugin misc_account: suppress the profile after its creation if the XMPP account registration failed
souliane <souliane@mailoo.org>
parents:
1044
diff
changeset
|
218 d.addErrback(removeProfile) |
733 | 219 return d |
569
06faf5bffbc0
plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
220 |
1916
72837638f076
plugin misc_account: fixes two bugs introduced by revision 1907 (0b748ad46ede):
souliane <souliane@mailoo.org>
parents:
1907
diff
changeset
|
221 def sendEmails(self, email, profile): |
1433
5d42e2219d7c
plugin misc_account: change the message sent by email after an account creation
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
222 # time to send the email |
571
1cb24325485c
plugin account: errReceived fix + emails are now sent on new account + generic example server constants
Goffi <goffi@goffi.org>
parents:
569
diff
changeset
|
223 |
1765
b9493cb6ce49
plugin misc_account: fixes login messages when sending emails
souliane <souliane@mailoo.org>
parents:
1729
diff
changeset
|
224 email_host = self.getConfig('email_server') |
b9493cb6ce49
plugin misc_account: fixes login messages when sending emails
souliane <souliane@mailoo.org>
parents:
1729
diff
changeset
|
225 email_from = self.getConfig("email_from") |
1855
1c9b2c184663
plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents:
1804
diff
changeset
|
226 email_sender_domain = self.getConfig("email_sender_domain") or None |
1c9b2c184663
plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents:
1804
diff
changeset
|
227 email_port = int(self.getConfig("email_port")) |
1c9b2c184663
plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents:
1804
diff
changeset
|
228 email_username = self.getConfig("email_username") or None |
1c9b2c184663
plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents:
1804
diff
changeset
|
229 email_password = self.getConfig("email_password") or None |
1c9b2c184663
plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents:
1804
diff
changeset
|
230 email_starttls = C.bool(self.getConfig("email_starttls")) |
1c9b2c184663
plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents:
1804
diff
changeset
|
231 email_auth = C.bool(self.getConfig("email_auth")) |
1433
5d42e2219d7c
plugin misc_account: change the message sent by email after an account creation
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
232 domain = self.getConfig('new_account_domain') |
571
1cb24325485c
plugin account: errReceived fix + emails are now sent on new account + generic example server constants
Goffi <goffi@goffi.org>
parents:
569
diff
changeset
|
233 |
1898
31b8a58cfcf5
plugin misc_account: fixes sending email (twisted.mail.smtp.sendmail doesn't want unicode)
souliane <souliane@mailoo.org>
parents:
1897
diff
changeset
|
234 def sendEmail(recipients, msg): |
31b8a58cfcf5
plugin misc_account: fixes sending email (twisted.mail.smtp.sendmail doesn't want unicode)
souliane <souliane@mailoo.org>
parents:
1897
diff
changeset
|
235 return sendmail(email_host.encode("utf-8"), |
31b8a58cfcf5
plugin misc_account: fixes sending email (twisted.mail.smtp.sendmail doesn't want unicode)
souliane <souliane@mailoo.org>
parents:
1897
diff
changeset
|
236 email_from.encode("utf-8"), |
31b8a58cfcf5
plugin misc_account: fixes sending email (twisted.mail.smtp.sendmail doesn't want unicode)
souliane <souliane@mailoo.org>
parents:
1897
diff
changeset
|
237 [email.encode("utf-8") for email in recipients], |
31b8a58cfcf5
plugin misc_account: fixes sending email (twisted.mail.smtp.sendmail doesn't want unicode)
souliane <souliane@mailoo.org>
parents:
1897
diff
changeset
|
238 msg.as_string(), |
1901
faa8427dd032
plugin misc account: fixed handling of None/empty values in sendEmails.sendEmail
Goffi <goffi@goffi.org>
parents:
1898
diff
changeset
|
239 senderDomainName=email_sender_domain.encode("utf-8") if email_sender_domain else None, |
1898
31b8a58cfcf5
plugin misc_account: fixes sending email (twisted.mail.smtp.sendmail doesn't want unicode)
souliane <souliane@mailoo.org>
parents:
1897
diff
changeset
|
240 port=email_port, |
1901
faa8427dd032
plugin misc account: fixed handling of None/empty values in sendEmails.sendEmail
Goffi <goffi@goffi.org>
parents:
1898
diff
changeset
|
241 username=email_username.encode("utf-8") if email_username else None, |
faa8427dd032
plugin misc account: fixed handling of None/empty values in sendEmails.sendEmail
Goffi <goffi@goffi.org>
parents:
1898
diff
changeset
|
242 password=email_password.encode("utf-8") if email_password else None, |
1898
31b8a58cfcf5
plugin misc_account: fixes sending email (twisted.mail.smtp.sendmail doesn't want unicode)
souliane <souliane@mailoo.org>
parents:
1897
diff
changeset
|
243 requireAuthentication=email_starttls, |
31b8a58cfcf5
plugin misc_account: fixes sending email (twisted.mail.smtp.sendmail doesn't want unicode)
souliane <souliane@mailoo.org>
parents:
1897
diff
changeset
|
244 requireTransportSecurity=email_auth) |
31b8a58cfcf5
plugin misc_account: fixes sending email (twisted.mail.smtp.sendmail doesn't want unicode)
souliane <souliane@mailoo.org>
parents:
1897
diff
changeset
|
245 |
31b8a58cfcf5
plugin misc_account: fixes sending email (twisted.mail.smtp.sendmail doesn't want unicode)
souliane <souliane@mailoo.org>
parents:
1897
diff
changeset
|
246 # email to the administrators |
1855
1c9b2c184663
plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents:
1804
diff
changeset
|
247 admins_emails = self.getConfig('email_admins_list') |
1c9b2c184663
plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents:
1804
diff
changeset
|
248 if not admins_emails: |
1c9b2c184663
plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents:
1804
diff
changeset
|
249 log.warning(u"No known admin email, we can't send email to administrator(s).\nPlease fill email_admins_list parameter") |
1c9b2c184663
plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents:
1804
diff
changeset
|
250 d_admin = defer.fail(exceptions.DataError("no admin email")) |
1c9b2c184663
plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents:
1804
diff
changeset
|
251 else: |
1c9b2c184663
plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents:
1804
diff
changeset
|
252 body = (u"""New account created: %(profile)s [%(email)s]""" % {'profile': profile, 'email': email}).encode('utf-8') |
1c9b2c184663
plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents:
1804
diff
changeset
|
253 msg = MIMEText(body, 'plain', 'UTF-8') |
1c9b2c184663
plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents:
1804
diff
changeset
|
254 msg['Subject'] = _('New Libervia account created') |
1c9b2c184663
plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents:
1804
diff
changeset
|
255 msg['From'] = email_from |
1c9b2c184663
plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents:
1804
diff
changeset
|
256 msg['To'] = ", ".join(admins_emails) |
1729
9037161e28f0
plugin misc_account: send email to the admins when a new profile is created for an external XMPP account
souliane <souliane@mailoo.org>
parents:
1727
diff
changeset
|
257 |
1898
31b8a58cfcf5
plugin misc_account: fixes sending email (twisted.mail.smtp.sendmail doesn't want unicode)
souliane <souliane@mailoo.org>
parents:
1897
diff
changeset
|
258 d_admin = sendEmail(admins_emails, msg) |
1855
1c9b2c184663
plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents:
1804
diff
changeset
|
259 admins_emails_txt = u', '.join([u"<{}>".format(addr) for addr in admins_emails]) |
1c9b2c184663
plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents:
1804
diff
changeset
|
260 d_admin.addCallbacks(lambda dummy: log.debug(u"Account creation notification sent to admin(s) {}".format(admins_emails_txt)), |
1c9b2c184663
plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents:
1804
diff
changeset
|
261 lambda dummy: log.error(u"Failed to send account creation notification to admin {}".format(admins_emails_txt))) |
1729
9037161e28f0
plugin misc_account: send email to the admins when a new profile is created for an external XMPP account
souliane <souliane@mailoo.org>
parents:
1727
diff
changeset
|
262 if not email: |
9037161e28f0
plugin misc_account: send email to the admins when a new profile is created for an external XMPP account
souliane <souliane@mailoo.org>
parents:
1727
diff
changeset
|
263 return d_admin |
9037161e28f0
plugin misc_account: send email to the admins when a new profile is created for an external XMPP account
souliane <souliane@mailoo.org>
parents:
1727
diff
changeset
|
264 |
1916
72837638f076
plugin misc_account: fixes two bugs introduced by revision 1907 (0b748ad46ede):
souliane <souliane@mailoo.org>
parents:
1907
diff
changeset
|
265 jid_s = self.host.memory.getParamA("JabberID", "Connection", profile_key=profile) |
1433
5d42e2219d7c
plugin misc_account: change the message sent by email after an account creation
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
266 body = (_(u"""Welcome to Libervia, the web interface of Salut à Toi. |
571
1cb24325485c
plugin account: errReceived fix + emails are now sent on new account + generic example server constants
Goffi <goffi@goffi.org>
parents:
569
diff
changeset
|
267 |
1897
e15c7d71ae76
plugin account: fixed use of {domain} instead of hardcoded libervia.org for welcoming e-mail.
Goffi <goffi@goffi.org>
parents:
1892
diff
changeset
|
268 Your account on {domain} has been successfully created. This is a demonstration version to show you the current status of the project. It is still under development, please keep it in mind! |
569
06faf5bffbc0
plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
269 |
1040
76ad41b708e1
plugin misc_account: do not send the password with the confirmation email for account creation
souliane <souliane@mailoo.org>
parents:
1031
diff
changeset
|
270 Here is your connection information: |
1433
5d42e2219d7c
plugin misc_account: change the message sent by email after an account creation
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
271 |
1897
e15c7d71ae76
plugin account: fixed use of {domain} instead of hardcoded libervia.org for welcoming e-mail.
Goffi <goffi@goffi.org>
parents:
1892
diff
changeset
|
272 Login on {domain}: {profile} |
e15c7d71ae76
plugin account: fixed use of {domain} instead of hardcoded libervia.org for welcoming e-mail.
Goffi <goffi@goffi.org>
parents:
1892
diff
changeset
|
273 Jabber ID (JID): {jid} |
1856
d7e29a12ec2c
plugin account: modifications in welcoming email:
Goffi <goffi@goffi.org>
parents:
1855
diff
changeset
|
274 Your password has been chosen by yourself during registration. |
569
06faf5bffbc0
plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
275 |
1856
d7e29a12ec2c
plugin account: modifications in welcoming email:
Goffi <goffi@goffi.org>
parents:
1855
diff
changeset
|
276 In the beginning, you have nobody to talk to. To find some contacts, you may use the users' directory: |
1707
94c450972346
primitivus and plugins: renamed a few menus:
souliane <souliane@mailoo.org>
parents:
1696
diff
changeset
|
277 - make yourself visible in "Service / Directory subscription". |
94c450972346
primitivus and plugins: renamed a few menus:
souliane <souliane@mailoo.org>
parents:
1696
diff
changeset
|
278 - search for people with "Contacts" / Search directory". |
571
1cb24325485c
plugin account: errReceived fix + emails are now sent on new account + generic example server constants
Goffi <goffi@goffi.org>
parents:
569
diff
changeset
|
279 |
1433
5d42e2219d7c
plugin misc_account: change the message sent by email after an account creation
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
280 Any feedback welcome. Thank you! |
571
1cb24325485c
plugin account: errReceived fix + emails are now sent on new account + generic example server constants
Goffi <goffi@goffi.org>
parents:
569
diff
changeset
|
281 |
1433
5d42e2219d7c
plugin misc_account: change the message sent by email after an account creation
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
282 Salut à Toi association |
5d42e2219d7c
plugin misc_account: change the message sent by email after an account creation
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
283 http://www.salut-a-toi.org |
1897
e15c7d71ae76
plugin account: fixed use of {domain} instead of hardcoded libervia.org for welcoming e-mail.
Goffi <goffi@goffi.org>
parents:
1892
diff
changeset
|
284 """).format(profile=profile, jid=jid_s, domain=domain)).encode('utf-8') |
571
1cb24325485c
plugin account: errReceived fix + emails are now sent on new account + generic example server constants
Goffi <goffi@goffi.org>
parents:
569
diff
changeset
|
285 msg = MIMEText(body, 'plain', 'UTF-8') |
1433
5d42e2219d7c
plugin misc_account: change the message sent by email after an account creation
souliane <souliane@mailoo.org>
parents:
1409
diff
changeset
|
286 msg['Subject'] = _(u'Libervia account created') |
1765
b9493cb6ce49
plugin misc_account: fixes login messages when sending emails
souliane <souliane@mailoo.org>
parents:
1729
diff
changeset
|
287 msg['From'] = email_from |
571
1cb24325485c
plugin account: errReceived fix + emails are now sent on new account + generic example server constants
Goffi <goffi@goffi.org>
parents:
569
diff
changeset
|
288 msg['To'] = email |
569
06faf5bffbc0
plugin account: first draft of automatic SàT/Prosody account creation (basis coming from Libervia)
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
289 |
1765
b9493cb6ce49
plugin misc_account: fixes login messages when sending emails
souliane <souliane@mailoo.org>
parents:
1729
diff
changeset
|
290 def email_ko(dummy): |
b9493cb6ce49
plugin misc_account: fixes login messages when sending emails
souliane <souliane@mailoo.org>
parents:
1729
diff
changeset
|
291 # TODO: return error code to user |
b9493cb6ce49
plugin misc_account: fixes login messages when sending emails
souliane <souliane@mailoo.org>
parents:
1729
diff
changeset
|
292 log.error(u"Failed to send account creation confirmation to <%s>" % email) |
730
32bbabe809da
plugin account: configuration constants can be overriden in sat.conf (section "plugin account") + better deferred management in email sending
Goffi <goffi@goffi.org>
parents:
672
diff
changeset
|
293 |
1804
33e73c70d78a
plugin misc_account: add a FIXME comment
souliane <souliane@mailoo.org>
parents:
1766
diff
changeset
|
294 # XXX: this will not fail when the email address doesn't exist |
33e73c70d78a
plugin misc_account: add a FIXME comment
souliane <souliane@mailoo.org>
parents:
1766
diff
changeset
|
295 # FIXME: check email reception to validate email given by the user |
33e73c70d78a
plugin misc_account: add a FIXME comment
souliane <souliane@mailoo.org>
parents:
1766
diff
changeset
|
296 # FIXME: delete the profile if the email could not been sent? |
1898
31b8a58cfcf5
plugin misc_account: fixes sending email (twisted.mail.smtp.sendmail doesn't want unicode)
souliane <souliane@mailoo.org>
parents:
1897
diff
changeset
|
297 d_user = sendEmail([email], msg) |
1765
b9493cb6ce49
plugin misc_account: fixes login messages when sending emails
souliane <souliane@mailoo.org>
parents:
1729
diff
changeset
|
298 d_user.addCallbacks(lambda dummy: log.debug(u"Account creation confirmation sent to <%s>" % email), |
b9493cb6ce49
plugin misc_account: fixes login messages when sending emails
souliane <souliane@mailoo.org>
parents:
1729
diff
changeset
|
299 email_ko) |
730
32bbabe809da
plugin account: configuration constants can be overriden in sat.conf (section "plugin account") + better deferred management in email sending
Goffi <goffi@goffi.org>
parents:
672
diff
changeset
|
300 return defer.DeferredList([d_user, d_admin]) |
672
712e3782af12
plugin misc_account: added method getNewAccountDomain
souliane <souliane@mailoo.org>
parents:
644
diff
changeset
|
301 |
987
3a96920c07b7
core, frontends: unify the roster management UIs in sat/stdui/ui_contact_list.py
souliane <souliane@mailoo.org>
parents:
954
diff
changeset
|
302 def getNewAccountDomain(self): |
672
712e3782af12
plugin misc_account: added method getNewAccountDomain
souliane <souliane@mailoo.org>
parents:
644
diff
changeset
|
303 """@return: the domain that will be set to new account""" |
730
32bbabe809da
plugin account: configuration constants can be overriden in sat.conf (section "plugin account") + better deferred management in email sending
Goffi <goffi@goffi.org>
parents:
672
diff
changeset
|
304 return self.getConfig('new_account_domain') |
672
712e3782af12
plugin misc_account: added method getNewAccountDomain
souliane <souliane@mailoo.org>
parents:
644
diff
changeset
|
305 |
895
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
306 def _getAccountDialogUI(self, profile): |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
307 """Get the main dialog to manage your account |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
308 @param menu_data |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
309 @param profile: %(doc_profile)s |
1031
e90125d07072
plugins misc_account, misc_smtp: update the plugins that deal with passwords
souliane <souliane@mailoo.org>
parents:
993
diff
changeset
|
310 @return: XML of the dialog |
895
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
311 """ |
1041
9095263011b6
plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents:
1040
diff
changeset
|
312 form_ui = xml_tools.XMLUI("form", "tabs", title=D_("Manage your account"), submit_id=self.__account_cb_id) |
895
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
313 tab_container = form_ui.current_container |
938
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
314 |
895
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
315 tab_container.addTab("update", D_("Change your password"), container=xml_tools.PairsContainer) |
1041
9095263011b6
plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents:
1040
diff
changeset
|
316 form_ui.addLabel(D_("Current profile password")) |
895
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
317 form_ui.addPassword("current_passwd", value="") |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
318 form_ui.addLabel(D_("New password")) |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
319 form_ui.addPassword("new_passwd1", value="") |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
320 form_ui.addLabel(D_("New password (again)")) |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
321 form_ui.addPassword("new_passwd2", value="") |
938
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
322 |
1855
1c9b2c184663
plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents:
1804
diff
changeset
|
323 # FIXME: uncomment and fix these features |
1713
0d972af37ff5
plugin misc_account: temporary disabling posts and account deletion
souliane <souliane@mailoo.org>
parents:
1707
diff
changeset
|
324 """ |
938
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
325 if 'GROUPBLOG' in self.host.plugins: |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
326 tab_container.addTab("delete_posts", D_("Delete your posts"), container=xml_tools.PairsContainer) |
1041
9095263011b6
plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents:
1040
diff
changeset
|
327 form_ui.addLabel(D_("Current profile password")) |
938
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
328 form_ui.addPassword("delete_posts_passwd", value="") |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
329 form_ui.addLabel(D_("Delete all your posts and their comments")) |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
330 form_ui.addBool("delete_posts_checkbox", "false") |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
331 form_ui.addLabel(D_("Delete all your comments on other's posts")) |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
332 form_ui.addBool("delete_comments_checkbox", "false") |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
333 |
895
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
334 tab_container.addTab("delete", D_("Delete your account"), container=xml_tools.PairsContainer) |
1041
9095263011b6
plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents:
1040
diff
changeset
|
335 form_ui.addLabel(D_("Current profile password")) |
895
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
336 form_ui.addPassword("delete_passwd", value="") |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
337 form_ui.addLabel(D_("Delete your account")) |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
338 form_ui.addBool("delete_checkbox", "false") |
1713
0d972af37ff5
plugin misc_account: temporary disabling posts and account deletion
souliane <souliane@mailoo.org>
parents:
1707
diff
changeset
|
339 """ |
0d972af37ff5
plugin misc_account: temporary disabling posts and account deletion
souliane <souliane@mailoo.org>
parents:
1707
diff
changeset
|
340 |
895
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
341 return form_ui.toXml() |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
342 |
1031
e90125d07072
plugins misc_account, misc_smtp: update the plugins that deal with passwords
souliane <souliane@mailoo.org>
parents:
993
diff
changeset
|
343 @defer.inlineCallbacks |
895
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
344 def _accountDialogCb(self, data, profile): |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
345 """Called when the user submits the main account dialog |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
346 @param data |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
347 @param profile |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
348 """ |
1041
9095263011b6
plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents:
1040
diff
changeset
|
349 sat_cipher = yield self.host.memory.asyncGetParamA(C.PROFILE_PASS_PATH[1], C.PROFILE_PASS_PATH[0], profile_key=profile) |
895
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
350 |
1041
9095263011b6
plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents:
1040
diff
changeset
|
351 @defer.inlineCallbacks |
9095263011b6
plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents:
1040
diff
changeset
|
352 def verify(attempt): |
9095263011b6
plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents:
1040
diff
changeset
|
353 auth = yield PasswordHasher.verify(attempt, sat_cipher) |
9095263011b6
plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents:
1040
diff
changeset
|
354 defer.returnValue(auth) |
9095263011b6
plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents:
1040
diff
changeset
|
355 |
9095263011b6
plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents:
1040
diff
changeset
|
356 def error_ui(message=None): |
9095263011b6
plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents:
1040
diff
changeset
|
357 if not message: |
1691
cec204c6360c
plugin misc_account: fixed password verification
souliane <souliane@mailoo.org>
parents:
1653
diff
changeset
|
358 message = D_("The provided profile password doesn't match.") |
1041
9095263011b6
plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents:
1040
diff
changeset
|
359 error_ui = xml_tools.XMLUI("popup", title=D_("Attempt failure")) |
9095263011b6
plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents:
1040
diff
changeset
|
360 error_ui.addText(message) |
1031
e90125d07072
plugins misc_account, misc_smtp: update the plugins that deal with passwords
souliane <souliane@mailoo.org>
parents:
993
diff
changeset
|
361 return {'xmlui': error_ui.toXml()} |
895
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
362 |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
363 # check for account deletion |
1855
1c9b2c184663
plugin account: email sending improvments:
Goffi <goffi@goffi.org>
parents:
1804
diff
changeset
|
364 # FIXME: uncomment and fix these features |
1713
0d972af37ff5
plugin misc_account: temporary disabling posts and account deletion
souliane <souliane@mailoo.org>
parents:
1707
diff
changeset
|
365 """ |
895
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
366 delete_passwd = data[xml_tools.SAT_FORM_PREFIX + 'delete_passwd'] |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
367 delete_checkbox = data[xml_tools.SAT_FORM_PREFIX + 'delete_checkbox'] |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
368 if delete_checkbox == 'true': |
1691
cec204c6360c
plugin misc_account: fixed password verification
souliane <souliane@mailoo.org>
parents:
1653
diff
changeset
|
369 verified = yield verify(delete_passwd) |
cec204c6360c
plugin misc_account: fixed password verification
souliane <souliane@mailoo.org>
parents:
1653
diff
changeset
|
370 assert isinstance(verified, bool) |
cec204c6360c
plugin misc_account: fixed password verification
souliane <souliane@mailoo.org>
parents:
1653
diff
changeset
|
371 if verified: |
1031
e90125d07072
plugins misc_account, misc_smtp: update the plugins that deal with passwords
souliane <souliane@mailoo.org>
parents:
993
diff
changeset
|
372 defer.returnValue(self.__deleteAccount(profile)) |
e90125d07072
plugins misc_account, misc_smtp: update the plugins that deal with passwords
souliane <souliane@mailoo.org>
parents:
993
diff
changeset
|
373 defer.returnValue(error_ui()) |
895
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
374 |
938
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
375 # check for blog posts deletion |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
376 if 'GROUPBLOG' in self.host.plugins: |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
377 delete_posts_passwd = data[xml_tools.SAT_FORM_PREFIX + 'delete_posts_passwd'] |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
378 delete_posts_checkbox = data[xml_tools.SAT_FORM_PREFIX + 'delete_posts_checkbox'] |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
379 delete_comments_checkbox = data[xml_tools.SAT_FORM_PREFIX + 'delete_comments_checkbox'] |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
380 posts = delete_posts_checkbox == 'true' |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
381 comments = delete_comments_checkbox == 'true' |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
382 if posts or comments: |
1691
cec204c6360c
plugin misc_account: fixed password verification
souliane <souliane@mailoo.org>
parents:
1653
diff
changeset
|
383 verified = yield verify(delete_posts_passwd) |
cec204c6360c
plugin misc_account: fixed password verification
souliane <souliane@mailoo.org>
parents:
1653
diff
changeset
|
384 assert isinstance(verified, bool) |
cec204c6360c
plugin misc_account: fixed password verification
souliane <souliane@mailoo.org>
parents:
1653
diff
changeset
|
385 if verified: |
1031
e90125d07072
plugins misc_account, misc_smtp: update the plugins that deal with passwords
souliane <souliane@mailoo.org>
parents:
993
diff
changeset
|
386 defer.returnValue(self.__deleteBlogPosts(posts, comments, profile)) |
e90125d07072
plugins misc_account, misc_smtp: update the plugins that deal with passwords
souliane <souliane@mailoo.org>
parents:
993
diff
changeset
|
387 defer.returnValue(error_ui()) |
1713
0d972af37ff5
plugin misc_account: temporary disabling posts and account deletion
souliane <souliane@mailoo.org>
parents:
1707
diff
changeset
|
388 """ |
938
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
389 |
895
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
390 # check for password modification |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
391 current_passwd = data[xml_tools.SAT_FORM_PREFIX + 'current_passwd'] |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
392 new_passwd1 = data[xml_tools.SAT_FORM_PREFIX + 'new_passwd1'] |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
393 new_passwd2 = data[xml_tools.SAT_FORM_PREFIX + 'new_passwd2'] |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
394 if new_passwd1 or new_passwd2: |
1691
cec204c6360c
plugin misc_account: fixed password verification
souliane <souliane@mailoo.org>
parents:
1653
diff
changeset
|
395 verified = yield verify(current_passwd) |
cec204c6360c
plugin misc_account: fixed password verification
souliane <souliane@mailoo.org>
parents:
1653
diff
changeset
|
396 assert isinstance(verified, bool) |
cec204c6360c
plugin misc_account: fixed password verification
souliane <souliane@mailoo.org>
parents:
1653
diff
changeset
|
397 if verified: |
1041
9095263011b6
plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents:
1040
diff
changeset
|
398 if new_passwd1 == new_passwd2: |
9095263011b6
plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents:
1040
diff
changeset
|
399 data = yield self.__changePassword(new_passwd1, profile=profile) |
9095263011b6
plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents:
1040
diff
changeset
|
400 defer.returnValue(data) |
9095263011b6
plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents:
1040
diff
changeset
|
401 else: |
9095263011b6
plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents:
1040
diff
changeset
|
402 defer.returnValue(error_ui(D_("The values entered for the new password are not equal."))) |
1031
e90125d07072
plugins misc_account, misc_smtp: update the plugins that deal with passwords
souliane <souliane@mailoo.org>
parents:
993
diff
changeset
|
403 defer.returnValue(error_ui()) |
895
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
404 |
1031
e90125d07072
plugins misc_account, misc_smtp: update the plugins that deal with passwords
souliane <souliane@mailoo.org>
parents:
993
diff
changeset
|
405 defer.returnValue({}) |
895
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
406 |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
407 def __changePassword(self, password, profile): |
1041
9095263011b6
plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents:
1040
diff
changeset
|
408 """Ask for a confirmation before changing the XMPP account and SàT profile passwords. |
9095263011b6
plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents:
1040
diff
changeset
|
409 |
9095263011b6
plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents:
1040
diff
changeset
|
410 @param password (str): the new password |
9095263011b6
plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents:
1040
diff
changeset
|
411 @param profile (str): %(doc_profile)s |
9095263011b6
plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents:
1040
diff
changeset
|
412 """ |
1212
628e320eab1f
memory: Sessions.newSession can be called with a forced session ID
souliane <souliane@mailoo.org>
parents:
1091
diff
changeset
|
413 session_id, dummy = self._sessions.newSession({'new_password': password}, profile=profile) |
1041
9095263011b6
plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents:
1040
diff
changeset
|
414 form_ui = xml_tools.XMLUI("form", title=D_("Change your password?"), submit_id=self.__change_password_id, session_id=session_id) |
9095263011b6
plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents:
1040
diff
changeset
|
415 form_ui.addText(D_("Note for advanced users: this will actually change both your SàT profile password AND your XMPP account password.")) |
9095263011b6
plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents:
1040
diff
changeset
|
416 form_ui.addText(D_("Continue with changing the password?")) |
9095263011b6
plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents:
1040
diff
changeset
|
417 return {'xmlui': form_ui.toXml()} |
9095263011b6
plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents:
1040
diff
changeset
|
418 |
9095263011b6
plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents:
1040
diff
changeset
|
419 def __changePasswordCb(self, data, profile): |
895
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
420 """Actually change the user XMPP account and SàT profile password |
1041
9095263011b6
plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents:
1040
diff
changeset
|
421 @param data (dict) |
9095263011b6
plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents:
1040
diff
changeset
|
422 @profile (str): %(doc_profile)s |
895
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
423 """ |
2176
61128d260eef
plugin account: removed dependency to Prosody/prosodyctl and properly use in-band registration instead
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
424 client = self.host.getClient(profile) |
1041
9095263011b6
plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents:
1040
diff
changeset
|
425 password = self._sessions.profileGet(data['session_id'], profile)['new_password'] |
1044
85c110c0be86
plugins misc_account, misc_register_account: manually delete the sessions when not needed anymore
souliane <souliane@mailoo.org>
parents:
1041
diff
changeset
|
426 del self._sessions[data['session_id']] |
1041
9095263011b6
plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents:
1040
diff
changeset
|
427 |
2176
61128d260eef
plugin account: removed dependency to Prosody/prosodyctl and properly use in-band registration instead
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
428 def passwordChanged(dummy): |
1041
9095263011b6
plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents:
1040
diff
changeset
|
429 d = self.host.memory.setParam(C.PROFILE_PASS_PATH[1], password, C.PROFILE_PASS_PATH[0], profile_key=profile) |
9095263011b6
plugin misc_accout: update relative to the introduction of profile password:
souliane <souliane@mailoo.org>
parents:
1040
diff
changeset
|
430 d.addCallback(lambda dummy: self.host.memory.setParam("Password", password, "Connection", profile_key=profile)) |
938
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
431 confirm_ui = xml_tools.XMLUI("popup", title=D_("Confirmation")) |
895
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
432 confirm_ui.addText(D_("Your password has been changed.")) |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
433 return defer.succeed({'xmlui': confirm_ui.toXml()}) |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
434 |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
435 def errback(failure): |
938
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
436 error_ui = xml_tools.XMLUI("popup", title=D_("Error")) |
895
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
437 error_ui.addText(D_("Your password could not be changed: %s") % failure.getErrorMessage()) |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
438 return defer.succeed({'xmlui': error_ui.toXml()}) |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
439 |
2176
61128d260eef
plugin account: removed dependency to Prosody/prosodyctl and properly use in-band registration instead
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
440 d = self.host.plugins['XEP-0077'].changePassword(client, password) |
895
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
441 d.addCallbacks(passwordChanged, errback) |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
442 return d |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
443 |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
444 def __deleteAccount(self, profile): |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
445 """Ask for a confirmation before deleting the XMPP account and SàT profile |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
446 @param profile |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
447 """ |
938
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
448 form_ui = xml_tools.XMLUI("form", title=D_("Delete your account?"), submit_id=self.__delete_account_id) |
895
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
449 form_ui.addText(D_("If you confirm this dialog, you will be disconnected and then your XMPP account AND your SàT profile will both be DELETED.")) |
938
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
450 target = D_('contact list, messages history, blog posts and comments' if 'GROUPBLOG' in self.host.plugins else D_('contact list and messages history')) |
987
3a96920c07b7
core, frontends: unify the roster management UIs in sat/stdui/ui_contact_list.py
souliane <souliane@mailoo.org>
parents:
954
diff
changeset
|
451 form_ui.addText(D_("All your data stored on %(server)s, including your %(target)s will be erased.") % {'server': self.getNewAccountDomain(), 'target': target}) |
895
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
452 form_ui.addText(D_("There is no other confirmation dialog, this is the very last one! Are you sure?")) |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
453 return {'xmlui': form_ui.toXml()} |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
454 |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
455 def __deleteAccountCb(self, data, profile): |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
456 """Actually delete the XMPP account and SàT profile |
2176
61128d260eef
plugin account: removed dependency to Prosody/prosodyctl and properly use in-band registration instead
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
457 |
895
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
458 @param data |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
459 @param profile |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
460 """ |
2176
61128d260eef
plugin account: removed dependency to Prosody/prosodyctl and properly use in-band registration instead
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
461 client = self.host.getClient(profile) |
61128d260eef
plugin account: removed dependency to Prosody/prosodyctl and properly use in-band registration instead
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
462 def userDeleted(dummy): |
934
34dd9287dfe5
plugin account: bug fix profile deletion from the database + unsubscribe the contacts
souliane <souliane@mailoo.org>
parents:
895
diff
changeset
|
463 |
2176
61128d260eef
plugin account: removed dependency to Prosody/prosodyctl and properly use in-band registration instead
Goffi <goffi@goffi.org>
parents:
2145
diff
changeset
|
464 # FIXME: client should be disconnected at this point, so 2 next loop should be removed (to be confirmed) |
934
34dd9287dfe5
plugin account: bug fix profile deletion from the database + unsubscribe the contacts
souliane <souliane@mailoo.org>
parents:
895
diff
changeset
|
465 for jid_ in client.roster._jids: # empty roster |
34dd9287dfe5
plugin account: bug fix profile deletion from the database + unsubscribe the contacts
souliane <souliane@mailoo.org>
parents:
895
diff
changeset
|
466 client.presence.unsubscribe(jid_) |
34dd9287dfe5
plugin account: bug fix profile deletion from the database + unsubscribe the contacts
souliane <souliane@mailoo.org>
parents:
895
diff
changeset
|
467 |
34dd9287dfe5
plugin account: bug fix profile deletion from the database + unsubscribe the contacts
souliane <souliane@mailoo.org>
parents:
895
diff
changeset
|
468 for jid_ in self.host.memory.getWaitingSub(profile): # delete waiting subscriptions |
34dd9287dfe5
plugin account: bug fix profile deletion from the database + unsubscribe the contacts
souliane <souliane@mailoo.org>
parents:
895
diff
changeset
|
469 self.host.memory.delWaitingSub(jid_) |
34dd9287dfe5
plugin account: bug fix profile deletion from the database + unsubscribe the contacts
souliane <souliane@mailoo.org>
parents:
895
diff
changeset
|
470 |
938
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
471 delete_profile = lambda: self.host.memory.asyncDeleteProfile(profile, force=True) |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
472 if 'GROUPBLOG' in self.host.plugins: |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
473 d = self.host.plugins['GROUPBLOG'].deleteAllGroupBlogsAndComments(profile_key=profile) |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
474 d.addCallback(lambda dummy: delete_profile()) |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
475 else: |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
476 delete_profile() |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
477 |
895
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
478 return defer.succeed({}) |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
479 |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
480 def errback(failure): |
938
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
481 error_ui = xml_tools.XMLUI("popup", title=D_("Error")) |
895
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
482 error_ui.addText(D_("Your XMPP account could not be deleted: %s") % failure.getErrorMessage()) |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
483 return defer.succeed({'xmlui': error_ui.toXml()}) |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
484 |
2177
09cfec4d8d19
plugin XEP-0077: added inBandAccountNew, inBandUnregister and inBandPasswordChange bridge methods
Goffi <goffi@goffi.org>
parents:
2176
diff
changeset
|
485 d = self.host.plugins['XEP-0077'].unregister(client, jid.JID(client.jid.host)) |
895
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
486 d.addCallbacks(userDeleted, errback) |
52ee240acc9c
plugin account: user can change his password or delete his XMPP account
souliane <souliane@mailoo.org>
parents:
870
diff
changeset
|
487 return d |
938
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
488 |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
489 def __deleteBlogPosts(self, posts, comments, profile): |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
490 """Ask for a confirmation before deleting the blog posts |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
491 @param posts: delete all posts of the user (and their comments) |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
492 @param comments: delete all the comments of the user on other's posts |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
493 @param data |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
494 @param profile |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
495 """ |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
496 if posts: |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
497 if comments: # delete everything |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
498 form_ui = xml_tools.XMLUI("form", title=D_("Delete all your (micro-)blog posts and comments?"), submit_id=self.__delete_posts_comments_id) |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
499 form_ui.addText(D_("If you confirm this dialog, all the (micro-)blog data you submitted will be erased.")) |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
500 form_ui.addText(D_("These are the public and private posts and comments you sent to any group.")) |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
501 form_ui.addText(D_("There is no other confirmation dialog, this is the very last one! Are you sure?")) |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
502 else: # delete only the posts |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
503 form_ui = xml_tools.XMLUI("form", title=D_("Delete all your (micro-)blog posts?"), submit_id=self.__delete_posts_id) |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
504 form_ui.addText(D_("If you confirm this dialog, all the public and private posts you sent to any group will be erased.")) |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
505 form_ui.addText(D_("There is no other confirmation dialog, this is the very last one! Are you sure?")) |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
506 elif comments: # delete only the comments |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
507 form_ui = xml_tools.XMLUI("form", title=D_("Delete all your (micro-)blog comments?"), submit_id=self.__delete_comments_id) |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
508 form_ui.addText(D_("If you confirm this dialog, all the public and private comments you made on other people's posts will be erased.")) |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
509 form_ui.addText(D_("There is no other confirmation dialog, this is the very last one! Are you sure?")) |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
510 |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
511 return {'xmlui': form_ui.toXml()} |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
512 |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
513 def __deleteBlogPostsCb(self, posts, comments, data, profile): |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
514 """Actually delete the XMPP account and SàT profile |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
515 @param posts: delete all posts of the user (and their comments) |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
516 @param comments: delete all the comments of the user on other's posts |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
517 @param profile |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
518 """ |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
519 if posts: |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
520 if comments: |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
521 target = D_('blog posts and comments') |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
522 d = self.host.plugins['GROUPBLOG'].deleteAllGroupBlogsAndComments(profile_key=profile) |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
523 else: |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
524 target = D_('blog posts') |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
525 d = self.host.plugins['GROUPBLOG'].deleteAllGroupBlogs(profile_key=profile) |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
526 elif comments: |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
527 target = D_('comments') |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
528 d = self.host.plugins['GROUPBLOG'].deleteAllGroupBlogsComments(profile_key=profile) |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
529 |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
530 def deleted(result): |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
531 ui = xml_tools.XMLUI("popup", title=D_("Deletion confirmation")) |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
532 # TODO: change the message when delete/retract notifications are done with XEP-0060 |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
533 ui.addText(D_("Your %(target)s have been deleted.") % {'target': target}) |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
534 ui.addText(D_("Known issue of the demo version: you need to refresh the page to make the deleted posts actually disappear.")) |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
535 return defer.succeed({'xmlui': ui.toXml()}) |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
536 |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
537 def errback(failure): |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
538 error_ui = xml_tools.XMLUI("popup", title=D_("Error")) |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
539 error_ui.addText(D_("Your %(target)s could not be deleted: %(message)s") % {'target': target, 'message': failure.getErrorMessage()}) |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
540 return defer.succeed({'xmlui': error_ui.toXml()}) |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
541 |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
542 d.addCallbacks(deleted, errback) |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
543 return d |
fc7e0828b18e
plugin account, groupblog: user can erase all their microblogs at once
souliane <souliane@mailoo.org>
parents:
934
diff
changeset
|
544 |
1653
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
545 def asyncConnectWithXMPPCredentials(self, jid_s, password): |
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
546 """Create and connect a new SàT profile using the given XMPP credentials. |
1696
9a7a27c44611
plugin account: fixed profile creation: session is started to set the connection parameters, then stopped
Goffi <goffi@goffi.org>
parents:
1691
diff
changeset
|
547 |
1653
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
548 Re-use given JID and XMPP password for the profile name and profile password. |
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
549 @param jid_s (unicode): JID |
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
550 @param password (unicode): XMPP password |
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
551 @return Deferred(bool) |
1696
9a7a27c44611
plugin account: fixed profile creation: session is started to set the connection parameters, then stopped
Goffi <goffi@goffi.org>
parents:
1691
diff
changeset
|
552 @raise exceptions.PasswordError, exceptions.ConflictError |
1653
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
553 """ |
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
554 try: # be sure that the profile doesn't exist yet |
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
555 self.host.memory.getProfileName(jid_s) |
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
556 except exceptions.ProfileUnknownError: |
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
557 pass |
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
558 else: |
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
559 raise exceptions.ConflictError |
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
560 |
1907
0b748ad46ede
plugin misc account: separate profile creation and sending emails, so we can wait and send the emails at the right time (when we know that no error occured)
souliane <souliane@mailoo.org>
parents:
1901
diff
changeset
|
561 d = self.createProfile(password, jid_s, jid_s) |
1653
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
562 d.addCallback(lambda dummy: self.host.memory.getProfileName(jid_s)) # checks if the profile has been successfuly created |
2142
be96beb7ca14
core, bridge, frontends: renamed asyncConnect to connect, and added options parameters (not used yet)
Goffi <goffi@goffi.org>
parents:
1934
diff
changeset
|
563 d.addCallback(self.host.connect, password, {}, 0) |
1653
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
564 |
1916
72837638f076
plugin misc_account: fixes two bugs introduced by revision 1907 (0b748ad46ede):
souliane <souliane@mailoo.org>
parents:
1907
diff
changeset
|
565 |
72837638f076
plugin misc_account: fixes two bugs introduced by revision 1907 (0b748ad46ede):
souliane <souliane@mailoo.org>
parents:
1907
diff
changeset
|
566 def connected(result): |
72837638f076
plugin misc_account: fixes two bugs introduced by revision 1907 (0b748ad46ede):
souliane <souliane@mailoo.org>
parents:
1907
diff
changeset
|
567 self.sendEmails(None, profile=jid_s) |
72837638f076
plugin misc_account: fixes two bugs introduced by revision 1907 (0b748ad46ede):
souliane <souliane@mailoo.org>
parents:
1907
diff
changeset
|
568 return result |
72837638f076
plugin misc_account: fixes two bugs introduced by revision 1907 (0b748ad46ede):
souliane <souliane@mailoo.org>
parents:
1907
diff
changeset
|
569 |
1653
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
570 def removeProfile(failure): # profile has been successfully created but the XMPP credentials are wrong! |
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
571 log.debug("Removing previously auto-created profile: %s" % failure.getErrorMessage()) |
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
572 self.host.memory.asyncDeleteProfile(jid_s) |
1696
9a7a27c44611
plugin account: fixed profile creation: session is started to set the connection parameters, then stopped
Goffi <goffi@goffi.org>
parents:
1691
diff
changeset
|
573 raise failure |
1653
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
574 |
1907
0b748ad46ede
plugin misc account: separate profile creation and sending emails, so we can wait and send the emails at the right time (when we know that no error occured)
souliane <souliane@mailoo.org>
parents:
1901
diff
changeset
|
575 # FIXME: we don't catch the case where the JID host is not an XMPP server, and the user |
0b748ad46ede
plugin misc account: separate profile creation and sending emails, so we can wait and send the emails at the right time (when we know that no error occured)
souliane <souliane@mailoo.org>
parents:
1901
diff
changeset
|
576 # has to wait until the DBUS timeout ; as a consequence, emails are sent to the admins |
0b748ad46ede
plugin misc account: separate profile creation and sending emails, so we can wait and send the emails at the right time (when we know that no error occured)
souliane <souliane@mailoo.org>
parents:
1901
diff
changeset
|
577 # and the profile is not deleted. When the host exists, removeProfile is well called. |
1916
72837638f076
plugin misc_account: fixes two bugs introduced by revision 1907 (0b748ad46ede):
souliane <souliane@mailoo.org>
parents:
1907
diff
changeset
|
578 d.addCallbacks(connected, removeProfile) |
1653
200efadcab76
plugin misc_account: add method asyncConnectWithXMPPCredentials
souliane <souliane@mailoo.org>
parents:
1433
diff
changeset
|
579 return d |