Пример #1
0
            def success(st = None):
                print 'success!', st
                print 'setting password in', self.acct
                from common import profile
                self.acct.password = profile.crypt_pw(self.new1_password)

                for acct in profile.account_manager.accounts:
                    if acct.name == self.acct.username and acct.protocol == self.acct.protocol:
                        acct.update_info(password = profile.crypt_pw(self.new1_password))
                        break

                self.EndModal(wx.ID_OK)
Пример #2
0
    def _unglue_pw(cls, password):
        passwordstr = profile.plain_pw(password).encode("utf-8")
        if passwordstr:
            password, r = unpack_pstr(passwordstr)
            try:
                smtppassword, r = unpack_pstr(r)
            except Exception:
                smtppassword, r = "", ""
        else:
            raise ValueError("Can't decrypt %r", password)

        return profile.crypt_pw(password.decode("utf-8")), profile.crypt_pw(smtppassword.decode("utf-8"))
Пример #3
0
    def _unglue_pw(cls, password):
        passwordstr = profile.plain_pw(password).encode('utf-8')
        if passwordstr:
            password, r = unpack_pstr(passwordstr)
            try:
                smtppassword, r = unpack_pstr(r)
            except Exception:
                smtppassword, r = '', ''
        else:
            raise ValueError("Can't decrypt %r", password)

        return profile.crypt_pw(password.decode('utf-8')), profile.crypt_pw(smtppassword.decode('utf-8'))
Пример #4
0
            def success(st=None):
                print 'success!', st
                print 'setting password in', self.acct
                from common import profile
                self.acct.password = profile.crypt_pw(self.new1_password)

                for acct in profile.account_manager.accounts:
                    if acct.name == self.acct.username and acct.protocol == self.acct.protocol:
                        acct.update_info(
                            password=profile.crypt_pw(self.new1_password))
                        break

                self.EndModal(wx.ID_OK)
Пример #5
0
    def info(self):
        "Returns a Storage containing the attributes edited by this dialog."

        info = Storage(name=self.name.Value, protocol=self.protocol_name)

        info.protocol, info.name = strip_acct_id(info.protocol, info.name)

        if hasattr(self, "password"):
            info.password_len = len(self.password.Value)
            try:
                info.password = profile.crypt_pw(self.password.Value)
            except UnicodeEncodeError:
                # the database has corrupted the password.
                log.warning("corrupted password")
                info.password = ""
                self.password.Value = ""
                import hub

                hub.get_instance().on_error(
                    "This account's password has been corrupted somehow. Please report it immediately."
                )

        if hasattr(self, "host"):
            info.server = (self.host.Value, int(self.port.Value) if self.port.Value else "")

        if hasattr(self, "remote_alias"):
            info.remote_alias = self.remote_alias.Value

        if hasattr(self, "autologin"):
            info.autologin = bool(self.autologin.Value)

        if hasattr(self, "resource"):
            info.update(
                resource=self.resource.Value,
                priority=try_this(lambda: int(self.priority.Value), DEFAULT_JABBER_PRIORITY),
            )
        #                        ,
        #                        confserver = self.confserver.Value
        if hasattr(self, "dataproxy"):
            info.update(dataproxy=self.dataproxy.Value)

        for d in getattr(self.protocolinfo, "more_details", []):
            attr = d["store"]
            ctrl = getattr(self, attr)
            info[attr] = ctrl.Value

        getattr(self, "info_" + self.formtype, lambda *a: {})(info)

        for info_cb in self.info_callbacks:
            info_cb(info)

        defaults = self.protocolinfo.get("defaults", {})
        for k in defaults:
            if k not in info:
                info[k] = getattr(self.account, k, defaults.get(k))

        return info
Пример #6
0
 def __init__(self, **options):
     d = self.default
     self.smtp_server = options.get("smtp_server", d("smtp_server"))
     self.smtp_require_ssl = options.get("smtp_require_ssl", d("smtp_require_ssl"))
     self.smtp_port = options.get("smtp_port", d("smtp_port"))
     self.smtp_username = options.get("smtp_username", d("smtp_username"))
     self._email_address = options.get("email_address", d("email_address"))
     self._encrypted_smtppw = profile.crypt_pw(options.get("smtp_password", d("smtp_password")))
     self._encrypted_pw = options.pop("password")
     EmailAccount.__init__(self, password=self.password, **options)
Пример #7
0
 def __init__(self, **options):
     d = self.default
     self.smtp_server       = options.get('smtp_server', d('smtp_server'))
     self.smtp_require_ssl  = options.get('smtp_require_ssl', d('smtp_require_ssl'))
     self.smtp_port         = options.get('smtp_port', d('smtp_port'))
     self.smtp_username     = options.get('smtp_username', d('smtp_username'))
     self._email_address    = options.get('email_address', d('email_address'))
     self._encrypted_smtppw = profile.crypt_pw(options.get('smtp_password', d('smtp_password')))
     self._encrypted_pw     = options.pop('password')
     EmailAccount.__init__(self, password=self.password, **options)
