summaryrefslogtreecommitdiff
path: root/src/leap
diff options
context:
space:
mode:
Diffstat (limited to 'src/leap')
-rw-r--r--src/leap/bitmask/gui/mainwindow.py10
-rw-r--r--src/leap/bitmask/gui/preferenceswindow.py48
-rw-r--r--src/leap/bitmask/services/mail/imap.py7
-rw-r--r--src/leap/bitmask/services/soledad/soledadbootstrapper.py7
4 files changed, 60 insertions, 12 deletions
diff --git a/src/leap/bitmask/gui/mainwindow.py b/src/leap/bitmask/gui/mainwindow.py
index ce3f113b..5eb9e6dc 100644
--- a/src/leap/bitmask/gui/mainwindow.py
+++ b/src/leap/bitmask/gui/mainwindow.py
@@ -446,13 +446,11 @@ class MainWindow(QtGui.QMainWindow):
Displays the preferences window.
"""
- preferences_window = PreferencesWindow(self, self._srp_auth)
+ preferences_window = PreferencesWindow(self, self._srp_auth,
+ self._provider_config)
- if sameProxiedObjects(self._soledad, None):
- preferences_window.set_soledad_ready(self._soledad)
- else:
- self.soledad_ready.connect(
- lambda: preferences_window.set_soledad_ready(self._soledad))
+ self.soledad_ready.connect(
+ lambda: preferences_window.set_soledad_ready(self._soledad))
preferences_window.show()
diff --git a/src/leap/bitmask/gui/preferenceswindow.py b/src/leap/bitmask/gui/preferenceswindow.py
index b043afe6..acb39b07 100644
--- a/src/leap/bitmask/gui/preferenceswindow.py
+++ b/src/leap/bitmask/gui/preferenceswindow.py
@@ -40,12 +40,14 @@ class PreferencesWindow(QtGui.QDialog):
"""
Window that displays the preferences.
"""
- def __init__(self, parent, srp_auth):
+ def __init__(self, parent, srp_auth, provider_config):
"""
:param parent: parent object of the PreferencesWindow.
:parent type: QWidget
:param srp_auth: SRPAuth object configured in the main app.
:type srp_auth: SRPAuth
+ :param provider_config: ProviderConfig object.
+ :type provider_config: ProviderConfig
"""
QtGui.QDialog.__init__(self, parent)
self.AUTOMATIC_GATEWAY_LABEL = self.tr("Automatic")
@@ -72,6 +74,36 @@ class PreferencesWindow(QtGui.QDialog):
else:
self._add_configured_providers()
+ pw_enabled = False
+
+ # check if the user is logged in
+ if srp_auth is not None and srp_auth.get_token() is not None:
+ # check if provider has 'mx' ...
+ domain = provider_config.get_domain()
+ self._select_provider_by_name(domain)
+ if provider_config.provides_mx():
+ enabled_services = self._settings.get_enabled_services(domain)
+ mx_name = get_service_display_name('mx')
+
+ # ... and if the user have it enabled
+ if 'mx' not in enabled_services:
+ msg = self.tr("You need to enable {0} in order to change "
+ "the password.".format(mx_name))
+ self._set_password_change_status(msg, error=True)
+ else:
+ msg = self.tr(
+ "You need to wait until {0} is ready in "
+ "order to change the password.".format(mx_name))
+ self._set_password_change_status(msg)
+ else:
+ pw_enabled = True
+ else:
+ msg = self.tr(
+ "In order to change your password you need to be logged in.")
+ self._set_password_change_status(msg)
+
+ self.ui.gbPasswordChange.setEnabled(pw_enabled)
+
def set_soledad_ready(self, soledad):
"""
SLOT
@@ -84,6 +116,7 @@ class PreferencesWindow(QtGui.QDialog):
:type soledad: Soledad
"""
self._soledad = soledad
+ self.ui.lblPasswordChangeStatus.setVisible(False)
self.ui.gbPasswordChange.setEnabled(True)
def _set_password_change_status(self, status, error=False, success=False):
@@ -98,6 +131,9 @@ class PreferencesWindow(QtGui.QDialog):
elif success:
status = "<font color='green'><b>%s</b></font>" % (status,)
+ if not self.ui.gbPasswordChange.isEnabled():
+ status = "<font color='black'>%s</font>" % (status,)
+
self.ui.lblPasswordChangeStatus.setVisible(True)
self.ui.lblPasswordChangeStatus.setText(status)
@@ -218,6 +254,16 @@ class PreferencesWindow(QtGui.QDialog):
for provider in self._settings.get_configured_providers():
self.ui.cbProvidersServices.addItem(provider)
+ def _select_provider_by_name(self, name):
+ """
+ Given a provider name/domain, selects it in the combobox.
+
+ :param name: name or domain for the provider
+ :type name: str
+ """
+ provider_index = self.ui.cbProvidersServices.findText(name)
+ self.ui.cbProvidersServices.setCurrentIndex(provider_index)
+
def _service_selection_changed(self, service, state):
"""
SLOT
diff --git a/src/leap/bitmask/services/mail/imap.py b/src/leap/bitmask/services/mail/imap.py
index 4828180e..2667f156 100644
--- a/src/leap/bitmask/services/mail/imap.py
+++ b/src/leap/bitmask/services/mail/imap.py
@@ -41,9 +41,10 @@ def get_mail_check_period():
try:
period = int(period_str)
except (ValueError, TypeError):
- logger.warning("BAD value found for %s: %s" % (
- INCOMING_CHECK_PERIOD_ENV,
- period_str))
+ if period is not None:
+ logger.warning("BAD value found for %s: %s" % (
+ INCOMING_CHECK_PERIOD_ENV,
+ period_str))
except Exception as exc:
logger.warning("Unhandled error while getting %s: %r" % (
INCOMING_CHECK_PERIOD_ENV,
diff --git a/src/leap/bitmask/services/soledad/soledadbootstrapper.py b/src/leap/bitmask/services/soledad/soledadbootstrapper.py
index 63596398..54ef67eb 100644
--- a/src/leap/bitmask/services/soledad/soledadbootstrapper.py
+++ b/src/leap/bitmask/services/soledad/soledadbootstrapper.py
@@ -41,7 +41,7 @@ from leap.common.check import leap_assert, leap_assert_type, leap_check
from leap.common.files import which
from leap.keymanager import KeyManager, openpgp
from leap.keymanager.errors import KeyNotFound
-from leap.soledad.client import Soledad
+from leap.soledad.client import Soledad, BootstrapSequenceError
logger = logging.getLogger(__name__)
@@ -260,7 +260,10 @@ class SoledadBootstrapper(AbstractBootstrapper):
logger.debug("SOLEDAD initialization TIMED OUT...")
self.soledad_timeout.emit()
except socket.error as exc:
- logger.error("Socket error while initializing soledad")
+ logger.warning("Socket error while initializing soledad")
+ self.soledad_timeout.emit()
+ except BootstrapSequenceError as exc:
+ logger.warning("Error while initializing soledad")
self.soledad_timeout.emit()
# unrecoverable