summaryrefslogtreecommitdiff
path: root/src/leap/bitmask/gui/mainwindow.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/leap/bitmask/gui/mainwindow.py')
-rw-r--r--src/leap/bitmask/gui/mainwindow.py48
1 files changed, 40 insertions, 8 deletions
diff --git a/src/leap/bitmask/gui/mainwindow.py b/src/leap/bitmask/gui/mainwindow.py
index 312048ba..387c6283 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
@@ -198,8 +201,6 @@ class MainWindow(QtGui.QMainWindow, SignalTracker):
self._login_widget.login_offline_finished.connect(
self._maybe_run_soledad_setup_checks)
- self._soledad_started = False
-
# This is created once we have a valid provider config
self._logged_in_offline = False
@@ -541,7 +542,7 @@ class MainWindow(QtGui.QMainWindow, SignalTracker):
# XXX: handle differently not logged in user?
akm = AdvancedKeyManagement(self, mx_provided, logged_user,
- self._backend, self._soledad_started)
+ self._backend, self.app.soledad_started)
akm.show()
def _show_preferences(self):
@@ -781,6 +782,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 +801,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
@@ -1202,7 +1236,7 @@ class MainWindow(QtGui.QMainWindow, SignalTracker):
self._backend.soledad_cancel_bootstrap()
self._backend.soledad_close()
- self._soledad_started = False
+ self.app.soledad_started = True
def _on_user_logged_in(self):
"""
@@ -1378,7 +1412,7 @@ class MainWindow(QtGui.QMainWindow, SignalTracker):
"""
logger.debug("Done bootstrapping Soledad")
- self._soledad_started = True
+ self.app.soledad_started = True
self.soledad_ready.emit()
###################################################################
@@ -1604,14 +1638,12 @@ class MainWindow(QtGui.QMainWindow, SignalTracker):
# window handling methods
#
- def _on_raise_window_event(self, event, content):
+ def _on_raise_window_event(self, event):
"""
Callback for the raise window event
:param event: The event that triggered the callback.
:type event: str
- :param content: The content of the event.
- :type content: list
"""
if IS_WIN:
locks.raise_window_ack()