From 26ef49e2351cc5a204281b53006e2697ed42ef20 Mon Sep 17 00:00:00 2001 From: Ivan Alejandro Date: Mon, 7 Oct 2013 10:25:23 -0300 Subject: Show more context information in the logs. Add line numbers and function name from where the log is displayed. --- changes/feature-3923_more-verbose-logs | 1 + src/leap/bitmask/app.py | 2 +- src/leap/bitmask/util/leap_log_handler.py | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) create mode 100644 changes/feature-3923_more-verbose-logs diff --git a/changes/feature-3923_more-verbose-logs b/changes/feature-3923_more-verbose-logs new file mode 100644 index 00000000..b6ac6edd --- /dev/null +++ b/changes/feature-3923_more-verbose-logs @@ -0,0 +1 @@ + o Show more context information in the logs. Closes #3923. diff --git a/src/leap/bitmask/app.py b/src/leap/bitmask/app.py index c1859478..5982fe91 100644 --- a/src/leap/bitmask/app.py +++ b/src/leap/bitmask/app.py @@ -99,7 +99,7 @@ def add_logger_handlers(debug=False, logfile=None): logger = logging.getLogger(name='leap') logger.setLevel(level) - log_format = '%(asctime)s - %(name)s - %(levelname)s - %(message)s' + log_format = '%(asctime)s - %(name)s:%(funcName)s:L#%(lineno)s - %(levelname)s - %(message)s' formatter = logging.Formatter(log_format) # Console handler diff --git a/src/leap/bitmask/util/leap_log_handler.py b/src/leap/bitmask/util/leap_log_handler.py index 98924c12..262f2f65 100644 --- a/src/leap/bitmask/util/leap_log_handler.py +++ b/src/leap/bitmask/util/leap_log_handler.py @@ -52,7 +52,7 @@ class LogHandler(logging.Handler): :param logging_level: the debug level to define the color. :type logging_level: str. """ - log_format = '%(asctime)s - %(name)s - %(levelname)s - %(message)s' + log_format = '%(asctime)s - %(name)s:%(funcName)s:L#%(lineno)s - %(levelname)s - %(message)s' formatter = logging.Formatter(log_format) return formatter -- cgit v1.2.3 From 37e783274b55ecf0c57b517f574f6cab5167427e Mon Sep 17 00:00:00 2001 From: Ivan Alejandro Date: Mon, 7 Oct 2013 11:29:28 -0300 Subject: Add support for running lxde polkit agent. --- changes/feature-4028_support-lxpolkit | 1 + src/leap/bitmask/services/eip/linuxvpnlauncher.py | 10 +++++++--- 2 files changed, 8 insertions(+), 3 deletions(-) create mode 100644 changes/feature-4028_support-lxpolkit diff --git a/changes/feature-4028_support-lxpolkit b/changes/feature-4028_support-lxpolkit new file mode 100644 index 00000000..95aa5220 --- /dev/null +++ b/changes/feature-4028_support-lxpolkit @@ -0,0 +1 @@ + o Add support for running lxde polkit agent. Closes #4028. diff --git a/src/leap/bitmask/services/eip/linuxvpnlauncher.py b/src/leap/bitmask/services/eip/linuxvpnlauncher.py index c2c28627..efb23285 100644 --- a/src/leap/bitmask/services/eip/linuxvpnlauncher.py +++ b/src/leap/bitmask/services/eip/linuxvpnlauncher.py @@ -61,9 +61,13 @@ def _is_auth_agent_running(): :return: True if it's running, False if it's not. :rtype: boolean """ - ps = 'ps aux | grep polkit-%s-authentication-agent-1' - opts = (ps % case for case in ['[g]nome', '[k]de']) - is_running = map(lambda l: commands.getoutput(l), opts) + # the [x] thing is to avoid grep match itself + polkit_options = [ + 'ps aux | grep polkit-[g]nome-authentication-agent-1', + 'ps aux | grep polkit-[k]de-authentication-agent-1', + 'ps aux | grep [l]xpolkit' + ] + is_running = [commands.getoutput(cmd) for cmd in polkit_options] return any(is_running) -- cgit v1.2.3 From bf76ffa48a7d8e8993b9a61a259cc56829e1130f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Touceda?= Date: Mon, 7 Oct 2013 14:53:42 -0300 Subject: Increase the max retries for the sessions in SRPAuth --- changes/bug_increase_retries_logout | 2 ++ src/leap/bitmask/crypto/srpauth.py | 18 ++++++++++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 changes/bug_increase_retries_logout diff --git a/changes/bug_increase_retries_logout b/changes/bug_increase_retries_logout new file mode 100644 index 00000000..a3d1458b --- /dev/null +++ b/changes/bug_increase_retries_logout @@ -0,0 +1,2 @@ + o Increase the amount of retries for the authentication request + session. Fixes #4037. \ No newline at end of file diff --git a/src/leap/bitmask/crypto/srpauth.py b/src/leap/bitmask/crypto/srpauth.py index cbff4b49..47ed21b0 100644 --- a/src/leap/bitmask/crypto/srpauth.py +++ b/src/leap/bitmask/crypto/srpauth.py @@ -25,6 +25,7 @@ import json #this error is raised from requests from simplejson.decoder import JSONDecodeError from functools import partial +from requests.adapters import HTTPAdapter from PySide import QtCore from twisted.internet import threads @@ -154,7 +155,8 @@ class SRPAuth(QtCore.QObject): self._ng = self._srp.NG_1024 # **************************************************** # - self._session = self._fetcher.session() + self._reset_session() + self._session_id = None self._session_id_lock = QtCore.QMutex() self._uid = None @@ -172,6 +174,18 @@ class SRPAuth(QtCore.QObject): self._username = None self._password = None + def _reset_session(self): + """ + Resets the current session and sets max retries to 30. + """ + self._session = self._fetcher.session() + # We need to bump the default retries, otherwise logout + # fails most of the times + # NOTE: This is a workaround for the moment, the server + # side seems to return correctly every time, but it fails + # on the client end. + self._session.mount('https://', HTTPAdapter(max_retries=30)) + def _safe_unhexlify(self, val): """ Rounds the val to a multiple of 2 and returns the @@ -508,7 +522,7 @@ class SRPAuth(QtCore.QObject): self._username = username self._password = password - self._session = self._fetcher.session() + self._reset_session() d = threads.deferToThread(self._authentication_preprocessing, username=username, -- cgit v1.2.3 From 79a479a4f799f2e62d7f5a2b6e6e9184028e0d31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Touceda?= Date: Mon, 7 Oct 2013 18:20:00 -0300 Subject: Add missing empty init file to the config module --- src/leap/bitmask/config/__init__.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/leap/bitmask/config/__init__.py diff --git a/src/leap/bitmask/config/__init__.py b/src/leap/bitmask/config/__init__.py new file mode 100644 index 00000000..e69de29b -- cgit v1.2.3 From 348c9ae94213e8717f891f38083e32611a87b6e5 Mon Sep 17 00:00:00 2001 From: Ivan Alejandro Date: Mon, 7 Oct 2013 15:16:27 -0300 Subject: Fix widget fit problem. Closes #4058. The spacer policy was wrong. The size of the wizard had to be increased. The icon was shrinked. --- changes/bug-4058_spacer-policy-problem | 1 + data/images/mask-icon.png | Bin 16575 -> 8907 bytes src/leap/bitmask/gui/ui/wizard.ui | 8 ++++---- 3 files changed, 5 insertions(+), 4 deletions(-) create mode 100644 changes/bug-4058_spacer-policy-problem diff --git a/changes/bug-4058_spacer-policy-problem b/changes/bug-4058_spacer-policy-problem new file mode 100644 index 00000000..b4759c7b --- /dev/null +++ b/changes/bug-4058_spacer-policy-problem @@ -0,0 +1 @@ + o Widget squashing problem in wizard cheking a new provider. Closes #4058. diff --git a/data/images/mask-icon.png b/data/images/mask-icon.png index 3504bae9..97c5d7ec 100644 Binary files a/data/images/mask-icon.png and b/data/images/mask-icon.png differ diff --git a/src/leap/bitmask/gui/ui/wizard.ui b/src/leap/bitmask/gui/ui/wizard.ui index 0f6eef6e..cf591470 100644 --- a/src/leap/bitmask/gui/ui/wizard.ui +++ b/src/leap/bitmask/gui/ui/wizard.ui @@ -7,19 +7,19 @@ 0 0 536 - 490 + 510 536 - 490 + 510 536 - 490 + 510 @@ -124,7 +124,7 @@ Qt::Vertical - QSizePolicy::Fixed + QSizePolicy::Expanding -- cgit v1.2.3 From 95cb17d6ec36a3d9e2e90b944af651fb6f4acd76 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Touceda?= Date: Tue, 8 Oct 2013 11:50:00 -0300 Subject: Hide login error message when editing lnUser and lnPassword --- changes/bug_hide_error_message | 2 ++ src/leap/bitmask/gui/login.py | 3 +++ 2 files changed, 5 insertions(+) create mode 100644 changes/bug_hide_error_message diff --git a/changes/bug_hide_error_message b/changes/bug_hide_error_message new file mode 100644 index 00000000..512f35da --- /dev/null +++ b/changes/bug_hide_error_message @@ -0,0 +1,2 @@ + o Hide login error message when the user interacts with the widgets + to fix the potential problem. Fixes #4022. \ No newline at end of file diff --git a/src/leap/bitmask/gui/login.py b/src/leap/bitmask/gui/login.py index 582f26be..c8c5c402 100644 --- a/src/leap/bitmask/gui/login.py +++ b/src/leap/bitmask/gui/login.py @@ -94,6 +94,9 @@ class LoginWidget(QtGui.QWidget): self.ui.clblErrorMsg.hide() self.ui.clblErrorMsg.clicked.connect(self.ui.clblErrorMsg.hide) + self.ui.lnUser.textEdited.connect(self.ui.clblErrorMsg.hide) + self.ui.lnPassword.textEdited.connect(self.ui.clblErrorMsg.hide) + def _remember_state_changed(self, state): """ Saves the remember state in the LeapSettings -- cgit v1.2.3 From 393cb1f2a471e3a896d170a26aeac0c8ba161972 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Touceda?= Date: Tue, 8 Oct 2013 12:04:01 -0300 Subject: Display the mail status menu enabled --- changes/bug_display_mail_status_enabled | 2 ++ src/leap/bitmask/gui/mainwindow.py | 1 - 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 changes/bug_display_mail_status_enabled diff --git a/changes/bug_display_mail_status_enabled b/changes/bug_display_mail_status_enabled new file mode 100644 index 00000000..44a94d5f --- /dev/null +++ b/changes/bug_display_mail_status_enabled @@ -0,0 +1,2 @@ + o Display mail status in the tray icon as an enabled item. Fixes + #4036. \ No newline at end of file diff --git a/src/leap/bitmask/gui/mainwindow.py b/src/leap/bitmask/gui/mainwindow.py index 84f09fd9..db6a19d2 100644 --- a/src/leap/bitmask/gui/mainwindow.py +++ b/src/leap/bitmask/gui/mainwindow.py @@ -268,7 +268,6 @@ class MainWindow(QtGui.QMainWindow): self._systray = None self._action_mail_status = QtGui.QAction(self.tr("Mail is OFF"), self) - self._action_mail_status.setEnabled(False) self._mail_status.set_action_mail_status(self._action_mail_status) self._action_eip_startstop = QtGui.QAction("", self) -- cgit v1.2.3 From 105aac0666ea5715f91ca0bba1f987b03ccdd766 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Touceda?= Date: Tue, 8 Oct 2013 12:08:28 -0300 Subject: Rename the Util menu to File in OSX --- changes/bug_util_menu_as_file | 1 + src/leap/bitmask/gui/mainwindow.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 changes/bug_util_menu_as_file diff --git a/changes/bug_util_menu_as_file b/changes/bug_util_menu_as_file new file mode 100644 index 00000000..48228f26 --- /dev/null +++ b/changes/bug_util_menu_as_file @@ -0,0 +1 @@ + o Change the Util menu to be named File in OSX. Fixes #4039. \ No newline at end of file diff --git a/src/leap/bitmask/gui/mainwindow.py b/src/leap/bitmask/gui/mainwindow.py index 84f09fd9..4b7aef63 100644 --- a/src/leap/bitmask/gui/mainwindow.py +++ b/src/leap/bitmask/gui/mainwindow.py @@ -258,7 +258,7 @@ class MainWindow(QtGui.QMainWindow): self._launch_wizard) if IS_MAC: - self.ui.menuFile.menuAction().setText(self.tr("Util")) + self.ui.menuFile.menuAction().setText(self.tr("File")) self.raise_window.connect(self._do_raise_mainwindow) -- cgit v1.2.3 From ac51cb85da434b8dfc75ffa800b6d5cbaab1c84a Mon Sep 17 00:00:00 2001 From: Kali Kaneko Date: Sun, 6 Oct 2013 21:50:01 -0400 Subject: openvpn observer reacts to tls-restart, ping-restart and network unreachable. --- src/leap/bitmask/gui/mainwindow.py | 299 ++++++++++++++++----------- src/leap/bitmask/services/eip/connection.py | 1 + src/leap/bitmask/services/eip/vpnlauncher.py | 4 + src/leap/bitmask/services/eip/vpnprocess.py | 97 ++++++++- 4 files changed, 281 insertions(+), 120 deletions(-) diff --git a/src/leap/bitmask/gui/mainwindow.py b/src/leap/bitmask/gui/mainwindow.py index dd625f52..0d0c6339 100644 --- a/src/leap/bitmask/gui/mainwindow.py +++ b/src/leap/bitmask/gui/mainwindow.py @@ -174,10 +174,12 @@ class MainWindow(QtGui.QMainWindow): self._eip_connection = EIPConnection() + # XXX this should be handled by EIP Conductor self._eip_connection.qtsigs.connecting_signal.connect( self._start_eip) self._eip_connection.qtsigs.disconnecting_signal.connect( self._stop_eip) + self._eip_status.eip_connection_connected.connect( self._on_eip_connected) self.eip_needs_login.connect( @@ -228,13 +230,22 @@ class MainWindow(QtGui.QMainWindow): self._eip_intermediate_stage) self._eip_bootstrapper.download_client_certificate.connect( self._finish_eip_bootstrap) + self._vpn = VPN(openvpn_verb=openvpn_verb) + + # connect vpn process signals self._vpn.qtsigs.state_changed.connect( self._eip_status.update_vpn_state) self._vpn.qtsigs.status_changed.connect( self._eip_status.update_vpn_status) self._vpn.qtsigs.process_finished.connect( self._eip_finished) + self._vpn.qtsigs.network_unreachable.connect( + self._on_eip_network_unreachable) + self._vpn.qtsigs.process_restart_tls.connect( + self._do_eip_restart) + self._vpn.qtsigs.process_restart_ping.connect( + self._do_eip_restart) self._soledad_bootstrapper = SoledadBootstrapper() self._soledad_bootstrapper.download_config.connect( @@ -267,6 +278,8 @@ class MainWindow(QtGui.QMainWindow): self._systray = None + # XXX separate actions into a different + # module. self._action_mail_status = QtGui.QAction(self.tr("Mail is OFF"), self) self._mail_status.set_action_mail_status(self._action_mail_status) @@ -398,6 +411,8 @@ class MainWindow(QtGui.QMainWindow): :return: a logging handler or None :rtype: LeapLogHandler or None """ + # TODO this can be a function, does not need + # to be a method. leap_logger = logging.getLogger('leap') for h in leap_logger.handlers: if isinstance(h, LeapLogHandler): @@ -463,6 +478,10 @@ class MainWindow(QtGui.QMainWindow): """ self._soledad_ready = True + # + # updates + # + def _new_updates_available(self, req): """ Callback for the new updates event @@ -590,43 +609,9 @@ class MainWindow(QtGui.QMainWindow): saved_password.decode("utf8")) self._login() - def _try_autostart_eip(self): - """ - Tries to autostart EIP - """ - settings = self._settings - - should_autostart = settings.get_autostart_eip() - if not should_autostart: - logger.debug('Will not autostart EIP since it is setup ' - 'to not to do it') - self.eip_needs_login.emit() - return - - default_provider = settings.get_defaultprovider() - - if default_provider is None: - logger.info("Cannot autostart Encrypted Internet because there is " - "no default provider configured") - self.eip_needs_login.emit() - return - - self._enabled_services = settings.get_enabled_services( - default_provider) - - loaded = self._provisional_provider_config.load( - provider.get_provider_path(default_provider)) - if loaded: - # XXX I think we should not try to re-download config every time, - # it adds some delay. - # Maybe if it's the first run in a session, - # or we can try only if it fails. - self._download_eip_config() - else: - # XXX: Display a proper message to the user - self.eip_needs_login.emit() - logger.error("Unable to load %s config, cannot autostart." % - (default_provider,)) + # + # systray + # def _show_systray(self): """ @@ -970,7 +955,11 @@ class MainWindow(QtGui.QMainWindow): self._download_eip_config() + ################################################################### + # Service control methods: soledad + def _soledad_intermediate_stage(self, data): + # TODO missing param docstring """ SLOT TRIGGERS: @@ -1221,16 +1210,53 @@ class MainWindow(QtGui.QMainWindow): signal that currently is beeing processed under status_panel. After the refactor to EIPConductor this should not be necessary. """ - logger.debug('EIP connected signal received ...') self._eip_connection.qtsigs.connected_signal.emit() + def _try_autostart_eip(self): + """ + Tries to autostart EIP + """ + settings = self._settings + + should_autostart = settings.get_autostart_eip() + if not should_autostart: + logger.debug('Will not autostart EIP since it is setup ' + 'to not to do it') + self.eip_needs_login.emit() + return + + default_provider = settings.get_defaultprovider() + + if default_provider is None: + logger.info("Cannot autostart Encrypted Internet because there is " + "no default provider configured") + self.eip_needs_login.emit() + return + + self._enabled_services = settings.get_enabled_services( + default_provider) + + loaded = self._provisional_provider_config.load( + provider.get_provider_path(default_provider)) + if loaded: + # XXX I think we should not try to re-download config every time, + # it adds some delay. + # Maybe if it's the first run in a session, + # or we can try only if it fails. + self._download_eip_config() + else: + # XXX: Display a proper message to the user + self.eip_needs_login.emit() + logger.error("Unable to load %s config, cannot autostart." % + (default_provider,)) + @QtCore.Slot() def _start_eip(self): """ SLOT TRIGGERS: - self._eip_status.start_eip - self._action_eip_startstop.triggered + self._eip_connection.qtsigs.do_connect_signal + (via state machine) or called from _finish_eip_bootstrap Starts EIP @@ -1331,8 +1357,8 @@ class MainWindow(QtGui.QMainWindow): """ SLOT TRIGGERS: - self._eip_status.stop_eip - self._action_eip_startstop.triggered + self._eip_connection.qtsigs.do_disconnect_signal + (via state machine) or called from _eip_finished Stops vpn process and makes gui adjustments to reflect @@ -1356,14 +1382,100 @@ class MainWindow(QtGui.QMainWindow): self._get_best_provider_config().get_domain())) self._eip_status.eip_stopped() + @QtCore.Slot() + def _on_eip_network_unreachable(self): + # XXX Should move to EIP Conductor + """ + SLOT + TRIGGERS: + self._eip_connection.qtsigs.network_unreachable + + Displays a "network unreachable" error in the EIP status panel. + """ + self._eip_status.set_eip_status(self.tr("Network is unreachable"), + error=True) + self._eip_status.set_eip_status_icon("error") + + @QtCore.Slot() + def _do_eip_restart(self): + # XXX Should move to EIP Conductor + """ + SLOT + self._eip_connection.qtsigs.process_restart + + Restart the connection. + """ + # for some reason, emitting the do_disconnect/do_connect + # signals hangs the UI. + self._stop_eip() + QtCore.QTimer.singleShot(2000, self._start_eip) + def _set_eipstatus_off(self, error=True): """ Sets eip status to off """ + # XXX this should be handled by the state machine. self._eip_status.set_eip_status(self.tr("EIP has stopped"), error=error) self._eip_status.set_eip_status_icon("error") + def _eip_finished(self, exitCode): + """ + SLOT + TRIGGERS: + self._vpn.process_finished + + Triggered when the EIP/VPN process finishes to set the UI + accordingly. + + Ideally we would have the right exit code here, + but the use of different wrappers (pkexec, cocoasudo) swallows + the openvpn exit code so we get zero exit in some cases where we + shouldn't. As a workaround we just use a flag to indicate + a purposeful switch off, and mark everything else as unexpected. + + In the near future we should trigger a native notification from here, + since the user really really wants to know she is unprotected asap. + And the right thing to do will be to fail-close. + + :param exitCode: the exit code of the eip process. + :type exitCode: int + """ + # TODO move to EIPConductor. + # TODO Add error catching to the openvpn log observer + # so we can have a more precise idea of which type + # of error did we have (server side, local problem, etc) + + logger.info("VPN process finished with exitCode %s..." + % (exitCode,)) + + qtsigs = self._eip_connection.qtsigs + signal = qtsigs.disconnected_signal + + # XXX check if these exitCodes are pkexec/cocoasudo specific + if exitCode in (126, 127): + self._eip_status.set_eip_status( + self.tr("Encrypted Internet could not be launched " + "because you did not authenticate properly."), + error=True) + self._vpn.killit() + signal = qtsigs.connection_aborted_signal + + elif exitCode != 0 or not self.user_stopped_eip: + self._eip_status.set_eip_status( + self.tr("Encrypted Internet finished in an " + "unexpected manner!"), error=True) + signal = qtsigs.connection_died_signal + + if exitCode == 0 and IS_MAC: + # XXX remove this warning after I fix cocoasudo. + logger.warning("The above exit code MIGHT BE WRONG.") + + # We emit signals to trigger transitions in the state machine: + signal.emit() + + # eip boostrapping, config etc... + def _download_eip_config(self): """ Starts the EIP bootstrapping sequence @@ -1425,7 +1537,25 @@ class MainWindow(QtGui.QMainWindow): "Configuration."), error=True) - # end eip methods ------------------------------------------- + def _eip_intermediate_stage(self, data): + # TODO missing param + """ + SLOT + TRIGGERS: + self._eip_bootstrapper.download_config + + If there was a problem, displays it, otherwise it does nothing. + This is used for intermediate bootstrapping stages, in case + they fail. + """ + passed = data[self._provider_bootstrapper.PASSED_KEY] + if not passed: + self._login_widget.set_status( + self.tr("Unable to connect: Problem with provider")) + logger.error(data[self._provider_bootstrapper.ERROR_KEY]) + self._already_started_eip = False + + # end of EIP methods --------------------------------------------- def _get_best_provider_config(self): """ @@ -1468,6 +1598,7 @@ class MainWindow(QtGui.QMainWindow): self.logout.emit() def _done_logging_out(self, ok, message): + # TODO missing params in docstring """ SLOT TRIGGER: self._srp_auth.logout_finished @@ -1488,6 +1619,7 @@ class MainWindow(QtGui.QMainWindow): error=True) def _intermediate_stage(self, data): + # TODO this method name is confusing as hell. """ SLOT TRIGGERS: @@ -1507,80 +1639,9 @@ class MainWindow(QtGui.QMainWindow): self.tr("Unable to connect: Problem with provider")) logger.error(data[self._provider_bootstrapper.ERROR_KEY]) - def _eip_intermediate_stage(self, data): - """ - SLOT - TRIGGERS: - self._eip_bootstrapper.download_config - - If there was a problem, displays it, otherwise it does nothing. - This is used for intermediate bootstrapping stages, in case - they fail. - """ - passed = data[self._provider_bootstrapper.PASSED_KEY] - if not passed: - self._login_widget.set_status( - self.tr("Unable to connect: Problem with provider")) - logger.error(data[self._provider_bootstrapper.ERROR_KEY]) - self._already_started_eip = False - - def _eip_finished(self, exitCode): - """ - SLOT - TRIGGERS: - self._vpn.process_finished - - Triggered when the EIP/VPN process finishes to set the UI - accordingly. - """ - # TODO move to EIPConductor. - logger.info("VPN process finished with exitCode %s..." - % (exitCode,)) - - # Ideally we would have the right exit code here, - # but the use of different wrappers (pkexec, cocoasudo) swallows - # the openvpn exit code so we get zero exit in some cases where we - # shouldn't. As a workaround we just use a flag to indicate - # a purposeful switch off, and mark everything else as unexpected. - - # In the near future we should trigger a native notification from here, - # since the user really really wants to know she is unprotected asap. - # And the right thing to do will be to fail-close. - - # TODO we should have a way of parsing the latest lines in the vpn - # log buffer so we can have a more precise idea of which type - # of error did we have (server side, local problem, etc) - - qtsigs = self._eip_connection.qtsigs - signal = qtsigs.disconnected_signal - - # XXX check if these exitCodes are pkexec/cocoasudo specific - if exitCode in (126, 127): - self._eip_status.set_eip_status( - self.tr("Encrypted Internet could not be launched " - "because you did not authenticate properly."), - error=True) - self._vpn.killit() - signal = qtsigs.connection_aborted_signal - - elif exitCode != 0 or not self.user_stopped_eip: - self._eip_status.set_eip_status( - self.tr("Encrypted Internet finished in an " - "unexpected manner!"), error=True) - signal = qtsigs.connection_died_signal - - if exitCode == 0 and IS_MAC: - # XXX remove this warning after I fix cocoasudo. - logger.warning("The above exit code MIGHT BE WRONG.") - - # XXX verify that the logic kees the same w/o the abnormal flag - # after the refactor to EIPConnection has been completed - # (eipconductor taking the most of the logic under transitions - # that right now are handled under status_panel) - #self._stop_eip(abnormal) - - # We emit signals to trigger transitions in the state machine: - signal.emit() + # + # window handling methods + # def _on_raise_window_event(self, req): """ @@ -1606,6 +1667,10 @@ class MainWindow(QtGui.QMainWindow): if IS_MAC: self.raise_() + # + # cleanup and quit methods + # + def _cleanup_pidfiles(self): """ Removes lockfiles on a clean shutdown. diff --git a/src/leap/bitmask/services/eip/connection.py b/src/leap/bitmask/services/eip/connection.py index 08b29070..962d9cf2 100644 --- a/src/leap/bitmask/services/eip/connection.py +++ b/src/leap/bitmask/services/eip/connection.py @@ -46,4 +46,5 @@ class EIPConnectionSignals(QtCore.QObject): class EIPConnection(AbstractLEAPConnection): def __init__(self): + # XXX this should be public instead self._qtsigs = EIPConnectionSignals() diff --git a/src/leap/bitmask/services/eip/vpnlauncher.py b/src/leap/bitmask/services/eip/vpnlauncher.py index 935d75f1..82d8ea48 100644 --- a/src/leap/bitmask/services/eip/vpnlauncher.py +++ b/src/leap/bitmask/services/eip/vpnlauncher.py @@ -241,6 +241,10 @@ class VPNLauncher(object): '--ca', providerconfig.get_ca_cert_path() ] + args += [ + '--ping', '10', + '--ping-restart', '30'] + command_and_args = [openvpn] + args logger.debug("Running VPN with command:") logger.debug(" ".join(command_and_args)) diff --git a/src/leap/bitmask/services/eip/vpnprocess.py b/src/leap/bitmask/services/eip/vpnprocess.py index 707967e0..9baa4c53 100644 --- a/src/leap/bitmask/services/eip/vpnprocess.py +++ b/src/leap/bitmask/services/eip/vpnprocess.py @@ -24,6 +24,8 @@ import psutil.error import shutil import socket +from itertools import chain, repeat + from PySide import QtCore from leap.bitmask.config.providerconfig import ProviderConfig @@ -50,14 +52,93 @@ class VPNSignals(QtCore.QObject): They are instantiated in the VPN object and passed along till the VPNProcess. """ + # signals for the process state_changed = QtCore.Signal(dict) status_changed = QtCore.Signal(dict) process_finished = QtCore.Signal(int) + # signals that come from parsing + # openvpn output + network_unreachable = QtCore.Signal() + process_restart_tls = QtCore.Signal() + process_restart_ping = QtCore.Signal() + def __init__(self): QtCore.QObject.__init__(self) +class VPNObserver(object): + """ + A class containing different patterns in the openvpn output that + we can react upon. + """ + + # TODO this is i18n-sensitive, right? + # in that case, we should add the translations :/ + # until we find something better. + + _events = { + 'NETWORK_UNREACHABLE': ( + 'Network is unreachable (code=101)',), + 'PROCESS_RESTART_TLS': ( + "SIGUSR1[soft,tls-error]",), + 'PROCESS_RESTART_PING': ( + "SIGUSR1[soft,ping-restart]",), + 'INITIALIZATION_COMPLETED': ( + "Initialization Sequence Completed",), + } + + def __init__(self, qtsigs): + """ + Initializer. Keeps a reference to the passed qtsigs object + :param qtsigs: an object containing the different qt signals to + be used to communicate with different parts of + the application (the EIP state machine, for instance). + """ + self._qtsigs = qtsigs + + def watch(self, line): + """ + Inspects line searching for the different patterns. If a match + is found, try to emit the corresponding signal. + + :param line: a line of openvpn output + :type line: str + """ + chained_iter = chain(*[ + zip(repeat(key, len(l)), l) + for key, l in self._events.iteritems()]) + for event, pattern in chained_iter: + if pattern in line: + logger.debug('pattern matched! %s' % pattern) + break + else: + return + + sig = self._get_signal(event) + if sig: + sig.emit() + return + else: + logger.debug( + 'We got %s event from openvpn output but we ' + 'could not find a matching signal for it.' + % event) + + def _get_signal(self, event): + """ + Tries to get the matching signal from the eip signals + objects based on the name of the passed event (in lowercase) + + :param event: the name of the event that we want to get a signal + for + :type event: str + :returns: a QtSignal, or None + :rtype: QtSignal or None + """ + return getattr(self._qtsigs, event.lower(), None) + + class OpenVPNAlreadyRunning(Exception): message = ("Another openvpn instance is already running, and could " "not be stopped.") @@ -160,10 +241,14 @@ class VPN(object): tries += 1 reactor.callLater(self.TERMINATE_WAIT, self._kill_if_left_alive, tries) + return # after running out of patience, we try a killProcess logger.debug("Process did not died. Sending a SIGKILL.") - self.killit() + try: + self.killit() + except OSError: + logger.error("Could not kill process!") def killit(self): """ @@ -654,6 +739,7 @@ class VPNManager(object): raise OpenVPNAlreadyRunning + class VPNProcess(protocol.ProcessProtocol, VPNManager): """ A ProcessProtocol class that can be used to spawn a process that will @@ -703,8 +789,12 @@ class VPNProcess(protocol.ProcessProtocol, VPNManager): self._last_status = None self._alive = False + # XXX use flags, maybe, instead of passing + # the parameter around. self._openvpn_verb = openvpn_verb + self._vpn_observer = VPNObserver(qtsigs) + # processProtocol methods def connectionMade(self): @@ -726,8 +816,9 @@ class VPNProcess(protocol.ProcessProtocol, VPNManager): .. seeAlso: `http://twistedmatrix.com/documents/13.0.0/api/twisted.internet.protocol.ProcessProtocol.html` # noqa """ # truncate the newline - # should send this to the logging window - vpnlog.info(data[:-1]) + line = data[:-1] + vpnlog.info(line) + self._vpn_observer.watch(line) def processExited(self, reason): """ -- cgit v1.2.3 From ae1d24a69806740fea6c5d29779e686ba2747ed0 Mon Sep 17 00:00:00 2001 From: Kali Kaneko Date: Tue, 8 Oct 2013 20:25:20 -0300 Subject: changs file --- changes/feature_openvpn-observer | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 changes/feature_openvpn-observer diff --git a/changes/feature_openvpn-observer b/changes/feature_openvpn-observer new file mode 100644 index 00000000..dc9ba0af --- /dev/null +++ b/changes/feature_openvpn-observer @@ -0,0 +1,3 @@ + o Implements openvpn observer. Closes: #3901 + o Reconnect EIP if network down. Closes #3790 + o Reconnect if tls-restart. Closes: #3262 -- cgit v1.2.3 From d89d6e595f03225b48d038ca1b177d637ec0f75d Mon Sep 17 00:00:00 2001 From: drebs Date: Wed, 9 Oct 2013 12:22:00 -0300 Subject: Set dep versions on VERSION_COMPAT. --- changes/VERSION_COMPAT | 2 ++ 1 file changed, 2 insertions(+) diff --git a/changes/VERSION_COMPAT b/changes/VERSION_COMPAT index cc00ecf7..a4f0a0ac 100644 --- a/changes/VERSION_COMPAT +++ b/changes/VERSION_COMPAT @@ -8,3 +8,5 @@ # # BEGIN DEPENDENCY LIST ------------------------- # leap.foo.bar>=x.y.z +leap.keymanager>=0.3.4 +leap.mail>=0.3.5 -- cgit v1.2.3 From b4d68f51db92564d5af6db71a092f7f6b48b93aa Mon Sep 17 00:00:00 2001 From: Kali Kaneko Date: Wed, 9 Oct 2013 23:37:20 -0300 Subject: catch u1db errors --- changes/bug_catch_u1db_httperror | 1 + src/leap/bitmask/services/soledad/soledadbootstrapper.py | 4 ++++ 2 files changed, 5 insertions(+) create mode 100644 changes/bug_catch_u1db_httperror diff --git a/changes/bug_catch_u1db_httperror b/changes/bug_catch_u1db_httperror new file mode 100644 index 00000000..1045f1d1 --- /dev/null +++ b/changes/bug_catch_u1db_httperror @@ -0,0 +1 @@ + o Catch u1db errors during soledad initialization. diff --git a/src/leap/bitmask/services/soledad/soledadbootstrapper.py b/src/leap/bitmask/services/soledad/soledadbootstrapper.py index 7968dd6a..409389be 100644 --- a/src/leap/bitmask/services/soledad/soledadbootstrapper.py +++ b/src/leap/bitmask/services/soledad/soledadbootstrapper.py @@ -264,6 +264,10 @@ class SoledadBootstrapper(AbstractBootstrapper): logger.error("Error while initializing soledad " "(unauthorized).") self.soledad_failed.emit() + except u1db_errors.HTTPError as exc: + logger.exception("Error whie initializing soledad " + "(HTTPError)") + self.soledad_failed.emit() except Exception as exc: logger.exception("Unhandled error while initializating " "soledad: %r" % (exc,)) -- cgit v1.2.3 From b7c1f1b359fcd5c099340ef53ac928d24c848331 Mon Sep 17 00:00:00 2001 From: Ivan Alejandro Date: Thu, 10 Oct 2013 16:06:44 -0300 Subject: Remove unused line. Was left here after the status refactor that split status in eip status and mail status. --- src/leap/bitmask/gui/mail_status.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/leap/bitmask/gui/mail_status.py b/src/leap/bitmask/gui/mail_status.py index ab9052d7..8f846b55 100644 --- a/src/leap/bitmask/gui/mail_status.py +++ b/src/leap/bitmask/gui/mail_status.py @@ -35,7 +35,6 @@ class MailStatusWidget(QtGui.QWidget): """ Status widget that displays the state of the LEAP Mail service """ - eip_connection_connected = QtCore.Signal() _soledad_event = QtCore.Signal(object) _smtp_event = QtCore.Signal(object) _imap_event = QtCore.Signal(object) -- cgit v1.2.3 From d42e5d5587af0ac62a9cc05e299d24215b15ac21 Mon Sep 17 00:00:00 2001 From: Ivan Alejandro Date: Thu, 10 Oct 2013 16:09:07 -0300 Subject: Display a Soledad error to the user if needed. --- changes/bug-4025_display-soledad-errors | 2 ++ src/leap/bitmask/gui/mail_status.py | 11 +++++++++++ src/leap/bitmask/gui/mainwindow.py | 4 ++-- 3 files changed, 15 insertions(+), 2 deletions(-) create mode 100644 changes/bug-4025_display-soledad-errors diff --git a/changes/bug-4025_display-soledad-errors b/changes/bug-4025_display-soledad-errors new file mode 100644 index 00000000..35fd0025 --- /dev/null +++ b/changes/bug-4025_display-soledad-errors @@ -0,0 +1,2 @@ + o In case of Soledad failure, display to the user that there was a problem. + Closes #4025. diff --git a/src/leap/bitmask/gui/mail_status.py b/src/leap/bitmask/gui/mail_status.py index 8f846b55..2ac9a332 100644 --- a/src/leap/bitmask/gui/mail_status.py +++ b/src/leap/bitmask/gui/mail_status.py @@ -192,6 +192,17 @@ class MailStatusWidget(QtGui.QWidget): leap_assert_type(action_mail_status, QtGui.QAction) self._action_mail_status = action_mail_status + def set_soledad_failed(self): + """ + SLOT + TRIGGER: + SoledadBootstrapper.soledad_failed + + This method is called whenever soledad has a failure. + """ + msg = self.tr("There was an unexpected problem with Soledad.") + self._set_mail_status(msg, ready=-1) + def _set_mail_status(self, status, ready=0): """ Sets the Mail status in the label and in the tray icon. diff --git a/src/leap/bitmask/gui/mainwindow.py b/src/leap/bitmask/gui/mainwindow.py index 0d0c6339..69545751 100644 --- a/src/leap/bitmask/gui/mainwindow.py +++ b/src/leap/bitmask/gui/mainwindow.py @@ -254,8 +254,8 @@ class MainWindow(QtGui.QMainWindow): self._soledad_bootstrapped_stage) self._soledad_bootstrapper.soledad_timeout.connect( self._retry_soledad_connection) - # XXX missing connect to soledad_failed (signal unrecoverable to user) - # TODO wait until chiiph ui refactor. + self._soledad_bootstrapper.soledad_failed.connect( + self._mail_status.set_soledad_failed) self._smtp_bootstrapper = SMTPBootstrapper() self._smtp_bootstrapper.download_config.connect( -- cgit v1.2.3 From c8f754eed56a7937da0eece0b1a5bc4e1d8135e2 Mon Sep 17 00:00:00 2001 From: Kali Kaneko Date: Fri, 11 Oct 2013 11:31:34 -0300 Subject: updated strings to 0.3.4 release --- data/bitmask.pro | 10 +- data/ts/en_US.ts | 802 +++++++++++++++++---------- src/leap/bitmask/services/eip/vpnlauncher.py | 2 +- 3 files changed, 531 insertions(+), 283 deletions(-) diff --git a/data/bitmask.pro b/data/bitmask.pro index 0f9aaf90..b9b5dc84 100644 --- a/data/bitmask.pro +++ b/data/bitmask.pro @@ -19,17 +19,19 @@ SOURCES += ../src/leap/bitmask/app.py \ ../src/leap/bitmask/gui/wizard.py \ ../src/leap/bitmask/gui/eip_status.py \ ../src/leap/bitmask/gui/mail_status.py \ - ../src/leap/bitmask/gui/eippreferences.py \ - ../src/leap/bitmask/gui/preferences.py \ + ../src/leap/bitmask/gui/eip_preferenceswindow.py \ + ../src/leap/bitmask/gui/preferenceswindow.py \ ../src/leap/bitmask/platform_init/initializers.py \ ../src/leap/bitmask/platform_init/locks.py \ ../src/leap/bitmask/provider/supportedapis.py \ ../src/leap/bitmask/services/abstractbootstrapper.py \ ../src/leap/bitmask/services/eip/eipbootstrapper.py \ ../src/leap/bitmask/services/eip/eipconfig.py \ - ../src/leap/bitmask/services/eip/providerbootstrapper.py \ + ../src/leap/bitmask/provider/providerbootstrapper.py \ + ../src/leap/bitmask/services/__init__.py \ + ../src/leap/bitmask/services/connections.py \ ../src/leap/bitmask/services/eip/udstelnet.py \ - ../src/leap/bitmask/services/eip/vpnlaunchers.py \ + ../src/leap/bitmask/services/eip/vpnlauncher.py \ ../src/leap/bitmask/services/eip/vpnprocess.py \ ../src/leap/bitmask/services/mail/smtpbootstrapper.py \ ../src/leap/bitmask/services/mail/smtpconfig.py \ diff --git a/data/ts/en_US.ts b/data/ts/en_US.ts index 224060f4..e0e907f0 100644 --- a/data/ts/en_US.ts +++ b/data/ts/en_US.ts @@ -1,21 +1,194 @@ - DarwinVPNLauncher + EIPPreferences - - No gateway was found! + + EIP Preferences + + + + + Select gateway for provider + + + + + &Select provider: + + + + + <Select provider> + + + + + Save this provider settings + + + + + < Providers Gateway Status > + + + + + Select gateway: + + + + + Automatic + + + + + Automatic EIP start + + + + + <font color='green'><b>Automatic EIP start saved!</b></font> + + + + + Save auto start setting + + + + + Enable Automatic start of EIP - EIPBootstrapper + EIPPreferencesWindow + + + Automatic + + + + + Gateway settings for provider '{0}' saved. + + + + + There was a problem with configuration files. + + - LinuxVPNLauncher + EIPStatus - - No gateway was found! + + Form + + + + + Turn On + + + + + ... + + + + + Traffic is being routed in the clear + + + + + 0.0 KB/s + + + + + EIPStatusWidget + + + All services are OFF + + + + + Encrypted Internet: {0} + + + + + You must login to use Encrypted Internet + + + + + Turn OFF + + + + + Turn ON + + + + + Traffic is being routed in the clear + + + + + Authenticating... + + + + + Retrieving configuration... + + + + + Waiting to start... + + + + + Assigning IP + + + + + Reconnecting... + + + + + Unable to start VPN, it's already running. + + + + + Encrypted Internet: OFF + + + + + Encrypted Internet: Starting... + + + + + Encrypted Internet: ON + + + + + Route traffic through: {0} @@ -75,517 +248,567 @@ LoginWidget - + Form - - Create a new account - - - - + <b>Provider:</b> - + Remember username and password - + <b>Username:</b> - + <b>Password:</b> - + Log In - + Other... - + Cancel + + + ... + + + + + Logout + + + + + Please select a valid provider + + + + + Please provide a valid username + + + + + Please provide a valid password + + + + + Logging in... + + + + + Loggin out... + + - MainWindow + MailStatusWidget - - There are new updates available, please restart. + + Form - - More... + + You must login to use encrypted email. - - Show Log + + Email - - &Session + + All services are OFF - - Help + + There was an unexpected problem with Soledad. - - &Quit + + OFF - - &Help + + Mail is OFF - - &Wizard + + You must be logged in to use encrypted email. - - Show &logs + + Starting.. - - Hide Main Window + + Mail is starting - - The following components will be updated: -%s + + ON - - Updates available + + Mail is ON - - Preferences + + Mail is disabled - - Show Main Window + + Starting... - - Please select a valid provider + + Soledad has started... - - Please provide a valid username + + Soledad is starting, please wait... - - Please provide a valid Password + + Looking for key for this user - - Logging in... + + Found key! Starting mail... - - 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. + + Generating new key, please wait... - - We could not find <b>pkexec</b> in your system. + + Finished generating key! - - We could not find openvpn binary. + + Starting mail... - - OFF + + SMTP has started... - - Starting... + + SMTP failed to start, check the logs. - - Not supported + + Failed - - Disabled + + IMAP has started... - - Could not load Encrypted Internet Configuration. + + IMAP failed to start, check the logs. - - Encrypted Internet could not be launched because you did not authenticate properly. + + %s Unread Emails - - Encrypted Internet finished in an unexpected manner! + + About to start, please wait... - - Bitmask + + Disabled + + + MainWindow - - Log &out + + There are new updates available, please restart. - - About &Bitmask + + More... - - Mail is OFF + + Help - - The Bitmask app is ready to update, please restart the application. + + &Quit - - Encrypted Internet is OFF + + &Help - - About Bitmask - %s + + &Wizard - - 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> + + Hide Main Window - - Unable to login: Problem with provider + + The following components will be updated: +%s - - Log in cancelled by the user. + + Updates available - - Encrypted Internet cannot be started because the tuntap extension is not installed properly in your system. + + Show Main Window - - Another openvpn instance is already running, and could not be stopped. + + 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. - - 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 <b>pkexec</b> in your system. - - There was a problem with the provider + + We could not find openvpn binary. - - Something went wrong with the logout. + + Starting... + + + + + Not supported - Unable to connect: Problem with provider + Disabled - - - ProviderBootstrapper - - Provider certificate could not be verified + + Could not load Encrypted Internet Configuration. - - Provider does not support HTTPS + + Encrypted Internet could not be launched because you did not authenticate properly. - - - SRPAuth - - Succeeded + + Encrypted Internet finished in an unexpected manner! - - - StatusPanel - - Form + + Bitmask - - user@domain.org + + About &Bitmask - - Encrypted Internet: + + Mail is OFF - - Off + + The Bitmask app is ready to update, please restart the application. - - Turn On + + About 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> - - 0 Unread Emails + + Unable to login: Problem with provider - - Disabled + + Log in cancelled by the user. - - Encrypted Mail: + + Encrypted Internet cannot be started because the tuntap extension is not installed properly in your system. - - 0.0 KB/s + + Another openvpn instance is already running, and could not be stopped. - - - StatusPanelWidget - - Turn OFF + + Another openvpn instance is already running, and could not be stopped because it was not launched by Bitmask. Please stop it and try again. - - Turn ON + + There was a problem with the provider - - ON + + Something went wrong with the logout. - - Authenticating... + + Unable to connect: Problem with provider - - Retrieving configuration... + + Encrypted Internet - - Waiting to start... + + Login - - Assigning IP + + &Bitmask - - Unable to start VPN, it's already running. + + Preferences... - - All services are OFF + + Show &Log - - Encrypted Internet is {0} + + Create a new account... - - Mail is {0} + + File - - Reconnecting... + + Encrypted Internet: OFF - - Encrypted Internet is OFF + + Network is unreachable - - Encrypted Internet is STARTING + + EIP has stopped + + + Preferences - - Encrypted Internet is ON + + Preferences - - OFF + + Password Change - - Mail is OFF + + &Current password: - - Mail is ON + + &New password: - - Starting... + + &Re-enter new password: - - Soledad has started... + + Change - - Soledad is starting, please wait... + + <Password change status> - - Looking for key for this user + + Enabled services - - Found key! Starting mail... + + Save this provider settings - - Generating new key, please wait... + + Services - - Finished generating key! + + <Select provider> - - Starting mail... + + Select provider: - - SMTP has started... + + < Providers Services Status > + + + PreferencesWindow - - SMTP failed to start, check the logs. + + Automatic - - Failed + + Changing password... - - IMAP has started... + + Password changed successfully. - - IMAP failed to start, check the logs. + + There was a problem changing the password. - - %s Unread Emails + + You did not enter a correct current password. + + + + + Services settings for provider '{0}' saved. - WindowsVPNLauncher + ProviderBootstrapper - - No gateway was found! + + Provider certificate could not be verified + + + + + Provider does not support HTTPS + + + + + SRPAuth + + + Succeeded @@ -622,157 +845,157 @@ - + Check - + https:// - + Checking for a valid provider - + Getting provider information - + Can we reach this provider? - + Provider Information - + Description of services offered by this provider - + Name - + Desc - + <b>Services offered:</b> - + services - + <b>Enrollment policy:</b> - + policy - + <b>URL:</b> - + URL - + <b>Description:</b> - + Provider setup - + Gathering configuration options for this provider - + We are downloading some bits that we need to establish a secure connection with the provider for the first time. - + Setting up provider - + Getting info from the Certificate Authority - + Do we trust this Certificate Authority? - + Establishing a trust relationship with this provider - + Register new user - + Register a new user with provider - + <b>Password:</b> - + <b>Re-enter password:</b> - + Register - + Remember my username and password - + Service selection - + Please select the services you would like to have @@ -787,62 +1010,62 @@ - + Starting registration... - + User %s successfully registered. - + Unknown error - + <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> - + Services by %s - + Something went wrong while trying to load service %s - + Gathering configuration options for %s - + Description of services offered by %s - + Register a new user with %s @@ -857,113 +1080,136 @@ - + Can we establish a secure connection? - + <b>Username:</b> + + + Configure or select a provider + + + + + Configure new provider: + + + + + Use existing one: + + __impl - + The server did not send the salt parameter - + The server did not send the B parameter - + The data sent from the server had errors - + Could not connect to the server - + Unknown error (%s) - + Problem getting data from server - + Bad data from server - + Auth verification failed - + Session cookie verification failed - + There was a problem with authentication - + Invalid username or password. + + kls + + + No gateway was found! + + + msg - + Missing up/down scripts - + 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? diff --git a/src/leap/bitmask/services/eip/vpnlauncher.py b/src/leap/bitmask/services/eip/vpnlauncher.py index 82d8ea48..2ac4c325 100644 --- a/src/leap/bitmask/services/eip/vpnlauncher.py +++ b/src/leap/bitmask/services/eip/vpnlauncher.py @@ -164,7 +164,7 @@ class VPNLauncher(object): if not gateways: logger.error('No gateway was found!') - raise VPNLauncherException(kls.tr('No gateway was found!')) + raise VPNLauncherException('No gateway was found!') logger.debug("Using gateways ips: {0}".format(', '.join(gateways))) -- cgit v1.2.3 From 2d897cccbb6b325cff92c8c8eb9c390b999a6f66 Mon Sep 17 00:00:00 2001 From: Ivan Alejandro Date: Fri, 11 Oct 2013 17:59:49 -0300 Subject: Show systray tooltip ON for EIP. --- changes/bug-show-eip-on | 2 ++ src/leap/bitmask/gui/eip_status.py | 3 +++ 2 files changed, 5 insertions(+) create mode 100644 changes/bug-show-eip-on diff --git a/changes/bug-show-eip-on b/changes/bug-show-eip-on new file mode 100644 index 00000000..dd800471 --- /dev/null +++ b/changes/bug-show-eip-on @@ -0,0 +1,2 @@ + o Show EIP status 'ON' in the systray tooltip when is connected. Related to + #3998. diff --git a/src/leap/bitmask/gui/eip_status.py b/src/leap/bitmask/gui/eip_status.py index 946eaa4e..2a03023b 100644 --- a/src/leap/bitmask/gui/eip_status.py +++ b/src/leap/bitmask/gui/eip_status.py @@ -424,6 +424,9 @@ class EIPStatusWidget(QtGui.QWidget): tray_message = self.tr("Encrypted Internet: ON") selected_pixmap = self.CONNECTED_ICON selected_pixmap_tray = self.CONNECTED_ICON_TRAY + self._eip_status = 'ON' + self._update_systray_tooltip() + self.set_eip_icon(selected_pixmap) self._systray.setIcon(QtGui.QIcon(selected_pixmap_tray)) -- cgit v1.2.3 From ecfba6ce8436f070ff6404ee3f89ff65293759ad Mon Sep 17 00:00:00 2001 From: Kali Kaneko Date: Fri, 11 Oct 2013 19:38:17 -0300 Subject: replace git:// by https:// in repos --- pkg/requirements-dev.pip | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/requirements-dev.pip b/pkg/requirements-dev.pip index 71ffdc37..8b5a8d85 100644 --- a/pkg/requirements-dev.pip +++ b/pkg/requirements-dev.pip @@ -13,5 +13,5 @@ sphinx --e git+git://github.com/leapcode/leap_pycommon.git@develop#egg=leap.common --e git+git://github.com/leapcode/soledad.git@develop#egg=leap.soledad +-e git+https://github.com/leapcode/leap_pycommon.git@develop#egg=leap.common +-e git+https://github.com/leapcode/soledad.git@develop#egg=leap.soledad -- cgit v1.2.3 From 0935a0f0b7ba3e53cba0914db8efbeb0960b77cb Mon Sep 17 00:00:00 2001 From: Ivan Alejandro Date: Mon, 14 Oct 2013 16:08:00 -0300 Subject: Always display first run wizard on first run. * Display the wizard only the first time or if we don't have any provider configured. * Remove unused proper provider setting. * If we have a working provider (as a pinned one), the wizard won't show automatically after being displayed the first time. * If we cancel the first time wizard and we have a configured provider (like the pinned one) the app will not close. --- changes/bug-4143_display-firstrun | 1 + src/leap/bitmask/config/leapsettings.py | 43 +++++++++++++++------------------ src/leap/bitmask/gui/mainwindow.py | 12 ++++++--- 3 files changed, 30 insertions(+), 26 deletions(-) create mode 100644 changes/bug-4143_display-firstrun diff --git a/changes/bug-4143_display-firstrun b/changes/bug-4143_display-firstrun new file mode 100644 index 00000000..a75047c9 --- /dev/null +++ b/changes/bug-4143_display-firstrun @@ -0,0 +1 @@ + o Display first run wizard, regardless of pinned providers. Closes #4143. diff --git a/src/leap/bitmask/config/leapsettings.py b/src/leap/bitmask/config/leapsettings.py index 4660535a..0c25648e 100644 --- a/src/leap/bitmask/config/leapsettings.py +++ b/src/leap/bitmask/config/leapsettings.py @@ -69,6 +69,7 @@ class LeapSettings(object): ALERTMISSING_KEY = "AlertMissingScripts" GATEWAY_KEY = "Gateway" PINNED_KEY = "Pinned" + SKIPFIRSTRUN_KEY = "SkipFirstRun" # values GATEWAY_AUTOMATIC = "Automatic" @@ -260,29 +261,6 @@ class LeapSettings(object): leap_assert_type(remember, bool) self._settings.setValue(self.REMEMBER_KEY, remember) - # TODO: make this scale with multiple providers, we are assuming - # just one for now - def get_properprovider(self): - """ - Returns True if there is a properly configured provider. - - .. note:: this assumes only one provider for now. - - :rtype: bool - """ - return to_bool(self._settings.value(self.PROPERPROVIDER_KEY, False)) - - def set_properprovider(self, properprovider): - """ - Sets whether the app should automatically login. - - :param properprovider: True if the provider is properly configured, - False otherwise. - :type properprovider: bool - """ - leap_assert_type(properprovider, bool) - self._settings.setValue(self.PROPERPROVIDER_KEY, properprovider) - def get_defaultprovider(self): """ Returns the default provider to be used for autostarting EIP @@ -338,3 +316,22 @@ class LeapSettings(object): """ leap_assert_type(value, bool) self._settings.setValue(self.ALERTMISSING_KEY, value) + + def get_skip_first_run(self): + """ + Gets the setting for skip running the first run wizard. + + :returns: if the first run wizard should be skipped or not + :rtype: bool + """ + return to_bool(self._settings.value(self.SKIPFIRSTRUN_KEY, False)) + + def set_skip_first_run(self, skip): + """ + Gets the setting for skip the first run wizard. + + :param skip: if the first run wizard should be skipped or not + :type skip: bool + """ + leap_assert_type(skip, bool) + self._settings.setValue(self.SKIPFIRSTRUN_KEY, skip) diff --git a/src/leap/bitmask/gui/mainwindow.py b/src/leap/bitmask/gui/mainwindow.py index 69545751..bb5c4e64 100644 --- a/src/leap/bitmask/gui/mainwindow.py +++ b/src/leap/bitmask/gui/mainwindow.py @@ -365,7 +365,12 @@ class MainWindow(QtGui.QMainWindow): """ if self._wizard_firstrun: self._settings.set_properprovider(False) - self.quit() + 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: self._finish_init() @@ -393,6 +398,7 @@ class MainWindow(QtGui.QMainWindow): if IS_MAC: self._wizard.raise_() self._wizard.finished.connect(self._wizard_finished) + self._settings.set_skip_first_run(True) def _wizard_finished(self): """ @@ -783,8 +789,8 @@ class MainWindow(QtGui.QMainWindow): """ providers = self._settings.get_configured_providers() has_provider_on_disk = len(providers) != 0 - is_proper_provider = self._settings.get_properprovider() - return not (has_provider_on_disk and is_proper_provider) + skip_first_run = self._settings.get_skip_first_run() + return not (has_provider_on_disk and skip_first_run) def _download_provider_config(self): """ -- cgit v1.2.3 From 96ddbd359804d47f81b9572dd56f4a991d7c1e36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Touceda?= Date: Mon, 14 Oct 2013 15:33:35 -0300 Subject: Disable stdout redirection on windows for now since it breaks the bundle --- src/leap/bitmask/app.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/leap/bitmask/app.py b/src/leap/bitmask/app.py index 5982fe91..75bf7123 100644 --- a/src/leap/bitmask/app.py +++ b/src/leap/bitmask/app.py @@ -54,6 +54,7 @@ from leap.bitmask.util import leap_argparse from leap.bitmask.util import log_silencer from leap.bitmask.util.leap_log_handler import LeapLogHandler from leap.bitmask.util.streamtologger import StreamToLogger +from leap.bitmask.platform_init import IS_WIN from leap.common.events import server as event_server import codecs @@ -140,12 +141,15 @@ def replace_stdout_stderr_with_logging(logger): - the twisted log output with a custom one that writes to the logger. """ - sys.stdout = StreamToLogger(logger, logging.DEBUG) - sys.stderr = StreamToLogger(logger, logging.ERROR) - - # Replace twisted's logger to use our custom output. - from twisted.python import log - log.startLogging(sys.stdout) + # Disabling this on windows since it breaks ALL THE THINGS + # The issue for this is #4149 + if not IS_WIN: + sys.stdout = StreamToLogger(logger, logging.DEBUG) + sys.stderr = StreamToLogger(logger, logging.ERROR) + + # Replace twisted's logger to use our custom output. + from twisted.python import log + log.startLogging(sys.stdout) def main(): -- cgit v1.2.3 From 23107e1cf7670b0ee01c73284bbf9d7a21e4a92c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Touceda?= Date: Mon, 14 Oct 2013 15:34:42 -0300 Subject: Default UP/DOWN_SCRIPTs to None and add them only if not None --- src/leap/bitmask/services/eip/vpnlauncher.py | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/src/leap/bitmask/services/eip/vpnlauncher.py b/src/leap/bitmask/services/eip/vpnlauncher.py index 2ac4c325..bce3599b 100644 --- a/src/leap/bitmask/services/eip/vpnlauncher.py +++ b/src/leap/bitmask/services/eip/vpnlauncher.py @@ -102,6 +102,8 @@ class VPNLauncher(object): UPDOWN_FILES = None OTHER_FILES = None + UP_SCRIPT = None + DOWN_SCRIPT = None @classmethod @abstractmethod @@ -211,15 +213,17 @@ class VPNLauncher(object): '--script-security', '2' ] - if _has_updown_scripts(kls.UP_SCRIPT): - args += [ - '--up', '\"%s\"' % (kls.UP_SCRIPT,), - ] - - if _has_updown_scripts(kls.DOWN_SCRIPT): - args += [ - '--down', '\"%s\"' % (kls.DOWN_SCRIPT,) - ] + if kls.UP_SCRIPT is not None: + if _has_updown_scripts(kls.UP_SCRIPT): + args += [ + '--up', '\"%s\"' % (kls.UP_SCRIPT,), + ] + + if kls.DOWN_SCRIPT is not None: + if _has_updown_scripts(kls.DOWN_SCRIPT): + args += [ + '--down', '\"%s\"' % (kls.DOWN_SCRIPT,) + ] ########################################################### # For the time being we are disabling the usage of the -- cgit v1.2.3 From e1e946cd78e0a30a88aca1a24624fcf0878753be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Touceda?= Date: Mon, 14 Oct 2013 15:35:09 -0300 Subject: Use .exe extension on windows --- src/leap/bitmask/services/soledad/soledadbootstrapper.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/leap/bitmask/services/soledad/soledadbootstrapper.py b/src/leap/bitmask/services/soledad/soledadbootstrapper.py index 409389be..4619ba80 100644 --- a/src/leap/bitmask/services/soledad/soledadbootstrapper.py +++ b/src/leap/bitmask/services/soledad/soledadbootstrapper.py @@ -34,6 +34,7 @@ from leap.bitmask.services.abstractbootstrapper import AbstractBootstrapper from leap.bitmask.services.soledad.soledadconfig import SoledadConfig from leap.bitmask.util import is_file, is_empty_file from leap.bitmask.util import get_path_prefix +from leap.bitmask.platform_init import IS_WIN from leap.common.check import leap_assert, leap_assert_type, leap_check from leap.common.files import which from leap.keymanager import KeyManager, openpgp @@ -319,11 +320,12 @@ class SoledadBootstrapper(AbstractBootstrapper): :returns: the gpg binary path :rtype: str """ - # TODO: Fix for Windows gpgbin = None if flags.STANDALONE: gpgbin = os.path.join( get_path_prefix(), "..", "apps", "mail", "gpg") + if IS_WIN: + gpgbin += ".exe" else: try: gpgbin_options = which("gpg") -- cgit v1.2.3 From 1a7cf76fbcfe3098838fbcdc5467c6f8b1cda691 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Touceda?= Date: Mon, 14 Oct 2013 15:37:59 -0300 Subject: Add changes file --- changes/bug_several_windows_fixes | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 changes/bug_several_windows_fixes diff --git a/changes/bug_several_windows_fixes b/changes/bug_several_windows_fixes new file mode 100644 index 00000000..f584f7e0 --- /dev/null +++ b/changes/bug_several_windows_fixes @@ -0,0 +1,5 @@ + o Disable stdout redirection on Windows for the time being since it + breaks the bundle. + o Default UP_SCRIPT and DOWN_SCRIPT to None and only add that + parameter to the vpn command if not None. + o Look for gpg on windows with the .exe extension. \ No newline at end of file -- cgit v1.2.3 From 2247aa80af0b959ae3d95ac048e397db896eb6d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Touceda?= Date: Tue, 8 Oct 2013 15:59:29 -0300 Subject: Improve GUI based on QA rounds --- changes/bug_improve_gui | 1 + src/leap/bitmask/gui/mainwindow.py | 9 +- src/leap/bitmask/gui/ui/eip_status.ui | 4 +- src/leap/bitmask/gui/ui/login.ui | 230 ++++++++++++++++++--------------- src/leap/bitmask/gui/ui/mail_status.ui | 73 +++++++---- src/leap/bitmask/gui/ui/mainwindow.ui | 44 ++++++- 6 files changed, 220 insertions(+), 141 deletions(-) create mode 100644 changes/bug_improve_gui diff --git a/changes/bug_improve_gui b/changes/bug_improve_gui new file mode 100644 index 00000000..8a106a10 --- /dev/null +++ b/changes/bug_improve_gui @@ -0,0 +1 @@ + o Improve GUI based on QA rounds. Fixes #4041 and #4042. \ No newline at end of file diff --git a/src/leap/bitmask/gui/mainwindow.py b/src/leap/bitmask/gui/mainwindow.py index bb5c4e64..c715984e 100644 --- a/src/leap/bitmask/gui/mainwindow.py +++ b/src/leap/bitmask/gui/mainwindow.py @@ -298,6 +298,11 @@ class MainWindow(QtGui.QMainWindow): self.ui.lblNewUpdates.setVisible(False) self.ui.btnMore.setVisible(False) + ######################################### + # We hide this in height temporarily too + self.ui.lblNewUpdates.resize(0, 0) + self.ui.btnMore.resize(0, 0) + ######################################### self.ui.btnMore.clicked.connect(self._updates_details) # Services signals/slots connection @@ -639,7 +644,7 @@ class MainWindow(QtGui.QMainWindow): eip_menu = systrayMenu.addMenu(self.tr("Encrypted Internet: OFF")) eip_menu.addAction(self._action_eip_startstop) self._eip_status.set_eip_status_menu(eip_menu) - + systrayMenu.addSeparator() systrayMenu.addAction(self._action_mail_status) systrayMenu.addSeparator() systrayMenu.addAction(self.ui.action_quit) @@ -941,6 +946,7 @@ class MainWindow(QtGui.QMainWindow): """ self._login_widget.logged_in() + self.ui.lblLoginProvider.setText(self._provider_config.get_name()) self._enabled_services = self._settings.get_enabled_services( self._provider_config.get_domain()) @@ -1613,6 +1619,7 @@ class MainWindow(QtGui.QMainWindow): logging out """ self._login_widget.done_logout() + self.ui.lblLoginProvider.setText(self.tr("Login")) if ok: self._logged_user = None diff --git a/src/leap/bitmask/gui/ui/eip_status.ui b/src/leap/bitmask/gui/ui/eip_status.ui index 27df3f31..25831118 100644 --- a/src/leap/bitmask/gui/ui/eip_status.ui +++ b/src/leap/bitmask/gui/ui/eip_status.ui @@ -94,8 +94,8 @@ - 16 - 16 + 24 + 24 diff --git a/src/leap/bitmask/gui/ui/login.ui b/src/leap/bitmask/gui/ui/login.ui index a1842608..e7ca1652 100644 --- a/src/leap/bitmask/gui/ui/login.ui +++ b/src/leap/bitmask/gui/ui/login.ui @@ -7,7 +7,7 @@ 0 0 468 - 350 + 363 @@ -32,104 +32,26 @@ 0 - - - - - 0 - 0 - - - - - 0 - 0 - + + -1 + + + + + Qt::Horizontal - - - 24 - - - - - - 15 - 75 - true - - - - ... - - - - - - - Logout - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - color: rgb(132, 132, 132); -font: 75 12pt "Lucida Grande"; - - - - - - - - - - - - - - 0 - 0 - + + QSizePolicy::Maximum - + - 16777215 - 800 + 12 + 0 - - - - - :/images/black/32/user.png - - - false - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop - - - 0 - - + - + @@ -224,21 +146,36 @@ font: 75 12pt "Lucida Grande"; - - - - Qt::Horizontal - - - QSizePolicy::Maximum + + + + + 0 + 0 + - + - 12 - 0 + 16777215 + 800 - + + + + + :/images/black/32/user.png + + + false + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + 0 + + @@ -259,6 +196,91 @@ font: 75 12pt "Lucida Grande"; + + + + + 0 + 0 + + + + + 0 + 0 + + + + + 0 + + + 24 + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Logout + + + + + + + + 15 + 75 + true + + + + ... + + + + + + + color: rgb(132, 132, 132); +font: 75 12pt "Lucida Grande"; + + + + + + + + + + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 0 + 5 + + + + diff --git a/src/leap/bitmask/gui/ui/mail_status.ui b/src/leap/bitmask/gui/ui/mail_status.ui index 1327f9e7..22976f39 100644 --- a/src/leap/bitmask/gui/ui/mail_status.ui +++ b/src/leap/bitmask/gui/ui/mail_status.ui @@ -7,7 +7,7 @@ 0 0 400 - 72 + 79 @@ -20,9 +20,25 @@ Form + + 0 + - + + + + Qt::Horizontal + + + + 40 + 20 + + + + + color: rgb(80, 80, 80); @@ -32,7 +48,26 @@ - + + + + + 24 + 24 + + + + + + + :/images/black/32/off.png + + + true + + + + @@ -45,38 +80,22 @@ - - + + - Qt::Horizontal + Qt::Vertical + + + QSizePolicy::Fixed - 40 - 20 + 0 + 5 - - - - - 16 - 16 - - - - - - - :/images/black/32/off.png - - - true - - - diff --git a/src/leap/bitmask/gui/ui/mainwindow.ui b/src/leap/bitmask/gui/ui/mainwindow.ui index 920160b8..10c77057 100644 --- a/src/leap/bitmask/gui/ui/mainwindow.ui +++ b/src/leap/bitmask/gui/ui/mainwindow.ui @@ -86,13 +86,16 @@ 0 - + 0 0 + + QFrame{background-color: qlineargradient(spread:pad, x1:0, y1:1, x2:0, y2:0, stop:0 rgba(160, 160, 160, 128), stop:1 rgba(255, 255, 255, 0));} + 24 @@ -109,6 +112,9 @@ true + + background-color: rgba(255, 255, 255, 0); + Encrypted Internet @@ -122,6 +128,9 @@ 20 + + + @@ -167,13 +176,21 @@ - + 0 0 + + false + + + QFrame{ +background-color: qlineargradient(spread:pad, x1:0, y1:1, x2:0, y2:0, stop:0 rgba(160, 160, 160, 128), stop:1 rgba(255, 255, 255, 0)); +} + 24 @@ -190,6 +207,9 @@ true + + background-color: rgba(255, 255, 255, 0); + Login @@ -203,6 +223,9 @@ 20 + + + @@ -216,7 +239,11 @@ - + + + 12 + + @@ -226,7 +253,10 @@ - + + + -1 + 12 @@ -269,7 +299,7 @@ 40 - 20 + 0 @@ -290,7 +320,7 @@ - + 0 0 @@ -311,7 +341,7 @@ 40 - 20 + 0 -- cgit v1.2.3 From a0d827d28e7aba2e55be9b1cbf04292e6c385c34 Mon Sep 17 00:00:00 2001 From: Ivan Alejandro Date: Tue, 15 Oct 2013 11:46:08 -0300 Subject: Fix pep8 violations. --- src/leap/bitmask/app.py | 3 ++- src/leap/bitmask/gui/eip_status.py | 1 - src/leap/bitmask/services/eip/vpnprocess.py | 1 - src/leap/bitmask/util/leap_log_handler.py | 3 ++- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/leap/bitmask/app.py b/src/leap/bitmask/app.py index 75bf7123..40a77075 100644 --- a/src/leap/bitmask/app.py +++ b/src/leap/bitmask/app.py @@ -100,7 +100,8 @@ def add_logger_handlers(debug=False, logfile=None): logger = logging.getLogger(name='leap') logger.setLevel(level) - log_format = '%(asctime)s - %(name)s:%(funcName)s:L#%(lineno)s - %(levelname)s - %(message)s' + log_format = ('%(asctime)s - %(name)s:%(funcName)s:L#%(lineno)s ' + '- %(levelname)s - %(message)s') formatter = logging.Formatter(log_format) # Console handler diff --git a/src/leap/bitmask/gui/eip_status.py b/src/leap/bitmask/gui/eip_status.py index 2a03023b..77685cd3 100644 --- a/src/leap/bitmask/gui/eip_status.py +++ b/src/leap/bitmask/gui/eip_status.py @@ -427,7 +427,6 @@ class EIPStatusWidget(QtGui.QWidget): self._eip_status = 'ON' self._update_systray_tooltip() - self.set_eip_icon(selected_pixmap) self._systray.setIcon(QtGui.QIcon(selected_pixmap_tray)) self._eip_status_menu.setTitle(tray_message) diff --git a/src/leap/bitmask/services/eip/vpnprocess.py b/src/leap/bitmask/services/eip/vpnprocess.py index 9baa4c53..19e1aa7b 100644 --- a/src/leap/bitmask/services/eip/vpnprocess.py +++ b/src/leap/bitmask/services/eip/vpnprocess.py @@ -739,7 +739,6 @@ class VPNManager(object): raise OpenVPNAlreadyRunning - class VPNProcess(protocol.ProcessProtocol, VPNManager): """ A ProcessProtocol class that can be used to spawn a process that will diff --git a/src/leap/bitmask/util/leap_log_handler.py b/src/leap/bitmask/util/leap_log_handler.py index 262f2f65..1ab62331 100644 --- a/src/leap/bitmask/util/leap_log_handler.py +++ b/src/leap/bitmask/util/leap_log_handler.py @@ -52,7 +52,8 @@ class LogHandler(logging.Handler): :param logging_level: the debug level to define the color. :type logging_level: str. """ - log_format = '%(asctime)s - %(name)s:%(funcName)s:L#%(lineno)s - %(levelname)s - %(message)s' + log_format = ('%(asctime)s - %(name)s:%(funcName)s:L#%(lineno)s ' + '- %(levelname)s - %(message)s') formatter = logging.Formatter(log_format) return formatter -- cgit v1.2.3 From ef53b6112e0a384f319ce199e1166ace4bd6af7a Mon Sep 17 00:00:00 2001 From: Ivan Alejandro Date: Tue, 15 Oct 2013 18:04:59 -0300 Subject: Remove unused code. --- src/leap/bitmask/gui/wizard.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/leap/bitmask/gui/wizard.py b/src/leap/bitmask/gui/wizard.py index e3f5904e..6ba65410 100644 --- a/src/leap/bitmask/gui/wizard.py +++ b/src/leap/bitmask/gui/wizard.py @@ -53,9 +53,6 @@ class Wizard(QtGui.QWizard): REGISTER_USER_PAGE = 4 SERVICES_PAGE = 5 - WEAK_PASSWORDS = ("123456", "qweasd", "qwerty", - "password") - BARE_USERNAME_REGEX = r"^[A-Za-z\d_]+$" def __init__(self, bypass_checks=False): -- cgit v1.2.3 From f1e2ad174b1d3682ffe2fea36d0fa473ff418d77 Mon Sep 17 00:00:00 2001 From: Ivan Alejandro Date: Tue, 15 Oct 2013 18:14:22 -0300 Subject: Remove remainings of unused properprovider setting --- src/leap/bitmask/config/leapsettings.py | 1 - src/leap/bitmask/gui/mainwindow.py | 2 -- 2 files changed, 3 deletions(-) diff --git a/src/leap/bitmask/config/leapsettings.py b/src/leap/bitmask/config/leapsettings.py index 0c25648e..d7b60ba9 100644 --- a/src/leap/bitmask/config/leapsettings.py +++ b/src/leap/bitmask/config/leapsettings.py @@ -62,7 +62,6 @@ class LeapSettings(object): GEOMETRY_KEY = "Geometry" WINDOWSTATE_KEY = "WindowState" USER_KEY = "User" - PROPERPROVIDER_KEY = "ProperProvider" REMEMBER_KEY = "RememberUserAndPass" DEFAULTPROVIDER_KEY = "DefaultProvider" AUTOSTARTEIP_KEY = "AutoStartEIP" diff --git a/src/leap/bitmask/gui/mainwindow.py b/src/leap/bitmask/gui/mainwindow.py index c715984e..5d7f717b 100644 --- a/src/leap/bitmask/gui/mainwindow.py +++ b/src/leap/bitmask/gui/mainwindow.py @@ -369,7 +369,6 @@ class MainWindow(QtGui.QMainWindow): finishing. """ if self._wizard_firstrun: - self._settings.set_properprovider(False) providers = self._settings.get_configured_providers() has_provider_on_disk = len(providers) != 0 if not has_provider_on_disk: @@ -582,7 +581,6 @@ class MainWindow(QtGui.QMainWindow): self._login_widget.set_password(possible_password) self._login() self._wizard = None - self._settings.set_properprovider(True) else: self._try_autostart_eip() if not self._settings.get_remember(): -- cgit v1.2.3 From 2a920d3b499c4a35d647c181eb596d041c2deead Mon Sep 17 00:00:00 2001 From: Ivan Alejandro Date: Wed, 16 Oct 2013 15:41:31 -0300 Subject: Remember last domain used to login. Closes #4116. --- changes/bug-4116_remember-last-login-domain | 1 + src/leap/bitmask/config/leapsettings.py | 19 +++++++++++++++++++ src/leap/bitmask/gui/login.py | 1 + src/leap/bitmask/gui/mainwindow.py | 8 +++++--- 4 files changed, 26 insertions(+), 3 deletions(-) create mode 100644 changes/bug-4116_remember-last-login-domain diff --git a/changes/bug-4116_remember-last-login-domain b/changes/bug-4116_remember-last-login-domain new file mode 100644 index 00000000..9331052b --- /dev/null +++ b/changes/bug-4116_remember-last-login-domain @@ -0,0 +1 @@ + o Remember last domain used to login. Closes #4116. diff --git a/src/leap/bitmask/config/leapsettings.py b/src/leap/bitmask/config/leapsettings.py index d7b60ba9..c524425e 100644 --- a/src/leap/bitmask/config/leapsettings.py +++ b/src/leap/bitmask/config/leapsettings.py @@ -62,6 +62,7 @@ class LeapSettings(object): GEOMETRY_KEY = "Geometry" WINDOWSTATE_KEY = "WindowState" USER_KEY = "User" + PROVIDER_KEY = "Provider" REMEMBER_KEY = "RememberUserAndPass" DEFAULTPROVIDER_KEY = "DefaultProvider" AUTOSTARTEIP_KEY = "AutoStartEIP" @@ -241,6 +242,24 @@ class LeapSettings(object): leap_assert(len(user) > 0, "We cannot save an empty user") self._settings.setValue(self.USER_KEY, user) + def get_provider(self): + """ + Returns the configured provider to remember, None if there isn't one + + :rtype: str or None + """ + return self._settings.value(self.PROVIDER_KEY, None) + + def set_provider(self, provider): + """ + Saves the provider to remember + + :param provider: provider name to remember + :type provider: str + """ + leap_assert(len(provider) > 0, "We cannot save an empty provider") + self._settings.setValue(self.PROVIDER_KEY, provider) + def get_remember(self): """ Returns the value of the remember selection. diff --git a/src/leap/bitmask/gui/login.py b/src/leap/bitmask/gui/login.py index c8c5c402..ac34fe23 100644 --- a/src/leap/bitmask/gui/login.py +++ b/src/leap/bitmask/gui/login.py @@ -297,6 +297,7 @@ class LoginWidget(QtGui.QWidget): self.set_enabled(False) self.ui.clblErrorMsg.hide() + self._settings.set_provider(provider) if self.get_remember() and has_keyring(): # in the keyring and in the settings # we store the value 'usename@provider' diff --git a/src/leap/bitmask/gui/mainwindow.py b/src/leap/bitmask/gui/mainwindow.py index 5d7f717b..f5631c69 100644 --- a/src/leap/bitmask/gui/mainwindow.py +++ b/src/leap/bitmask/gui/mainwindow.py @@ -583,6 +583,11 @@ class MainWindow(QtGui.QMainWindow): self._wizard = None else: self._try_autostart_eip() + + domain = self._settings.get_provider() + if domain is not None: + self._login_widget.select_provider_by_name(domain) + if not self._settings.get_remember(): # nothing to do here return @@ -600,9 +605,6 @@ class MainWindow(QtGui.QMainWindow): # fill the username self._login_widget.set_user(username) - # select the configured provider in the combo box - self._login_widget.select_provider_by_name(domain) - self._login_widget.set_remember(True) saved_password = None -- cgit v1.2.3 From 5445d5868236b1de481f44f7c4314d93b19f2898 Mon Sep 17 00:00:00 2001 From: Kali Kaneko Date: Wed, 16 Oct 2013 01:11:27 -0300 Subject: add make step to bootstrap script --- changes/bug_improve-bootstrap-script | 1 + pkg/scripts/bitmask_bootstrap.sh | 51 +++++++++++++++++++++++++++--------- 2 files changed, 40 insertions(+), 12 deletions(-) create mode 100644 changes/bug_improve-bootstrap-script diff --git a/changes/bug_improve-bootstrap-script b/changes/bug_improve-bootstrap-script new file mode 100644 index 00000000..855efcb7 --- /dev/null +++ b/changes/bug_improve-bootstrap-script @@ -0,0 +1 @@ + o Add call to `make` to bootstrap script. diff --git a/pkg/scripts/bitmask_bootstrap.sh b/pkg/scripts/bitmask_bootstrap.sh index bd568ebd..70f9867e 100755 --- a/pkg/scripts/bitmask_bootstrap.sh +++ b/pkg/scripts/bitmask_bootstrap.sh @@ -1,10 +1,34 @@ #!/bin/bash - +###################################################################### +# bitmask_boostrap.sh +# Copyright (C) 2013 LEAP +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +###################################################################### # Installs requirements, and # clones the latest leap-client # depends on: -# openvpn git-core libgnutls-dev python-dev python-qt4 python-setuptools python-virtualenv +# (authoritative list under docs/dev/quickstart.rst) + +# git python-dev python-setuptools python-virtualenv python-pip python-openssl libsqlite3-dev g++ openvpn +# pyside-tools python-pyside python-qt4 + +# Clone latest git (develop branch) +# change "develop" for any other branch you want. +BRANCH="develop" +BITMASK_DIR="bitmask-develop" # Escape code esc=`echo -en "\033"` @@ -23,27 +47,30 @@ echo "~~~~~~~~~~~~~~~~~~~~~~~" echo "" echo "${cc_green}Creating virtualenv...${cc_normal}" -mkdir bitmask-testbuild -virtualenv bitmask-testbuild -source bitmask-testbuild/bin/activate +mkdir ${BITMASK_DIR} +virtualenv "${BITMASK_DIR}" +source ./${BITMASK_DIR}/bin/activate echo "${cc_green}Installing bitmask...${cc_normal}" -# Clone latest git (develop branch) -# change "develop" for any other branch you want. - +pip install -e 'git+https://leap.se/git/bitmask_client@'${BRANCH}'#egg=leap.bitmask' -pip install -e 'git+https://leap.se/git/bitmask_client@develop#egg=leap.bitmask' - -cd bitmask-testbuild +cd ${BITMASK_DIR} # symlink the pyside libraries to the system libs ./src/leap.bitmask/pkg/postmkvenv.sh +cd ./src/leap.bitmask +make +cd ../../ +source ./bin/activate + echo "${cc_green}bitmask installed! =)" echo "${cc_yellow}" echo "Launch it with: " echo "~~~~~~~~~~~~~~~~~~~~~~" -echo "bin/bitmask" +echo "bin/bitmask --debug" echo "~~~~~~~~~~~~~~~~~~~~~~" +echo "If you are not inside the virtualenv, source it first with " +echo "source "${BITMASK_DIR}"/bin/activate" echo "${cc_normal}" -- cgit v1.2.3 From 497c9d416f926c37cc2d296411b53210de618cef Mon Sep 17 00:00:00 2001 From: Kali Kaneko Date: Thu, 17 Oct 2013 11:22:35 -0300 Subject: added new translations (vi, en_GB) --- changes/feature_new-translations | 1 + data/translations/en_GB.qm | Bin 0 -> 29879 bytes data/translations/en_GB.ts | 1217 ++++++++++++++++++++++++++++++++++++++ data/translations/vi.qm | Bin 0 -> 32946 bytes data/translations/vi.ts | 1217 ++++++++++++++++++++++++++++++++++++++ data/ts/en_US.ts | 133 ++--- 6 files changed, 2499 insertions(+), 69 deletions(-) create mode 100644 changes/feature_new-translations create mode 100644 data/translations/en_GB.qm create mode 100644 data/translations/en_GB.ts create mode 100644 data/translations/vi.qm create mode 100644 data/translations/vi.ts diff --git a/changes/feature_new-translations b/changes/feature_new-translations new file mode 100644 index 00000000..212f84ae --- /dev/null +++ b/changes/feature_new-translations @@ -0,0 +1 @@ + o Added Vietnamese and English (United Kingdom) translations. diff --git a/data/translations/en_GB.qm b/data/translations/en_GB.qm new file mode 100644 index 00000000..d95163c1 Binary files /dev/null and b/data/translations/en_GB.qm differ diff --git a/data/translations/en_GB.ts b/data/translations/en_GB.ts new file mode 100644 index 00000000..7a719acf --- /dev/null +++ b/data/translations/en_GB.ts @@ -0,0 +1,1217 @@ + + + EIPPreferences + + + EIP Preferences + EIP Preferences + + + + Select gateway for provider + Select gateway for provider + + + + &Select provider: + &Select provider: + + + + <Select provider> + <Select provider> + + + + Save this provider settings + Save this provider settings + + + + < Providers Gateway Status > + < Providers Gateway Status > + + + + Select gateway: + Select gateway: + + + + Automatic + Automatic + + + + Automatic EIP start + Automatic EIP start + + + + <font color='green'><b>Automatic EIP start saved!</b></font> + <font color='green'><b>Automatic EIP start saved!</b></font> + + + + Save auto start setting + Save auto start setting + + + + Enable Automatic start of EIP + Enable Automatic start of EIP + + + + EIPPreferencesWindow + + + Automatic + Automatic + + + + Gateway settings for provider '{0}' saved. + Gateway settings for provider '{0}' saved. + + + + There was a problem with configuration files. + There was a problem with configuration files. + + + + EIPStatus + + + Form + Form + + + + Turn On + Turn On + + + + ... + ... + + + + Traffic is being routed in the clear + Traffic is being routed in the clear + + + + 0.0 KB/s + 0.0 KB/s + + + + EIPStatusWidget + + + All services are OFF + All services are OFF + + + + Encrypted Internet: {0} + Encrypted Internet: {0} + + + + You must login to use Encrypted Internet + You must login to use Encrypted Internet + + + + Turn OFF + Turn OFF + + + + Turn ON + Turn ON + + + + Traffic is being routed in the clear + Traffic is being routed in the clear + + + + Authenticating... + Authenticating... + + + + Retrieving configuration... + Retrieving configuration... + + + + Waiting to start... + Waiting to start... + + + + Assigning IP + Assigning IP + + + + Reconnecting... + Reconnecting... + + + + Unable to start VPN, it's already running. + Unable to start VPN, it's already running. + + + + Encrypted Internet: OFF + Encrypted Internet: OFF + + + + Encrypted Internet: Starting... + Encrypted Internet: Starting... + + + + Encrypted Internet: ON + Encrypted Internet: ON + + + + Route traffic through: {0} + Route traffic through: {0} + + + + LoggerWindow + + + Logs + Logs + + + + Debug + Debug + + + + Info + Info + + + + Warning + Warning + + + + Error + Error + + + + Critical + Critical + + + + Save to file + Save to file + + + + Save As + Save As + + + + Filter by: + Filter by: + + + + Case Insensitive + Case Insensitive + + + + LoginWidget + + + Form + Form + + + + <b>Provider:</b> + <b>Provider:</b> + + + + Remember username and password + Remember username and password + + + + <b>Username:</b> + <b>Username:</b> + + + + <b>Password:</b> + <b>Password:</b> + + + + Log In + Log In + + + + Other... + Other... + + + + Cancel + Cancel + + + + ... + ... + + + + Logout + Logout + + + + Please select a valid provider + Please select a valid provider + + + + Please provide a valid username + Please provide a valid username + + + + Please provide a valid password + Please provide a valid password + + + + Logging in... + Logging in... + + + + Loggin out... + Loggin out... + + + + MailStatusWidget + + + Form + Form + + + + You must login to use encrypted email. + You must login to use encrypted email. + + + + Email + Email + + + + All services are OFF + All services are OFF + + + + There was an unexpected problem with Soledad. + There was an unexpected problem with Soledad. + + + + OFF + OFF + + + + Mail is OFF + Mail is OFF + + + + You must be logged in to use encrypted email. + You must be logged in to use encrypted email. + + + + Starting.. + Starting.. + + + + Mail is starting + Mail is starting + + + + ON + ON + + + + Mail is ON + Mail is ON + + + + Mail is disabled + Mail is disabled + + + + Starting... + Starting... + + + + Soledad has started... + Soledad has started... + + + + Soledad is starting, please wait... + Soledad is starting, please wait... + + + + Looking for key for this user + Looking for key for this user + + + + Found key! Starting mail... + Found key! Starting mail... + + + + Generating new key, please wait... + Generating new key, please wait... + + + + Finished generating key! + Finished generating key! + + + + Starting mail... + Starting mail... + + + + SMTP has started... + SMTP has started... + + + + SMTP failed to start, check the logs. + SMTP failed to start, check the logs. + + + + Failed + Failed + + + + IMAP has started... + IMAP has started... + + + + IMAP failed to start, check the logs. + IMAP failed to start, check the logs. + + + + %s Unread Emails + %s Unread Emails + + + + About to start, please wait... + About to start, please wait... + + + + Disabled + Disabled + + + + MainWindow + + + There are new updates available, please restart. + There are new updates available, please restart. + + + + More... + More... + + + + Help + Help + + + + &Quit + &Quit + + + + &Help + &Help + + + + &Wizard + &Wizard + + + + Hide Main Window + Hide Main Window + + + + The following components will be updated: +%s + The following components will be updated: +%s + + + + Updates available + Updates available + + + + Show Main Window + Show Main Window + + + + 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. + 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. + + + + We could not find <b>pkexec</b> in your system. + We could not find <b>pkexec</b> in your system. + + + + We could not find openvpn binary. + We could not find openvpn binary. + + + + Starting... + Starting... + + + + Not supported + Not supported + + + + Disabled + Disabled + + + + Could not load Encrypted Internet Configuration. + Could not load Encrypted Internet Configuration. + + + + Encrypted Internet could not be launched because you did not authenticate properly. + Encrypted Internet could not be launched because you did not authenticate properly. + + + + Encrypted Internet finished in an unexpected manner! + Encrypted Internet finished in an unexpected manner! + + + + Bitmask + Bitmask + + + + About &Bitmask + About &Bitmask + + + + Mail is OFF + Mail is OFF + + + + The Bitmask app is ready to update, please restart the application. + The Bitmask app is ready to update, please restart the application. + + + + About Bitmask - %s + About 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> + 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> + + + + Unable to login: Problem with provider + Unable to login: Problem with provider + + + + Log in cancelled by the user. + Log in cancelled by the user. + + + + Encrypted Internet cannot be started because the tuntap extension is not installed properly in your system. + Encrypted Internet cannot be started because the tuntap extension is not installed properly in your system. + + + + Another openvpn instance is already running, and could not be stopped. + 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. + Another openvpn instance is already running, and could not be stopped because it was not launched by Bitmask. Please stop it and try again. + + + + There was a problem with the provider + There was a problem with the provider + + + + Something went wrong with the logout. + Something went wrong with the logout. + + + + Unable to connect: Problem with provider + Unable to connect: Problem with provider + + + + Encrypted Internet + Encrypted Internet + + + + Login + Login + + + + &Bitmask + &Bitmask + + + + Preferences... + Preferences... + + + + Show &Log + Show &Log + + + + Create a new account... + Create a new account... + + + + File + File + + + + Encrypted Internet: OFF + Encrypted Internet: OFF + + + + Network is unreachable + Network is unreachable + + + + EIP has stopped + EIP has stopped + + + + Preferences + + + Preferences + Preferences + + + + Password Change + Password Change + + + + &Current password: + &Current password: + + + + &New password: + &New password: + + + + &Re-enter new password: + &Re-enter new password: + + + + Change + Change + + + + <Password change status> + <Password change status> + + + + Enabled services + Enabled services + + + + Save this provider settings + Save this provider settings + + + + Services + Services + + + + <Select provider> + <Select provider> + + + + Select provider: + Select provider: + + + + < Providers Services Status > + < Providers Services Status > + + + + PreferencesWindow + + + Automatic + Automatic + + + + Changing password... + Changing password... + + + + Password changed successfully. + Password changed successfully. + + + + There was a problem changing the password. + There was a problem changing the password. + + + + You did not enter a correct current password. + You did not enter a correct current password. + + + + Services settings for provider '{0}' saved. + Services settings for provider '{0}' saved. + + + + ProviderBootstrapper + + + Provider certificate could not be verified + Provider certificate could not be verified + + + + Provider does not support HTTPS + Provider does not support HTTPS + + + + SRPAuth + + + Succeeded + Succeeded + + + + Wizard + + + Welcome + Welcome + + + + Log In with my credentials + Log In with my credentials + + + + <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>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> + + + + Sign up for a new account + Sign up for a new account + + + + Provider selection + Provider selection + + + + Please enter the domain of the provider you want to use for your connection + Please enter the domain of the provider you want to use for your connection + + + + Check + Check + + + + https:// + https:// + + + + Checking for a valid provider + Checking for a valid provider + + + + Getting provider information + Getting provider information + + + + Can we reach this provider? + Can we reach this provider? + + + + Provider Information + Provider Information + + + + Description of services offered by this provider + Description of services offered by this provider + + + + Name + Name + + + + Desc + Desc + + + + <b>Services offered:</b> + <b>Services offered:</b> + + + + services + services + + + + <b>Enrollment policy:</b> + <b>Enrollment policy:</b> + + + + policy + policy + + + + <b>URL:</b> + <b>URL:</b> + + + + URL + URL + + + + <b>Description:</b> + <b>Description:</b> + + + + Provider setup + Provider setup + + + + Gathering configuration options for this provider + Gathering configuration options for this provider + + + + We are downloading some bits that we need to establish a secure connection with the provider for the first time. + We are downloading some bits that we need to establish a secure connection with the provider for the first time. + + + + Setting up provider + Setting up provider + + + + Getting info from the Certificate Authority + Getting info from the Certificate Authority + + + + Do we trust this Certificate Authority? + Do we trust this Certificate Authority? + + + + Establishing a trust relationship with this provider + Establishing a trust relationship with this provider + + + + Register new user + Register new user + + + + Register a new user with provider + Register a new user with provider + + + + <b>Password:</b> + <b>Password:</b> + + + + <b>Re-enter password:</b> + <b>Re-enter password:</b> + + + + Register + Register + + + + Remember my username and password + Remember my username and password + + + + Service selection + Service selection + + + + Please select the services you would like to have + Please select the services you would like to have + + + + &Next > + &Next > + + + + Connect + Connect + + + + Starting registration... + Starting registration... + + + + User %s successfully registered. + User %s successfully registered. + + + + Unknown error + Unknown error + + + + <font color='red'><b>Non-existent provider</b></font> + <font color='red'><b>Non-existent provider</b></font> + + + + <font color='red'><b>%s</b></font> + <font color='red'><b>%s</b></font> + + + + Unable to load provider configuration + Unable to load provider configuration + + + + <font color='red'><b>Not a valid provider</b></font> + <font color='red'><b>Not a valid provider</b></font> + + + + Services by %s + Services by %s + + + + Something went wrong while trying to load service %s + Something went wrong while trying to load service %s + + + + Gathering configuration options for %s + Gathering configuration options for %s + + + + Description of services offered by %s + Description of services offered by %s + + + + Register a new user with %s + Register a new user with %s + + + + Bitmask first run + Bitmask first run + + + + This is the Bitmask first run wizard + This is the Bitmask first run wizard + + + + Can we establish a secure connection? + Can we establish a secure connection? + + + + <b>Username:</b> + <b>Username:</b> + + + + Configure or select a provider + Configure or select a provider + + + + Configure new provider: + Configure new provider: + + + + Use existing one: + Use existing one: + + + + __impl + + + The server did not send the salt parameter + The server did not send the salt parameter + + + + The server did not send the B parameter + The server did not send the B parameter + + + + The data sent from the server had errors + The data sent from the server had errors + + + + Could not connect to the server + Could not connect to the server + + + + Unknown error (%s) + Unknown error (%s) + + + + Problem getting data from server + Problem getting data from server + + + + Bad data from server + Bad data from server + + + + Auth verification failed + Auth verification failed + + + + Session cookie verification failed + Session cookie verification failed + + + + There was a problem with authentication + There was a problem with authentication + + + + Invalid username or password. + Invalid username or password. + + + + kls + + + No gateway was found! + No gateway was found! + + + + msg + + + Missing up/down scripts + Missing up/down scripts + + + + TAP Driver + TAP Driver + + + + Encrypted Internet uses VPN, which needs a TAP device installed and none has been found. This will ask for administrative privileges. + Encrypted Internet uses VPN, which needs a TAP device installed and none has been found. This will ask for administrative privileges. + + + + TUN Driver + 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. + 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 + Problem installing files + + + + Some of the files could not be copied. + 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? + Bitmask needs to install the necessary drivers for Encrypted Internet to work. Would you like to proceed? + + + \ No newline at end of file diff --git a/data/translations/vi.qm b/data/translations/vi.qm new file mode 100644 index 00000000..819654d6 Binary files /dev/null and b/data/translations/vi.qm differ diff --git a/data/translations/vi.ts b/data/translations/vi.ts new file mode 100644 index 00000000..4d6d343b --- /dev/null +++ b/data/translations/vi.ts @@ -0,0 +1,1217 @@ + + + EIPPreferences + + + EIP Preferences + Tùy biến EIP + + + + Select gateway for provider + Chọn gateway cho nhà cung cấp + + + + &Select provider: + &Chọn nhà cung cấp: + + + + <Select provider> + <Chọn nhà cung cấp> + + + + Save this provider settings + Chọn thiết lập cho nhà cung cấp này + + + + < Providers Gateway Status > + <Trạng thái gateway của nhà cung cấp> + + + + Select gateway: + Chọn gateway: + + + + Automatic + Tự động + + + + Automatic EIP start + Tự động khởi động EIP + + + + <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> + + + + Save auto start setting + Lưu lại thiết lập về tự động khởi động + + + + Enable Automatic start of EIP + Tự động cho phép khởi động của EIP + + + + 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. + + + + EIPStatus + + + Form + Đơ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 + Bật TẮT + + + + 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 + + + + Encrypted Internet: Starting... + Mã hóa internet: Đang bắt đầu... + + + + Encrypted Internet: ON + Mã hóa internet: MỞ + + + + Route traffic through: {0} + Điều hướng lưu lượng mạng qua: {0} + + + + LoggerWindow + + + Logs + Nhật trình + + + + Debug + Gỡ lỗi + + + + Info + Thông tin + + + + Warning + Cảnh báo + + + + Error + Lỗi + + + + Critical + Nghiêm trọng + + + + Save to file + Lưu vào tập tin + + + + Save As + Lưu dưới dạng + + + + Filter by: + Lọc dữ liệu theo: + + + + Case Insensitive + Phân biệt chữ hoa chữ thường + + + + LoginWidget + + + Form + 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... + + + + MailStatusWidget + + + Form + 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 + + + + IMAP has started... + Dịch vụ IMAP đã được bắt đầu... + + + + 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. + + + + %s Unread Emails + %s email chưa đọc + + + + About to start, please wait... + Chuẩn bị khởi chạy, xin vui lòng đợi trong giây lát... + + + + Disabled + Vô Hiệu Hóa + + + + 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 + + + + Network is unreachable + Không thể truy cập mạng + + + + EIP has stopped + EIP đã dừng lại + + + + Preferences + + + Preferences + Tùy Biến + + + + Password Change + Thay đổi mật khẩu + + + + &Current password: + &Mật khẩu hiện tại: + + + + &New password: + &Mật khẩu mới: + + + + &Re-enter new password: + &Nhập lại mật khẩu: + + + + Change + Thay đổi + + + + <Password change status> + <Trạng thái thay đổi mật khẩu> + + + + Enabled services + Các dịch vụ đã được cho phép + + + + Save this provider settings + Lưu lại thiết lập dành cho nhà cung cấp này + + + + Services + Dịch vụ + + + + <Select provider> + <Chọn nhà cung cấp> + + + + Select provider: + Chọn nhà cung cấp: + + + + < Providers Services Status > + <Trạng thái dịch vụ từ nhà cung cấp> + + + + PreferencesWindow + + + Automatic + Tự động + + + + Changing password... + Đang thay đổi mật khẩu... + + + + Password changed successfully. + Đã thay đổi thành công mật khẩu. + + + + There was a problem changing the password. + Xảy ra lỗi với tiến trình thay đổi mật khẩu. + + + + 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. + + + + 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}' + + + + 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 + + + Succeeded + Đã thành công + + + + 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:// + + + + Checking for a valid provider + Đ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 + + + + The server did not send the B parameter + Các máy chủ đã không gửi tham số B + + + + The data sent from the server had errors + Dữ liệu được gửi từ các máy chủ chứa lỗi + + + + Could not connect to the server + Không thể kết nối tới máy chủ + + + + Unknown error (%s) + Lỗi không rõ nguyên nhân (%s) + + + + Problem getting data from server + Xảy ra lỗi khi nhận dữ liệu từ máy chủ + + + + Bad data from server + Dữ liệu không chuẩn từ máy chủ + + + + Auth verification failed + Xác nhận thất bại + + + + Session cookie verification failed + Xác nhận phiên làm việc cookie gặp lỗi + + + + There was a problem with authentication + Xảy ra lỗi với tiến trình xác nhận + + + + Invalid username or password. + Tên tài khoản hoặc mật khẩu không đúng. + + + + kls + + + No gateway was found! + Không tìm thấ gateway nào hết! + + + + 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? + + + \ No newline at end of file diff --git a/data/ts/en_US.ts b/data/ts/en_US.ts index e0e907f0..0cf4683b 100644 --- a/data/ts/en_US.ts +++ b/data/ts/en_US.ts @@ -187,7 +187,7 @@ - + Route traffic through: {0} @@ -253,22 +253,22 @@ - + <b>Provider:</b> - + Remember username and password - + <b>Username:</b> - + <b>Password:</b> @@ -288,12 +288,12 @@ - + ... - + Logout @@ -318,7 +318,7 @@ - + Loggin out... @@ -331,12 +331,12 @@ - + You must login to use encrypted email. - + Email @@ -474,98 +474,98 @@ MainWindow - + There are new updates available, please restart. - + More... - + Help - + &Quit - + &Help - + &Wizard - + Hide Main Window - + The following components will be updated: %s - + Updates available - + Show Main Window - + 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. - + We could not find <b>pkexec</b> in your system. - + We could not find openvpn binary. - + Starting... - + Not supported - + Disabled - + Could not load Encrypted Internet Configuration. - + Encrypted Internet could not be launched because you did not authenticate properly. - + Encrypted Internet finished in an unexpected manner! @@ -575,7 +575,7 @@ - + About &Bitmask @@ -585,87 +585,87 @@ - + The Bitmask app is ready to update, please restart the application. - + About 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> - + Unable to login: Problem with provider - + Log in cancelled by the user. - + Encrypted Internet cannot be started because the tuntap extension is not installed properly in your system. - + 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. - + There was a problem with the provider - + Something went wrong with the logout. - + Unable to connect: Problem with provider - + Encrypted Internet - + Login - + &Bitmask - + Preferences... - + Show &Log - + Create a new account... @@ -675,17 +675,17 @@ - + Encrypted Internet: OFF - + Network is unreachable - + EIP has stopped @@ -1000,72 +1000,72 @@ - + &Next > - + Connect - + Starting registration... - + User %s successfully registered. - + Unknown error - + <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> - + Services by %s - + Something went wrong while trying to load service %s - + Gathering configuration options for %s - + Description of services offered by %s - + Register a new user with %s @@ -1165,11 +1165,6 @@ kls - - - No gateway was found! - - msg -- cgit v1.2.3 From 048648c9f71a37bf4e5f1c58d05bfc285eede465 Mon Sep 17 00:00:00 2001 From: Ivan Alejandro Date: Wed, 16 Oct 2013 12:49:44 -0300 Subject: Add tool to generate project file automatically. --- data/bitmask.pro.template | 9 ++++++ data/make_project_file.py | 74 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 83 insertions(+) create mode 100644 data/bitmask.pro.template create mode 100755 data/make_project_file.py diff --git a/data/bitmask.pro.template b/data/bitmask.pro.template new file mode 100644 index 00000000..564103a3 --- /dev/null +++ b/data/bitmask.pro.template @@ -0,0 +1,9 @@ +{header} + +SOURCES += {sources} + +FORMS += {forms} + +# where to generate ts files -- tx will pick from here +# original file, english +TRANSLATIONS += ts/en_US.ts diff --git a/data/make_project_file.py b/data/make_project_file.py new file mode 100755 index 00000000..d1567837 --- /dev/null +++ b/data/make_project_file.py @@ -0,0 +1,74 @@ +#!/usr/bin/env python +# encoding: utf-8 + +import fnmatch +import os +import os.path +import re + + +# thanks to http://stackoverflow.com/a/5141829/687989 +def list_files(includes, excludes, start='.'): + """ + Returns a list of files matching the glob expressions of the included + parameter and excluding the files and directories matching the parameter + excludes. + + :param includes: the files to match, using glob's format. + :type includes: list of str + :param excludes: the files and directories to exclude, using glob's format. + :type excludes: list of str + """ + # transform glob patterns to regular expressions + includes = r'|'.join([fnmatch.translate(x) for x in includes]) + excludes = r'|'.join([fnmatch.translate(x) for x in excludes]) or r'$.' + + files_list = [] + + for root, dirs, files in os.walk(start): + # exclude dirs + if excludes: + dirs[:] = [d for d in dirs if not re.match(excludes, d)] + + # exclude/include files + if excludes: + files = [f for f in files if not re.match(excludes, f)] + files = [f for f in files if re.match(includes, f)] + files = [os.path.join(root, f) for f in files] + + for fname in files: + files_list.append(fname) + + return files_list + + +if __name__ == '__main__': + SOURCE_ROOT = 'src' + TEMPLATE = 'data/bitmask.pro.template' + PROJECT = 'data/bitmask.pro' + + HEADER = ("# DO NOT EDIT MANUALLY.\n" + "# qmake file generated by script, any changes will be lost.") + + # Source files + includes = ["*.py"] + excludes = ['__init__.py', '_version.py', 'ui_*.py', '*_rc.py'] + sources = list_files(includes, excludes, SOURCE_ROOT) + sources = " \\\n".join(["../{0}".format(f) for f in sources]) + + # Form files + includes = ["*.ui"] + excludes = [] + forms = list_files(includes, excludes, SOURCE_ROOT) + forms = " \\\n".join(["../{0}".format(f) for f in forms]) + + # Load template and write project + template = file(TEMPLATE).read() + project = template.format(header=HEADER, sources=sources, forms=forms) + + try: + with open(PROJECT, 'w') as output: + output.write(project) + print "Project file generated successfully" + except IOError, e: + print "Error saving project file: {0}".format(e) -- cgit v1.2.3 From 967862447961ad8e39f6d4a37649a549c61032a0 Mon Sep 17 00:00:00 2001 From: Ivan Alejandro Date: Wed, 16 Oct 2013 12:52:40 -0300 Subject: Ignore dynamically generated file. --- .gitignore | 2 ++ data/bitmask.pro | 63 -------------------------------------------------------- 2 files changed, 2 insertions(+), 63 deletions(-) delete mode 100644 data/bitmask.pro diff --git a/.gitignore b/.gitignore index ecec4091..579d3541 100644 --- a/.gitignore +++ b/.gitignore @@ -29,3 +29,5 @@ MANIFEST _trial_temp* config/* CHANGELOG~ + +data/bitmask.pro diff --git a/data/bitmask.pro b/data/bitmask.pro deleted file mode 100644 index b9b5dc84..00000000 --- a/data/bitmask.pro +++ /dev/null @@ -1,63 +0,0 @@ -# qmake file - -# is not there a f*** way of expanding this? other to template with python I mean... - -# to get a list of python files we can use: -# find . -iname "*.py" | grep -Ev "__init__.py|/build/|/docs/|/gui/ui_[a-z]*.py|/gui/[a-z]*_rc.py|./.venv/|/tests/" -# and remove by hand the few files that we do not want. - -SOURCES += ../src/leap/bitmask/app.py \ - ../src/leap/bitmask/config/leapsettings.py \ - ../src/leap/bitmask/config/providerconfig.py \ - ../src/leap/bitmask/crypto/srpauth.py \ - ../src/leap/bitmask/crypto/srpregister.py \ - ../src/leap/bitmask/gui/loggerwindow.py \ - ../src/leap/bitmask/gui/login.py \ - ../src/leap/bitmask/gui/mainwindow.py \ - ../src/leap/bitmask/gui/twisted_main.py \ - ../src/leap/bitmask/gui/wizardpage.py \ - ../src/leap/bitmask/gui/wizard.py \ - ../src/leap/bitmask/gui/eip_status.py \ - ../src/leap/bitmask/gui/mail_status.py \ - ../src/leap/bitmask/gui/eip_preferenceswindow.py \ - ../src/leap/bitmask/gui/preferenceswindow.py \ - ../src/leap/bitmask/platform_init/initializers.py \ - ../src/leap/bitmask/platform_init/locks.py \ - ../src/leap/bitmask/provider/supportedapis.py \ - ../src/leap/bitmask/services/abstractbootstrapper.py \ - ../src/leap/bitmask/services/eip/eipbootstrapper.py \ - ../src/leap/bitmask/services/eip/eipconfig.py \ - ../src/leap/bitmask/provider/providerbootstrapper.py \ - ../src/leap/bitmask/services/__init__.py \ - ../src/leap/bitmask/services/connections.py \ - ../src/leap/bitmask/services/eip/udstelnet.py \ - ../src/leap/bitmask/services/eip/vpnlauncher.py \ - ../src/leap/bitmask/services/eip/vpnprocess.py \ - ../src/leap/bitmask/services/mail/smtpbootstrapper.py \ - ../src/leap/bitmask/services/mail/smtpconfig.py \ - ../src/leap/bitmask/services/soledad/soledadbootstrapper.py \ - ../src/leap/bitmask/services/soledad/soledadconfig.py \ - ../src/leap/bitmask/services/tx.py \ - ../src/leap/bitmask/util/constants.py \ - ../src/leap/bitmask/util/keyring_helpers.py \ - ../src/leap/bitmask/util/leap_argparse.py \ - ../src/leap/bitmask/util/leap_log_handler.py \ - ../src/leap/bitmask/util/privilege_policies.py \ - ../src/leap/bitmask/util/pyside_tests_helper.py \ - ../src/leap/bitmask/util/request_helpers.py \ - ../src/leap/bitmask/util/requirement_checker.py - -FORMS += ../src/leap/bitmask/gui/ui/loggerwindow.ui \ - ../src/leap/bitmask/gui/ui/login.ui \ - ../src/leap/bitmask/gui/ui/mainwindow.ui \ - ../src/leap/bitmask/gui/ui/wizard.ui \ - ../src/leap/bitmask/gui/ui/eip_status.ui \ - ../src/leap/bitmask/gui/ui/mail_status.ui \ - ../src/leap/bitmask/gui/ui/eippreferences.ui \ - ../src/leap/bitmask/gui/ui/preferences.ui \ - -# where to generate ts files -- tx will pick from here - -# original file, english - -TRANSLATIONS += ts/en_US.ts -- cgit v1.2.3 From ae030cbe4dbb861f67e321255a61790d05526b31 Mon Sep 17 00:00:00 2001 From: Ivan Alejandro Date: Wed, 16 Oct 2013 13:40:24 -0300 Subject: Add project file generation to `make translations` --- Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/Makefile b/Makefile index 766544f4..1b4eed5d 100644 --- a/Makefile +++ b/Makefile @@ -48,6 +48,7 @@ resources : $(COMPILED_RESOURCES) ui : $(COMPILED_UI) translations: + data/make_project_file.py $(PYLUP) $(PROJFILE) $(LRELE) $(TRANSLAT_DIR)/*.ts -- cgit v1.2.3 From b2ba0758fe98de3ae5e8a47b9ef36dcbe321d2dc Mon Sep 17 00:00:00 2001 From: Ivan Alejandro Date: Wed, 16 Oct 2013 13:49:22 -0300 Subject: Update docs for internationalization. --- docs/dev/internationalization.rst | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/docs/dev/internationalization.rst b/docs/dev/internationalization.rst index f9f522b9..c0f208de 100644 --- a/docs/dev/internationalization.rst +++ b/docs/dev/internationalization.rst @@ -65,19 +65,20 @@ If you do not already have it, install the ``transifex-client`` from the cheese You can learn more about the transifex-client `here `_. -**1.** Add any new source files to the project file, ``data/bitmask.pro``. *We should automate this with some templating, it's tedious.* - -**2.** Update the source .ts file ``data/ts/en_US.ts``.:: +**1.** Update the source .ts file ``data/ts/en_US.ts``.:: $ make translations -**3.** Push source .ts file to transifex:: +It automatically adds any new source files and forms to the project file, ``data/bitmask.pro``. +If there is a file to be ignored in the translations you need to edit the ``data/make_project_file.py`` to set the excludes. + +**2.** Push source .ts file to transifex:: $ tx push -s -**4.** Let the translation fairies do their work... +**3.** Let the translation fairies do their work... -**5.** *Et voila!* Get updated .ts files for each language from ``Transifex``. For instance, to pull updated spanish translations:: +**4.** *Et voila!* Get updated .ts files for each language from ``Transifex``. For instance, to pull updated spanish translations:: $ tx pull -l es Pulling new translations for resource bitmask.bitmask (source: data/ts/en_US.ts) -- cgit v1.2.3 From a057c79a7954be6b6d78e02e009e2d717010a8b7 Mon Sep 17 00:00:00 2001 From: Ivan Alejandro Date: Wed, 16 Oct 2013 13:56:06 -0300 Subject: Add changes file for #3925. --- changes/feature-3925_automate-i18n | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 changes/feature-3925_automate-i18n diff --git a/changes/feature-3925_automate-i18n b/changes/feature-3925_automate-i18n new file mode 100644 index 00000000..60f31813 --- /dev/null +++ b/changes/feature-3925_automate-i18n @@ -0,0 +1,2 @@ + o Automate internationalization process, create project file dynamically on + make. Closes #3925. -- cgit v1.2.3 From 3af3481e5bb567d65bb9e33fba035120947a3671 Mon Sep 17 00:00:00 2001 From: Kali Kaneko Date: Thu, 17 Oct 2013 12:20:21 -0300 Subject: update locale resources to match the completed translations --- data/resources/locale.qrc | 4 ++-- data/ts/en_US.ts | 3 --- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/data/resources/locale.qrc b/data/resources/locale.qrc index 47fb5243..ba466c36 100644 --- a/data/resources/locale.qrc +++ b/data/resources/locale.qrc @@ -1,6 +1,6 @@ -../translations/es.qm -../translations/de.qm +../translations/vi.qm +../translations/en_GB.qm diff --git a/data/ts/en_US.ts b/data/ts/en_US.ts index 0cf4683b..64a400ba 100644 --- a/data/ts/en_US.ts +++ b/data/ts/en_US.ts @@ -1163,9 +1163,6 @@ - - kls - msg -- cgit v1.2.3 From c6478565432672bfc2f38e72a376c89e7bb2ef76 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Touceda?= Date: Thu, 17 Oct 2013 15:29:36 -0300 Subject: Disable danger flag on release versions --- changes/bug_disable_danger_flag | 1 + src/leap/bitmask/util/leap_argparse.py | 3 +-- 2 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 changes/bug_disable_danger_flag diff --git a/changes/bug_disable_danger_flag b/changes/bug_disable_danger_flag new file mode 100644 index 00000000..2a555b17 --- /dev/null +++ b/changes/bug_disable_danger_flag @@ -0,0 +1 @@ + o Disable --danger flag on release versions. Closes #4124. \ No newline at end of file diff --git a/src/leap/bitmask/util/leap_argparse.py b/src/leap/bitmask/util/leap_argparse.py index afe5be48..e8a9fda9 100644 --- a/src/leap/bitmask/util/leap_argparse.py +++ b/src/leap/bitmask/util/leap_argparse.py @@ -33,8 +33,7 @@ Launches Bitmask""", epilog=epilog) parser.add_argument('-d', '--debug', action="store_true", help=("Launches Bitmask in debug mode, writing debug" "info to stdout")) - # TODO: when we are ready to disable the --danger flag remove 'True or ' - if True or not IS_RELEASE_VERSION: + if not IS_RELEASE_VERSION: help_text = "Bypasses the certificate check for bootstrap" parser.add_argument('--danger', action="store_true", help=help_text) -- cgit v1.2.3 From e9f27feb82523df1ce6948f0c7b62733c2b6c071 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Touceda?= Date: Thu, 17 Oct 2013 16:43:37 -0300 Subject: Only show N unread Emails when N > 0 --- changes/bug_display_new_mail_only | 1 + src/leap/bitmask/gui/mail_status.py | 7 +++++-- 2 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 changes/bug_display_new_mail_only diff --git a/changes/bug_display_new_mail_only b/changes/bug_display_new_mail_only new file mode 100644 index 00000000..218cd16e --- /dev/null +++ b/changes/bug_display_new_mail_only @@ -0,0 +1 @@ + o Only show N unread Emails when N > 0. Fixes #4098. \ No newline at end of file diff --git a/src/leap/bitmask/gui/mail_status.py b/src/leap/bitmask/gui/mail_status.py index 2ac9a332..83533666 100644 --- a/src/leap/bitmask/gui/mail_status.py +++ b/src/leap/bitmask/gui/mail_status.py @@ -387,8 +387,11 @@ class MailStatusWidget(QtGui.QWidget): self._set_mail_status(self.tr("Failed")) elif req.event == proto.IMAP_UNREAD_MAIL: if self._smtp_started and self._imap_started: - self._set_mail_status(self.tr("%s Unread Emails") % - (req.content), ready=2) + if req.content != "0": + self._set_mail_status(self.tr("%s Unread Emails") % + (req.content,), ready=2) + else: + self._set_mail_status("", ready=2) else: leap_assert(False, # XXX ??? "Don't know how to handle this state: %s" -- cgit v1.2.3 From 3e7cea8ad9f55a33cd718dab86d50fa865df99b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Touceda?= Date: Thu, 17 Oct 2013 17:08:25 -0300 Subject: Rename EIP to Encrypted Internet in its preference panel --- changes/bug_rename_eip_to_encrypted_internet | 2 ++ src/leap/bitmask/gui/ui/eippreferences.ui | 10 +++++----- 2 files changed, 7 insertions(+), 5 deletions(-) create mode 100644 changes/bug_rename_eip_to_encrypted_internet diff --git a/changes/bug_rename_eip_to_encrypted_internet b/changes/bug_rename_eip_to_encrypted_internet new file mode 100644 index 00000000..4e2ddd98 --- /dev/null +++ b/changes/bug_rename_eip_to_encrypted_internet @@ -0,0 +1,2 @@ + o Rename EIP to Encrypted Internet in its preference panel. Fixes + #4057. \ No newline at end of file diff --git a/src/leap/bitmask/gui/ui/eippreferences.ui b/src/leap/bitmask/gui/ui/eippreferences.ui index 9493d330..cc77c82e 100644 --- a/src/leap/bitmask/gui/ui/eippreferences.ui +++ b/src/leap/bitmask/gui/ui/eippreferences.ui @@ -6,12 +6,12 @@ 0 0 - 398 - 262 + 435 + 273 - EIP Preferences + Encrypted Internet Preferences @@ -88,7 +88,7 @@ - Automatic EIP start + Automatic Encrypted Internet start @@ -126,7 +126,7 @@ Qt::LeftToRight - Enable Automatic start of EIP + Enable Automatic start: true -- cgit v1.2.3 From b76fe652e09d331fd3016becd010b4612346e3a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Touceda?= Date: Fri, 18 Oct 2013 09:29:08 -0300 Subject: Update relnotes for 0.3.5 --- relnotes.txt | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/relnotes.txt b/relnotes.txt index bea48e98..2e32ca6c 100644 --- a/relnotes.txt +++ b/relnotes.txt @@ -1,8 +1,8 @@ -ANNOUNCING Bitmask, the internet encryption toolkit, release 0.3.4 +ANNOUNCING Bitmask, the internet encryption toolkit, release 0.3.5 The LEAP team is pleased to announce the immediate availability of -version 0.3.4 of Bitmask, the Internet Encryption Toolkit, codename -"look at my new makeup". +version 0.3.5 of Bitmask, the Internet Encryption Toolkit, codename +"I can stand on one foot". https://downloads.leap.se/client/ @@ -34,12 +34,14 @@ NOT trust your life to it (yet!). WHAT CAN THIS VERSION OF BITMASK DO FOR ME? -Bitmask 0.3.4 is a bugfix release but it also has a shiny new UI -design, it's still a work in progress since it will change after -testing in this release, but it's progressing nicely. We have better -mail support, and we are using the new gnupg instead of python-gnupg -for its security and better flexibility. You can refer to the -CHANGELOG for the meat. +Bitmask 0.3.5 is a bugfix release but it also has improvements to the +UI design, it's still a work in progress since it will change after +testing in this release, but it's progressing nicely. We have again, +better mail support, with detached signatures and compliance with a +couple of RFC. You can refer to the CHANGELOG for the meat. + +We also re-added support for Windows, although it might be a bumpy +ride until we smooth the corners a little bit more. As always, you can connect to the Encrypted Internet Proxy service offered by a provider of your choice, and enjoy a encrypted internet @@ -96,6 +98,6 @@ beyond any border. The LEAP team, -Oct 4, 2013 +Oct 18, 2013 Somewhere in the middle of the intertubes. EOF -- cgit v1.2.3 From 6d959f71b975927d821d767ba6d7c82d2d1456c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Touceda?= Date: Fri, 18 Oct 2013 09:29:45 -0300 Subject: Update requirements --- changes/VERSION_COMPAT | 2 -- pkg/requirements.pip | 4 ++-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/changes/VERSION_COMPAT b/changes/VERSION_COMPAT index a4f0a0ac..cc00ecf7 100644 --- a/changes/VERSION_COMPAT +++ b/changes/VERSION_COMPAT @@ -8,5 +8,3 @@ # # BEGIN DEPENDENCY LIST ------------------------- # leap.foo.bar>=x.y.z -leap.keymanager>=0.3.4 -leap.mail>=0.3.5 diff --git a/pkg/requirements.pip b/pkg/requirements.pip index 35486dac..458db39c 100644 --- a/pkg/requirements.pip +++ b/pkg/requirements.pip @@ -19,8 +19,8 @@ keyring leap.common>=0.3.4 leap.soledad.client>=0.4.0 -leap.keymanager>=0.3.3 -leap.mail>=0.3.4 +leap.keymanager>=0.3.4 +leap.mail>=0.3.5 # Remove this when u1db fixes its dependency on oauth oauth -- cgit v1.2.3 From f673b84a9a9b0fea3f6bbfefbb38cbd3d311cf3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Touceda?= Date: Fri, 18 Oct 2013 09:34:17 -0300 Subject: Fold in changes --- CHANGELOG | 38 ++++++++++++++++++++++++++++ changes/bug-4025_display-soledad-errors | 2 -- changes/bug-4058_spacer-policy-problem | 1 - changes/bug-4116_remember-last-login-domain | 1 - changes/bug-4143_display-firstrun | 1 - changes/bug-show-eip-on | 2 -- changes/bug_catch_u1db_httperror | 1 - changes/bug_disable_danger_flag | 1 - changes/bug_display_mail_status_enabled | 2 -- changes/bug_display_new_mail_only | 1 - changes/bug_hide_error_message | 2 -- changes/bug_improve-bootstrap-script | 1 - changes/bug_improve_gui | 1 - changes/bug_increase_retries_logout | 2 -- changes/bug_rename_eip_to_encrypted_internet | 2 -- changes/bug_several_windows_fixes | 5 ---- changes/bug_util_menu_as_file | 1 - changes/feature-3923_more-verbose-logs | 1 - changes/feature-3925_automate-i18n | 2 -- changes/feature-4028_support-lxpolkit | 1 - changes/feature_new-translations | 1 - changes/feature_openvpn-observer | 3 --- 22 files changed, 38 insertions(+), 34 deletions(-) delete mode 100644 changes/bug-4025_display-soledad-errors delete mode 100644 changes/bug-4058_spacer-policy-problem delete mode 100644 changes/bug-4116_remember-last-login-domain delete mode 100644 changes/bug-4143_display-firstrun delete mode 100644 changes/bug-show-eip-on delete mode 100644 changes/bug_catch_u1db_httperror delete mode 100644 changes/bug_disable_danger_flag delete mode 100644 changes/bug_display_mail_status_enabled delete mode 100644 changes/bug_display_new_mail_only delete mode 100644 changes/bug_hide_error_message delete mode 100644 changes/bug_improve-bootstrap-script delete mode 100644 changes/bug_improve_gui delete mode 100644 changes/bug_increase_retries_logout delete mode 100644 changes/bug_rename_eip_to_encrypted_internet delete mode 100644 changes/bug_several_windows_fixes delete mode 100644 changes/bug_util_menu_as_file delete mode 100644 changes/feature-3923_more-verbose-logs delete mode 100644 changes/feature-3925_automate-i18n delete mode 100644 changes/feature-4028_support-lxpolkit delete mode 100644 changes/feature_new-translations delete mode 100644 changes/feature_openvpn-observer diff --git a/CHANGELOG b/CHANGELOG index 4791f18b..25e90051 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,41 @@ +0.3.5 Oct 18 -- the "I can stand on one foot" release: + o In case of Soledad failure, display to the user that there was a + problem. Closes #4025. + o Widget squashing problem in wizard checking a new provider. Closes + #4058. + o Remember last domain used to login. Closes #4116. + o Display first run wizard, regardless of pinned providers. Closes + #4143. + o Show EIP status 'ON' in the systray tooltip when is + connected. Related to #3998. + o Catch u1db errors during soledad initialization. + o Disable --danger flag on release versions. Closes #4124. + o Display mail status in the tray icon as an enabled item. Fixes + #4036. + o Only show N unread Emails when N > 0. Fixes #4098. + o Hide login error message when the user interacts with the widgets + to fix the potential problem. Fixes #4022. + o Add call to `make` to the bootstrap script. + o Improve GUI based on QA rounds. Fixes #4041 and #4042. + o Increase the amount of retries for the authentication request + session. Fixes #4037. + o Rename EIP to Encrypted Internet in its preference panel. Fixes + #4057. + o Disable stdout redirection on Windows for the time being since it + breaks the bundle. + o Default UP_SCRIPT and DOWN_SCRIPT to None and only add that + parameter to the vpn command if not None. + o Look for gpg on windows with the .exe extension. + o Change the Util menu to be named File in OSX. Fixes #4039. + o Show more context information in the logs. Closes #3923. + o Automate internationalization process, create project file + dynamically on make. Closes #3925. + o Add support for running lxde polkit agent. Closes #4028. + o Added Vietnamese and English (United Kingdom) translations. + o Implements openvpn observer. Closes: #3901 + o Reconnect EIP if network down. Closes #3790 + o Reconnect if tls-restart. Closes: #3262 + 0.3.4 Oct 4 -- the "look at my new makeup" release: o Fixes a bug where you cannot login to a different provider once you logged in to another one. Fixes #3695. diff --git a/changes/bug-4025_display-soledad-errors b/changes/bug-4025_display-soledad-errors deleted file mode 100644 index 35fd0025..00000000 --- a/changes/bug-4025_display-soledad-errors +++ /dev/null @@ -1,2 +0,0 @@ - o In case of Soledad failure, display to the user that there was a problem. - Closes #4025. diff --git a/changes/bug-4058_spacer-policy-problem b/changes/bug-4058_spacer-policy-problem deleted file mode 100644 index b4759c7b..00000000 --- a/changes/bug-4058_spacer-policy-problem +++ /dev/null @@ -1 +0,0 @@ - o Widget squashing problem in wizard cheking a new provider. Closes #4058. diff --git a/changes/bug-4116_remember-last-login-domain b/changes/bug-4116_remember-last-login-domain deleted file mode 100644 index 9331052b..00000000 --- a/changes/bug-4116_remember-last-login-domain +++ /dev/null @@ -1 +0,0 @@ - o Remember last domain used to login. Closes #4116. diff --git a/changes/bug-4143_display-firstrun b/changes/bug-4143_display-firstrun deleted file mode 100644 index a75047c9..00000000 --- a/changes/bug-4143_display-firstrun +++ /dev/null @@ -1 +0,0 @@ - o Display first run wizard, regardless of pinned providers. Closes #4143. diff --git a/changes/bug-show-eip-on b/changes/bug-show-eip-on deleted file mode 100644 index dd800471..00000000 --- a/changes/bug-show-eip-on +++ /dev/null @@ -1,2 +0,0 @@ - o Show EIP status 'ON' in the systray tooltip when is connected. Related to - #3998. diff --git a/changes/bug_catch_u1db_httperror b/changes/bug_catch_u1db_httperror deleted file mode 100644 index 1045f1d1..00000000 --- a/changes/bug_catch_u1db_httperror +++ /dev/null @@ -1 +0,0 @@ - o Catch u1db errors during soledad initialization. diff --git a/changes/bug_disable_danger_flag b/changes/bug_disable_danger_flag deleted file mode 100644 index 2a555b17..00000000 --- a/changes/bug_disable_danger_flag +++ /dev/null @@ -1 +0,0 @@ - o Disable --danger flag on release versions. Closes #4124. \ No newline at end of file diff --git a/changes/bug_display_mail_status_enabled b/changes/bug_display_mail_status_enabled deleted file mode 100644 index 44a94d5f..00000000 --- a/changes/bug_display_mail_status_enabled +++ /dev/null @@ -1,2 +0,0 @@ - o Display mail status in the tray icon as an enabled item. Fixes - #4036. \ No newline at end of file diff --git a/changes/bug_display_new_mail_only b/changes/bug_display_new_mail_only deleted file mode 100644 index 218cd16e..00000000 --- a/changes/bug_display_new_mail_only +++ /dev/null @@ -1 +0,0 @@ - o Only show N unread Emails when N > 0. Fixes #4098. \ No newline at end of file diff --git a/changes/bug_hide_error_message b/changes/bug_hide_error_message deleted file mode 100644 index 512f35da..00000000 --- a/changes/bug_hide_error_message +++ /dev/null @@ -1,2 +0,0 @@ - o Hide login error message when the user interacts with the widgets - to fix the potential problem. Fixes #4022. \ No newline at end of file diff --git a/changes/bug_improve-bootstrap-script b/changes/bug_improve-bootstrap-script deleted file mode 100644 index 855efcb7..00000000 --- a/changes/bug_improve-bootstrap-script +++ /dev/null @@ -1 +0,0 @@ - o Add call to `make` to bootstrap script. diff --git a/changes/bug_improve_gui b/changes/bug_improve_gui deleted file mode 100644 index 8a106a10..00000000 --- a/changes/bug_improve_gui +++ /dev/null @@ -1 +0,0 @@ - o Improve GUI based on QA rounds. Fixes #4041 and #4042. \ No newline at end of file diff --git a/changes/bug_increase_retries_logout b/changes/bug_increase_retries_logout deleted file mode 100644 index a3d1458b..00000000 --- a/changes/bug_increase_retries_logout +++ /dev/null @@ -1,2 +0,0 @@ - o Increase the amount of retries for the authentication request - session. Fixes #4037. \ No newline at end of file diff --git a/changes/bug_rename_eip_to_encrypted_internet b/changes/bug_rename_eip_to_encrypted_internet deleted file mode 100644 index 4e2ddd98..00000000 --- a/changes/bug_rename_eip_to_encrypted_internet +++ /dev/null @@ -1,2 +0,0 @@ - o Rename EIP to Encrypted Internet in its preference panel. Fixes - #4057. \ No newline at end of file diff --git a/changes/bug_several_windows_fixes b/changes/bug_several_windows_fixes deleted file mode 100644 index f584f7e0..00000000 --- a/changes/bug_several_windows_fixes +++ /dev/null @@ -1,5 +0,0 @@ - o Disable stdout redirection on Windows for the time being since it - breaks the bundle. - o Default UP_SCRIPT and DOWN_SCRIPT to None and only add that - parameter to the vpn command if not None. - o Look for gpg on windows with the .exe extension. \ No newline at end of file diff --git a/changes/bug_util_menu_as_file b/changes/bug_util_menu_as_file deleted file mode 100644 index 48228f26..00000000 --- a/changes/bug_util_menu_as_file +++ /dev/null @@ -1 +0,0 @@ - o Change the Util menu to be named File in OSX. Fixes #4039. \ No newline at end of file diff --git a/changes/feature-3923_more-verbose-logs b/changes/feature-3923_more-verbose-logs deleted file mode 100644 index b6ac6edd..00000000 --- a/changes/feature-3923_more-verbose-logs +++ /dev/null @@ -1 +0,0 @@ - o Show more context information in the logs. Closes #3923. diff --git a/changes/feature-3925_automate-i18n b/changes/feature-3925_automate-i18n deleted file mode 100644 index 60f31813..00000000 --- a/changes/feature-3925_automate-i18n +++ /dev/null @@ -1,2 +0,0 @@ - o Automate internationalization process, create project file dynamically on - make. Closes #3925. diff --git a/changes/feature-4028_support-lxpolkit b/changes/feature-4028_support-lxpolkit deleted file mode 100644 index 95aa5220..00000000 --- a/changes/feature-4028_support-lxpolkit +++ /dev/null @@ -1 +0,0 @@ - o Add support for running lxde polkit agent. Closes #4028. diff --git a/changes/feature_new-translations b/changes/feature_new-translations deleted file mode 100644 index 212f84ae..00000000 --- a/changes/feature_new-translations +++ /dev/null @@ -1 +0,0 @@ - o Added Vietnamese and English (United Kingdom) translations. diff --git a/changes/feature_openvpn-observer b/changes/feature_openvpn-observer deleted file mode 100644 index dc9ba0af..00000000 --- a/changes/feature_openvpn-observer +++ /dev/null @@ -1,3 +0,0 @@ - o Implements openvpn observer. Closes: #3901 - o Reconnect EIP if network down. Closes #3790 - o Reconnect if tls-restart. Closes: #3262 -- cgit v1.2.3