summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKali Kaneko <kali@leap.se>2013-06-23 23:53:13 +0900
committerKali Kaneko <kali@leap.se>2013-06-23 23:53:13 +0900
commit53668de6f4ced844b10fc34fbc5ba77b00d54825 (patch)
tree3d6be7573fcef2538aa59101250aff28a4921dbd
parentb777dbfd4df7f4f0e4c2596fcc4000c2aba05a08 (diff)
parent440f2036e36985e9536644b28af0e62cea8704eb (diff)
Merge remote-tracking branch 'chiiph/bug/disable_bad_keyring' into develop
-rw-r--r--changes/bug-2960_disable_keyring2
-rw-r--r--src/leap/gui/login.py4
-rw-r--r--src/leap/gui/mainwindow.py7
-rw-r--r--src/leap/gui/wizard.py8
-rw-r--r--src/leap/util/keyring_helpers.py34
5 files changed, 48 insertions, 7 deletions
diff --git a/changes/bug-2960_disable_keyring b/changes/bug-2960_disable_keyring
new file mode 100644
index 00000000..d1787c3c
--- /dev/null
+++ b/changes/bug-2960_disable_keyring
@@ -0,0 +1,2 @@
+ o Only use the Keyring with it's using a known good backend. Closes
+ #2960 \ No newline at end of file
diff --git a/src/leap/gui/login.py b/src/leap/gui/login.py
index c367b2fb..8fc6ec24 100644
--- a/src/leap/gui/login.py
+++ b/src/leap/gui/login.py
@@ -24,6 +24,8 @@ import keyring
from PySide import QtCore, QtGui
from ui_login import Ui_LoginWidget
+from leap.util.keyring_helpers import has_keyring
+
logger = logging.getLogger(__name__)
@@ -58,7 +60,7 @@ class LoginWidget(QtGui.QWidget):
self.ui.chkRemember.stateChanged.connect(
self._remember_state_changed)
- self.ui.chkRemember.setEnabled(keyring.get_keyring() is not None)
+ self.ui.chkRemember.setEnabled(has_keyring())
self.ui.lnPassword.setEchoMode(QtGui.QLineEdit.Password)
diff --git a/src/leap/gui/mainwindow.py b/src/leap/gui/mainwindow.py
index 2ed01917..9dc1e006 100644
--- a/src/leap/gui/mainwindow.py
+++ b/src/leap/gui/mainwindow.py
@@ -55,6 +55,7 @@ from leap.services.eip.vpnlaunchers import (VPNLauncherException,
EIPNoPkexecAvailable,
EIPNoPolkitAuthAgentAvailable)
from leap.util import __version__ as VERSION
+from leap.util.keyring_helpers import has_keyring
from leap.services.mail.smtpconfig import SMTPConfig
@@ -435,7 +436,7 @@ class MainWindow(QtGui.QMainWindow):
self._login_widget.set_user(possible_username)
if possible_password is not None:
self._login_widget.set_password(possible_password)
- self._login_widget.set_remember(True)
+ self._login_widget.set_remember(has_keyring())
self._login()
self._wizard = None
self._settings.set_properprovider(True)
@@ -454,7 +455,7 @@ class MainWindow(QtGui.QMainWindow):
logger.error('Username@provider malformed. %r' % (e, ))
saved_user = None
- if saved_user is not None:
+ if saved_user is not None and has_keyring():
# fill the username
self._login_widget.set_user(username)
@@ -740,7 +741,7 @@ class MainWindow(QtGui.QMainWindow):
self._login_widget.set_status(self.tr("Logging in..."), error=False)
self._login_widget.set_enabled(False)
- if self._login_widget.get_remember():
+ if self._login_widget.get_remember() and has_keyring():
# in the keyring and in the settings
# we store the value 'usename@provider'
username_domain = (username + '@' + provider).encode("utf8")
diff --git a/src/leap/gui/wizard.py b/src/leap/gui/wizard.py
index 066a7db3..34eba84c 100644
--- a/src/leap/gui/wizard.py
+++ b/src/leap/gui/wizard.py
@@ -31,6 +31,7 @@ from leap.config.providerconfig import ProviderConfig
from leap.crypto.srpregister import SRPRegister
from leap.util.privilege_policies import is_missing_policy_permissions
from leap.util.request_helpers import get_content
+from leap.util.keyring_helpers import has_keyring
from leap.services.eip.providerbootstrapper import ProviderBootstrapper
from leap.services import get_available
@@ -170,7 +171,7 @@ class Wizard(QtGui.QWizard):
return self._password
def get_remember(self):
- return self.ui.chkRemember.isChecked()
+ return has_keyring() and self.ui.chkRemember.isChecked()
def get_services(self):
return self._selected_services
@@ -286,8 +287,9 @@ class Wizard(QtGui.QWizard):
self._set_registration_fields_visibility(False)
# Allow the user to remember his password
- self.ui.chkRemember.setVisible(True)
- self.ui.chkRemember.setEnabled(True)
+ if has_keyring():
+ self.ui.chkRemember.setVisible(True)
+ self.ui.chkRemember.setEnabled(True)
self.page(self.REGISTER_USER_PAGE).set_completed()
self.button(QtGui.QWizard.BackButton).setEnabled(False)
diff --git a/src/leap/util/keyring_helpers.py b/src/leap/util/keyring_helpers.py
new file mode 100644
index 00000000..b3dd0175
--- /dev/null
+++ b/src/leap/util/keyring_helpers.py
@@ -0,0 +1,34 @@
+# -*- coding: utf-8 -*-
+# privilege_policies.py
+# Copyright (C) 2013 LEAP
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU 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 General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+"""
+
+"""
+
+import keyring
+
+OBSOLETE_KEYRINGS = [
+ keyring.backends.file.EncryptedKeyring,
+ keyring.backends.file.PlaintextKeyring
+]
+
+def has_keyring():
+ """
+
+ """
+ kr = keyring.get_keyring()
+ return kr is not None and kr.__class__ not in OBSOLETE_KEYRINGS