From 6941519e60fcd071b2a3370a188a393de6717c91 Mon Sep 17 00:00:00 2001 From: Ivan Alejandro Date: Wed, 14 Jan 2015 15:24:50 -0300 Subject: Pin/unpin dependencies. Unpin python-dateutil since is no longer a problem. Pin python-daemon since latest version (2.0.3 as today) fails to get installed wich causes problems with the bundle and the bootstrapper script. --- pkg/requirements.pip | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/pkg/requirements.pip b/pkg/requirements.pip index 8ce1793e..37cc18a3 100644 --- a/pkg/requirements.pip +++ b/pkg/requirements.pip @@ -10,15 +10,14 @@ requests>=1.1.0 srp>=1.0.2 pyopenssl -# This won't be needed after we refactor leap.common.events -# to use zmq. -python-dateutil==1.4 # See https://leap.se/code/issues/6099 +# This won't be needed after we refactor leap.common.events to use zmq. +python-dateutil psutil ipaddr twisted -python-daemon # this should not be needed for Windows. +python-daemon==1.6.1 # this should not be needed for Windows. keyring zope.proxy -- cgit v1.2.3 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(-) 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(-) 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(-) 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(-) 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(-) 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(-) 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(-) 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 From f02b7a8ffe44a351bdb1ac17452703fa50ef44e2 Mon Sep 17 00:00:00 2001 From: Ivan Alejandro Date: Wed, 4 Feb 2015 14:38:34 -0300 Subject: Update translated strings. Update source strings with latest UI changes. --- data/translations/es.qm | Bin 12111 -> 2417 bytes data/translations/es.ts | 1667 +++++++++++++++++++++++++++++++++++++++-------- data/translations/vi.qm | Bin 32946 -> 14837 bytes data/translations/vi.ts | 1443 +++++++++++++++++++++++++--------------- data/ts/en_US.ts | 425 ++++++------ 5 files changed, 2510 insertions(+), 1025 deletions(-) diff --git a/data/translations/es.qm b/data/translations/es.qm index d75644ba..596af5b3 100644 Binary files a/data/translations/es.qm and b/data/translations/es.qm differ diff --git a/data/translations/es.ts b/data/translations/es.ts index f6102bfa..02f9083a 100644 --- a/data/translations/es.ts +++ b/data/translations/es.ts @@ -1,496 +1,1591 @@ - + + + AdvancedKeyManagement + + + Advanced Key Management + + + + + My key pair + + + + + User: + + + + + user_name@provider + + + + + Key ID: + + + + + key ID + + + + + Key fingerprint: + + + + + fingerprint + + + + + Export current key pair + + + + + Import custom key pair + + + + + Stored public keys + + + + + Email + + + + + Key ID + + + + + Open keys file + + + + + Input/Output error + + + + + There was an error accessing the file. +Import canceled. + + + + + Data mismatch + + + + + The public and private key should have the same address and fingerprint. +Import canceled. + + + + + Missing key + + + + + You need to provide the public AND private key in the same file. +Import canceled. + + + + + Address mismatch + + + + + The identity for the key needs to be the same as your user address. +Import canceled. + + + + + Import Successful + + + + + The key pair was imported successfully. + + + + + Save keys file + + + + + Export Successful + + + + + The key pair was exported successfully. +Please, store your private key in a safe place. + + + + + There was an error accessing the file. +Export canceled. + + + + + The provider that you are using does not support {0}. + + + + + To use this, you need to enable/start {0}. + + + + + <span style='color:#0000FF;'>NOTE</span>: + + + + + Are you sure that you want to replace the current key pair with the imported? + + + + + App + + + Application error + + + + + There is a problem contacting the backend, please restart Bitmask. + + + + + ComplainDialog + + + Ok, thanks + + + + + EIPPreferencesWindow + + + Automatic + + + + + Gateway settings for provider '{0}' saved. + + + + + There was a problem with configuration files. + + + + + (uninitialized) + + + + + This is an uninitialized provider, please log in first. + + + + + EIPStatus + + + Form + + + + + Turn On + + + + + ... + + + + + Traffic is being routed in the clear + + + + + 0.0 KB/s + + + + + Turn Off + + + + + Cancel + + + + + EIPStatusWidget + + + Turn ON + + + + + Authenticating... + + + + + Retrieving configuration... + + + + + Waiting to start... + + + + + Assigning IP + + + + + Reconnecting... + + + + + Unable to start VPN, it's already running. + + + + + disabled + + + + + {0}: OFF + + + + + You must login to use {0} + + + + + {0}: Starting... + + + + + {0}: ON + + + + + Encrypted Internet is starting + + + + + Retry + + + + + Traffic is being routed in the clear. + + + + + Network is unreachable. + + + + + Error connecting + + + + + Error connecting. + + + + + Bitmask is blocking unencrypted traffic. + + + + + Routing traffic through: <b>{0}</b> + + + + + Could not load {0} configuration. + + + + + Another openvpn instance is already running, and could not be stopped. + + + + + Another openvpn instance is already running, and could not be stopped because it was not launched by Bitmask. Please stop it and try again. + + + + + We could not find openvpn binary. + + + + + We could not find <b>pkexec</b> in your system. + + + + + {0} cannot be started because the tuntap extension is not installed properly in your system. + + + + + Network is unreachable + + + + + <font color=red>Disabled: missing helper files</font> + + + + + VPN Launcher error. See the logs for more info. + + + + + Encrypted Internet failed to start + + + + + We could not find any authentication agent in your system.<br/>Make sure you have <b>polkit-gnome-authentication-agent-1</b> running and try again. + + + + + Form + + + Form + + + + + ... + + + + + Logout + + + + + LoggerWindow + + + Logs + Logs + + + + Debug + + + + + Info + Info + + + + Warning + Warning + + + + Error + Error + + + + Critical + Critical + + + + Save to file + Guardar como + + + + Save As + Guardar como + + + + Filter by: + + + + + Case Insensitive + + + + + Send to Pastebin.com + + + + + Sending to pastebin... + + + + + Your pastebin link <a href='{0}'>{0}</a> + + + + + Pastebin OK + + + + + Sending logs to Pastebin failed! + + + + + Pastebin Error + + + + + Maximum posts per day reached + + + + + LoginWidget + + + Form + + + + + Remember username and password + + + + + <b>Username:</b> + + + + + <b>Password:</b> + + + + + Log In + + + + + Cancel + + + + + ... + + + + + Logout + + + + + Please select a valid provider + + + + + Please provide a valid username + + + + + Please provide a valid password + + + + + Logging in... + + + + + Logging out... + + + + + MailStatusWidget + + + Form + + + + + You must login to use encrypted email. + + + + + Email + + + + + There was an unexpected problem with Soledad. + + + + + OFF + + + + + Mail is OFF + + + + + Mail is starting + + + + + ON + + + + + Mail is ON + + + + + Mail is disabled + + + + + Starting... + + + + + Soledad has started... + + + + + Soledad is starting, please wait... + + + + + Found key! Starting mail... + + + + + Finished generating key! + + + + + Starting mail... + + + + + SMTP failed to start, check the logs. + + + + + About to start, please wait... + + + + + Disabled + + + + + {0}: OFF + + + + + You must be logged in to use {0}. + + + + + Generating new key, this may take a few minutes. + + + + + {0} Unread Emails in your Inbox + + + + + 1 Unread Email in your Inbox + + + + + Disconnecting... + + + + + Invalid auth token, try logging in again. + + + + + Initial sync in progress, please wait... + + + MainWindow - - Encryption is OFF - Cifrado APAGADO + + There are new updates available, please restart. + + + + + More... + + + + + Help + Ayuda + + + + &Quit + &Salir - - Stop - Detener + + &Help + &Ayuda - - Hide - Ocultar + + &Wizard + &Asistente - - Show - Mostrar + + The following components will be updated: +%s + - - About LEAP - Acerca de LEAP + + Updates available + - - LEAP is a non-profit dedicated to giving all internet users access to secure communication. Our focus is on adapting encryption technology to make it easy to use and widely available. <a href="https://leap.se">More about LEAP</a> - LEAP es una empresa sin fines de lucro dedicada a proveer comunicaciones seguras a todos sus usuarios. Nuestro objetivo es la adatación de tecnologías de cifrado para que sean fáciles de utilizar, y estén ampliamente disponibles. <a href="https://leap.se">Más acerca de LEAP</a> + + Show Main Window + - - Could not load provider configuration - No fue posible cargar la configuración del proveedor + + Starting... + - - Please select a valid provider - Por favor, selectione un proveedor válido + + Not supported + - - Please provide a valid username - Por favor, provea un nombre de usuario válido + + Disabled + - - Please provide a valid Password - Por favor, provea una contraseña válida + + Bitmask + - - Logging in... - Ingresando... + + About &Bitmask + - - Stop EIP - Detener EIP + + Mail is OFF + - - EIP has stopped - EIP se ha detenido + + The Bitmask app is ready to update, please restart the application. + - - Start EIP - Comenzar EIP + + About Bitmask - %s + - - Checking configuration, please wait... - Corroborando la configuración, por favor espere... + + Unable to login: Problem with provider + - - %s does not support EIP - %s no soporta EIP + + Log in cancelled by the user. + - - Encryption is ON - Cifrado ENCENDIDO + + There was a problem with the provider + - - VPN: Authenticating... - VPN: Autorizando... + + Something went wrong with the logout. + - - VPN: Retrieving configuration... - VPN: Obteniendo configuración... + + Unable to connect: Problem with provider + - - VPN: Connected! - VPN: Conectado! + + &Bitmask + - - Signing out... - Saliendo... + + Show &Log + - - LEAP - LEAP + + Create a new account... + - - Remember - Recordar + + File + - - Login - Acceder + + Advanced Key Management + - - <b>Provider:</b> - <b>Proveedor:</b> + + OFF + - - <b>Password:</b> - <b>Contraseña:</b> + + Version: <b>%s</b> (%s)<br><br>%sBitmask is the Desktop client application for the LEAP platform, supporting encrypted internet proxy, secure email, and secure chat (coming soon).<br><br>LEAP is a non-profit dedicated to giving all internet users access to secure communication. Our focus is on adapting encryption technology to make it easy to use and widely available. <br><br><a href='https://leap.se'>More about LEAP</a> + - - <b>User:</b> - <b>Usuario:</b> + + Bitmask Help + - - 0.0 Kb - 0.0 Kb + + The current client version is not supported by this provider.<br>Please update to latest version.<br><br>You can get the latest version from <a href='{0}'>{1}</a> + - - Disconnected - Desconectado + + Update Needed + - - &Session - &Sesión + + This provider is not compatible with the client.<br><br>Error: API version incompatible. + - - Help - Ayuda + + Incompatible Provider + - - S&ettings - C&onfiguración + + Application error + - - &Sign out - &Desconectarse + + You are trying to do an operation that requires logging in first. + - - &Quit - &Salir + + Unknown error. + - - About &LEAP - Acerca de &LEAP + + There was a server problem with authentication. + - - &Help - &Ayuda + + Could not establish a connection. + - - &Wizard - &Asistente + + Invalid username or password. + + + + + Hello! + + + + + Bitmask has started in the tray. + + + + + Succeeded + + + + + The server at {0} can't be found, because the DNS lookup failed. DNS is the network service that translates a website's name to its Internet address. Either your computer is having trouble connecting to the network, or you are missing some helper files that are needed to securely use DNS while {1} is active. To install these helper files, quit this application and start it again. + + + + + Connection Error + + + + + Quitting... + + + + + Bitmask is quitting, please wait. + + + + + bitmask.net/help + + + + + Email quick reference + + + + + For Thunderbird, you can use the Bitmask extension. Search for "Bitmask" in the add-on manager or download it from <a href='{0}'>addons.mozilla.org</a>. + + + + + Alternately, you can manually configure your mail client to use Bitmask Email with these options: + + + + + IMAP: localhost, port {0} + + + + + SMTP: localhost, port {0} + + + + + Username: your full email address + + + + + Password: any non-empty text + + + + + <p><strong>{0}</strong></p><p>{1}</p><p>{2}<ul><li>&nbsp;{3}</li><li>&nbsp;{4}</li><li>&nbsp;{5}</li><li>&nbsp;{6}</li></ul></p> + + + + + Stop services + + + + + Do you want to stop all services? + + + + + In order to change the provider, the running services needs to be stopped. + - - VPN: Waiting to start... - VPN: Esperando para comenzar... + + Disabled: missing helper files + - - Automatically login - Ingresar automáticamente + + Pr&eferences... + - Wizard + PasswordChange - - Passwords don't match - Las contraseñas no son iguales + + Change Password + - - Password too short - Contraseña muy corta + + Username: + - - Password too easy - Contraseña demsiado simple + + New password: + - - Password equal to username - Contraseña es igual al usuario + + Re-enter new password: + - - Starting registration... - Comenzando el registro... + + Current password: + - - <font color='green'><b>User registration OK</b></font> - <font color='green'><b>Registro realizado con éxito!</b></font> + + <flash_label> + - - Unknown error - Error desconocido + + Close + - - Unable to load provider configuration - No fue posible carga la configuración del proveedor + + OK + + + + PasswordWindow - - LEAP First run - Primera ejecución de LEAP + + Please log in to change your password. + - - Welcome - Bienvenido + + Please wait for data storage to be ready. + - - This is the LEAP Client first run wizard - Este es el asistente de primera ejecución de LEAP + + Changing password... + - - Log In with my credentials - Acceder con mis credenciales + + Password changed successfully. + - - <html><head/><body><p>Now we will guide you through some configuration that is needed before you can connect for the first time.</p><p>If you ever need to modify these options again, you can find the wizard in the <span style=" font-style:italic;">'Settings'</span> menu from the main window.</p><p>Do you want to <span style=" font-weight:600;">sign up</span> for a new account, or <span style=" font-weight:600;">log in</span> with an already existing username?</p></body></html> - <html><head/><body><p>Ahora le guiaremos para configurar lo necesario para que ud. pueda ingresar por primera vez.</p><p>Si necesita alguna vez modificar estas opciones, podrá ejecutar este asistente desde el menú <span style=" font-style:italic;">'Configuración'</span> desde la ventana principal.</p><p>Desea <span style=" font-weight:600;">crear</span> una nueva cuenta, o <span style=" font-weight:600;">acceder</span> con un usuario existente?</p></body></html> + + Password is empty. + - - Sign up for a new account - Crear una nueva cuenta + + There was a problem changing the password. + - - Provider selection - Selección de proveedor + + You did not enter a correct current password. + + + + Preferences - - Please enter the domain of the provider you want to user for your connection - Por favor, ingrese el dominio del proveedor que desea utilizar + + Preferences + - - https:// - https:// + + user@example.org + - - Checking provider - Corroborando proveedor + + Close + + + + PreferencesAccountPage - - Download provider information - Descargando información del proveedor + + Form + - - HTTPS Connection - Conexión HTTPS + + Services + - - Name resolution - Resolución de nombre + + <provider_services_label> + - - Check - Corroborar + + Password + - - Provider Information - Información de proveedor + + Change Password + - - Services offered by this provider - Servicios ofrecidos por este proveedor + + <change_password_label> + - - <b>Enrollment policy:</b> - <b>Política de ingreso:</b> + + You must be logged in to change your password. + + + + PreferencesEmailPage - - URL - URL + + Form + + + + + PreferencesVpnPage + + + Form + - - Name - Nombre + + <flash_label> + - - policy - política + + Default VPN Gateway: + + + + + You must reconnect for changes to take effect. + - + + Automatic + + + + + Error loading configuration file. + + + + + This is an uninitialized provider, please log in first. + + + + + PreferencesWindow + + + Account + + + + + VPN + + + + + Email + + + + + ProviderBootstrapper + + + Provider certificate could not be verified + + + + + Provider does not support HTTPS + + + + + Providers + + + Other... + + + + + Wizard + + + Log In with my credentials + Acceder con mis credenciales + + + + Sign up for a new account + Crear una nueva cuenta + + + + Check + Corroborar + + + + https:// + https:// + + + + Checking for a valid provider + + + + + Can we reach this provider? + + + + + Name + Nombre + + + Desc Desc - - Provider setup - Configuración de proveedor + + <b>Services offered:</b> + + + + + services + - - Gathering configuration options for this provider - Obteniendo opciones de configuración para este proveedor + + <b>Enrollment policy:</b> + <b>Política de ingreso:</b> - - Download CA Certificate - Descargando certificado de autoridad + + policy + política - - Check CA Certificate Fingerprint - Corroborando el fingerprint del certificado + + <b>URL:</b> + - - Check API Certificate - Corroborando certificado de API + + URL + URL - - Register new user - Registrar un nuevo usuario + + <b>Description:</b> + + + + + Provider setup + Configuración de proveedor - - Register a new user with provider - Registrar un nuevo usuario con el proveedor + + Setting up provider + - - <b>User:</b> - <b>Usuario:</b> + + Register new user + Registrar un nuevo usuario - + <b>Password:</b> <b>Contraseña:</b> - + <b>Re-enter password:</b> <b>Re-introduzca contraseña:</b> - + Register Registrar - - EIP Setup - Configuración de EIP + + Remember my username and password + + + + + Service selection + + + + + &Next > + + + + + Connect + + + + + Starting registration... + Comenzando el registro... + + + + User %s successfully registered. + + + + + <font color='red'><b>Non-existent provider</b></font> + + + + + <font color='red'><b>%s</b></font> + + + + + Unable to load provider configuration + No fue posible carga la configuración del proveedor + + + + <font color='red'><b>Not a valid provider</b></font> + + + + + Something went wrong while trying to load service %s + + + + + Can we establish a secure connection? + + + + + <b>Username:</b> + + + + + Configure or select a provider + + + + + Configure new provider: + + + + + Use existing one: + + + + + Something has gone wrong. Please try again. + + + + + The requested username is taken, choose another. + + + + + Services by {0} + + + + + Register a new user with {0} + + + + + Bitmask Provider Setup + + + + + Welcome to Bitmask + + + + + Choose a provider + - - Setting up Encrypted Internet - Configurando Internet Cifrado + + Getting provider information. + - - Checking EIP - Corroborando EIP + + About this provider + - - Download EIP configuration - Descargando configuración de EIP + + Bitmask is attempting to establish a secure connection with this provider for the first time. + - - Download client certificate - Descargando certificado de cliente + + Fetching provider credentials. + - - Congratulations! - Felicitaciones! + + Do we trust these credentials? + - - You have successfully configured the LEAP client. - Ha configurado correctamente el cliente de LEAP + + Connecting to provider. + - __impl + msg - - Unknown user - Usuario desconocido + + TAP Driver + - - The server did not send the salt parameter - El servidor no ha envíado el parámetro salt + + Encrypted Internet uses VPN, which needs a TAP device installed and none has been found. This will ask for administrative privileges. + - - The server did not send the B parameter - El servidor no ha mandado el parámetro B + + TUN Driver + - - The data sent from the server had errors - Los datos enviados por el servidor contanían errores + + Encrypted Internet uses VPN, which needs a kernel extension for a TUN device installed, and none has been found. This will ask for administrative privileges. + - - Could not connect to the server - No se pudo conectar al servidor + + Problem installing files + Hubo un problema instalando los archivos - - Wrong password - Password incorrecto + + Some of the files could not be copied. + Algunos de los archivos no pudieron ser copiados - - Unknown error (%s) - Error desconocido (%s) + + Bitmask needs to install the necessary drivers for Encrypted Internet to work. Would you like to proceed? + - - Problem getting data from server - Problemas obteniendo datos desde el servidor + + Missing helper files + - - Bad data from server - Datos incorrectos desde el servidor + + Missing Bitmask helpers + + + + msgstr - - Auth verification failed - Verificación de autenticación falló + + Some essential helper files are missing in your system. + - - Succeeded - Exitoso! + + Reinstall your debian packages, or make sure you place them by hand. + + + + + self._eip_status + + + {0} is restarting + + + + + {0} could not be launched because you did not authenticate properly. + + + + + {0} finished in an unexpected manner! + \ No newline at end of file diff --git a/data/translations/vi.qm b/data/translations/vi.qm index 819654d6..5ccbdc7c 100644 Binary files a/data/translations/vi.qm and b/data/translations/vi.qm differ diff --git a/data/translations/vi.ts b/data/translations/vi.ts index 4d6d343b..6da859e1 100644 --- a/data/translations/vi.ts +++ b/data/translations/vi.ts @@ -1,84 +1,221 @@ - EIPPreferences + AdvancedKeyManagement - - EIP Preferences - Tùy biến EIP + + Advanced Key Management + - - Select gateway for provider - Chọn gateway cho nhà cung cấp + + My key pair + - - &Select provider: - &Chọn nhà cung cấp: + + User: + - - <Select provider> - <Chọn nhà cung cấp> + + user_name@provider + - - Save this provider settings - Chọn thiết lập cho nhà cung cấp này + + Key ID: + - - < Providers Gateway Status > - <Trạng thái gateway của nhà cung cấp> + + key ID + - - Select gateway: - Chọn gateway: + + Key fingerprint: + - - Automatic - Tự động + + fingerprint + + + + + Export current key pair + + + + + Import custom key pair + + + + + Stored public keys + + + + + Email + + + + + Key ID + + + + + Open keys file + + + + + Input/Output error + + + + + There was an error accessing the file. +Import canceled. + + + + + Data mismatch + + + + + The public and private key should have the same address and fingerprint. +Import canceled. + + + + + Missing key + + + + + You need to provide the public AND private key in the same file. +Import canceled. + + + + + Address mismatch + + + + + The identity for the key needs to be the same as your user address. +Import canceled. + + + + + Import Successful + + + + + The key pair was imported successfully. + + + + + Save keys file + + + + + Export Successful + + + + + The key pair was exported successfully. +Please, store your private key in a safe place. + + + + + There was an error accessing the file. +Export canceled. + + + + + The provider that you are using does not support {0}. + + + + + To use this, you need to enable/start {0}. + + + + + <span style='color:#0000FF;'>NOTE</span>: + - - Automatic EIP start - Tự động khởi động EIP + + Are you sure that you want to replace the current key pair with the imported? + + + + App - - <font color='green'><b>Automatic EIP start saved!</b></font> - <font color='green'><b>Đã lưu lại phần tự động khởi động EIP!</b></font> + + Application error + - - Save auto start setting - Lưu lại thiết lập về tự động khởi động + + There is a problem contacting the backend, please restart Bitmask. + + + + ComplainDialog - - Enable Automatic start of EIP - Tự động cho phép khởi động của EIP + + Ok, thanks + EIPPreferencesWindow - + Automatic Tự động - + Gateway settings for provider '{0}' saved. Thiết lập gateway dành cho nhà cung cấp '{0}' đã được lưu lại. - + There was a problem with configuration files. Xảy ra lỗi với tập tin cấu hình. + + + (uninitialized) + + + + + This is an uninitialized provider, please log in first. + + EIPStatus @@ -88,107 +225,210 @@ Đơn mẫu - + Turn On Mở lên - + ... ... - + Traffic is being routed in the clear Lưu lượng mạng đang được điều hướng rỗng - + 0.0 KB/s 0.0 KB/giây - - - EIPStatusWidget - - - All services are OFF - Tất cả các dịch vụ hiện đang bị TẮT - - - - Encrypted Internet: {0} - Internet đã được mã hóa: {0} - - - You must login to use Encrypted Internet - Bạn phải đăng nhập để sử dụng phần mã hóa internet + + Turn Off + - - Turn OFF - Bật TẮT + + Cancel + + + + EIPStatusWidget - + Turn ON Bật LÊN - - Traffic is being routed in the clear - Lưu lượng mạng đang được điều hướng rỗng - - - + Authenticating... Đang xác nhận... - + Retrieving configuration... Đang đọc lại cấu hình... - + Waiting to start... Đang đợi để bắt đầu... - + Assigning IP Đang gán IP - + Reconnecting... Đang thực hiện việc kết nối lại... - + Unable to start VPN, it's already running. Không thể khởi động VPN, phần VPN này đã được chạy. - - Encrypted Internet: OFF - Chức năng mã hóa internet: TẮT + + disabled + + + + + {0}: OFF + + + + + You must login to use {0} + + + + + {0}: Starting... + + + + + {0}: ON + + + + + Encrypted Internet is starting + + + + + Retry + - - Encrypted Internet: Starting... - Mã hóa internet: Đang bắt đầu... + + Traffic is being routed in the clear. + - - Encrypted Internet: ON - Mã hóa internet: MỞ + + Network is unreachable. + + + + + Error connecting + + + + + Error connecting. + + + + + Bitmask is blocking unencrypted traffic. + + + + + Routing traffic through: <b>{0}</b> + + + + + Could not load {0} configuration. + + + + + Another openvpn instance is already running, and could not be stopped. + + + + + Another openvpn instance is already running, and could not be stopped because it was not launched by Bitmask. Please stop it and try again. + + + + + We could not find openvpn binary. + + + + + We could not find <b>pkexec</b> in your system. + + + + + {0} cannot be started because the tuntap extension is not installed properly in your system. + + + + + Network is unreachable + - - Route traffic through: {0} - Điều hướng lưu lượng mạng qua: {0} + + <font color=red>Disabled: missing helper files</font> + + + + + VPN Launcher error. See the logs for more info. + + + + + Encrypted Internet failed to start + + + + + We could not find any authentication agent in your system.<br/>Make sure you have <b>polkit-gnome-authentication-agent-1</b> running and try again. + + + + + Form + + + Form + + + + + ... + + + + + Logout + @@ -229,7 +469,7 @@ Lưu vào tập tin - + Save As Lưu dưới dạng @@ -243,6 +483,41 @@ Case Insensitive Phân biệt chữ hoa chữ thường + + + Send to Pastebin.com + + + + + Sending to pastebin... + + + + + Your pastebin link <a href='{0}'>{0}</a> + + + + + Pastebin OK + + + + + Sending logs to Pastebin failed! + + + + + Pastebin Error + + + + + Maximum posts per day reached + + LoginWidget @@ -252,74 +527,64 @@ Biểu mẫu - - <b>Provider:</b> - <b>Nhà cung cấp:</b> - - - + Remember username and password Ghi nhớ tên người dùng và mật khẩu - + <b>Username:</b> <b>Tên người dùng:</b> - + <b>Password:</b> <b>Mật khẩu:</b> - + Log In Đăng nhập - - Other... - Các phần khác... - - - + Cancel Hủy bỏ - + ... ... - + Logout Đăng xuất - + Please select a valid provider Vui lòng chọn một nhà cung cấp hợp lệ - + Please provide a valid username Vui lòng cung cấp một tên người dùng hợp lệ - + Please provide a valid password Xin vui lòng cung cấp một mật khẩu hợp lệ - + Logging in... Đang đăng nhập... - - Loggin out... - Đang Đăng xuất... + + Logging out... + @@ -330,364 +595,525 @@ Biểu mẫu - + You must login to use encrypted email. Bạn phải đăng nhập để sử dụng email được mã hóa. - + Email Email - - All services are OFF - Tất cả các dịch vụ hiện đang bị TẮT - - - + There was an unexpected problem with Soledad. Xảy ra lỗi với phần Soledad. - + OFF TẮT - + Mail is OFF Tắt tính năng mail - - You must be logged in to use encrypted email. - Bạn phải đăng nhập để sử dụng dịch vụ email mã hóa. - - - - Starting.. - Đang khởi chạy... - - - + Mail is starting Mail đang được bắt đầu - + ON MỞ - + Mail is ON Mail hiện đang MỞ - + Mail is disabled Mail hiện đang bị vô hiệu hóa - + Starting... Đang khởi chạy... - + Soledad has started... Soledad đã được khởi chạy... - + Soledad is starting, please wait... Soledad hiện đang khởi động, xin vui lòng chờ trong giây lát.. - - Looking for key for this user - Đang tìm kiếm phần khóa dữ liệu đối với người dùng này - - - + Found key! Starting mail... Đã tìm thấy khóa! Đang khởi động mail... - - Generating new key, please wait... - Đang tạo các khóa mới, xin vui lòng đợi trong giây lát... - - - + Finished generating key! Đã hoàn tất thao tác tạo các khóa dữ liệu! - + Starting mail... Đang khởi động mail... - - SMTP has started... - Dịch vụ SMTP đã được bắt đầu... - - - + SMTP failed to start, check the logs. Không thể khởi động dịch vụ SMTP, kiểm tra nhật trình. - - Failed - Gặp lỗi + + About to start, please wait... + Chuẩn bị khởi chạy, xin vui lòng đợi trong giây lát... - - IMAP has started... - Dịch vụ IMAP đã được bắt đầu... + + Disabled + Vô Hiệu Hóa - - IMAP failed to start, check the logs. - Không thể khởi động dịch vụ IMAP, kiểm tra phần nhật trình. + + {0}: OFF + - - %s Unread Emails - %s email chưa đọc + + You must be logged in to use {0}. + - - About to start, please wait... - Chuẩn bị khởi chạy, xin vui lòng đợi trong giây lát... + + Generating new key, this may take a few minutes. + - - Disabled - Vô Hiệu Hóa + + {0} Unread Emails in your Inbox + + + + + 1 Unread Email in your Inbox + + + + + Disconnecting... + + + + + Invalid auth token, try logging in again. + + + + + Initial sync in progress, please wait... + MainWindow - + There are new updates available, please restart. Hiện có một phiên bản mới vừa được phát hành, xin vui lòng khởi động lại. - + More... Thêm... - + Help Trợ giúp - + &Quit &Thoát - + &Help &Trợ giúp - + &Wizard &Phần hướng dẫn - - Hide Main Window - Ẩn cửa sổ chính - - - + The following components will be updated: %s Các thành phần sau đây sẽ được cập nhật: %s - + Updates available Đã có phiên bản mới - + Show Main Window Hiện cửa sổ chính - - We could not find any authentication agent in your system.<br/>Make sure you have <b>polkit-gnome-authentication-agent-1</b> running and try again. - Chúng tôi không tìm thấy phần trợ lý xác nhận nào trong hệ thống của bạn.<br/>Hãy chắc chắn rằng bạn có<b>phần polkit-gnome-authentication-agent-1</b> đang được chạy và hãy thử lại lần nữa. - - - - We could not find <b>pkexec</b> in your system. - Chúng tôi không tìm thấy <b>pkexec</b> trong hệ thống của bạn. - - - - We could not find openvpn binary. - Không tìm thấy phần nhị phân của openconnect. - - - + Starting... Đang khởi chạy... - + Not supported Không được hỗ trợ - + Disabled Vô Hiệu Hóa - - - Could not load Encrypted Internet Configuration. - Không thể nạp mã hóa cấu hình của Internet. - - - - Encrypted Internet could not be launched because you did not authenticate properly. - Không thể chạy được phần mã hóa Internet vì bạn đã không được xác thực đúng cách. - - - - Encrypted Internet finished in an unexpected manner! - Tiến trình mã hóa Internet đã được hoàn tất một cách bất ngờ! - Bitmask Bitmask - + About &Bitmask Dịch bởi Vietnamesel10n - + Mail is OFF Tắt tính năng mail - + The Bitmask app is ready to update, please restart the application. Bitmask hiện đã sẵn sàng để cài đặt bản cập nhật mới, vui lòng khởi động khởi động lại ứng dụng. - + About Bitmask - %s Thông tin về Bitmask - %s - - Version: <b>%s</b><br><br>Bitmask is the Desktop client application for the LEAP platform, supporting encrypted internet proxy, secure email, and secure chat (coming soon).<br><br>LEAP is a non-profit dedicated to giving all internet users access to secure communication. Our focus is on adapting encryption technology to make it easy to use and widely available. <br><br><a href='https://leap.se'>More about LEAP</a> - Phiên bản: <b>%s</b><br><br>Bitmask là một chương trình trên nền desktop dựa trên nền tảng LEAP, hỗ trợ proxy trên internet được mã hóa, bảo mật email, và bảo mật các nội dung chat (tính năng này hiện đang được phát triển và sẽ được phát hành trong phiên bản sắp tới).<br><br>LEAP là một nền tảng phi lợi nhuận nhằm cung cấp cho người dùng tính năng bảo mật khi giao tiếp trên các hệ thống internet. Mục tiêu của chúng tôi là đưa các kỹ thuật mã hóa đến với người dùng theo cách dễ sử dụng nhất. <br><br><a href='https://leap.se'>Thông tin thêm về LEAP</a> - - - + Unable to login: Problem with provider Không thể đăng nhập: Xảy ra lỗi với nhà cung cấp - + Log in cancelled by the user. Người dùng đã hủy bỏ thao tác đăng nhập. - - Encrypted Internet cannot be started because the tuntap extension is not installed properly in your system. - Không thể khởi động phần mã hóa dành cho Internet vì phần tiện ích tuntap vẫn chưa được cài đặt trên hệ thống của bạn. - - - - Another openvpn instance is already running, and could not be stopped. - Một tiến trình khác thuộc openvpn hiện đang được thực thi, và không thể bị dừng lại - - - - Another openvpn instance is already running, and could not be stopped because it was not launched by Bitmask. Please stop it and try again. - Một tiếng trình khác thuộc openvpn hiện đang được thực thi và không thể được dừng lại vì đây là tiến trình được sử dụng bởi Bitmask. Xin vui lòng thử thao tác dừng lại và thử lại - - - + There was a problem with the provider Xảy ra lỗi với nhà cung cấp - + Something went wrong with the logout. Xảy ra lỗi với thao tác đăng xuất. - + Unable to connect: Problem with provider Không thể kết nối: Xảy ra lỗi với nhà cung cấp - - Encrypted Internet - Internet đã được mã hóa - - - - Login - Đăng nhập - - - + &Bitmask &Bitmask - - Preferences... - Tùy Biến... - - - + Show &Log Hiển thị &nhật trình - + Create a new account... Tạo một tài khoản mới... - + File Tập tin - - Encrypted Internet: OFF - Chức năng mã hóa internet: TẮT + + Advanced Key Management + - - Network is unreachable - Không thể truy cập mạng + + OFF + + + + + Version: <b>%s</b> (%s)<br><br>%sBitmask is the Desktop client application for the LEAP platform, supporting encrypted internet proxy, secure email, and secure chat (coming soon).<br><br>LEAP is a non-profit dedicated to giving all internet users access to secure communication. Our focus is on adapting encryption technology to make it easy to use and widely available. <br><br><a href='https://leap.se'>More about LEAP</a> + + + + + Bitmask Help + + + + + The current client version is not supported by this provider.<br>Please update to latest version.<br><br>You can get the latest version from <a href='{0}'>{1}</a> + + + + + Update Needed + + + + + This provider is not compatible with the client.<br><br>Error: API version incompatible. + + + + + Incompatible Provider + + + + + Application error + + + + + You are trying to do an operation that requires logging in first. + + + + + Unknown error. + + + + + There was a server problem with authentication. + + + + + Could not establish a connection. + + + + + Invalid username or password. + + + + + Hello! + + + + + Bitmask has started in the tray. + + + + + Succeeded + + + + + The server at {0} can't be found, because the DNS lookup failed. DNS is the network service that translates a website's name to its Internet address. Either your computer is having trouble connecting to the network, or you are missing some helper files that are needed to securely use DNS while {1} is active. To install these helper files, quit this application and start it again. + + + + + Connection Error + + + + + Quitting... + + + + + Bitmask is quitting, please wait. + + + + + bitmask.net/help + + + + + Email quick reference + + + + + For Thunderbird, you can use the Bitmask extension. Search for "Bitmask" in the add-on manager or download it from <a href='{0}'>addons.mozilla.org</a>. + + + + + Alternately, you can manually configure your mail client to use Bitmask Email with these options: + + + + + IMAP: localhost, port {0} + + + + + SMTP: localhost, port {0} + + + + + Username: your full email address + + + + + Password: any non-empty text + + + + + <p><strong>{0}</strong></p><p>{1}</p><p>{2}<ul><li>&nbsp;{3}</li><li>&nbsp;{4}</li><li>&nbsp;{5}</li><li>&nbsp;{6}</li></ul></p> + + + + + Stop services + + + + + Do you want to stop all services? + + + + + In order to change the provider, the running services needs to be stopped. + + + + + Disabled: missing helper files + + + + + Pr&eferences... + + + + + PasswordChange + + + Change Password + + + + + Username: + + + + + New password: + + + + + Re-enter new password: + + + + + Current password: + + + + + <flash_label> + + + + + Close + + + + + OK + + + + + PasswordWindow + + + Please log in to change your password. + + + + + Please wait for data storage to be ready. + + + + + Changing password... + + + + + Password changed successfully. + + + + + Password is empty. + + + + + There was a problem changing the password. + - - EIP has stopped - EIP đã dừng lại + + You did not enter a correct current password. + @@ -698,159 +1124,158 @@ Tùy Biến - - Password Change - Thay đổi mật khẩu + + user@example.org + - - &Current password: - &Mật khẩu hiện tại: + + Close + + + + PreferencesAccountPage - - &New password: - &Mật khẩu mới: + + Form + - - &Re-enter new password: - &Nhập lại mật khẩu: + + Services + - - Change - Thay đổi + + <provider_services_label> + - - <Password change status> - <Trạng thái thay đổi mật khẩu> + + Password + - - Enabled services - Các dịch vụ đã được cho phép + + Change Password + - - Save this provider settings - Lưu lại thiết lập dành cho nhà cung cấp này + + <change_password_label> + - - Services - Dịch vụ + + You must be logged in to change your password. + + + + PreferencesEmailPage - - <Select provider> - <Chọn nhà cung cấp> + + Form + + + + PreferencesVpnPage - - Select provider: - Chọn nhà cung cấp: + + Form + - - < Providers Services Status > - <Trạng thái dịch vụ từ nhà cung cấp> + + <flash_label> + + + + + Default VPN Gateway: + - - - PreferencesWindow - + + You must reconnect for changes to take effect. + + + + Automatic - Tự động + - - Changing password... - Đang thay đổi mật khẩu... + + Error loading configuration file. + - - Password changed successfully. - Đã thay đổi thành công mật khẩu. + + This is an uninitialized provider, please log in first. + + + + PreferencesWindow - - There was a problem changing the password. - Xảy ra lỗi với tiến trình thay đổi mật khẩu. + + Account + - - You did not enter a correct current password. - Bjan chưa điền vào chính xác mật khẩu hiện tại. + + VPN + - - Services settings for provider '{0}' saved. - Đã lưu lại thông tin về thiết lập của dịch vụ từ nhà cung cấp '{0}' + + Email + ProviderBootstrapper - + Provider certificate could not be verified Không thể xác nhận nơi cung cấp chứng chỉ - + Provider does not support HTTPS Nhà cung cấp không hỗ trợ HTTPS - SRPAuth + Providers - - Succeeded - Đã thành công + + Other... + Wizard - - - Welcome - Chào mừng bạn - Log In with my credentials Đăng nhập với thông tin đăng nhập của tôi - - - <html><head/><body><p>Now we will guide you through some configuration that is needed before you can connect for the first time.</p><p>If you ever need to modify these options again, you can find the wizard in the <span style=" font-style:italic;">'Settings'</span> menu from the main window.</p><p>Do you want to <span style=" font-weight:600;">sign up</span> for a new account, or <span style=" font-weight:600;">log in</span> with an already existing username?</p></body></html> - <html><head></head><body><p>Bây giờ chúng tôi sẽ hướng dẫn bạn thông qua một số cấu hình đó là cần thiết trước khi bạn có thể kết nối lần đầu tiên.</p><p>Nếu bạn đã bao giờ cần phải sửa đổi các tùy chọn này một lần nữa, bạn có thể tìm thấy thuật sĩ trong trình đơn <span style=" font-style:italic;">'Cài đặt'</span> từ cửa sổ chính của.</p><p>Bạn có muốn <span style=" font-weight:600;">đăng ký</span> cho một tài khoản mới, hoặc <span style=" font-weight:600;">đăng nhập</span> với tên người dùng đã tồn tại?</p></body></html> - Sign up for a new account Đăng ký một tài khoản mới - - Provider selection - Chọn nhà cung cấp - - - - Please enter the domain of the provider you want to use for your connection - Vui lòng nhập tên miền của các nhà cung cấp bạn muốn sử dụng cho kết nối của bạn - - - + Check Kiểm tra - + https:// https:// @@ -860,358 +1285,308 @@ Đang kiểm tra tính hợp lệ của nhà cung cấp - - Getting provider information - Đang tiếp nhận thông tin từ nhà cung cấp - - - + Can we reach this provider? Bạn có muốn liên lạc với nhà cung cấp hay không? - - Provider Information - Thông tin về nhà cung cấp - - - - Description of services offered by this provider - Mô tả về dịch vụ được cung cấp bởi nhà cung cấp này\ - - - + Name Tên - + Desc Mô tả - + <b>Services offered:</b> <b>Dịch vụ cung cấp:</b> - + services dịch vụ - + <b>Enrollment policy:</b> <b>Chính sách đăng ký:</b> - + policy chính sách - + <b>URL:</b> <b>Đường dẫn liên kết :</b> - + URL Đường dẫn liên kết - + <b>Description:</b> <b>Mô tả:</b> - + Provider setup Thiết lập nhà cung cấp - - Gathering configuration options for this provider - Đang thu thập các tùy chọn cấu hình cho nhà cung cấp này - - - - We are downloading some bits that we need to establish a secure connection with the provider for the first time. - Chúng tôi đang tải xuống một số bit dữ liệu mà chúng ta cần phải thiết lập một kết nối an toàn với các nhà cung cấp cho lần khởi chạy đầu tiên. - - - + Setting up provider Đang thiết lập nhà cung cấp - - Getting info from the Certificate Authority - Đang nhận thông tin từ bộ phận xác nhận chứng chỉ an toàn - - - - Do we trust this Certificate Authority? - Bạn có tin tưởng vào bộ phân xác nhận chứng chỉ an toàn này không? - - - - Establishing a trust relationship with this provider - Đang thiết lập một mối quan hệ tin tưởng dạng dữ liệu với nhà cung cấp này - - - + Register new user Đăng ký người dùng mới - - Register a new user with provider - Đăng ký một người dùng mới với nhà cung cấp - - - + <b>Password:</b> <b>Mật khẩu:</b> - + <b>Re-enter password:</b> <b>Nhập lại mật khẩu:</b> - + Register Đăng ký - + Remember my username and password Ghi nhớ tên người dùng và mật khẩu - + Service selection Lựa chọn dịch vụ - - Please select the services you would like to have - Vui lòng chọn dịch vụ bạn muốn sử dụng - - - + &Next > &Tiếp theo > - + Connect Kết nối - + Starting registration... Đang bắt đầu đăng ký... - + User %s successfully registered. Người dùng %s đã đăng ký thành công. - - Unknown error - Lỗi không rõ nguyên nhân - - - + <font color='red'><b>Non-existent provider</b></font> <font color='red'><b>Nhà cung cấp không tồn tại</b></font> - + <font color='red'><b>%s</b></font> <font color='red'><b>%s</b></font> - + Unable to load provider configuration Không thể tải cấu hình của nhà cung cấp. - + <font color='red'><b>Not a valid provider</b></font> <font color='red'><b>Không phải là một nhà cung cấp hợp lệ</b></font> - - Services by %s - Dịch vụ của %s - - - + Something went wrong while trying to load service %s Xảy ra lỗi khi cố tải dịch vụ %s - - - Gathering configuration options for %s - Đang thu thập các tùy chọn cấu hình cho nhà cung cấp %s - - - - Description of services offered by %s - Mô tả về dịch vụ được cung cấp bởi nhà cung cấp %s - - - - Register a new user with %s - Đăng ký một người dùng mới với %s - - - - Bitmask first run - Bitmask được ưu tiên chạy trước - - - - This is the Bitmask first run wizard - Đây là phần hướng dẫn khởi chạy Bitmask - Can we establish a secure connection? Liệu chúng ta có thể thiết lập một kết nối an toàn không? - + <b>Username:</b> <b>Tên tài khoản:</b> - + Configure or select a provider Cấu hình hoặc lựa chọn một nhà cung cấp - + Configure new provider: Cấu hình một nhà cung cấp mới: - + Use existing one: Sử dụng phần đã tồn tại: - - - __impl - - The server did not send the salt parameter - Các máy chủ đã không gửi tham số salt + + Something has gone wrong. Please try again. + - - The server did not send the B parameter - Các máy chủ đã không gửi tham số B + + The requested username is taken, choose another. + - - The data sent from the server had errors - Dữ liệu được gửi từ các máy chủ chứa lỗi + + Services by {0} + - - Could not connect to the server - Không thể kết nối tới máy chủ + + Register a new user with {0} + - - Unknown error (%s) - Lỗi không rõ nguyên nhân (%s) + + Bitmask Provider Setup + - - Problem getting data from server - Xảy ra lỗi khi nhận dữ liệu từ máy chủ + + Welcome to Bitmask + - - Bad data from server - Dữ liệu không chuẩn từ máy chủ + + Choose a provider + - - Auth verification failed - Xác nhận thất bại + + Getting provider information. + - - Session cookie verification failed - Xác nhận phiên làm việc cookie gặp lỗi + + About this provider + - - There was a problem with authentication - Xảy ra lỗi với tiến trình xác nhận + + Bitmask is attempting to establish a secure connection with this provider for the first time. + - - Invalid username or password. - Tên tài khoản hoặc mật khẩu không đúng. + + Fetching provider credentials. + + + + + Do we trust these credentials? + - - - kls - - No gateway was found! - Không tìm thấ gateway nào hết! + + Connecting to provider. + msg - - Missing up/down scripts - Thiếu phần mã lên/xuống - - - + TAP Driver Trình điều khiển TAP - + Encrypted Internet uses VPN, which needs a TAP device installed and none has been found. This will ask for administrative privileges. Internet được mã hóa sử dụng VPN, cần một thiết bị TAP được cài đặt và hiện không tìm thấy đối tượng nào về phần này. Tiến trình này yêu cầu quyền quản trị. - + TUN Driver Trình điều khiển TUN - + Encrypted Internet uses VPN, which needs a kernel extension for a TUN device installed, and none has been found. This will ask for administrative privileges. Internet được mã hóa sử dụng VPN, cần một thiết bị TUN được cài đặt và hiện không tìm thấy đối tượng nào về phần này. Tiến trình này yêu cầu quyền quản trị. - + Problem installing files Xảy ra lỗi khi đang thực hiện thao tác cài đặt tập tin - + Some of the files could not be copied. Một số tập tin không thể được sao chép. - + Bitmask needs to install the necessary drivers for Encrypted Internet to work. Would you like to proceed? Bitmask cần cài đặt một vài driver thiết yếu để tiến trình mã hóa Internet hoạt động. Bạn có muốn tiếp tục hay không? + + + Missing helper files + + + + + Missing Bitmask helpers + + + + + msgstr + + + Some essential helper files are missing in your system. + + + + + Reinstall your debian packages, or make sure you place them by hand. + + + + + self._eip_status + + + {0} is restarting + + + + + {0} could not be launched because you did not authenticate properly. + + + + + {0} finished in an unexpected manner! + + \ No newline at end of file diff --git a/data/ts/en_US.ts b/data/ts/en_US.ts index 8b457988..fcbe3554 100644 --- a/data/ts/en_US.ts +++ b/data/ts/en_US.ts @@ -73,77 +73,77 @@ - + Input/Output error - + There was an error accessing the file. Import canceled. - + Data mismatch - + The public and private key should have the same address and fingerprint. Import canceled. - + Missing key - + You need to provide the public AND private key in the same file. Import canceled. - + Address mismatch - + The identity for the key needs to be the same as your user address. Import canceled. - + Import Successful - + The key pair was imported successfully. - + Save keys file - + Export Successful - + The key pair was exported successfully. Please, store your private key in a safe place. - + There was an error accessing the file. Export canceled. @@ -185,7 +185,7 @@ Export canceled. ComplainDialog - + Ok, thanks @@ -198,22 +198,22 @@ Export canceled. - + Gateway settings for provider '{0}' saved. - + There was a problem with configuration files. - + (uninitialized) - + This is an uninitialized provider, please log in first. @@ -259,157 +259,157 @@ Export canceled. EIPStatusWidget - + Turn ON - + Authenticating... - + Retrieving configuration... - + Waiting to start... - + Assigning IP - + Reconnecting... - + Unable to start VPN, it's already running. - + disabled - + {0}: OFF - + You must login to use {0} - + {0}: Starting... - + {0}: ON - + Encrypted Internet is starting - + Retry - + Traffic is being routed in the clear. - + Network is unreachable. - + Error connecting - + Error connecting. - + Bitmask is blocking unencrypted traffic. - + Routing traffic through: <b>{0}</b> - + Could not load {0} configuration. - + Another openvpn instance is already running, and could not be stopped. - + Another openvpn instance is already running, and could not be stopped because it was not launched by Bitmask. Please stop it and try again. - + We could not find openvpn binary. - + We could not find <b>pkexec</b> in your system. - + {0} cannot be started because the tuntap extension is not installed properly in your system. - + Network is unreachable - + <font color=red>Disabled: missing helper files</font> - + VPN Launcher error. See the logs for more info. - + Encrypted Internet failed to start - + We could not find any authentication agent in your system.<br/>Make sure you have <b>polkit-gnome-authentication-agent-1</b> running and try again. @@ -516,7 +516,7 @@ Export canceled. - Maximum posts per day reached + Maximum amount of submissions reached for today. @@ -528,65 +528,110 @@ Export canceled. - + Remember username and password - + <b>Username:</b> - + <b>Password:</b> - + Log In - + Cancel - + ... - + Logout - + Please select a valid provider - + Please provide a valid username - + Please provide a valid password - + Logging in... - + Logging out... + + + Waiting... + + + + + Log in cancelled by the user. + + + + + Unable to login: Problem with provider + + + + + Succeeded + + + + + Something went wrong with the logout. + + + + + Unknown error. + + + + + There was a server problem with authentication. + + + + + Could not establish a connection. + + + + + Invalid username or password. + + MailStatusWidget @@ -606,82 +651,82 @@ Export canceled. - + There was an unexpected problem with Soledad. - + OFF - + Mail is OFF - + Mail is starting - + ON - + Mail is ON - + Mail is disabled - + Starting... - + Soledad has started... - + Soledad is starting, please wait... - + Found key! Starting mail... - + Finished generating key! - + Starting mail... - + SMTP failed to start, check the logs. - + About to start, please wait... - + Disabled @@ -691,37 +736,37 @@ Export canceled. - + You must be logged in to use {0}. - + Generating new key, this may take a few minutes. - + {0} Unread Emails in your Inbox - + 1 Unread Email in your Inbox - + Disconnecting... - + Invalid auth token, try logging in again. - + Initial sync in progress, please wait... @@ -739,7 +784,7 @@ Export canceled. - + Help @@ -759,33 +804,33 @@ Export canceled. - + The following components will be updated: %s - + Updates available - + Show Main Window - + Starting... - + Not supported - + Disabled @@ -800,42 +845,27 @@ Export canceled. - + Mail is OFF - + The Bitmask app is ready to update, please restart the application. - + About Bitmask - %s - - Unable to login: Problem with provider - - - - - Log in cancelled by the user. - - - - + There was a problem with the provider - - Something went wrong with the logout. - - - - + Unable to connect: Problem with provider @@ -855,7 +885,7 @@ Export canceled. - + File @@ -865,167 +895,137 @@ Export canceled. - + OFF - - Version: <b>%s</b> (%s)<br><br>%sBitmask is the Desktop client application for the LEAP platform, supporting encrypted internet proxy, secure email, and secure chat (coming soon).<br><br>LEAP is a non-profit dedicated to giving all internet users access to secure communication. Our focus is on adapting encryption technology to make it easy to use and widely available. <br><br><a href='https://leap.se'>More about LEAP</a> - - - - + Bitmask Help - + The current client version is not supported by this provider.<br>Please update to latest version.<br><br>You can get the latest version from <a href='{0}'>{1}</a> - + Update Needed - + This provider is not compatible with the client.<br><br>Error: API version incompatible. - + Incompatible Provider - + Application error - + You are trying to do an operation that requires logging in first. - - Unknown error. - - - - - There was a server problem with authentication. - - - - - Could not establish a connection. - - - - - Invalid username or password. - - - - + Hello! - + Bitmask has started in the tray. - - Succeeded - - - - + The server at {0} can't be found, because the DNS lookup failed. DNS is the network service that translates a website's name to its Internet address. Either your computer is having trouble connecting to the network, or you are missing some helper files that are needed to securely use DNS while {1} is active. To install these helper files, quit this application and start it again. - + Connection Error - + Quitting... - + Bitmask is quitting, please wait. - + bitmask.net/help - + Email quick reference - + For Thunderbird, you can use the Bitmask extension. Search for "Bitmask" in the add-on manager or download it from <a href='{0}'>addons.mozilla.org</a>. - + Alternately, you can manually configure your mail client to use Bitmask Email with these options: - + IMAP: localhost, port {0} - + SMTP: localhost, port {0} - + Username: your full email address - + Password: any non-empty text - + <p><strong>{0}</strong></p><p>{1}</p><p>{2}<ul><li>&nbsp;{3}</li><li>&nbsp;{4}</li><li>&nbsp;{5}</li><li>&nbsp;{6}</li></ul></p> - + Stop services - + Do you want to stop all services? - + In order to change the provider, the running services needs to be stopped. - + Disabled: missing helper files @@ -1034,6 +1034,11 @@ Export canceled. Pr&eferences... + + + Version: <b>{ver}</b> ({ver_hash})<br><br>{greet}Bitmask is the Desktop client application for the LEAP platform, supporting encrypted internet proxy.<br><br>LEAP is a non-profit dedicated to giving all internet users access to secure communication. Our focus is on adapting encryption technology to make it easy to use and widely available.<br><br><a href='https://leap.se'>More about LEAP</a> + + PasswordChange @@ -1101,17 +1106,17 @@ Export canceled. - + Password is empty. - + There was a problem changing the password. - + You did not enter a correct current password. @@ -1208,12 +1213,12 @@ Export canceled. - + Error loading configuration file. - + This is an uninitialized provider, please log in first. @@ -1239,12 +1244,12 @@ Export canceled. ProviderBootstrapper - + Provider certificate could not be verified - + Provider does not support HTTPS @@ -1375,47 +1380,47 @@ Export canceled. - + &Next > - + Connect - + Starting registration... - + User %s successfully registered. - + <font color='red'><b>Non-existent provider</b></font> - + <font color='red'><b>%s</b></font> - + Unable to load provider configuration - + <font color='red'><b>Not a valid provider</b></font> - + Something went wrong while trying to load service %s @@ -1445,22 +1450,22 @@ Export canceled. - + Something has gone wrong. Please try again. - + The requested username is taken, choose another. - + Services by {0} - + Register a new user with {0} @@ -1513,60 +1518,70 @@ Export canceled. msg - + TAP Driver - + Encrypted Internet uses VPN, which needs a TAP device installed and none has been found. This will ask for administrative privileges. - + TUN Driver - + Encrypted Internet uses VPN, which needs a kernel extension for a TUN device installed, and none has been found. This will ask for administrative privileges. - + Problem installing files - + Some of the files could not be copied. - + Bitmask needs to install the necessary drivers for Encrypted Internet to work. Would you like to proceed? - + Missing helper files - + Missing Bitmask helpers + + + No polkit agent running + + + + + There is no polkit agent running and it is needed to run the Bitmask services.<br>Take a look at the <a href="https://leap.se/en/docs/client/known-issues">known issues</a> page + + msgstr - + Some essential helper files are missing in your system. - + Reinstall your debian packages, or make sure you place them by hand. @@ -1574,17 +1589,17 @@ Export canceled. self._eip_status - + {0} is restarting - + {0} could not be launched because you did not authenticate properly. - + {0} finished in an unexpected manner! -- cgit v1.2.3 From 9796a14b964f50ae7a9be2aaff7f7bb887f4bed4 Mon Sep 17 00:00:00 2001 From: Ivan Alejandro Date: Mon, 2 Feb 2015 18:10:44 -0300 Subject: Fold in changes. --- CHANGELOG.rst | 26 ++++++++++++++++++++++++++ changes/backend-frontend-certificates | 3 --- changes/bug-6123_forward-right-env-data | 1 - changes/bug-6150_better-missing-polkit-msg | 1 - changes/bug_6146_handle_removals_release | 1 - changes/feature_support-arch-nobody | 1 - 6 files changed, 26 insertions(+), 7 deletions(-) delete mode 100644 changes/backend-frontend-certificates delete mode 100644 changes/bug-6123_forward-right-env-data delete mode 100644 changes/bug-6150_better-missing-polkit-msg delete mode 100644 changes/bug_6146_handle_removals_release delete mode 100644 changes/feature_support-arch-nobody diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 82b86918..796e5f84 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -3,6 +3,32 @@ History ------- +2015 +==== + +0.8.0 January xx -- "Charlie and the code refactory" +++++++++++++++++++++++++++++++++++++++++++++++++++++ + +Features +-------- +- #5873: Allow frontend and backend to be run separately. +- Refactor login widgets/logic. +- Improved changelog :). + +Bugfixes +-------- +- #6058: Support 'nobody' (used on Arch) as well as 'nogroup' as group names. +- #6123: Forward the right environment data to subprocess call. +- #6150: Do not allow Bitmask to start if there is no polkit agent running. +- #6631: Fix failing tests. +- #6638: Fix set initialization to support python 2.6. +- #6652: Fix regression: polkit agent is not automatically launched. +- #6654: Login attempt is made against previously selected provider. +- Create zmq certificates if they don't exist. +- Disable '--offline' flag temporarily. +- Make pkg/tuf/release.py handle removals in the repo. +- Reduce the wait for running threads timeout on quit. + 2014 ==== diff --git a/changes/backend-frontend-certificates b/changes/backend-frontend-certificates deleted file mode 100644 index 2b3c1990..00000000 --- a/changes/backend-frontend-certificates +++ /dev/null @@ -1,3 +0,0 @@ -- Allow frontend and backend to be run separately. Closes #5873. -- Reduce the wait for running threads timeout on quit. -- Create zmq certificates if they don't exist. diff --git a/changes/bug-6123_forward-right-env-data b/changes/bug-6123_forward-right-env-data deleted file mode 100644 index 10bd8604..00000000 --- a/changes/bug-6123_forward-right-env-data +++ /dev/null @@ -1 +0,0 @@ -- Forward the right environment data to subprocess call. Closes #6123. diff --git a/changes/bug-6150_better-missing-polkit-msg b/changes/bug-6150_better-missing-polkit-msg deleted file mode 100644 index ee317135..00000000 --- a/changes/bug-6150_better-missing-polkit-msg +++ /dev/null @@ -1 +0,0 @@ -- Do not allow Bitmask to start if there is no polkit agent running. Closes #6150. diff --git a/changes/bug_6146_handle_removals_release b/changes/bug_6146_handle_removals_release deleted file mode 100644 index 6fe67d62..00000000 --- a/changes/bug_6146_handle_removals_release +++ /dev/null @@ -1 +0,0 @@ -- Make pkg/tuf/release.py handle removals in the repo diff --git a/changes/feature_support-arch-nobody b/changes/feature_support-arch-nobody deleted file mode 100644 index 6aa587a3..00000000 --- a/changes/feature_support-arch-nobody +++ /dev/null @@ -1 +0,0 @@ -- Support 'nobody' (used on Arch) as well as 'nogroup' as group names. Related to #6058. -- cgit v1.2.3 From 1fa295ecd6af5c2ea64e76418bd144f9ddf4c803 Mon Sep 17 00:00:00 2001 From: Ivan Alejandro Date: Wed, 4 Feb 2015 17:14:52 -0300 Subject: Update release notes. --- relnotes.txt | 116 +++++++++++++---------------------------------------------- 1 file changed, 25 insertions(+), 91 deletions(-) diff --git a/relnotes.txt b/relnotes.txt index c4104fc5..a229baee 100644 --- a/relnotes.txt +++ b/relnotes.txt @@ -1,112 +1,46 @@ -ANNOUNCING Bitmask, the Internet Encryption Toolkit, release 0.7.0. +ANNOUNCING Bitmask, the Internet Encryption Toolkit, release 0.8.0. -The LEAP team is pleased to announce the immediate availability of -version 0.7.0 of Bitmask, the Internet Encryption Toolkit, codename -"One window to rule them all, and in the darkness bind them." +The LEAP team is pleased to announce the immediate availability of version +0.8.0 of Bitmask, the Internet Encryption Toolkit, codename "Charlie and the +code refactory" -https://downloads.leap.se/client/ +This release focused on fixing bugs, particularly with the UI, and refactoring +much of the core backend code for the client. There are no new features in this +version. -LEAP (LEAP Encryption Access Project) develops a plan to secure -everyday communication, breaking down into discrete services. +Currently, Bitmask desktop client only support Debian and Ubuntu Linux. Support +for Mac, Windows, and other Linux distributions is coming. -Bitmask is the desktop client to connect to the services offered by -the LEAP Platform. In the current phase the supported services are -Encrypted Internet Proxy and Encrypted Mail. +Upgrading: -The Encrypted Internet Proxy provides circumvention, location -anonymization, and traffic encryption in a hassle-free, automatically -self-configuring fashion. +* From bundle: if you are running bundle version 0.7 or new then Bitmask should + update automatically. -Encrypted Mail offers automatic encryption and decryption for both -outgoing and incoming email, adding public key cryptography to your -mail without you ever having to worry about key distribution or -signature verification. +* From package: if you have added deb.bitmask.net to your sources.list, then + Bitmask should update automatically (make sure it is not commented out). -You can read about this and many other cool things in the user manual -and the developer notes, which can be found online at: - -https://leap.se/en/docs/client - -WARNING: This is still part of a beta release of our software, a lot -of testing and auditing is still needed, so indeed use it, and feed us -back, fork it and contribute to its development, but by any means DO -NOT trust your life to it. - -WHAT CAN THIS VERSION OF BITMASK DO FOR ME? - -Bitmask 0.7.0 brings with tremendous joy automatic and secure updates -through The Update Framework. Right beside TUF there are some bug -fixes and a new settings panel. - -You can read more about TUF in http://theupdateframework.com/ - -Encrypted Internet on Linux avoids leaking traffic outside of the -secure connection it establishes. This will be added to other -platforms in the future. - -The Encrypted Mail services will run local SMTP and IMAP proxies that, -once you configure the mail client of your choice, will automatically -encrypt and decrypt your email using GPG encryption under the hood. - -If it is the first time you run Bitmask, the first run wizard will -help you registering an user with your selected provider, downloading -all the config files needed to connect to the various LEAP services. +If you have a bundle version older than 0.7, please reinstall Bitmask. LICENSE -You may use Bitmask under the GNU General Public License, version 3 -or, at your option, any later version. See the file "LICENSE" for the -terms of the GNU General Public License, version 3. - -In addition, as a special exception, the copyright holders give -permission to link the code of portions of this program with the -OpenSSL library under certain conditions as described in each -individual source file, and distribute linked combinations including -the two. - -INSTALLATION - -We distribute the current version of Bitmask as standalone bundles for -GNU/Linux, OSX and Windows, but it is likely that you are able to run -it under other systems, specially if you are skillful and patience is -one of your virtues. - -Have a look at "docs/user/install.rst". - -Packages are also provided for debian and ubuntu, add the leap -repository to your apt sources: - -deb http://deb.leap.se/debian wheezy main - -We will love to hear if you want to make packages available for any -other system. - -BUGS - -You can send the bugs our way by pointing your telnet session to port -443 on https://leap.se/code. We will do our best to make them follow -our intensive bug-reeducation program. - - -LINUX ONLY: If you ever run into the situation where you cannot -access internet, open the terminal and run the following command: - -$ pkexec /usr/local/sbin/bitmask-root firewall stop +You may use Bitmask under the GNU General Public License, version 3 or, at your +option, any later version. See the file "LICENSE" for the terms of the GNU +General Public License, version 3. -If for some reason that doesn't work, you will need to reboot your -computer. +USAGE +See https://bitmask.net/help HACKING -You can find us in the #leap channel on the freenode network. +See https://leap.se/en/docs/get-involved for tips on contacting the developers, +getting start hacking on Bitmask, and reporting bugs. -If you are lucky enough, you can also spot us drinking mate, sleepless -in night trains, rooftops, rainforests, lonely islands and, always, -beyond any border. +If you are lucky enough, you can also spot us drinking mate, sleepless in night +trains, rooftops, rainforests, lonely islands and, always, beyond any border. The LEAP team, -December 12, 2014 +February 4, 2015 Somewhere in the middle of the intertubes. EOF -- cgit v1.2.3