diff options
author | Kali Kaneko <kali@leap.se> | 2014-01-17 11:22:35 -0400 |
---|---|---|
committer | Kali Kaneko <kali@leap.se> | 2014-01-17 11:40:41 -0400 |
commit | 9dbbfeebbb4bb7c445e01f94533e88e514fd6821 (patch) | |
tree | 3957db7bc593a4cfb4ac61141d6dd44012935ba3 /src | |
parent | 9400d166db96fdcb2927245f5163ced0e29f2e07 (diff) |
defend against keyring errors
on certain settings, like a virtualenv with symlinks, I'm getting
errors after a suspend, related to a error to connect to the dbus
socket.
wrapping all of it in a conditional we avoid that kind of error.
Diffstat (limited to 'src')
-rw-r--r-- | src/leap/bitmask/util/keyring_helpers.py | 30 |
1 files changed, 20 insertions, 10 deletions
diff --git a/src/leap/bitmask/util/keyring_helpers.py b/src/leap/bitmask/util/keyring_helpers.py index b202d47e..ee2d7a1c 100644 --- a/src/leap/bitmask/util/keyring_helpers.py +++ b/src/leap/bitmask/util/keyring_helpers.py @@ -19,19 +19,23 @@ Keyring helpers. """ import logging -import keyring +try: + import keyring + from keyring.backends.file import EncryptedKeyring, PlaintextKeyring + OBSOLETE_KEYRINGS = [ + EncryptedKeyring, + PlaintextKeyring + ] + canuse = lambda kr: (kr is not None + and kr.__class__ not in OBSOLETE_KEYRINGS) -from keyring.backends.file import EncryptedKeyring, PlaintextKeyring - -logger = logging.getLogger(__name__) +except Exception: + # Problems when importing keyring! It might be a problem binding to the + # dbus socket, or stuff like that. + keyring = None -OBSOLETE_KEYRINGS = [ - EncryptedKeyring, - PlaintextKeyring -] - -canuse = lambda kr: kr is not None and kr.__class__ not in OBSOLETE_KEYRINGS +logger = logging.getLogger(__name__) def _get_keyring_with_fallback(): @@ -42,6 +46,8 @@ def _get_keyring_with_fallback(): This is a workaround for the cases in which the keyring module chooses an insecure keyring by default (ie, inside a virtualenv). """ + if not keyring: + return None kr = keyring.get_keyring() if not canuse(kr): try: @@ -61,6 +67,8 @@ def has_keyring(): :rtype: bool """ + if not keyring: + return False kr = _get_keyring_with_fallback() return canuse(kr) @@ -71,5 +79,7 @@ def get_keyring(): :rtype: keyringBackend or None """ + if not keyring: + return False kr = _get_keyring_with_fallback() return kr if canuse(kr) else None |