Пример #8
0
    def info(self):
        'Returns a Storage containing the attributes edited by this dialog.'

        info = Storage(name = self.name.Value,
                       protocol = self.protocol_name)

        info.protocol, info.name = strip_acct_id(info.protocol, info.name)

        if hasattr(self, 'password'):
            info.password_len = len(self.password.Value)
            try:
                info.password = profile.crypt_pw(self.password.Value)
            except UnicodeEncodeError:
                # the database has corrupted the password.
                log.warning('corrupted password')
                info.password = ''
                self.password.Value = ''
                import hub
                hub.get_instance().on_error('This account\'s password has been corrupted somehow. Please report it immediately.')

        if hasattr(self, 'host'):
            info.server = (self.host.Value, int(self.port.Value) if self.port.Value else '')

        if hasattr(self, 'remote_alias'):
            info.remote_alias = self.remote_alias.Value

        if hasattr(self, 'autologin'):
            info.autologin = bool(self.autologin.Value)

        if hasattr(self, 'resource'):
            info.update(resource = self.resource.Value,
                        priority = try_this(lambda: int(self.priority.Value), DEFAULT_JABBER_PRIORITY))
#                        ,
#                        confserver = self.confserver.Value
        if hasattr(self, 'dataproxy'):
            info.update(dataproxy = self.dataproxy.Value)

        for d in getattr(self.protocolinfo, 'more_details', []):
            attr = d['store']
            ctrl = getattr(self, attr)
            info[attr] = ctrl.Value

        getattr(self, 'info_' + self.formtype, lambda *a: {})(info)

        for info_cb in self.info_callbacks:
            info_cb(info)

        defaults = self.protocolinfo.get('defaults', {})
        for k in defaults:
            if k not in info:
                info[k] = getattr(self.account, k, defaults.get(k))

        return info
Пример #9
0
 def yes_clicked(self, e):
     success = lambda: self.EndModal(wx.ID_YES)
     if self.delete:
         if self.acct.password != profile.crypt_pw(self.password):
             wx.MessageBox(_("Incorrect Password"), _("Incorrect Password"))
             return
         self.show_buttons(False)
         self.acct.delete_from_server(self.password,
                                       on_success=success,
                                       on_fail=lambda: (self.show_buttons(),
                                                       wx.MessageBox(message=_("Failed to delete account from the server."),
                                                                     caption=_("Delete Account - Failed"), style=wx.OK)))
     else:
         success()
Пример #10
0
    def update_info(self, **info):
        if not self.isflagged(NETWORK_FLAG):
            if "smtp_password" in info:
                self._encrypted_smtppw = profile.crypt_pw(info.pop("smtp_password"))

                if "password" in info:
                    self._encrypted_pw = info["password"]

            if "_encrypted_pw" in info and "_encrypted_smtppw" in info:
                self._encrypted_pw = info.pop("_encrypted_pw")
                self._encrypted_smtppw = info.pop("_encrypted_smtppw")

            info["password"] = self._glue_pw(self._encrypted_pw, self._encrypted_smtppw)
        else:
            self.password = info.pop("password")

        log.info("smtp update_info: %r", info)
        EmailAccount.update_info(self, **info)
Пример #11
0
 def yes_clicked(self, e):
     success = lambda: self.EndModal(wx.ID_YES)
     if self.delete:
         if self.acct.password != profile.crypt_pw(self.password):
             wx.MessageBox(_("Incorrect Password"), _("Incorrect Password"))
             return
         self.show_buttons(False)
         self.acct.delete_from_server(
             self.password,
             on_success=success,
             on_fail=lambda:
             (self.show_buttons(),
              wx.MessageBox(message=_(
                  "Failed to delete account from the server."),
                            caption=_("Delete Account - Failed"),
                            style=wx.OK)))
     else:
         success()
Пример #12
0
    def update_info(self, **info):
        if not self.isflagged(NETWORK_FLAG):
            if 'smtp_password' in info:
                self._encrypted_smtppw = profile.crypt_pw(info.pop('smtp_password'))

                if 'password' in info:
                    self._encrypted_pw = info['password']

            if '_encrypted_pw' in info and '_encrypted_smtppw' in info:
                self._encrypted_pw = info.pop('_encrypted_pw')
                self._encrypted_smtppw = info.pop('_encrypted_smtppw')

            info['password'] = self._glue_pw(self._encrypted_pw, self._encrypted_smtppw)
        else:
            self.password = info.pop('password')

        log.info("smtp update_info: %r", info)
        EmailAccount.update_info(self, **info)
Пример #13
0
 def _crypt_set_pw(self, value):
     self.password = profile.crypt_pw(value)
Пример #14
0
 def _glue_pw(cls, encrypted_pw, encrypted_smtppw):
     password = pack_pstr(profile.plain_pw(encrypted_pw).encode("utf-8")).decode("utf-8")
     smtppw = pack_pstr(profile.plain_pw(encrypted_smtppw).encode("utf-8")).decode("utf-8")
     return profile.crypt_pw(password + smtppw)
Пример #15
0
 def _glue_pw(cls, encrypted_pw, encrypted_smtppw):
     password = pack_pstr(profile.plain_pw(encrypted_pw).encode('utf-8')).decode('utf-8')
     smtppw = pack_pstr(profile.plain_pw(encrypted_smtppw).encode('utf-8')).decode('utf-8')
     return profile.crypt_pw(password + smtppw)
Пример #16
0
 def change_acct_password(self, password, callback=None):
     self.password = profile.crypt_pw(str(password))
     profile.update_account(self)
     callback.success()
Пример #17
0
 def _crypt_set_pw(self, value):
     self.password = profile.crypt_pw(value)