From e7472ad6686e06c2bd78e9f873632b58538f05f7 Mon Sep 17 00:00:00 2001 From: Ivan Alejandro Date: Thu, 15 Jan 2015 13:12:55 -0300 Subject: Use tuple instead of set. The set syntax using {} works for python >= 2.7, so failed on 2.6. Closes #6638. --- src/leap/bitmask/util/polkit_agent.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/leap/bitmask') diff --git a/src/leap/bitmask/util/polkit_agent.py b/src/leap/bitmask/util/polkit_agent.py index af5e431c..78eeaa55 100644 --- a/src/leap/bitmask/util/polkit_agent.py +++ b/src/leap/bitmask/util/polkit_agent.py @@ -31,12 +31,12 @@ BASE_PATH_KDE = "/usr/lib/kde4/libexec/" GNO_PATH = BASE_PATH_GNO + AUTH_FILE % ("gnome",) KDE_PATH = BASE_PATH_KDE + AUTH_FILE % ("kde",) -POLKIT_PATHS = { +POLKIT_PATHS = ( '/usr/lib/lxpolkit/lxpolkit', '/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1', '/usr/lib/mate-polkit/polkit-mate-authentication-agent-1', '/usr/lib/kde4/libexec/polkit-kde-authentication-agent-1', -} +) def _get_polkit_agent(): -- cgit v1.2.3 From 8c71fcd6e070d6bf46394fb29fba4d75c76a3987 Mon Sep 17 00:00:00 2001 From: Ivan Alejandro Date: Thu, 15 Jan 2015 19:18:05 -0300 Subject: Fix failing tests. Remove srpauth obsolete tests. Remove providerconfig obsolete test. Set as mandatory the signaler object on ProviderBootstrapper and EIPBootstrapper. Closes #6631. --- .../bitmask/config/tests/test_providerconfig.py | 12 ----- src/leap/bitmask/crypto/tests/test_srpauth.py | 60 ++++------------------ src/leap/bitmask/provider/providerbootstrapper.py | 41 ++++++++++----- .../provider/tests/test_providerbootstrapper.py | 3 +- src/leap/bitmask/services/eip/eipbootstrapper.py | 11 ++-- src/leap/bitmask/services/eip/eipconfig.py | 2 + 6 files changed, 49 insertions(+), 80 deletions(-) (limited to 'src/leap/bitmask') diff --git a/src/leap/bitmask/config/tests/test_providerconfig.py b/src/leap/bitmask/config/tests/test_providerconfig.py index fe27e683..7bc30f9c 100644 --- a/src/leap/bitmask/config/tests/test_providerconfig.py +++ b/src/leap/bitmask/config/tests/test_providerconfig.py @@ -258,18 +258,6 @@ class ProviderConfigTest(BaseLeapTest): pc.load(data=json_string) self.assertTrue('unknown' in pc.get_services()) - def test_get_services_string(self): - pc = self._provider_config - config = copy.deepcopy(sample_config) - config['services'] = [ - 'openvpn', 'asdf', 'openvpn', 'not_supported_service'] - json_string = json.dumps(config) - pc.load(data=json_string) - - self.assertEqual(pc.get_services_string(), - "Encrypted Internet, asdf, Encrypted Internet," - " not_supported_service") - if __name__ == "__main__": unittest.main() diff --git a/src/leap/bitmask/crypto/tests/test_srpauth.py b/src/leap/bitmask/crypto/tests/test_srpauth.py index 511a12ed..d420ef93 100644 --- a/src/leap/bitmask/crypto/tests/test_srpauth.py +++ b/src/leap/bitmask/crypto/tests/test_srpauth.py @@ -27,6 +27,7 @@ import sys import binascii import requests import mock +import shutil from functools import partial @@ -42,6 +43,7 @@ from leap.bitmask.crypto import srpregister, srpauth from leap.bitmask.crypto.tests import fake_provider from leap.bitmask.util.request_helpers import get_content from leap.common.testing.https_server import where +from leap.common.files import mkdir_p log.startLogging(sys.stdout) @@ -118,6 +120,10 @@ class SRPAuthTestCase(unittest.TestCase): self.old_cookie_get = self.auth_backend._session.cookies.get self.old_auth = self.auth_backend.authenticate + # HACK: this is needed since it seems that the backend settings path is + # not using the right path + mkdir_p('config/leap') + def tearDown(self): self.auth_backend._session.post = self.old_post self.auth_backend._session.put = self.old_put @@ -132,6 +138,10 @@ class SRPAuthTestCase(unittest.TestCase): self.auth_backend._session.cookies.get = self.old_cookie_get self.auth_backend.authenticate = self.old_auth + # HACK: see 'setUp' + if os.path.exists('config'): + shutil.rmtree('config') + # helper methods def _get_https_uri(self): @@ -710,56 +720,6 @@ class SRPAuthSingletonTestCase(unittest.TestCase): obj2 = srpauth.SRPAuth(ProviderConfig()) self.assertEqual(obj1._SRPAuth__instance, obj2._SRPAuth__instance) - @deferred() - def test_authenticate_notifies_gui(self): - auth = srpauth.SRPAuth(ProviderConfig()) - auth._SRPAuth__instance.authenticate = mock.create_autospec( - auth._SRPAuth__instance.authenticate, - return_value=threads.deferToThread(lambda: None)) - auth._gui_notify = mock.create_autospec( - auth._gui_notify) - - d = auth.authenticate("", "") - - def check(*args): - auth._gui_notify.assert_called_once_with(None) - - d.addCallback(check) - return d - - @deferred() - def test_authenticate_errsback(self): - auth = srpauth.SRPAuth(ProviderConfig()) - auth._SRPAuth__instance.authenticate = mock.create_autospec( - auth._SRPAuth__instance.authenticate, - return_value=threads.deferToThread(MagicMock( - side_effect=Exception()))) - auth._gui_notify = mock.create_autospec( - auth._gui_notify) - auth._errback = mock.create_autospec( - auth._errback) - - d = auth.authenticate("", "") - - def check(*args): - self.assertFalse(auth._gui_notify.called) - self.assertEqual(auth._errback.call_count, 1) - - d.addCallback(check) - return d - - @deferred() - def test_authenticate_runs_cleanly_when_raises(self): - auth = srpauth.SRPAuth(ProviderConfig()) - auth._SRPAuth__instance.authenticate = mock.create_autospec( - auth._SRPAuth__instance.authenticate, - return_value=threads.deferToThread(MagicMock( - side_effect=Exception()))) - - d = auth.authenticate("", "") - - return d - @deferred() def test_authenticate_runs_cleanly(self): auth = srpauth.SRPAuth(ProviderConfig()) diff --git a/src/leap/bitmask/provider/providerbootstrapper.py b/src/leap/bitmask/provider/providerbootstrapper.py index 8eefb9d9..efba29f9 100644 --- a/src/leap/bitmask/provider/providerbootstrapper.py +++ b/src/leap/bitmask/provider/providerbootstrapper.py @@ -225,8 +225,9 @@ class ProviderBootstrapper(AbstractBootstrapper): if flags.APP_VERSION_CHECK: # TODO split if not provider.supports_client(min_client_version): - self._signaler.signal( - self._signaler.prov_unsupported_client) + if self._signaler is not None: + self._signaler.signal( + self._signaler.prov_unsupported_client) raise UnsupportedClientVersionError() provider_definition, mtime = get_content(res) @@ -248,7 +249,9 @@ class ProviderBootstrapper(AbstractBootstrapper): 'Found: {1}.').format(api_supported, api_version) logger.error(error) - self._signaler.signal(self._signaler.prov_unsupported_api) + if self._signaler is not None: + self._signaler.signal( + self._signaler.prov_unsupported_api) raise UnsupportedProviderAPI(error) def run_provider_select_checks(self, domain, download_if_needed=False): @@ -267,12 +270,18 @@ class ProviderBootstrapper(AbstractBootstrapper): self._domain = ProviderConfig.sanitize_path_component(domain) self._download_if_needed = download_if_needed + name_resolution = None + https_connection = None + down_provider_info = None + if self._signaler is not None: + name_resolution = self._signaler.prov_name_resolution + https_connection = self._signaler.prov_https_connection + down_provider_info = self._signaler.prov_download_provider_info + cb_chain = [ - (self._check_name_resolution, - self._signaler.prov_name_resolution), - (self._check_https, self._signaler.prov_https_connection), - (self._download_provider_info, - self._signaler.prov_download_provider_info) + (self._check_name_resolution, name_resolution), + (self._check_https, https_connection), + (self._download_provider_info, down_provider_info) ] return self.addCallbackChain(cb_chain) @@ -398,12 +407,18 @@ class ProviderBootstrapper(AbstractBootstrapper): self._provider_config = provider_config self._download_if_needed = download_if_needed + download_ca_cert = None + check_ca_fingerprint = None + check_api_certificate = None + if self._signaler is not None: + download_ca_cert = self._signaler.prov_download_ca_cert + check_ca_fingerprint = self._signaler.prov_check_ca_fingerprint + check_api_certificate = self._signaler.prov_check_api_certificate + cb_chain = [ - (self._download_ca_cert, self._signaler.prov_download_ca_cert), - (self._check_ca_fingerprint, - self._signaler.prov_check_ca_fingerprint), - (self._check_api_certificate, - self._signaler.prov_check_api_certificate) + (self._download_ca_cert, download_ca_cert), + (self._check_ca_fingerprint, check_ca_fingerprint), + (self._check_api_certificate, check_api_certificate) ] return self.addCallbackChain(cb_chain) diff --git a/src/leap/bitmask/provider/tests/test_providerbootstrapper.py b/src/leap/bitmask/provider/tests/test_providerbootstrapper.py index 6cf3e469..e694e456 100644 --- a/src/leap/bitmask/provider/tests/test_providerbootstrapper.py +++ b/src/leap/bitmask/provider/tests/test_providerbootstrapper.py @@ -38,7 +38,6 @@ from requests.models import Response from leap.bitmask import provider from leap.bitmask import util -from leap.bitmask.backend import Signaler from leap.bitmask.config.providerconfig import ProviderConfig from leap.bitmask.crypto.tests import fake_provider from leap.bitmask.provider.providerbootstrapper import ProviderBootstrapper @@ -51,7 +50,7 @@ from leap.common.testing.https_server import where class ProviderBootstrapperTest(BaseLeapTest): def setUp(self): - self.pb = ProviderBootstrapper(Signaler()) + self.pb = ProviderBootstrapper() def tearDown(self): pass diff --git a/src/leap/bitmask/services/eip/eipbootstrapper.py b/src/leap/bitmask/services/eip/eipbootstrapper.py index 264eac2e..f78113bc 100644 --- a/src/leap/bitmask/services/eip/eipbootstrapper.py +++ b/src/leap/bitmask/services/eip/eipbootstrapper.py @@ -115,10 +115,15 @@ class EIPBootstrapper(AbstractBootstrapper): self._provider_config = provider_config self._download_if_needed = download_if_needed + eip_config_ready = None + eip_certificate_ready = None + if self._signaler is not None: + eip_config_ready = self._signaler.eip_config_ready + eip_certificate_ready = self._signaler.eip_client_certificate_ready + cb_chain = [ - (self._download_config, self._signaler.eip_config_ready), - (self._download_client_certificates, - self._signaler.eip_client_certificate_ready) + (self._download_config, eip_config_ready), + (self._download_client_certificates, eip_certificate_ready) ] return self.addCallbackChain(cb_chain) diff --git a/src/leap/bitmask/services/eip/eipconfig.py b/src/leap/bitmask/services/eip/eipconfig.py index 659ca1b1..f4d6b216 100644 --- a/src/leap/bitmask/services/eip/eipconfig.py +++ b/src/leap/bitmask/services/eip/eipconfig.py @@ -118,6 +118,8 @@ class VPNGatewaySelector(object): """ gateways_timezones = [] locations = self._eipconfig.get_locations() + if not locations: + locations = {} gateways = self._eipconfig.get_gateways() for idx, gateway in enumerate(gateways): -- cgit v1.2.3 From 5580f1836c3d4824cf215eeb981725b50a80aa67 Mon Sep 17 00:00:00 2001 From: Ivan Alejandro Date: Wed, 28 Jan 2015 16:10:21 -0300 Subject: Refactor wizard call. --- src/leap/bitmask/gui/mainwindow.py | 168 +++++++++++++++++++------------------ src/leap/bitmask/gui/wizard.py | 2 +- 2 files changed, 89 insertions(+), 81 deletions(-) (limited to 'src/leap/bitmask') diff --git a/src/leap/bitmask/gui/mainwindow.py b/src/leap/bitmask/gui/mainwindow.py index b0826303..d9c53ef6 100644 --- a/src/leap/bitmask/gui/mainwindow.py +++ b/src/leap/bitmask/gui/mainwindow.py @@ -207,7 +207,7 @@ class MainWindow(QtGui.QMainWindow, SignalTracker): self.ui.action_preferences.triggered.connect(self._show_preferences) self.ui.action_about_leap.triggered.connect(self._about) self.ui.action_quit.triggered.connect(self.quit) - self.ui.action_wizard.triggered.connect(self._launch_wizard) + self.ui.action_wizard.triggered.connect(self._show_wizard) self.ui.action_show_logs.triggered.connect(self._show_logger_window) # XXX hide the help menu since it only shows email information and @@ -288,17 +288,7 @@ class MainWindow(QtGui.QMainWindow, SignalTracker): if self._first_run(): self._wizard_firstrun = True - - # HACK FIX: disconnection of signals triggers a reconnection later - # chich segfaults on wizard quit - # self.disconnect_and_untrack() - - self._wizard = Wizard(backend=self._backend, - leap_signaler=self._leap_signaler) - # Give this window time to finish init and then show the wizard - QtDelayedCall(1, self._launch_wizard) - self._wizard.accepted.connect(self._finish_init) - self._wizard.rejected.connect(self._rejected_wizard) + self._show_wizard() else: # during finish_init, we disable the eip start button # so this has to be done after eip_machine is started @@ -402,54 +392,26 @@ class MainWindow(QtGui.QMainWindow, SignalTracker): # TODO: connect this with something # sig.soledad_cancelled_bootstrap.connect() - @QtCore.Slot() - def _rejected_wizard(self): - """ - TRIGGERS: - self._wizard.rejected - - Called if the wizard has been cancelled or closed before - finishing. - This is executed for the first run wizard only. Any other execution of - the wizard won't reach this point. - """ - providers = self._settings.get_configured_providers() - has_provider_on_disk = len(providers) != 0 - if not has_provider_on_disk: - # if we don't have any provider configured (included a pinned - # one) we can't use the application, so quit. - self.quit() - else: - # This happens if the user finishes the provider - # setup but does not register - self._wizard = None - - # HACK FIX: disconnection of signals triggers a reconnection later - # chich segfaults on wizard quit - # self._backend_connect(only_tracked=True) - - if self._wizard_firstrun: - self._finish_init() - - @QtCore.Slot() - def _launch_wizard(self): + def _show_wizard(self): """ TRIGGERS: self.ui.action_wizard.triggered - Also called in first run. + This is called during the Bitmask's first run. - Launches the wizard, creating the object itself if not already - there. + Open the wizard window, hiding the mainwindow window. + This reuses an existing wizard object or creates a new one if needed. """ + # Disconnect signals to avoid conflicts between mainwindow and wizard + # connections + self.disconnect_and_untrack() + if self._wizard is None: - # HACK FIX: disconnection of signals triggers a reconnection later - # chich segfaults on wizard quit - # self.disconnect_and_untrack() self._wizard = Wizard(backend=self._backend, leap_signaler=self._leap_signaler) - self._wizard.accepted.connect(self._finish_init) - self._wizard.rejected.connect(self._rejected_wizard) + self._wizard.accepted.connect(self._wizard_accepted) + self._wizard.rejected.connect(self._wizard_rejected) + self._wizard.finished.connect(self._wizard_finished) self.setVisible(False) # Do NOT use exec_, it will use a child event loop! @@ -457,10 +419,8 @@ class MainWindow(QtGui.QMainWindow, SignalTracker): self._wizard.show() if IS_MAC: self._wizard.raise_() - self._wizard.finished.connect(self._wizard_finished) self._settings.set_skip_first_run(True) - @QtCore.Slot() def _wizard_finished(self): """ TRIGGERS: @@ -468,7 +428,79 @@ class MainWindow(QtGui.QMainWindow, SignalTracker): Called when the wizard has finished. """ + # NOTE: we used to call _finish_init on wizard finished self.setVisible(True) + self._backend_connect(only_tracked=True) + + def _wizard_rejected(self): + """ + TRIGGERS: + self._wizard.rejected + + Called if the wizard has been cancelled or closed before finishing. + """ + # NOTE: We need to verify if we have configured providers. + # If not then we should quit + # see self._rejected_wizard() + providers = self._settings.get_configured_providers() + has_provider_on_disk = len(providers) != 0 + if not has_provider_on_disk: + # if we don't have any provider configured (included a pinned + # one) we can't use the application, so quit. + self._wizard = None + self.quit() + else: + # This happens if the user finishes the provider + # setup but does not register + self._wizard = None + + # self._backend_connect(only_tracked=True) + # if self._wizard_firstrun: + # self._finish_init() + + def _wizard_accepted(self): + """ + TRIGGERS: + self._wizard.accepted + + Called when the wizard has accepted. + """ + self.setVisible(True) + self._finish_init() + + def _load_from_wizard(self): + """ + Load the resulting information of the user going through the Wizard. + Trigger the login sequence if needed. + """ + # providers = self._settings.get_configured_providers() + # self._providers.set_providers(providers) + + # provider = self._providers.get_selected_provider() + # self._login_widget.set_provider(provider) + + possible_username = self._wizard.get_username() + possible_password = self._wizard.get_password() + + # select the configured provider in the combo box + domain = self._wizard.get_domain() + self._providers.select_provider_by_name(domain) + + self._login_widget.set_remember(self._wizard.get_remember()) + self._enabled_services = list(self._wizard.get_services()) + self._settings.set_enabled_services( + self._providers.get_selected_provider(), + self._enabled_services) + + if possible_username is not None: + self._login_widget.set_user(possible_username) + if possible_password is not None: + self._login_widget.set_password(possible_password) + self._login() + else: + self.eip_needs_login.emit() + + self._wizard = None def _get_leap_logging_handler(self): """ @@ -729,7 +761,6 @@ class MainWindow(QtGui.QMainWindow, SignalTracker): the wizard has been executed. """ # XXX: May be this can be divided into two methods? - providers = self._settings.get_configured_providers() self._providers.set_providers(providers) @@ -755,30 +786,7 @@ class MainWindow(QtGui.QMainWindow, SignalTracker): QtDelayedCall(1, self._update_eip_enabled_status) if self._wizard: - possible_username = self._wizard.get_username() - possible_password = self._wizard.get_password() - - # select the configured provider in the combo box - domain = self._wizard.get_domain() - self._providers.select_provider_by_name(domain) - - self._login_widget.set_remember(self._wizard.get_remember()) - self._enabled_services = list(self._wizard.get_services()) - self._settings.set_enabled_services( - self._providers.get_selected_provider(), - self._enabled_services) - if possible_username is not None: - self._login_widget.set_user(possible_username) - if possible_password is not None: - self._login_widget.set_password(possible_password) - self._login() - else: - self.eip_needs_login.emit() - - self._wizard = None - # HACK FIX: disconnection of signals triggers a reconnection later - # chich segfaults on wizard quit - # self._backend_connect(only_tracked=True) + self._load_from_wizard() else: domain = self._settings.get_provider() if domain is not None: @@ -1132,7 +1140,7 @@ class MainWindow(QtGui.QMainWindow, SignalTracker): if not something_runing: if wizard: - self._launch_wizard() + self._show_wizard() else: self._settings.set_provider(provider) self._settings.set_defaultprovider(provider) @@ -1161,7 +1169,7 @@ class MainWindow(QtGui.QMainWindow, SignalTracker): self._update_eip_enabled_status() self._eip_conductor.qtsigs.do_disconnect_signal.emit() if wizard: - self._launch_wizard() + self._show_wizard() else: if not wizard: # if wizard, the widget restores itself diff --git a/src/leap/bitmask/gui/wizard.py b/src/leap/bitmask/gui/wizard.py index 35043a68..c12e8c2e 100644 --- a/src/leap/bitmask/gui/wizard.py +++ b/src/leap/bitmask/gui/wizard.py @@ -153,7 +153,7 @@ class Wizard(QtGui.QWizard, SignalTracker): self.ui.lnProvider.setText('') self.ui.grpCheckProvider.setVisible(False) # HACK FIX: disconnection of signals triggers a segfault on quit - # self.disconnect_and_untrack() + self.disconnect_and_untrack() def _load_configured_providers(self): """ -- cgit v1.2.3 From 73de8eae2422bedae0899ff11d8203178e6f2dbb Mon Sep 17 00:00:00 2001 From: Ivan Alejandro Date: Wed, 28 Jan 2015 15:35:41 -0300 Subject: Enable signal connect/disconnect logic. Now it's working and no longer segfaults, so we can enable safely this feature again. Stop tracking the gui connections on wizard. --- src/leap/bitmask/gui/login.py | 1 + src/leap/bitmask/gui/mainwindow.py | 4 +--- src/leap/bitmask/gui/signaltracker.py | 1 - src/leap/bitmask/gui/wizard.py | 31 +++++++++++++------------------ 4 files changed, 15 insertions(+), 22 deletions(-) (limited to 'src/leap/bitmask') diff --git a/src/leap/bitmask/gui/login.py b/src/leap/bitmask/gui/login.py index 7487e888..8b764025 100644 --- a/src/leap/bitmask/gui/login.py +++ b/src/leap/bitmask/gui/login.py @@ -538,6 +538,7 @@ class LoginWidget(QtGui.QWidget, SignalTracker): """ self.set_status(self.tr("Succeeded"), error=False) self._set_logged_in() + self.disconnect_and_untrack() if not flags.OFFLINE: self.login_finished.emit() diff --git a/src/leap/bitmask/gui/mainwindow.py b/src/leap/bitmask/gui/mainwindow.py index d9c53ef6..a2244020 100644 --- a/src/leap/bitmask/gui/mainwindow.py +++ b/src/leap/bitmask/gui/mainwindow.py @@ -336,7 +336,6 @@ class MainWindow(QtGui.QMainWindow, SignalTracker): # XXX does this goes in here? this will be triggered when the login or # wizard requests provider data - # XXX - here segfaults if we did a disconnect_and_untrack conntrack(sig.prov_check_api_certificate, self._get_provider_details) conntrack(sig.prov_get_details, self._provider_get_details) @@ -428,7 +427,6 @@ class MainWindow(QtGui.QMainWindow, SignalTracker): Called when the wizard has finished. """ - # NOTE: we used to call _finish_init on wizard finished self.setVisible(True) self._backend_connect(only_tracked=True) @@ -1262,7 +1260,7 @@ class MainWindow(QtGui.QMainWindow, SignalTracker): self._maybe_start_eip() @QtCore.Slot() - def _get_provider_details(self): + def _get_provider_details(self, data): """ TRIGGERS: prov_check_api_certificate diff --git a/src/leap/bitmask/gui/signaltracker.py b/src/leap/bitmask/gui/signaltracker.py index c83359c4..0e3b2dce 100644 --- a/src/leap/bitmask/gui/signaltracker.py +++ b/src/leap/bitmask/gui/signaltracker.py @@ -57,7 +57,6 @@ class SignalTracker(QtCore.QObject): try: signal.disconnect(method) except (TypeError, RuntimeError) as e: - # most likely the signal was not connected logger.warning("Disconnect error: {0!r}".format(e)) logger.warning("Signal: {0!r} -> {1!r}".format(signal, method)) diff --git a/src/leap/bitmask/gui/wizard.py b/src/leap/bitmask/gui/wizard.py index c12e8c2e..a30723f2 100644 --- a/src/leap/bitmask/gui/wizard.py +++ b/src/leap/bitmask/gui/wizard.py @@ -82,9 +82,8 @@ class Wizard(QtGui.QWizard, SignalTracker): self._use_existing_provider = False self.ui.grpCheckProvider.setVisible(False) - conntrack = self.connect_and_track - conntrack(self.ui.btnCheck.clicked, self._check_provider) - conntrack(self.ui.lnProvider.returnPressed, self._check_provider) + self.ui.btnCheck.clicked.connect(self._check_provider) + self.ui.lnProvider.returnPressed.connect(self._check_provider) self._leap_signaler = leap_signaler @@ -96,22 +95,19 @@ class Wizard(QtGui.QWizard, SignalTracker): # this details are set when the provider download is complete. self._provider_details = None - conntrack(self.currentIdChanged, self._current_id_changed) + self.currentIdChanged.connect(self._current_id_changed) - conntrack(self.ui.lnProvider.textChanged, self._enable_check) - conntrack(self.ui.rbNewProvider.toggled, - lambda x: self._enable_check()) - conntrack(self.ui.cbProviders.currentIndexChanged[int], - self._reset_provider_check) + self.ui.lnProvider.textChanged.connect(self._enable_check) + self.ui.rbNewProvider.toggled.connect(lambda x: self._enable_check()) + self.ui.cbProviders.currentIndexChanged[int].connect( + self._reset_provider_check) - conntrack(self.ui.lblUser.returnPressed, self._focus_password) - conntrack(self.ui.lblPassword.returnPressed, - self._focus_second_password) - conntrack(self.ui.lblPassword2.returnPressed, self._register) - conntrack(self.ui.btnRegister.clicked, self._register) + self.ui.lblUser.returnPressed.connect(self._focus_password) + self.ui.lblPassword.returnPressed.connect(self._focus_second_password) + self.ui.lblPassword2.returnPressed.connect(self._register) + self.ui.btnRegister.clicked.connect(self._register) - conntrack(self.ui.rbExistingProvider.toggled, - self._skip_provider_checks) + self.ui.rbExistingProvider.toggled.connect(self._skip_provider_checks) usernameRe = QtCore.QRegExp(USERNAME_REGEX) self.ui.lblUser.setValidator( @@ -136,7 +132,7 @@ class Wizard(QtGui.QWizard, SignalTracker): self._provider_checks_ok = False self._provider_setup_ok = False - conntrack(self.finished, self._wizard_finished) + self.finished.connect(self._wizard_finished) @QtCore.Slot() def _wizard_finished(self): @@ -152,7 +148,6 @@ class Wizard(QtGui.QWizard, SignalTracker): self._provider_setup_ok = False self.ui.lnProvider.setText('') self.ui.grpCheckProvider.setVisible(False) - # HACK FIX: disconnection of signals triggers a segfault on quit self.disconnect_and_untrack() def _load_configured_providers(self): -- cgit v1.2.3 From 8cdeeadf9e258f31d401c133d73cfc29f86d9d29 Mon Sep 17 00:00:00 2001 From: Ivan Alejandro Date: Wed, 28 Jan 2015 16:10:28 -0300 Subject: Remove all the Slot() decorators. This causes (on certain scenarios) the app to segfault and it is really hard to debug. --- src/leap/bitmask/gui/advanced_key_management.py | 8 ------ src/leap/bitmask/gui/app.py | 1 - src/leap/bitmask/gui/eip_preferenceswindow.py | 6 ---- src/leap/bitmask/gui/eip_status.py | 8 ------ src/leap/bitmask/gui/login.py | 12 -------- src/leap/bitmask/gui/mail_status.py | 12 -------- src/leap/bitmask/gui/mainwindow.py | 35 ------------------------ src/leap/bitmask/gui/passwordwindow.py | 7 ----- src/leap/bitmask/gui/preferences_account_page.py | 3 -- src/leap/bitmask/gui/preferences_vpn_page.py | 4 --- src/leap/bitmask/gui/preferenceswindow.py | 2 -- src/leap/bitmask/gui/providers.py | 1 - src/leap/bitmask/gui/wizard.py | 16 ----------- src/leap/bitmask/services/eip/conductor.py | 5 ---- 14 files changed, 120 deletions(-) (limited to 'src/leap/bitmask') diff --git a/src/leap/bitmask/gui/advanced_key_management.py b/src/leap/bitmask/gui/advanced_key_management.py index 48a1db93..7d147b7b 100644 --- a/src/leap/bitmask/gui/advanced_key_management.py +++ b/src/leap/bitmask/gui/advanced_key_management.py @@ -132,7 +132,6 @@ class AdvancedKeyManagement(QtGui.QDialog): else: logger.debug('Import canceled by the user.') - @QtCore.Slot() def _keymanager_import_ok(self): """ TRIGGERS: @@ -144,7 +143,6 @@ class AdvancedKeyManagement(QtGui.QDialog): self, self.tr("Import Successful"), self.tr("The key pair was imported successfully.")) - @QtCore.Slot() def _import_ioerror(self): """ TRIGGERS: @@ -157,7 +155,6 @@ class AdvancedKeyManagement(QtGui.QDialog): self.tr("There was an error accessing the file.\n" "Import canceled.")) - @QtCore.Slot() def _import_datamismatch(self): """ TRIGGERS: @@ -171,7 +168,6 @@ class AdvancedKeyManagement(QtGui.QDialog): "same address and fingerprint.\n" "Import canceled.")) - @QtCore.Slot() def _import_missingkey(self): """ TRIGGERS: @@ -185,7 +181,6 @@ class AdvancedKeyManagement(QtGui.QDialog): "key in the same file.\n" "Import canceled.")) - @QtCore.Slot() def _import_addressmismatch(self): """ TRIGGERS: @@ -212,7 +207,6 @@ class AdvancedKeyManagement(QtGui.QDialog): else: logger.debug('Export canceled by the user.') - @QtCore.Slot() def _keymanager_export_ok(self): """ TRIGGERS: @@ -225,7 +219,6 @@ class AdvancedKeyManagement(QtGui.QDialog): self.tr("The key pair was exported successfully.\n" "Please, store your private key in a safe place.")) - @QtCore.Slot() def _keymanager_export_error(self): """ TRIGGERS: @@ -238,7 +231,6 @@ class AdvancedKeyManagement(QtGui.QDialog): self.tr("There was an error accessing the file.\n" "Export canceled.")) - @QtCore.Slot() def _keymanager_keys_list(self, keys): """ TRIGGERS: diff --git a/src/leap/bitmask/gui/app.py b/src/leap/bitmask/gui/app.py index 75dc4a38..5fe031b1 100644 --- a/src/leap/bitmask/gui/app.py +++ b/src/leap/bitmask/gui/app.py @@ -50,7 +50,6 @@ class App(QtGui.QWidget): self._backend_checker.timeout.connect(self._check_backend_status) self._backend_checker.start(2000) - @QtCore.Slot() def _check_backend_status(self): """ TRIGGERS: diff --git a/src/leap/bitmask/gui/eip_preferenceswindow.py b/src/leap/bitmask/gui/eip_preferenceswindow.py index b5788f3c..8939c709 100644 --- a/src/leap/bitmask/gui/eip_preferenceswindow.py +++ b/src/leap/bitmask/gui/eip_preferenceswindow.py @@ -99,7 +99,6 @@ class EIPPreferencesWindow(QtGui.QDialog): self._backend.eip_get_initialized_providers(domains=providers) - @QtCore.Slot(list) def _load_providers_in_combo(self, providers): """ TRIGGERS: @@ -132,7 +131,6 @@ class EIPPreferencesWindow(QtGui.QDialog): domain, QtCore.Qt.MatchStartsWith) self.ui.cbProvidersGateway.setCurrentIndex(provider_index) - @QtCore.Slot(str) def _save_selected_gateway(self, provider): """ TRIGGERS: @@ -159,7 +157,6 @@ class EIPPreferencesWindow(QtGui.QDialog): "Gateway settings for provider '{0}' saved.").format(provider) self._set_providers_gateway_status(msg, success=True) - @QtCore.Slot(int) def _populate_gateways(self, domain_idx): """ TRIGGERS: @@ -182,7 +179,6 @@ class EIPPreferencesWindow(QtGui.QDialog): self._backend.eip_get_gateways_list(domain=domain) - @QtCore.Slot(list) def _update_gateways_list(self, gateways): """ TRIGGERS: @@ -223,7 +219,6 @@ class EIPPreferencesWindow(QtGui.QDialog): self.ui.cbGateways.setCurrentIndex(index) - @QtCore.Slot() def _gateways_list_error(self): """ TRIGGERS: @@ -238,7 +233,6 @@ class EIPPreferencesWindow(QtGui.QDialog): self.ui.pbSaveGateway.setEnabled(False) self.ui.cbGateways.setEnabled(False) - @QtCore.Slot() def _gateways_list_uninitialized(self): """ TRIGGERS: diff --git a/src/leap/bitmask/gui/eip_status.py b/src/leap/bitmask/gui/eip_status.py index 14ff5972..83490cac 100644 --- a/src/leap/bitmask/gui/eip_status.py +++ b/src/leap/bitmask/gui/eip_status.py @@ -137,7 +137,6 @@ class EIPStatusWidget(QtGui.QWidget): self.ui.btnUpload.clicked.connect(onclicked) self.ui.btnDownload.clicked.connect(onclicked) - @QtCore.Slot() def _on_VPN_status_clicked(self): """ TRIGGERS: @@ -295,7 +294,6 @@ class EIPStatusWidget(QtGui.QWidget): msg = self.tr("Encrypted Internet is starting") self.set_eip_message(msg) - @QtCore.Slot() def disable_eip_start(self): """ Triggered when a default provider_config has not been found. @@ -327,7 +325,6 @@ class EIPStatusWidget(QtGui.QWidget): self._eip_disabled_action) self._eip_status_menu.menuAction().setVisible(False) - @QtCore.Slot() def enable_eip_start(self): """ Triggered after a successful login. @@ -452,7 +449,6 @@ class EIPStatusWidget(QtGui.QWidget): self.user_cancelled = True self.hide_eip_cancel_button() - @QtCore.Slot(dict) def eip_stopped(self, restart=False, failed=False): """ TRIGGERS: @@ -500,7 +496,6 @@ class EIPStatusWidget(QtGui.QWidget): "unencrypted traffic.")) self.show_fw_down_button() - @QtCore.Slot(dict) def update_vpn_status(self, data=None): """ TRIGGERS: @@ -535,7 +530,6 @@ class EIPStatusWidget(QtGui.QWidget): self.ui.btnUpload.setText(upload_str) self.ui.btnDownload.setText(download_str) - @QtCore.Slot(dict) def update_vpn_state(self, vpn_state): """ TRIGGERS: @@ -674,7 +668,6 @@ class EIPStatusWidget(QtGui.QWidget): # Slots for signals # - @QtCore.Slot() def _on_eip_connection_aborted(self): """ TRIGGERS: @@ -773,7 +766,6 @@ class EIPStatusWidget(QtGui.QWidget): """ self.eip_conductor.reconnect_stop_signal() - @QtCore.Slot() def _on_eip_network_unreachable(self): """ TRIGGERS: diff --git a/src/leap/bitmask/gui/login.py b/src/leap/bitmask/gui/login.py index 8b764025..90df0b73 100644 --- a/src/leap/bitmask/gui/login.py +++ b/src/leap/bitmask/gui/login.py @@ -133,7 +133,6 @@ class LoginWidget(QtGui.QWidget, SignalTracker): self._set_logged_out() - @QtCore.Slot(int) def _remember_state_changed(self, state): """ Save the remember state in the LeapSettings. @@ -145,7 +144,6 @@ class LoginWidget(QtGui.QWidget, SignalTracker): # are: Checked, Unchecked and PartiallyChecked self._settings.set_remember(state == QtCore.Qt.Checked) - @QtCore.Slot(unicode) def _credentials_changed(self, text): """ TRIGGER: @@ -431,7 +429,6 @@ class LoginWidget(QtGui.QWidget, SignalTracker): self._backend.user_cancel_login() self._set_logged_out() - @QtCore.Slot() def _set_login_cancelled(self): """ TRIGGERS: @@ -443,7 +440,6 @@ class LoginWidget(QtGui.QWidget, SignalTracker): self.set_status(self.tr("Log in cancelled by the user.")) self.set_enabled(True) - @QtCore.Slot(dict) def _provider_setup_intermediate(self, data): """ TRIGGERS: @@ -457,7 +453,6 @@ class LoginWidget(QtGui.QWidget, SignalTracker): logger.error(data[ERROR_KEY]) self._login_problem_provider() - @QtCore.Slot() def _login_problem_provider(self): """ Warn the user about a problem with the provider during login. @@ -465,7 +460,6 @@ class LoginWidget(QtGui.QWidget, SignalTracker): self.set_status(self.tr("Unable to login: Problem with provider")) self.set_enabled(True) - @QtCore.Slot(dict) def _load_provider_config(self, data): """ TRIGGERS: @@ -485,7 +479,6 @@ class LoginWidget(QtGui.QWidget, SignalTracker): self._backend.provider_bootstrap(provider=self._provider) - @QtCore.Slot(dict) def _provider_config_loaded(self, data): """ TRIGGERS: @@ -528,7 +521,6 @@ class LoginWidget(QtGui.QWidget, SignalTracker): self.ui.logged_widget.show() self.ui.lblUser.setText(fullname) - @QtCore.Slot() def _authentication_finished(self): """ TRIGGERS: @@ -543,7 +535,6 @@ class LoginWidget(QtGui.QWidget, SignalTracker): if not flags.OFFLINE: self.login_finished.emit() - @QtCore.Slot(unicode) def _authentication_error(self, msg): """ TRIGGERS: @@ -575,7 +566,6 @@ class LoginWidget(QtGui.QWidget, SignalTracker): self.set_enabled(True) self.set_status("", error=False) - @QtCore.Slot() def do_logout(self): """ TRIGGER: @@ -613,7 +603,6 @@ class LoginWidget(QtGui.QWidget, SignalTracker): self.ui.btnLogout.setEnabled(True) self.ui.clblErrorMsg.hide() - @QtCore.Slot() def _logout_error(self): """ TRIGGER: @@ -624,7 +613,6 @@ class LoginWidget(QtGui.QWidget, SignalTracker): self._set_logging_out(False) self.set_status(self.tr("Something went wrong with the logout.")) - @QtCore.Slot() def _logout_ok(self): """ TRIGGER: diff --git a/src/leap/bitmask/gui/mail_status.py b/src/leap/bitmask/gui/mail_status.py index 92e1e4c4..bbfbafb5 100644 --- a/src/leap/bitmask/gui/mail_status.py +++ b/src/leap/bitmask/gui/mail_status.py @@ -184,7 +184,6 @@ class MailStatusWidget(QtGui.QWidget): leap_assert_type(action_mail_status, QtGui.QAction) self._action_mail_status = action_mail_status - @QtCore.Slot() def set_soledad_failed(self): """ TRIGGERS: @@ -195,7 +194,6 @@ class MailStatusWidget(QtGui.QWidget): msg = self.tr("There was an unexpected problem with Soledad.") self._set_mail_status(msg, ready=-1) - @QtCore.Slot() def set_soledad_invalid_auth_token(self): """ TRIGGERS: @@ -250,7 +248,6 @@ class MailStatusWidget(QtGui.QWidget): """ self._soledad_event.emit(req) - @QtCore.Slot(object) def _mail_handle_soledad_events_slot(self, req): """ TRIGGERS: @@ -285,7 +282,6 @@ class MailStatusWidget(QtGui.QWidget): """ self._keymanager_event.emit(req) - @QtCore.Slot(object) def _mail_handle_keymanager_events_slot(self, req): """ TRIGGERS: @@ -332,7 +328,6 @@ class MailStatusWidget(QtGui.QWidget): """ self._smtp_event.emit(req) - @QtCore.Slot(object) def _mail_handle_smtp_events_slot(self, req): """ TRIGGERS: @@ -367,7 +362,6 @@ class MailStatusWidget(QtGui.QWidget): """ self._imap_event.emit(req) - @QtCore.Slot(object) def _mail_handle_imap_events_slot(self, req): """ TRIGGERS: @@ -419,7 +413,6 @@ class MailStatusWidget(QtGui.QWidget): # XXX make the signal emit the label and state. - @QtCore.Slot() def mail_state_disconnected(self): """ Display the correct UI for the disconnected state. @@ -431,7 +424,6 @@ class MailStatusWidget(QtGui.QWidget): else: self._set_mail_status(self.tr("OFF"), -1) - @QtCore.Slot() def mail_state_connecting(self): """ Display the correct UI for the connecting state. @@ -440,21 +432,18 @@ class MailStatusWidget(QtGui.QWidget): self._started = True self._set_mail_status(self.tr("Starting..."), 1) - @QtCore.Slot() def mail_state_disconnecting(self): """ Display the correct UI for the connecting state. """ self._set_mail_status(self.tr("Disconnecting..."), 1) - @QtCore.Slot() def mail_state_connected(self): """ Display the correct UI for the connected state. """ self._set_mail_status(self.tr("ON"), 2) - @QtCore.Slot() def mail_state_disabled(self): """ Display the correct UI for the disabled state. @@ -464,7 +453,6 @@ class MailStatusWidget(QtGui.QWidget): self._service_name) self._set_mail_status(status, -1) - @QtCore.Slot() def soledad_invalid_auth_token(self): """ Display the correct UI for the invalid token state diff --git a/src/leap/bitmask/gui/mainwindow.py b/src/leap/bitmask/gui/mainwindow.py index a2244020..bbb43b94 100644 --- a/src/leap/bitmask/gui/mainwindow.py +++ b/src/leap/bitmask/gui/mainwindow.py @@ -515,7 +515,6 @@ class MainWindow(QtGui.QMainWindow, SignalTracker): return h return None - @QtCore.Slot() def _show_logger_window(self): """ TRIGGERS: @@ -532,7 +531,6 @@ class MainWindow(QtGui.QMainWindow, SignalTracker): lw = LoggerWindow(self, handler=leap_log_handler) lw.show() - @QtCore.Slot() def _show_AKM(self): """ TRIGGERS: @@ -552,7 +550,6 @@ class MainWindow(QtGui.QMainWindow, SignalTracker): self._backend, self._soledad_started) akm.show() - @QtCore.Slot() def _show_preferences(self): """ TRIGGERS: @@ -572,7 +569,6 @@ class MainWindow(QtGui.QMainWindow, SignalTracker): pref_win = PreferencesWindow(self, account, self.app) pref_win.show() - @QtCore.Slot(object, list) def _update_eip_enabled_status(self, account=None, services=None): """ TRIGGER: @@ -679,7 +675,6 @@ class MainWindow(QtGui.QMainWindow, SignalTracker): # so we must update it, otherwise we're in a deadlock. self._trying_to_start_eip = False - @QtCore.Slot() def _disable_eip_missing_helpers(self): """ TRIGGERS: @@ -702,7 +697,6 @@ class MainWindow(QtGui.QMainWindow, SignalTracker): """ self.new_updates.emit(req) - @QtCore.Slot(object) def _react_to_new_updates(self, req): """ TRIGGERS: @@ -718,7 +712,6 @@ class MainWindow(QtGui.QMainWindow, SignalTracker): self.ui.btnMore.setVisible(True) self._updates_content = req.content - @QtCore.Slot() def _updates_details(self): """ TRIGGERS: @@ -746,7 +739,6 @@ class MainWindow(QtGui.QMainWindow, SignalTracker): self.tr("Updates available"), msg) - @QtCore.Slot() def _finish_init(self): """ TRIGGERS: @@ -893,7 +885,6 @@ class MainWindow(QtGui.QMainWindow, SignalTracker): # we wait for the systray to be ready QtDelayedCall(1000, hello) - @QtCore.Slot(int) def _tray_activated(self, reason=None): """ TRIGGERS: @@ -912,7 +903,6 @@ class MainWindow(QtGui.QMainWindow, SignalTracker): # this works however. context_menu.exec_(self._systray.geometry().center()) - @QtCore.Slot() def _ensure_visible(self): """ TRIGGERS: @@ -931,7 +921,6 @@ class MainWindow(QtGui.QMainWindow, SignalTracker): self.activateWindow() self.raise_() - @QtCore.Slot() def _ensure_invisible(self): """ TRIGGERS: @@ -967,7 +956,6 @@ class MainWindow(QtGui.QMainWindow, SignalTracker): if state is not None: self.restoreState(state) - @QtCore.Slot() def _about(self): """ TRIGGERS: @@ -995,7 +983,6 @@ class MainWindow(QtGui.QMainWindow, SignalTracker): msg = msg.format(ver=VERSION, ver_hash=VERSION_HASH[:10], greet=greet) QtGui.QMessageBox.about(self, title, msg) - @QtCore.Slot() def _help(self): """ TRIGGERS: @@ -1097,7 +1084,6 @@ class MainWindow(QtGui.QMainWindow, SignalTracker): skip_first_run = self._settings.get_skip_first_run() return not (has_provider_on_disk and skip_first_run) - @QtCore.Slot() def _disconnect_login_wait(self): """ Disconnect the EIP finishing signal to the wait flag on the login @@ -1115,7 +1101,6 @@ class MainWindow(QtGui.QMainWindow, SignalTracker): # signal not connected pass - @QtCore.Slot(object) def _on_provider_changed(self, wizard=True): """ TRIGGERS: @@ -1173,7 +1158,6 @@ class MainWindow(QtGui.QMainWindow, SignalTracker): # if wizard, the widget restores itself self._providers.restore_previous_provider() - @QtCore.Slot() def _login(self): """ TRIGGERS: @@ -1201,7 +1185,6 @@ class MainWindow(QtGui.QMainWindow, SignalTracker): self._soledad_started = False - @QtCore.Slot() def _on_user_logged_in(self): """ TRIGGERS: @@ -1230,7 +1213,6 @@ class MainWindow(QtGui.QMainWindow, SignalTracker): if MX_SERVICE not in self._provider_details['services']: self._set_mx_visible(False) - @QtCore.Slot() def _on_user_logged_out(self): """ TRIGGER: @@ -1259,7 +1241,6 @@ class MainWindow(QtGui.QMainWindow, SignalTracker): self._maybe_start_eip() - @QtCore.Slot() def _get_provider_details(self, data): """ TRIGGERS: @@ -1273,7 +1254,6 @@ class MainWindow(QtGui.QMainWindow, SignalTracker): lang = QtCore.QLocale.system().name() self._backend.provider_get_details(domain=domain, lang=lang) - @QtCore.Slot() def _provider_get_details(self, details): """ Set the details for the just downloaded provider. @@ -1317,7 +1297,6 @@ class MainWindow(QtGui.QMainWindow, SignalTracker): return eip_enabled and eip_provided - @QtCore.Slot() def _maybe_run_soledad_setup_checks(self): """ TRIGGERS: @@ -1358,7 +1337,6 @@ class MainWindow(QtGui.QMainWindow, SignalTracker): ################################################################### # Service control methods: soledad - @QtCore.Slot() def _on_soledad_ready(self): """ TRIGGERS: @@ -1373,7 +1351,6 @@ class MainWindow(QtGui.QMainWindow, SignalTracker): ################################################################### # Service control methods: mail - @QtCore.Slot() def _start_mail_service(self): if self._provides_mx_and_enabled() or flags.OFFLINE: self._mail_conductor.start_mail_service(download_if_needed=True, @@ -1382,14 +1359,12 @@ class MainWindow(QtGui.QMainWindow, SignalTracker): ################################################################### # Service control methods: eip - @QtCore.Slot() def _disable_eip_start_action(self): """ Disable the EIP start action in the systray menu. """ self._action_eip_startstop.setEnabled(False) - @QtCore.Slot() def _enable_eip_start_action(self): """ Enable the EIP start action in the systray menu. @@ -1397,7 +1372,6 @@ class MainWindow(QtGui.QMainWindow, SignalTracker): self._action_eip_startstop.setEnabled(True) self._eip_status.enable_eip_start() - @QtCore.Slot() def _on_eip_connecting(self): """ TRIGGERS: @@ -1421,7 +1395,6 @@ class MainWindow(QtGui.QMainWindow, SignalTracker): eip_sigs.connection_aborted_signal.connect(slot) eip_sigs.connection_died_signal.connect(slot) - @QtCore.Slot() def _on_eip_connection_connected(self): """ TRIGGERS: @@ -1441,7 +1414,6 @@ class MainWindow(QtGui.QMainWindow, SignalTracker): # check for connectivity self._backend.eip_check_dns(domain=domain) - @QtCore.Slot() def _on_eip_connection_disconnected(self): """ TRIGGERS: @@ -1451,7 +1423,6 @@ class MainWindow(QtGui.QMainWindow, SignalTracker): """ self._already_started_eip = False - @QtCore.Slot() def _set_eip_provider(self, country_code=None): """ TRIGGERS: @@ -1463,7 +1434,6 @@ class MainWindow(QtGui.QMainWindow, SignalTracker): domain = self._providers.get_selected_provider() self._eip_status.set_provider(domain, country_code) - @QtCore.Slot() def _eip_dns_error(self): """ Trigger this if we don't have a working DNS resolver. @@ -1555,7 +1525,6 @@ class MainWindow(QtGui.QMainWindow, SignalTracker): # eip will not start, so we start soledad anyway self._maybe_run_soledad_setup_checks() - @QtCore.Slot(dict) def _finish_eip_bootstrap(self, data): """ TRIGGERS: @@ -1576,7 +1545,6 @@ class MainWindow(QtGui.QMainWindow, SignalTracker): # DO START EIP Connection! self._eip_conductor.do_connect() - @QtCore.Slot(dict) def _eip_intermediate_stage(self, data): # TODO missing param documentation """ @@ -1610,7 +1578,6 @@ class MainWindow(QtGui.QMainWindow, SignalTracker): locks.raise_window_ack() self.raise_window.emit() - @QtCore.Slot() def _do_raise_mainwindow(self): """ TRIGGERS: @@ -1713,7 +1680,6 @@ class MainWindow(QtGui.QMainWindow, SignalTracker): logger.debug("Killing backend") psutil.Process(self._backend_pid).kill() - @QtCore.Slot() def _remove_service(self, service): """ Remove the given service from the waiting list and check if we have @@ -1730,7 +1696,6 @@ class MainWindow(QtGui.QMainWindow, SignalTracker): logger.debug("All services stopped.") self.all_services_stopped.emit() - @QtCore.Slot() def final_quit(self): """ Final steps to quit the app, starting from here we don't care about diff --git a/src/leap/bitmask/gui/passwordwindow.py b/src/leap/bitmask/gui/passwordwindow.py index f7ef079e..88565829 100644 --- a/src/leap/bitmask/gui/passwordwindow.py +++ b/src/leap/bitmask/gui/passwordwindow.py @@ -149,7 +149,6 @@ class PasswordWindow(QtGui.QDialog, Flashable): self._soledad_ready = False sig.soledad_bootstrap_finished.connect(self._on_soledad_ready) - @QtCore.Slot() def _change_password(self): """ TRIGGERS: @@ -194,7 +193,6 @@ class PasswordWindow(QtGui.QDialog, Flashable): PasswordWindow._current_window = None self.deleteLater() - @QtCore.Slot() def _srp_change_password_ok(self): """ TRIGGERS: @@ -210,7 +208,6 @@ class PasswordWindow(QtGui.QDialog, Flashable): else: self._change_password_success() - @QtCore.Slot() def _srp_password_change_error(self): """ TRIGGERS: @@ -223,7 +220,6 @@ class PasswordWindow(QtGui.QDialog, Flashable): self._enable_password_widgets(True) self.flash_error(msg) - @QtCore.Slot() def _srp_password_change_badpw(self): """ TRIGGERS: @@ -237,7 +233,6 @@ class PasswordWindow(QtGui.QDialog, Flashable): self.flash_error(msg) self.ui.current_password_lineedit.setFocus() - @QtCore.Slot() def _soledad_change_password_ok(self): """ TRIGGERS: @@ -248,7 +243,6 @@ class PasswordWindow(QtGui.QDialog, Flashable): logger.debug("Soledad password changed successfully.") self._change_password_success() - @QtCore.Slot(unicode) def _soledad_change_password_problem(self, msg): """ TRIGGERS: @@ -263,7 +257,6 @@ class PasswordWindow(QtGui.QDialog, Flashable): self._enable_password_widgets(True) self.flash_error(msg) - @QtCore.Slot() def _on_soledad_ready(self): """ TRIGGERS: diff --git a/src/leap/bitmask/gui/preferences_account_page.py b/src/leap/bitmask/gui/preferences_account_page.py index ec6a7716..cab90eec 100644 --- a/src/leap/bitmask/gui/preferences_account_page.py +++ b/src/leap/bitmask/gui/preferences_account_page.py @@ -63,7 +63,6 @@ class PreferencesAccountPage(QtGui.QWidget): self.ui.change_password_label.setVisible(True) self.ui.change_password_button.setEnabled(False) - @QtCore.Slot(str, int) def _service_selection_changed(self, service, state): """ TRIGGERS: @@ -94,7 +93,6 @@ class PreferencesAccountPage(QtGui.QWidget): # emit signal alerting change self.app.service_selection_changed.emit(self.account, services) - @QtCore.Slot(str) def _load_services(self, services): """ TRIGGERS: @@ -133,7 +131,6 @@ class PreferencesAccountPage(QtGui.QWidget): logger.error("Something went wrong while trying to " "load service %s" % (service,)) - @QtCore.Slot() def _show_change_password(self): change_password_window = PasswordWindow(self, self.account, self.app) change_password_window.show() diff --git a/src/leap/bitmask/gui/preferences_vpn_page.py b/src/leap/bitmask/gui/preferences_vpn_page.py index 901116b4..5b5c9604 100644 --- a/src/leap/bitmask/gui/preferences_vpn_page.py +++ b/src/leap/bitmask/gui/preferences_vpn_page.py @@ -64,7 +64,6 @@ class PreferencesVpnPage(QtGui.QWidget, Flashable): # Trigger update self.app.backend.eip_get_gateways_list(domain=self.account.domain) - @QtCore.Slot(str) def _save_selected_gateway(self, index): """ TRIGGERS: @@ -86,7 +85,6 @@ class PreferencesVpnPage(QtGui.QWidget, Flashable): provider=self.account.domain, gateway=gateway) - @QtCore.Slot(list) def _update_gateways_list(self, gateways): """ TRIGGERS: @@ -116,7 +114,6 @@ class PreferencesVpnPage(QtGui.QWidget, Flashable): index = idx + 1 self.ui.gateways_list.setCurrentRow(index) - @QtCore.Slot() def _gateways_list_error(self): """ TRIGGERS: @@ -129,7 +126,6 @@ class PreferencesVpnPage(QtGui.QWidget, Flashable): self.tr("Error loading configuration file.")) self.ui.gateways_list.setEnabled(False) - @QtCore.Slot() def _gateways_list_uninitialized(self): """ TRIGGERS: diff --git a/src/leap/bitmask/gui/preferenceswindow.py b/src/leap/bitmask/gui/preferenceswindow.py index f1252301..daad08b0 100644 --- a/src/leap/bitmask/gui/preferenceswindow.py +++ b/src/leap/bitmask/gui/preferenceswindow.py @@ -152,7 +152,6 @@ class PreferencesWindow(QtGui.QDialog): self._email_page.deleteLater() self.deleteLater() - @QtCore.Slot() def _change_page(self, current, previous): """ TRIGGERS: @@ -170,7 +169,6 @@ class PreferencesWindow(QtGui.QDialog): current = previous self.ui.pages_widget.setCurrentIndex(self.ui.nav_widget.row(current)) - @QtCore.Slot(object, list) def _update_icons(self, account, services): """ TRIGGERS: diff --git a/src/leap/bitmask/gui/providers.py b/src/leap/bitmask/gui/providers.py index 6954411f..4a6f961a 100644 --- a/src/leap/bitmask/gui/providers.py +++ b/src/leap/bitmask/gui/providers.py @@ -98,7 +98,6 @@ class Providers(QtCore.QObject): self._combo.setCurrentIndex(prev_provider) self._combo.blockSignals(False) - @QtCore.Slot(int) def _current_provider_changed(self, idx): """ TRIGGERS: diff --git a/src/leap/bitmask/gui/wizard.py b/src/leap/bitmask/gui/wizard.py index a30723f2..5da021d1 100644 --- a/src/leap/bitmask/gui/wizard.py +++ b/src/leap/bitmask/gui/wizard.py @@ -134,7 +134,6 @@ class Wizard(QtGui.QWizard, SignalTracker): self._provider_setup_ok = False self.finished.connect(self._wizard_finished) - @QtCore.Slot() def _wizard_finished(self): """ TRIGGERS: @@ -245,7 +244,6 @@ class Wizard(QtGui.QWizard, SignalTracker): def get_services(self): return self._selected_services - @QtCore.Slot(unicode) def _enable_check(self, reset=True): """ TRIGGERS: @@ -335,7 +333,6 @@ class Wizard(QtGui.QWizard, SignalTracker): # register button self.ui.btnRegister.setVisible(visible) - @QtCore.Slot() def _registration_finished(self): """ TRIGGERS: @@ -361,7 +358,6 @@ class Wizard(QtGui.QWizard, SignalTracker): self.page(self.REGISTER_USER_PAGE).set_completed() self.button(QtGui.QWizard.BackButton).setEnabled(False) - @QtCore.Slot() def _registration_failed(self): """ TRIGGERS: @@ -375,7 +371,6 @@ class Wizard(QtGui.QWizard, SignalTracker): self._set_register_status(error_msg, error=True) self.ui.btnRegister.setEnabled(True) - @QtCore.Slot() def _registration_taken(self): """ TRIGGERS: @@ -422,7 +417,6 @@ class Wizard(QtGui.QWizard, SignalTracker): self.ui.lblCheckCaFpr.setPixmap(None) self.ui.lblCheckApiCert.setPixmap(None) - @QtCore.Slot() def _check_provider(self): """ TRIGGERS: @@ -456,7 +450,6 @@ class Wizard(QtGui.QWizard, SignalTracker): self.ui.lblNameResolution.setPixmap(self.QUESTION_ICON) self._backend.provider_setup(provider=self._domain) - @QtCore.Slot(bool) def _skip_provider_checks(self, skip): """ TRIGGERS: @@ -500,7 +493,6 @@ class Wizard(QtGui.QWizard, SignalTracker): label.setPixmap(self.ERROR_ICON) logger.error(error) - @QtCore.Slot(dict) def _name_resolution(self, data): """ TRIGGERS: @@ -520,7 +512,6 @@ class Wizard(QtGui.QWizard, SignalTracker): self.ui.btnCheck.setEnabled(not passed) self.ui.lnProvider.setEnabled(not passed) - @QtCore.Slot(dict) def _https_connection(self, data): """ TRIGGERS: @@ -540,7 +531,6 @@ class Wizard(QtGui.QWizard, SignalTracker): self.ui.btnCheck.setEnabled(not passed) self.ui.lnProvider.setEnabled(not passed) - @QtCore.Slot(dict) def _download_provider_info(self, data): """ TRIGGERS: @@ -576,7 +566,6 @@ class Wizard(QtGui.QWizard, SignalTracker): else: self.ui.cbProviders.setEnabled(True) - @QtCore.Slot() def _provider_get_details(self, details): """ Set the details for the just downloaded provider. @@ -586,7 +575,6 @@ class Wizard(QtGui.QWizard, SignalTracker): """ self._provider_details = details - @QtCore.Slot(dict) def _download_ca_cert(self, data): """ TRIGGERS: @@ -599,7 +587,6 @@ class Wizard(QtGui.QWizard, SignalTracker): if passed: self.ui.lblCheckCaFpr.setPixmap(self.QUESTION_ICON) - @QtCore.Slot(dict) def _check_ca_fingerprint(self, data): """ TRIGGERS: @@ -612,7 +599,6 @@ class Wizard(QtGui.QWizard, SignalTracker): if passed: self.ui.lblCheckApiCert.setPixmap(self.QUESTION_ICON) - @QtCore.Slot(dict) def _check_api_certificate(self, data): """ TRIGGERS: @@ -626,7 +612,6 @@ class Wizard(QtGui.QWizard, SignalTracker): True, self.SETUP_PROVIDER_PAGE) self._provider_setup_ok = True - @QtCore.Slot(str, int) def _service_selection_changed(self, service, state): """ TRIGGERS: @@ -675,7 +660,6 @@ class Wizard(QtGui.QWizard, SignalTracker): self.tr("Something went wrong while trying to " "load service %s" % (service,))) - @QtCore.Slot(int) def _current_id_changed(self, pageId): """ TRIGGERS: diff --git a/src/leap/bitmask/services/eip/conductor.py b/src/leap/bitmask/services/eip/conductor.py index 01dd7449..3fc88724 100644 --- a/src/leap/bitmask/services/eip/conductor.py +++ b/src/leap/bitmask/services/eip/conductor.py @@ -130,7 +130,6 @@ class EIPConductor(object): """ self.qtsigs.do_disconnect_signal.emit() - @QtCore.Slot() def _start_eip(self): """ Start EIP. @@ -174,7 +173,6 @@ class EIPConductor(object): self.qtsigs.disconnecting_signal.disconnect() self.qtsigs.disconnecting_signal.connect(do_stop) - @QtCore.Slot() def _stop_eip(self, restart=False, failed=False): """ TRIGGERS: @@ -244,7 +242,6 @@ class EIPConductor(object): if restart: QtDelayedCall(2000, self.reconnect_stop_signal) - @QtCore.Slot() def _do_eip_restart(self): """ TRIGGERS: @@ -266,7 +263,6 @@ class EIPConductor(object): self.qtsigs.disconnecting_signal.connect(do_stop) self.qtsigs.do_disconnect_signal.emit() - @QtCore.Slot() def _do_eip_failed(self): """ Stop EIP after a failure to start. @@ -278,7 +274,6 @@ class EIPConductor(object): self.qtsigs.connection_died_signal.emit() QtDelayedCall(1000, self._eip_status.eip_failed_to_connect) - @QtCore.Slot(int) def _eip_finished(self, exitCode): """ TRIGGERS: -- cgit v1.2.3 From 8f85d7ecdd60ca6a3fe8d1945bfd5253ef649252 Mon Sep 17 00:00:00 2001 From: Ivan Alejandro Date: Thu, 29 Jan 2015 13:53:43 -0300 Subject: Use the right provider to log in. FIX: Login attempt is made against previously selected provider. Closes #6654. Remove unused comments as well. --- src/leap/bitmask/gui/mainwindow.py | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) (limited to 'src/leap/bitmask') diff --git a/src/leap/bitmask/gui/mainwindow.py b/src/leap/bitmask/gui/mainwindow.py index bbb43b94..f5983abb 100644 --- a/src/leap/bitmask/gui/mainwindow.py +++ b/src/leap/bitmask/gui/mainwindow.py @@ -471,18 +471,13 @@ class MainWindow(QtGui.QMainWindow, SignalTracker): Load the resulting information of the user going through the Wizard. Trigger the login sequence if needed. """ - # providers = self._settings.get_configured_providers() - # self._providers.set_providers(providers) - - # provider = self._providers.get_selected_provider() - # self._login_widget.set_provider(provider) - possible_username = self._wizard.get_username() possible_password = self._wizard.get_password() # select the configured provider in the combo box domain = self._wizard.get_domain() self._providers.select_provider_by_name(domain) + self._login_widget.set_provider(domain) self._login_widget.set_remember(self._wizard.get_remember()) self._enabled_services = list(self._wizard.get_services()) -- cgit v1.2.3 From d06b2c765b046465eb1ec10bdd3bcb1efe05d59c Mon Sep 17 00:00:00 2001 From: Kali Kaneko Date: Mon, 19 Jan 2015 14:34:22 -0400 Subject: fix path for gnome polkit agent (Closes: #6652) fix also a typo when logging errors --- src/leap/bitmask/util/polkit_agent.py | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) (limited to 'src/leap/bitmask') diff --git a/src/leap/bitmask/util/polkit_agent.py b/src/leap/bitmask/util/polkit_agent.py index 78eeaa55..e512bffa 100644 --- a/src/leap/bitmask/util/polkit_agent.py +++ b/src/leap/bitmask/util/polkit_agent.py @@ -23,22 +23,18 @@ import subprocess import daemon +# TODO --- logger won't work when daemoninzed. Log to syslog instead? logger = logging.getLogger(__name__) -AUTH_FILE = "polkit-%s-authentication-agent-1" -BASE_PATH_GNO = "/usr/lib/policykit-1-gnome/" -BASE_PATH_KDE = "/usr/lib/kde4/libexec/" -GNO_PATH = BASE_PATH_GNO + AUTH_FILE % ("gnome",) -KDE_PATH = BASE_PATH_KDE + AUTH_FILE % ("kde",) - POLKIT_PATHS = ( '/usr/lib/lxpolkit/lxpolkit', - '/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1', + '/usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1', '/usr/lib/mate-polkit/polkit-mate-authentication-agent-1', '/usr/lib/kde4/libexec/polkit-kde-authentication-agent-1', ) +# TODO write tests for this piece. def _get_polkit_agent(): """ Return a valid polkit agent to use. @@ -62,7 +58,7 @@ def _launch_agent(): polkit_agent = _get_polkit_agent() if polkit_agent is None: - logger.erro("No usable polkit was found.") + logger.error("No usable polkit was found.") return logger.debug('Launching polkit auth agent') @@ -81,4 +77,6 @@ def launch(): _launch_agent() if __name__ == "__main__": + # TODO pass a --nodaemon flag so that we can launch this in the foreground + # and debug this module, getting errors to stderr. launch() -- cgit v1.2.3