diff options
author | Ivan Alejandro <ivanalejandro0@gmail.com> | 2015-09-02 14:04:01 -0300 |
---|---|---|
committer | Ivan Alejandro <ivanalejandro0@gmail.com> | 2015-09-02 16:46:22 -0300 |
commit | 9c39068d292d17fb3c29ec3c53de5250ddfb40d7 (patch) | |
tree | 33e46082c05837d2229cf4b9564b833531a3cd57 | |
parent | 2fa5d0f38b79d0536652034c3007dfae290ef6fc (diff) |
[feat] load credentials from environment variable
Look for file defined in the `BITMASK_CREDENTIALS` env variable and load
`provider`, `username` and `password` data.
Trigger login if they were loaded correctly.
The credentials file should look like this:
[Credentials]
username = my-account@my-provider.com
password = secret
- Resolves: #7419
-rw-r--r-- | changes/feature-7419_load-credentials-from-env | 1 | ||||
-rw-r--r-- | src/leap/bitmask/gui/mainwindow.py | 36 |
2 files changed, 37 insertions, 0 deletions
diff --git a/changes/feature-7419_load-credentials-from-env b/changes/feature-7419_load-credentials-from-env new file mode 100644 index 00000000..7704df01 --- /dev/null +++ b/changes/feature-7419_load-credentials-from-env @@ -0,0 +1 @@ +- Load credentials from environment variables and trigger login. Closes feature #7419. diff --git a/src/leap/bitmask/gui/mainwindow.py b/src/leap/bitmask/gui/mainwindow.py index 312048ba..b0f14aef 100644 --- a/src/leap/bitmask/gui/mainwindow.py +++ b/src/leap/bitmask/gui/mainwindow.py @@ -17,8 +17,11 @@ """ Main window for Bitmask. """ +import os import time +import ConfigParser + from datetime import datetime import psutil @@ -781,6 +784,10 @@ class MainWindow(QtGui.QMainWindow, SignalTracker): if self._wizard: self._load_from_wizard() else: + if self._load_credentials_from_env(): + self._login() + return + domain = self._settings.get_provider() if domain is not None: self._providers.select_provider_by_name(domain) @@ -796,6 +803,35 @@ class MainWindow(QtGui.QMainWindow, SignalTracker): if self._login_widget.load_user_from_keyring(saved_user): self._login() + def _load_credentials_from_env(self): + """ + Load username and password into the login widget from a file specified + in an environment variable. This is useful for test purposes. + + :return: True if credentials were loaded, False otherwise + :rtype: bool + """ + credentials = os.environ.get("BITMASK_CREDENTIALS") + + if credentials is None: + return False + + try: + config = ConfigParser.ConfigParser() + config.read(credentials) + username, domain = config.get('Credentials', 'username').split('@') + password = config.get('Credentials', 'password') + except Exception, e: + print "Error reading credentials file: {0}".format(e) + return False + + self._providers.select_provider_by_name(domain) + self._login_widget.set_provider(domain) + self._login_widget.set_user(username) + self._login_widget.set_password(password) + + return True + def _show_hide_unsupported_services(self): """ Given a set of configured providers, it creates a set of |