/!\ This changeset updates the database version to 2 and modify the database content!
Description:
- new parameter General / Password to store the profile password
- profile password is initialized with XMPP password value, it is stored hashed
- bridge methods asyncCreateProfile/asyncConnect takes a new argument "password" (default = "")
- bridge method asyncConnect returns a boolean (True = connection already established, False = connection initiated)
- profile password is checked before initializing the XMPP connection
- new private individual parameter to store the personal encryption key of each profile
- personal key is randomly generated and encrypted with the profile password
- personal key is decrypted after profile authentification and stored in a Sessions instance
- personal key is used to encrypt/decrypt other passwords when they need to be retrieved/modified
- modifying the profile password re-encrypt the personal key
- Memory.setParam now returns a Deferred (the bridge method "setParam" is unchanged)
- Memory.asyncGetParamA eventually decrypts the password, Memory.getParamA would fail on a password parameter
TODO:
- if profile authentication is OK but XMPP authentication is KO, prompt the user for another XMPP password
- fix the method "registerNewAccount" (and move it to a plugin)
- remove bridge method "connect", sole "asyncConnect" should be used
94 lines
1.8 KiB
Python
94 lines
1.8 KiB
Python
#!/usr/bin/python
|
|
# -*- coding: utf-8 -*-
|
|
|
|
# SàT Exceptions
|
|
# Copyright (C) 2011 Jérôme Poisson (goffi@goffi.org)
|
|
|
|
# This program is free software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU Affero General Public License as published by
|
|
# the Free Software Foundation, either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU Affero General Public License for more details.
|
|
|
|
# You should have received a copy of the GNU Affero General Public License
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
|
|
class ProfileUnknownError(Exception):
|
|
pass
|
|
|
|
|
|
class ProfileNotInCacheError(Exception):
|
|
pass
|
|
|
|
|
|
class ProfileNotSetError(Exception):
|
|
"""
|
|
This error raises when no profile has been set (value @NONE@ is found, but it should have been replaced)
|
|
"""
|
|
pass
|
|
|
|
|
|
class ConnectedProfileError(Exception):
|
|
"""This error is raised when trying to delete a connected profile."""
|
|
pass
|
|
|
|
|
|
class NotConnectedProfileError(Exception):
|
|
pass
|
|
|
|
|
|
class ProfileKeyUnknownError(Exception):
|
|
pass
|
|
|
|
|
|
class UnknownEntityError(Exception):
|
|
pass
|
|
|
|
|
|
class UnknownGroupError(Exception):
|
|
pass
|
|
|
|
|
|
class NotFound(Exception):
|
|
pass
|
|
|
|
|
|
class DataError(Exception):
|
|
pass
|
|
|
|
|
|
class ConflictError(Exception):
|
|
pass
|
|
|
|
|
|
class CancelError(Exception):
|
|
pass
|
|
|
|
|
|
class InternalError(Exception):
|
|
pass
|
|
|
|
|
|
class FeatureNotFound(Exception): # a disco feature/identity which is needed is not present
|
|
pass
|
|
|
|
|
|
class BridgeInitError(Exception):
|
|
pass
|
|
|
|
|
|
class BridgeExceptionNoService(Exception):
|
|
pass
|
|
|
|
|
|
class DatabaseError(Exception):
|
|
pass
|
|
|
|
|
|
class PasswordError(Exception):
|
|
pass
|