view frontends/src/constants.py @ 1030:15f43b54d697

core, memory, bridge: added profile password + password encryption: /!\ 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
author souliane <souliane@mailoo.org>
date Wed, 07 May 2014 16:02:23 +0200
parents 242bd4fc654c
children 0a9986452bba
line wrap: on
line source

#!/usr/bin/python
# -*- coding: utf-8 -*-

# generic module for SàT frontends
# Copyright (C) 2009, 2010, 2011, 2012, 2013, 2014 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/>.


from sat.core import constants
from sat.core.i18n import _, D_

try:
    from collections import OrderedDict  # only available from python 2.7
except ImportError:
    try:
        from ordereddict import OrderedDict
    except ImportError:
        pass  # libervia can not import external libraries


def getPresence():
    """We cannot do it directly in the Const class, if it is not encapsulated
    in a method we get a JS runtime SyntaxError: "missing ) in parenthetical".
    # TODO: merge this definition with those in primitivus.constants and wix.constants
    """
    try:
        presence = OrderedDict([("", _("Online")),
                                ("chat", _("Free for chat")),
                                ("away", _("Away from keyboard")),
                                ("dnd", _("Do not disturb")),
                                ("xa", _("Away"))])
    except TypeError:
        presence = {"": _("Online"),
                    "chat": _("Free for chat"),
                    "away": _("Away from keyboard"),
                    "dnd": _("Do not disturb"),
                    "xa": _("Away")
                    }
    return presence


class Const(constants.Const):

    PRESENCE = getPresence()

    MENU_NORMAL = "NORMAL"

    # from plugin_misc_text_syntaxes
    SYNTAX_XHTML = "XHTML"
    SYNTAX_CURRENT = "@CURRENT@"
    SYNTAX_TEXT = "text"

    # XMLUI
    SAT_FORM_PREFIX = "SAT_FORM_"
    SAT_PARAM_SEPARATOR = "_XMLUI_PARAM_"  # used to have unique elements names

    # MUC
    ALL_OCCUPANTS = 1
    MUC_USER_STATES = {
        "active": u'✔',
        "inactive": u'☄',
        "gone": u'✈',
        "composing": u'✎',
        "paused": u"⦷"
    }