From 8dfb508965f4c321ac5d511ced8dcbd0df9f515b Mon Sep 17 00:00:00 2001 From: Ivan Alejandro Date: Fri, 3 Oct 2014 16:45:13 -0300 Subject: Update i18n strings. Exclude pinned providers and tests from the bitmask.pro generator since there is no strings to translate in there. --- data/make_project_file.py | 3 +- data/ts/en_US.ts | 414 ++++++++++++++++++++++++++-------------------- 2 files changed, 234 insertions(+), 183 deletions(-) diff --git a/data/make_project_file.py b/data/make_project_file.py index d1567837..5519e128 100755 --- a/data/make_project_file.py +++ b/data/make_project_file.py @@ -52,7 +52,8 @@ if __name__ == '__main__': # Source files includes = ["*.py"] - excludes = ['__init__.py', '_version.py', 'ui_*.py', '*_rc.py'] + excludes = ['__init__.py', '_version.py', 'ui_*.py', '*_rc.py', + 'pinned*.py', 'tests'] sources = list_files(includes, excludes, SOURCE_ROOT) sources = " \\\n".join(["../{0}".format(f) for f in sources]) diff --git a/data/ts/en_US.ts b/data/ts/en_US.ts index 041cdc44..7ab39646 100644 --- a/data/ts/en_US.ts +++ b/data/ts/en_US.ts @@ -170,53 +170,23 @@ Export canceled. - ComplainDialog - - - Ok, thanks - - - - - EIPPreferences - - - Select gateway for provider - - - - - <Select provider> - - - - - < Providers Gateway Status > - - + App - - Automatic - - - - - Encrypted Internet Preferences - - - - - Select &provider: + + Application error - - &Save this provider settings + + There is a problem contacting the backend, please restart Bitmask. + + + ComplainDialog - - Select &gateway: + + Ok, thanks @@ -774,53 +744,53 @@ Export canceled. - + Help - + &Quit - + &Help - + &Wizard - + The following components will be updated: %s - + Updates available - + Show Main Window - + Starting... - + Not supported - + Disabled @@ -830,47 +800,47 @@ Export canceled. - + About &Bitmask - + Mail is OFF - + The Bitmask app is ready to update, please restart the application. - + About Bitmask - %s - + Unable to login: Problem with provider - + Log in cancelled by the user. - + There was a problem with the provider - + Something went wrong with the logout. - + Unable to connect: Problem with provider @@ -880,319 +850,399 @@ Export canceled. - + Show &Log - + Create a new account... - + File - - Account Preferences... - - - - - Internet Preferences... - - - - + Advanced Key Management - + OFF - + Version: <b>%s</b> (%s)<br><br>%sBitmask is the Desktop client application for the LEAP platform, supporting encrypted internet proxy, secure email, and secure chat (coming soon).<br><br>LEAP is a non-profit dedicated to giving all internet users access to secure communication. Our focus is on adapting encryption technology to make it easy to use and widely available. <br><br><a href='https://leap.se'>More about LEAP</a> - + Bitmask Help - + The current client version is not supported by this provider.<br>Please update to latest version.<br><br>You can get the latest version from <a href='{0}'>{1}</a> - + Update Needed - + This provider is not compatible with the client.<br><br>Error: API version incompatible. - + Incompatible Provider - + Application error - + You are trying to do an operation that requires logging in first. - + Unknown error. - + There was a server problem with authentication. - + Could not establish a connection. - + Invalid username or password. - + Hello! - + Bitmask has started in the tray. - + Succeeded - + The server at {0} can't be found, because the DNS lookup failed. DNS is the network service that translates a website's name to its Internet address. Either your computer is having trouble connecting to the network, or you are missing some helper files that are needed to securely use DNS while {1} is active. To install these helper files, quit this application and start it again. - + Connection Error - + Quitting... - + Bitmask is quitting, please wait. - - There is a problem contacting the backend, please restart Bitmask. - - - - + bitmask.net/help - + Email quick reference - + For Thunderbird, you can use the Bitmask extension. Search for "Bitmask" in the add-on manager or download it from <a href='{0}'>addons.mozilla.org</a>. - + Alternately, you can manually configure your mail client to use Bitmask Email with these options: - + IMAP: localhost, port {0} - + SMTP: localhost, port {0} - + Username: your full email address - + Password: any non-empty text - + <p><strong>{0}</strong></p><p>{1}</p><p>{2}<ul><li>&nbsp;{3}</li><li>&nbsp;{4}</li><li>&nbsp;{5}</li><li>&nbsp;{6}</li></ul></p> - + Stop services - + Do you want to stop all services? - + In order to change the provider, the running services needs to be stopped. - + Disabled: missing helper files + + + Pr&eferences... + + - Preferences + PasswordChange - - Preferences + + Change Password + + + + + Username: + + + + + New password: + + + + + Re-enter new password: + + + + + Current password: + + + + + <flash_label> - - Password Change + + Close - - &Current password: + + OK + + + + + PasswordWindow + + + Please log in to change your password. + + + + + Please wait for data storage to be ready. + + + + + Changing password... + + + + + Password changed successfully. - - &New password: + + Password is empty. - - &Re-enter new password: + + There was a problem changing the password. + + + + + You did not enter a correct current password. + + + Preferences - - Change + + Preferences - - <Password change status> + + user@example.org - - Enabled services + + Close + + + PreferencesAccountPage - - Save this provider settings + + Form - + Services - - <Select provider> + + <provider_services_label> + + + + + Password - - Select provider: + + Change Password - - < Providers Services Status > + + <change_password_label> + + + + + You must be logged in to change your password. - PreferencesWindow + PreferencesEmailPage - - Automatic + + Form - - Changing password... + + PushButton + + + + + PreferencesVpnPage + + + Form - - Password changed successfully. + + <flash_label> - - There was a problem changing the password. + + Default VPN Gateway: - - You did not enter a correct current password. + + You must reconnect for changes to take effect. - - Services settings for provider '{0}' saved. + + Automatic + + + + + Error loading configuration file. + + + + + This is an uninitialized provider, please log in first. + + + PreferencesWindow - - You need to enable {0} in order to change the password. + + Account - - You need to wait until {0} is ready in order to change the password. + + VPN - - In order to change your password you need to be logged in. + + Email @@ -1335,47 +1385,47 @@ Export canceled. - + &Next > - + Connect - + Starting registration... - + User %s successfully registered. - + <font color='red'><b>Non-existent provider</b></font> - + <font color='red'><b>%s</b></font> - + Unable to load provider configuration - + <font color='red'><b>Not a valid provider</b></font> - + Something went wrong while trying to load service %s @@ -1405,22 +1455,22 @@ Export canceled. - + Something has gone wrong. Please try again. - + The requested username is taken, choose another. - + Services by {0} - + Register a new user with {0} @@ -1473,37 +1523,37 @@ Export canceled. msg - + TAP Driver - + Encrypted Internet uses VPN, which needs a TAP device installed and none has been found. This will ask for administrative privileges. - + TUN Driver - + Encrypted Internet uses VPN, which needs a kernel extension for a TUN device installed, and none has been found. This will ask for administrative privileges. - + Problem installing files - + Some of the files could not be copied. - + Bitmask needs to install the necessary drivers for Encrypted Internet to work. Would you like to proceed? @@ -1513,7 +1563,7 @@ Export canceled. - + Missing Bitmask helpers @@ -1521,12 +1571,12 @@ Export canceled. msgstr - + Some essential helper files are missing in your system. - + Reinstall your debian packages, or make sure you place them by hand. @@ -1534,17 +1584,17 @@ Export canceled. self._eip_status - + {0} is restarting - + {0} could not be launched because you did not authenticate properly. - + {0} finished in an unexpected manner! -- cgit v1.2.3 From 7cb332c84eaef651cb614b2e2b9a49d6ff05ac42 Mon Sep 17 00:00:00 2001 From: Ivan Alejandro Date: Mon, 6 Oct 2014 11:52:56 -0300 Subject: Replace triple dot character with 3 dots. The string was unicode and the conversion was troublesome, was displayed badly on transifex. --- data/ts/en_US.ts | 5 ----- src/leap/bitmask/gui/mail_status.py | 2 +- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/data/ts/en_US.ts b/data/ts/en_US.ts index 7ab39646..87aaf0e3 100644 --- a/data/ts/en_US.ts +++ b/data/ts/en_US.ts @@ -720,11 +720,6 @@ Export canceled. Invalid auth token, try logging in again. - - - Starting… - - Initial sync in progress, please wait... diff --git a/src/leap/bitmask/gui/mail_status.py b/src/leap/bitmask/gui/mail_status.py index d523f449..92e1e4c4 100644 --- a/src/leap/bitmask/gui/mail_status.py +++ b/src/leap/bitmask/gui/mail_status.py @@ -228,7 +228,7 @@ class MailStatusWidget(QtGui.QWidget): self._service_name)) elif ready == 1: icon = self.CONNECTING_ICON - self._mx_status = self.tr('Starting…') + self._mx_status = self.tr('Starting...') tray_status = self.tr('Mail is starting') elif ready >= 2: icon = self.CONNECTED_ICON -- cgit v1.2.3 From 5d3e34a1d71c52a62bc8ce386d93d5dd3221d57c Mon Sep 17 00:00:00 2001 From: Ruben Pollan Date: Thu, 2 Oct 2014 18:22:30 -0500 Subject: Handle removals on the updater repo --- changes/bug_6146_handle_removals_release | 1 + pkg/tuf/release.py | 23 ++++++++++++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 changes/bug_6146_handle_removals_release diff --git a/changes/bug_6146_handle_removals_release b/changes/bug_6146_handle_removals_release new file mode 100644 index 00000000..6fe67d62 --- /dev/null +++ b/changes/bug_6146_handle_removals_release @@ -0,0 +1 @@ +- Make pkg/tuf/release.py handle removals in the repo diff --git a/pkg/tuf/release.py b/pkg/tuf/release.py index c4abcd0d..0e1c989c 100755 --- a/pkg/tuf/release.py +++ b/pkg/tuf/release.py @@ -29,7 +29,6 @@ import sys from tuf.repository_tool import load_repository from tuf.repository_tool import import_rsa_privatekey_from_file -from tuf.repository_tool import import_rsa_publickey_from_file """ Days until the expiration of targets.json and snapshot.json. After this ammount @@ -102,6 +101,8 @@ class Targets(object): recursive_walk=True, followlinks=True) + self._remove_obsolete_targets(target_list) + for target in target_list: octal_file_permissions = oct(os.stat(target).st_mode)[3:] custom_file_permissions = { @@ -109,6 +110,26 @@ class Targets(object): } self._repo.targets.add_target(target, custom_file_permissions) + def _remove_obsolete_targets(self, target_list): + """ + Remove obsolete targets from TUF targets + + :param target_list: list of targets on full path comming from TUF + get_filepaths_in_directory + :type target_list: list(str) + """ + targets_path = os.path.join(self._repo_path, 'targets') + relative_path_list = map(lambda t: t.split("/targets")[1], target_list) + removed_targets = (set(self._repo.targets.target_files.keys()) + - set(relative_path_list)) + + for target in removed_targets: + target_rel_path = target + if target[0] == '/': + target_rel_path = target[1:] + target_path = os.path.join(targets_path, target_rel_path) + self._repo.targets.remove_target(target_path) + if __name__ == "__main__": main() -- cgit v1.2.3 From 45b6bbb1e3b710fe975d1627a9dbb4e89369bb50 Mon Sep 17 00:00:00 2001 From: Ivan Alejandro Date: Tue, 7 Oct 2014 17:01:14 -0300 Subject: Fix typos on strings and remove unused button. This was reported by the user 'strel' on transifex. --- data/ts/en_US.ts | 25 +++++++++-------------- src/leap/bitmask/gui/advanced_key_management.py | 2 +- src/leap/bitmask/gui/eip_status.py | 4 ++-- src/leap/bitmask/gui/ui/preferences_email_page.ui | 13 ------------ 4 files changed, 13 insertions(+), 31 deletions(-) diff --git a/data/ts/en_US.ts b/data/ts/en_US.ts index 87aaf0e3..8b457988 100644 --- a/data/ts/en_US.ts +++ b/data/ts/en_US.ts @@ -116,11 +116,6 @@ Import canceled. Import canceled. - - - Are you sure that you want to replace the current key pair whith the imported? - - Import Successful @@ -168,6 +163,11 @@ Export canceled. <span style='color:#0000FF;'>NOTE</span>: + + + Are you sure that you want to replace the current key pair with the imported? + + App @@ -378,11 +378,6 @@ Export canceled. We could not find openvpn binary. - - - We could not find any authentication agent in your system.<br/>Make sure you have<b>polkit-gnome-authentication-agent-1</b> running andtry again. - - We could not find <b>pkexec</b> in your system. @@ -413,6 +408,11 @@ Export canceled. Encrypted Internet failed to start + + + We could not find any authentication agent in your system.<br/>Make sure you have <b>polkit-gnome-authentication-agent-1</b> running and try again. + + Form @@ -1179,11 +1179,6 @@ Export canceled. Form - - - PushButton - - PreferencesVpnPage diff --git a/src/leap/bitmask/gui/advanced_key_management.py b/src/leap/bitmask/gui/advanced_key_management.py index b3a4ed8e..48a1db93 100644 --- a/src/leap/bitmask/gui/advanced_key_management.py +++ b/src/leap/bitmask/gui/advanced_key_management.py @@ -121,7 +121,7 @@ class AdvancedKeyManagement(QtGui.QDialog): if file_name: question = self.tr("Are you sure that you want to replace " - "the current key pair whith the imported?") + "the current key pair with the imported?") res = QtGui.QMessageBox.question( None, "Change key pair", question, QtGui.QMessageBox.Yes | QtGui.QMessageBox.No, diff --git a/src/leap/bitmask/gui/eip_status.py b/src/leap/bitmask/gui/eip_status.py index a5cd03d3..14ff5972 100644 --- a/src/leap/bitmask/gui/eip_status.py +++ b/src/leap/bitmask/gui/eip_status.py @@ -741,8 +741,8 @@ class EIPStatusWidget(QtGui.QWidget): # XXX this should change to polkit-kde where # applicable. self.tr("We could not find any authentication agent in your " - "system.
Make sure you have" - "polkit-gnome-authentication-agent-1 running and" + "system.
Make sure you have " + "polkit-gnome-authentication-agent-1 running and " "try again."), error=True) self.set_eipstatus_off() diff --git a/src/leap/bitmask/gui/ui/preferences_email_page.ui b/src/leap/bitmask/gui/ui/preferences_email_page.ui index 41b3c28d..7cc5bb3c 100644 --- a/src/leap/bitmask/gui/ui/preferences_email_page.ui +++ b/src/leap/bitmask/gui/ui/preferences_email_page.ui @@ -13,19 +13,6 @@ Form - - - - 250 - 210 - 98 - 27 - - - - PushButton - - -- cgit v1.2.3 From 10b5b00e5282b0b8e6184eaaf173f6a8b436bbce Mon Sep 17 00:00:00 2001 From: Ivan Alejandro Date: Fri, 10 Oct 2014 13:39:24 -0300 Subject: Set version to 0.7.0 and date to the rc1 date. --- relnotes.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/relnotes.txt b/relnotes.txt index 02e53ee6..85d4ecbf 100644 --- a/relnotes.txt +++ b/relnotes.txt @@ -1,7 +1,7 @@ ANNOUNCING Bitmask, the Internet Encryption Toolkit, release 0.7.0 The LEAP team is pleased to announce the immediate availability of -version 0.6.1 of Bitmask, the Internet Encryption Toolkit, codename +version 0.7.0 of Bitmask, the Internet Encryption Toolkit, codename "one time download, all time updates". https://downloads.leap.se/client/ @@ -107,6 +107,6 @@ beyond any border. The LEAP team, -Setptember 26, 2014 +October 09, 2014 Somewhere in the middle of the intertubes. EOF -- cgit v1.2.3 From 98af9c20e0582a113133613b673552236e920be9 Mon Sep 17 00:00:00 2001 From: Ivan Alejandro Date: Tue, 21 Oct 2014 15:56:39 -0300 Subject: Better error message for PostLimitError. Suggested by user 'kingu' on transifex. --- src/leap/bitmask/gui/loggerwindow.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/leap/bitmask/gui/loggerwindow.py b/src/leap/bitmask/gui/loggerwindow.py index 360dd5f0..463d2412 100644 --- a/src/leap/bitmask/gui/loggerwindow.py +++ b/src/leap/bitmask/gui/loggerwindow.py @@ -225,7 +225,7 @@ class LoggerWindow(QtGui.QDialog): msg = self.tr("Sending logs to Pastebin failed!") if isinstance(failure, pastebin.PostLimitError): - msg = self.tr('Maximum posts per day reached') + msg = self.tr('Maximum amount of submissions reached for today.') # We save the dialog in an instance member to avoid dialog being # deleted right after we exit this method -- cgit v1.2.3 From 29ab0bf0a9c8b0b564548a275cc789ecf77f40c8 Mon Sep 17 00:00:00 2001 From: Ivan Alejandro Date: Tue, 28 Oct 2014 12:22:46 -0300 Subject: Fold in changes Update release date and version name. --- CHANGELOG.rst | 7 +++++-- changes/bug_6146_handle_removals_release | 1 - 2 files changed, 5 insertions(+), 3 deletions(-) delete mode 100644 changes/bug_6146_handle_removals_release diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 3c863657..0a5b6229 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -6,8 +6,8 @@ History 2014 ==== -0.7.0 September 26 -- the "one time download, all time updates" release: -++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +0.7.0rc3 October 28 -- the "One window to rule them all, and in the darkness bind them." release: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - Select current provider on EIP preferences. Closes #5815. - Handle logout correctly when we stop_services to launch the @@ -33,6 +33,9 @@ History - Remove the Advanced Key Management since we don't support stable mail yet. Closes #6087. - Single combined preferences window. Closes #4704, #4119, #5885. +- Fix soledad imports (#5989). +- Make pkg/tuf/release.py handle removals in the repo + 0.6.1 August 15 -- the "knock knock knocking on beta's door" release: +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ diff --git a/changes/bug_6146_handle_removals_release b/changes/bug_6146_handle_removals_release deleted file mode 100644 index 6fe67d62..00000000 --- a/changes/bug_6146_handle_removals_release +++ /dev/null @@ -1 +0,0 @@ -- Make pkg/tuf/release.py handle removals in the repo -- cgit v1.2.3 From 17eac41c5884e39bc2196379eb694c8e04a1caa2 Mon Sep 17 00:00:00 2001 From: Ivan Alejandro Date: Tue, 28 Oct 2014 12:26:53 -0300 Subject: Update requirements to use newer Soledad. --- pkg/requirements.pip | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/requirements.pip b/pkg/requirements.pip index 9f49bf03..8ce1793e 100644 --- a/pkg/requirements.pip +++ b/pkg/requirements.pip @@ -27,7 +27,7 @@ zope.proxy pyzmq leap.common>=0.3.7 -leap.soledad.client>=0.5.0 +leap.soledad.client>=0.6.0 leap.keymanager>=0.3.8 leap.mail>=0.3.9 -- cgit v1.2.3 From 7b0dda2fde310fff5ea6ee57a5f18a554b8e665f Mon Sep 17 00:00:00 2001 From: Ivan Alejandro Date: Tue, 28 Oct 2014 12:27:14 -0300 Subject: Update release date and version number. --- relnotes.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/relnotes.txt b/relnotes.txt index 85d4ecbf..eab0f64a 100644 --- a/relnotes.txt +++ b/relnotes.txt @@ -1,8 +1,8 @@ -ANNOUNCING Bitmask, the Internet Encryption Toolkit, release 0.7.0 +ANNOUNCING Bitmask, the Internet Encryption Toolkit, release 0.7.0rc3 The LEAP team is pleased to announce the immediate availability of -version 0.7.0 of Bitmask, the Internet Encryption Toolkit, codename -"one time download, all time updates". +version 0.7.0rc3 of Bitmask, the Internet Encryption Toolkit, codename +"One window to rule them all, and in the darkness bind them." https://downloads.leap.se/client/ @@ -107,6 +107,6 @@ beyond any border. The LEAP team, -October 09, 2014 +October 28, 2014 Somewhere in the middle of the intertubes. EOF -- cgit v1.2.3 From 21ce355c137e1d5dbe552c1432aaa5d40d14d759 Mon Sep 17 00:00:00 2001 From: Ivan Alejandro Date: Thu, 2 Oct 2014 18:26:29 -0300 Subject: Remove email instructions/reference. Closes #6140. - cleanup some code, - remove unused import, - pep8 fixes --- changes/bug-6140_remove-mail-instructions | 1 + src/leap/bitmask/gui/mainwindow.py | 52 ++++++++++++++++--------------- 2 files changed, 28 insertions(+), 25 deletions(-) create mode 100644 changes/bug-6140_remove-mail-instructions diff --git a/changes/bug-6140_remove-mail-instructions b/changes/bug-6140_remove-mail-instructions new file mode 100644 index 00000000..88454371 --- /dev/null +++ b/changes/bug-6140_remove-mail-instructions @@ -0,0 +1 @@ +- Remove instructions/references of mail from the client. Closes #6140. diff --git a/src/leap/bitmask/gui/mainwindow.py b/src/leap/bitmask/gui/mainwindow.py index cc4ede09..1b61de87 100644 --- a/src/leap/bitmask/gui/mainwindow.py +++ b/src/leap/bitmask/gui/mainwindow.py @@ -34,7 +34,6 @@ from leap.bitmask import __version_hash__ as VERSION_HASH from leap.bitmask.backend.leapbackend import ERROR_KEY, PASSED_KEY from leap.bitmask.config import flags -from leap.bitmask.config.leapsettings import LeapSettings from leap.bitmask.gui.advanced_key_management import AdvancedKeyManagement from leap.bitmask.gui.eip_status import EIPStatusWidget @@ -53,9 +52,6 @@ from leap.bitmask.platform_init import locks from leap.bitmask.platform_init.initializers import init_platform from leap.bitmask.platform_init.initializers import init_signals -from leap.bitmask.backend.backend_proxy import BackendProxy -from leap.bitmask.backend.leapsignaler import LeapSignaler - from leap.bitmask.services.eip import conductor as eip_conductor from leap.bitmask.services.mail import conductor as mail_conductor @@ -144,7 +140,8 @@ class MainWindow(QtGui.QMainWindow): # Qt Signal Connections ##################################### # TODO separate logic from ui signals. - self.app.service_selection_changed.connect(self._update_eip_enabled_status) + self.app.service_selection_changed.connect( + self._update_eip_enabled_status) self._login_widget.login.connect(self._login) self._login_widget.cancel_login.connect(self._cancel_login) self._login_widget.logout.connect(self._logout) @@ -210,7 +207,11 @@ class MainWindow(QtGui.QMainWindow): self.ui.action_quit.triggered.connect(self.quit) self.ui.action_wizard.triggered.connect(self._launch_wizard) self.ui.action_show_logs.triggered.connect(self._show_logger_window) - self.ui.action_help.triggered.connect(self._help) + + # XXX hide the help menu since it only shows email information and + # right now we don't have stable mail and just confuses users. + self.ui.action_help.setVisible(False) + # self.ui.action_help.triggered.connect(self._help) self.ui.action_create_new_account.triggered.connect( self._on_provider_changed) @@ -600,10 +601,12 @@ class MainWindow(QtGui.QMainWindow): self._backend_cannot_start_eip() return - if not EIP_SERVICE in self.app.settings.get_enabled_services(domain): + if EIP_SERVICE not in self.app.settings.get_enabled_services(domain): self._eip_conductor.terminate() + def hide(): - self.app.backend.eip_can_start(domain=domain) + self.app.backend.eip_can_start(domain=domain) + QtDelayedCall(100, hide) # ^^ VERY VERY Hacky, but with the simple state machine, # there is no way to signal 'disconnect and then disable' @@ -615,7 +618,6 @@ class MainWindow(QtGui.QMainWindow): # check if EIP can start (will trigger widget update) self.app.backend.eip_can_start(domain=domain) - def _backend_can_start_eip(self): """ TRIGGER: @@ -1003,22 +1005,22 @@ class MainWindow(QtGui.QMainWindow): today = datetime.now().date() greet = ("Happy New 1984!... or not ;)

" if today.month == 1 and today.day < 15 else "") - QtGui.QMessageBox.about( - self, self.tr("About Bitmask - %s") % (VERSION,), - self.tr("Version: %s (%s)
" - "
%s" - "Bitmask is the Desktop client application for " - "the LEAP platform, supporting encrypted internet " - "proxy, secure email, and secure chat (coming soon).
" - "
" - "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.
" - "
" - "More about LEAP" - "") % (VERSION, VERSION_HASH[:10], greet)) + title = self.tr("About Bitmask - %s") % (VERSION,) + msg = self.tr( + "Version: {ver} ({ver_hash})
" + "
{greet}" + "Bitmask is the Desktop client application for the LEAP " + "platform, supporting encrypted internet proxy.
" + # "Secure email is comming soon.
" + "
" + "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.
" + "
" + "More about LEAP") + msg = msg.format(ver=VERSION, ver_hash=VERSION_HASH[:10], greet=greet) + QtGui.QMessageBox.about(self, title, msg) @QtCore.Slot() def _help(self): -- cgit v1.2.3 From 2c8cd4c4f225536bb506b9df7240767b2b7765f4 Mon Sep 17 00:00:00 2001 From: Ivan Alejandro Date: Mon, 10 Nov 2014 16:20:06 -0300 Subject: Add support for the internal LXDE polkit agent. Closes #6043. --- changes/bug-6043_support-internal-lxde-polkit-agent | 1 + src/leap/bitmask/util/privilege_policies.py | 1 + 2 files changed, 2 insertions(+) create mode 100644 changes/bug-6043_support-internal-lxde-polkit-agent diff --git a/changes/bug-6043_support-internal-lxde-polkit-agent b/changes/bug-6043_support-internal-lxde-polkit-agent new file mode 100644 index 00000000..5b9db381 --- /dev/null +++ b/changes/bug-6043_support-internal-lxde-polkit-agent @@ -0,0 +1 @@ +- Add support for the internal LXDE polkit agent. Closes #6043. diff --git a/src/leap/bitmask/util/privilege_policies.py b/src/leap/bitmask/util/privilege_policies.py index 2016e67b..68a1af28 100644 --- a/src/leap/bitmask/util/privilege_policies.py +++ b/src/leap/bitmask/util/privilege_policies.py @@ -179,6 +179,7 @@ class LinuxPolicyChecker(PolicyChecker): 'ps aux | grep "polkit-[k]de-authentication-agent-1"', 'ps aux | grep "polkit-[m]ate-authentication-agent-1"', 'ps aux | grep "[l]xpolkit"', + 'ps aux | grep "[l]xsession"', 'ps aux | grep "[g]nome-shell"', 'ps aux | grep "[f]ingerprint-polkit-agent"', ] -- cgit v1.2.3 From b13193406f81c80d12fc185a135e7df38b173648 Mon Sep 17 00:00:00 2001 From: Kali Kaneko Date: Fri, 7 Nov 2014 20:19:01 +0100 Subject: Fix compatibilty with newest openssl. Closes: #6133 Newest OpenSSL expect cafile to be None or byte stream (was retunrning unicode) --- src/leap/bitmask/config/providerconfig.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/leap/bitmask/config/providerconfig.py b/src/leap/bitmask/config/providerconfig.py index 57bc3a98..386c697d 100644 --- a/src/leap/bitmask/config/providerconfig.py +++ b/src/leap/bitmask/config/providerconfig.py @@ -201,7 +201,8 @@ class ProviderConfig(BaseConfig): leap_check(cert_exists, error_msg, MissingCACert) logger.debug("Going to verify SSL against %s" % (cert_path,)) - return cert_path + # OpenSSL does not handle unicode. + return cert_path.encode('utf-8') def provides_eip(self): """ -- cgit v1.2.3 From 26ec219c305d2033457b3c2689d918a49815f0f6 Mon Sep 17 00:00:00 2001 From: Kali Kaneko Date: Fri, 7 Nov 2014 20:14:51 +0100 Subject: Do not use logger.exception during provider checks. Closes: #6219 leap log handler was choking on the captured exception. it might have to do with the exception unwinding made by the reactor. this is a workaround to allow the provider checks to show a meaningful error message. The backtrace should only be there for development purpuses, so removing it. --- src/leap/bitmask/provider/providerbootstrapper.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/leap/bitmask/provider/providerbootstrapper.py b/src/leap/bitmask/provider/providerbootstrapper.py index 71edbb87..8eefb9d9 100644 --- a/src/leap/bitmask/provider/providerbootstrapper.py +++ b/src/leap/bitmask/provider/providerbootstrapper.py @@ -148,7 +148,6 @@ class ProviderBootstrapper(AbstractBootstrapper): timeout=REQUEST_TIMEOUT) res.raise_for_status() except requests.exceptions.SSLError as exc: - logger.exception(exc) self._err_msg = self.tr("Provider certificate could " "not be verified") raise @@ -156,7 +155,6 @@ class ProviderBootstrapper(AbstractBootstrapper): # XXX careful!. The error might be also a SSL handshake # timeout error, in which case we should retry a couple of times # more, for cases where the ssl server gives high latencies. - logger.exception(exc) self._err_msg = self.tr("Provider does not support HTTPS") raise -- cgit v1.2.3 From d6d73d41278c7c438c27f286bc5f6106d37f51d2 Mon Sep 17 00:00:00 2001 From: elijah Date: Mon, 10 Nov 2014 20:41:56 -0800 Subject: vpn: support for the server setting custom fragment openvpn option --- changes/bug_5933_support_fragment_openvpn_option | 1 + pkg/linux/bitmask-root | 3 ++- src/leap/bitmask/services/eip/eipconfig.py | 9 +++++++-- 3 files changed, 10 insertions(+), 3 deletions(-) create mode 100644 changes/bug_5933_support_fragment_openvpn_option diff --git a/changes/bug_5933_support_fragment_openvpn_option b/changes/bug_5933_support_fragment_openvpn_option new file mode 100644 index 00000000..c7958054 --- /dev/null +++ b/changes/bug_5933_support_fragment_openvpn_option @@ -0,0 +1 @@ +- Allow the server to set a custom --fragment openvpn option (#5933) \ No newline at end of file diff --git a/pkg/linux/bitmask-root b/pkg/linux/bitmask-root index ee195e3b..92bbf046 100755 --- a/pkg/linux/bitmask-root +++ b/pkg/linux/bitmask-root @@ -96,7 +96,8 @@ ALLOWED_FLAGS = { "--management-client-user": ["USER"], "--cert": ["FILE"], "--key": ["FILE"], - "--ca": ["FILE"] + "--ca": ["FILE"], + "--fragment": ["NUMBER"] } PARAM_FORMATS = { diff --git a/src/leap/bitmask/services/eip/eipconfig.py b/src/leap/bitmask/services/eip/eipconfig.py index 5b51d12e..659ca1b1 100644 --- a/src/leap/bitmask/services/eip/eipconfig.py +++ b/src/leap/bitmask/services/eip/eipconfig.py @@ -216,7 +216,7 @@ class EIPConfig(ServiceConfig): """ _service_name = "eip" - OPENVPN_ALLOWED_KEYS = ("auth", "cipher", "tls-cipher") + OPENVPN_ALLOWED_KEYS = ("auth", "cipher", "tls-cipher", "fragment") OPENVPN_CIPHERS_REGEX = re.compile("[A-Z0-9\-]+") def __init__(self): @@ -255,6 +255,11 @@ class EIPConfig(ServiceConfig): These are sanitized with alphanumeric whitelist. + NOTE: some openvpn config option don't take a value, but + this method currently requires that every option has a value. + Also, this does not yet work with values with spaces, like + `keepalive 10 30` + :returns: openvpn configuration dict :rtype: C{dict} """ @@ -262,7 +267,7 @@ class EIPConfig(ServiceConfig): config = {} for key, value in ovpncfg.items(): if key in self.OPENVPN_ALLOWED_KEYS and value is not None: - sanitized_val = self.OPENVPN_CIPHERS_REGEX.findall(value) + sanitized_val = self.OPENVPN_CIPHERS_REGEX.findall(str(value)) if len(sanitized_val) != 0: _val = sanitized_val[0] config[str(key)] = str(_val) -- cgit v1.2.3 From 704e6bd60c1979a6a997bbe13eac4d30e3188887 Mon Sep 17 00:00:00 2001 From: Ivan Alejandro Date: Fri, 14 Nov 2014 13:59:05 -0300 Subject: Fold in changes and update relnotes. --- CHANGELOG.rst | 8 +++++--- changes/bug-6043_support-internal-lxde-polkit-agent | 1 - changes/bug-6140_remove-mail-instructions | 1 - changes/bug_5933_support_fragment_openvpn_option | 1 - relnotes.txt | 6 +++--- 5 files changed, 8 insertions(+), 9 deletions(-) delete mode 100644 changes/bug-6043_support-internal-lxde-polkit-agent delete mode 100644 changes/bug-6140_remove-mail-instructions delete mode 100644 changes/bug_5933_support_fragment_openvpn_option diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 0a5b6229..2cf96d8d 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -6,8 +6,8 @@ History 2014 ==== -0.7.0rc3 October 28 -- the "One window to rule them all, and in the darkness bind them." release: -+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +0.7.0rc5 November 14 -- the "One window to rule them all, and in the darkness bind them." release: +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - Select current provider on EIP preferences. Closes #5815. - Handle logout correctly when we stop_services to launch the @@ -35,7 +35,9 @@ History - Single combined preferences window. Closes #4704, #4119, #5885. - Fix soledad imports (#5989). - Make pkg/tuf/release.py handle removals in the repo - +- Remove instructions/references of mail from the client. Closes #6140. +- Add support for the internal LXDE polkit agent. Closes #6043. +- Allow the server to set a custom --fragment openvpn option (#5933) 0.6.1 August 15 -- the "knock knock knocking on beta's door" release: +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ diff --git a/changes/bug-6043_support-internal-lxde-polkit-agent b/changes/bug-6043_support-internal-lxde-polkit-agent deleted file mode 100644 index 5b9db381..00000000 --- a/changes/bug-6043_support-internal-lxde-polkit-agent +++ /dev/null @@ -1 +0,0 @@ -- Add support for the internal LXDE polkit agent. Closes #6043. diff --git a/changes/bug-6140_remove-mail-instructions b/changes/bug-6140_remove-mail-instructions deleted file mode 100644 index 88454371..00000000 --- a/changes/bug-6140_remove-mail-instructions +++ /dev/null @@ -1 +0,0 @@ -- Remove instructions/references of mail from the client. Closes #6140. diff --git a/changes/bug_5933_support_fragment_openvpn_option b/changes/bug_5933_support_fragment_openvpn_option deleted file mode 100644 index c7958054..00000000 --- a/changes/bug_5933_support_fragment_openvpn_option +++ /dev/null @@ -1 +0,0 @@ -- Allow the server to set a custom --fragment openvpn option (#5933) \ No newline at end of file diff --git a/relnotes.txt b/relnotes.txt index eab0f64a..2eca5716 100644 --- a/relnotes.txt +++ b/relnotes.txt @@ -1,7 +1,7 @@ -ANNOUNCING Bitmask, the Internet Encryption Toolkit, release 0.7.0rc3 +ANNOUNCING Bitmask, the Internet Encryption Toolkit, release 0.7.0rc5 The LEAP team is pleased to announce the immediate availability of -version 0.7.0rc3 of Bitmask, the Internet Encryption Toolkit, codename +version 0.7.0rc5 of Bitmask, the Internet Encryption Toolkit, codename "One window to rule them all, and in the darkness bind them." https://downloads.leap.se/client/ @@ -107,6 +107,6 @@ beyond any border. The LEAP team, -October 28, 2014 +November 14, 2014 Somewhere in the middle of the intertubes. EOF -- cgit v1.2.3 From e03fd2be0d6aba71b94dee639448634eeebb2edc Mon Sep 17 00:00:00 2001 From: Ivan Alejandro Date: Fri, 5 Dec 2014 13:22:09 -0300 Subject: Bump bitmask-root version. --- pkg/linux/bitmask-root | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/linux/bitmask-root b/pkg/linux/bitmask-root index 92bbf046..622a0b8a 100755 --- a/pkg/linux/bitmask-root +++ b/pkg/linux/bitmask-root @@ -51,7 +51,7 @@ cmdcheck = subprocess.check_output # CONSTANTS # -VERSION = "3" +VERSION = "4" SCRIPT = "bitmask-root" NAMESERVER = "10.42.0.1" BITMASK_CHAIN = "bitmask" -- cgit v1.2.3 From 4abb410b1be39e34e86030803908b69b22090c53 Mon Sep 17 00:00:00 2001 From: Ivan Alejandro Date: Thu, 11 Dec 2014 17:35:22 -0300 Subject: Pin Calyx.net provider. --- changes/feature-6518_pin-calyx-provider | 1 + src/leap/bitmask/provider/pinned.py | 5 ++ src/leap/bitmask/provider/pinned_calyx.py | 93 +++++++++++++++++++++++++++++++ 3 files changed, 99 insertions(+) create mode 100644 changes/feature-6518_pin-calyx-provider create mode 100644 src/leap/bitmask/provider/pinned_calyx.py diff --git a/changes/feature-6518_pin-calyx-provider b/changes/feature-6518_pin-calyx-provider new file mode 100644 index 00000000..9d204d00 --- /dev/null +++ b/changes/feature-6518_pin-calyx-provider @@ -0,0 +1 @@ + - Add Calyx.net as pinned provider. Closes #6518. diff --git a/src/leap/bitmask/provider/pinned.py b/src/leap/bitmask/provider/pinned.py index 6fd2fa70..09fcc52c 100644 --- a/src/leap/bitmask/provider/pinned.py +++ b/src/leap/bitmask/provider/pinned.py @@ -19,6 +19,7 @@ Pinned Providers """ import logging +from leap.bitmask.provider import pinned_calyx from leap.bitmask.provider import pinned_demobitmask from leap.bitmask.provider import pinned_riseup @@ -35,6 +36,10 @@ class PinnedProviders(object): PREFERRED_PROVIDER = pinned_demobitmask.DOMAIN PROVIDERS = { + pinned_calyx.DOMAIN: { + CONFIG_KEY: pinned_calyx.PROVIDER_JSON, + CACERT_KEY: pinned_calyx.CACERT_PEM, + }, pinned_demobitmask.DOMAIN: { CONFIG_KEY: pinned_demobitmask.PROVIDER_JSON, CACERT_KEY: pinned_demobitmask.CACERT_PEM, diff --git a/src/leap/bitmask/provider/pinned_calyx.py b/src/leap/bitmask/provider/pinned_calyx.py new file mode 100644 index 00000000..eb9ab781 --- /dev/null +++ b/src/leap/bitmask/provider/pinned_calyx.py @@ -0,0 +1,93 @@ +# -*- coding: utf-8 -*- +# pinned_calyx.py +# Copyright (C) 2013-2014 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 . +""" +Pinned provider.json and cacert.pem for riseup.net +""" + +DOMAIN = "calyx.net" + +PROVIDER_JSON = """ +{ + "api_uri": "https://api.calyx.net:4430", + "api_version": "1", + "ca_cert_fingerprint": "SHA256: 43683c9ba3862c5384a8c1885072fcac40b5d2d4dd67331443f13a3077fa2e69", + "ca_cert_uri": "https://calyx.net/ca.crt", + "default_language": "en", + "description": { + "en": "Calyx Institute privacy focused ISP testbed" + }, + "domain": "calyx.net", + "enrollment_policy": "open", + "languages": [ + "en" + ], + "name": { + "en": "calyx" + }, + "service": { + "allow_anonymous": false, + "allow_free": true, + "allow_limited_bandwidth": false, + "allow_paid": false, + "allow_registration": true, + "allow_unlimited_bandwidth": true, + "bandwidth_limit": 102400, + "default_service_level": 1, + "levels": { + "1": { + "description": "Please donate.", + "name": "free" + } + } + }, + "services": [ + "openvpn" + ] +} +""" + +CACERT_PEM = """-----BEGIN CERTIFICATE----- +MIIFYzCCA0ugAwIBAgIBATANBgkqhkiG9w0BAQ0FADBEMQ4wDAYDVQQKDAVjYWx5 +eDEaMBgGA1UECwwRaHR0cHM6Ly9jYWx5eC5uZXQxFjAUBgNVBAMMDWNhbHl4IFJv +b3QgQ0EwHhcNMTMwNzAyMDAwMDAwWhcNMjMwNzAyMDAwMDAwWjBEMQ4wDAYDVQQK +DAVjYWx5eDEaMBgGA1UECwwRaHR0cHM6Ly9jYWx5eC5uZXQxFjAUBgNVBAMMDWNh +bHl4IFJvb3QgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDupdnx +Bgat537XOqrZOulE/RvjoXB1S07sy9/MMtksXFoQuWJZRCSTp1Jaqg3H/e9o1nct +LQO91+izfJe07TUyajFl7CfllYgMeyKTYcT85dFwNX4pcIHZr8UpmO0MpGBoR4W1 +8cPa3vxAG0CsyUmrASJVyhRouk4qazRosM5RwBxTdMzCK7L3SwqPQoxlY9YmRJlD +XYZlK5VMJd0dj9XxhMeFs5n43R0bsDENryrExSbuxoNfnUoQg3wffKk+Z0gW7YgW +ivPsbObqOgXUuBEU0xr9xMNBpU33ffLIsccrHq1EKp8zGfCOcww6v7+zEadUkVLo +6j/rRhYYgRw9lijZG1rMuV/mTGnUqbjHsdoz5mzkFFWeTSqo44lvhveUyCcwRNmi +2sjS77l0fCTzfreufffFoOEcRVMRfsnJdu/xPeARoXILEx8nQ421mSn6spOZlDQr +Tt0T0BAWt+VNc+m0IGSW3SwS7r5MUyQ/M5GrbQBGi5W2SzPriKZ79YTOwPVmXKLZ +vJoEuKRDkEPJLBAhcD5oSQljOm/Wp/hjmRH4HnI1y4XMshWlDsyRDB1Au5yrsfwN +noFVSskEcbXlZfNgml4lktLBqz+qwsw+voq6Ak7ROKbc0ii5s8+iNMbAtIK7GcFF +kuKKIyRmmGlDim/SDhlNdWo7Ah4Akde7zfWufwIDAQABo2AwXjAdBgNVHQ4EFgQU +AY8+K4ZupAQ+L9ttFJG3vaLBq5gwDgYDVR0PAQH/BAQDAgIEMAwGA1UdEwQFMAMB +Af8wHwYDVR0jBBgwFoAUAY8+K4ZupAQ+L9ttFJG3vaLBq5gwDQYJKoZIhvcNAQEN +BQADggIBAOpXi5o3g/2o2rPa53iG7Zgcy8RpePGgZk6xknGYWeLamEqSh+XWQZ2w +2kQP54bf8HfPj3ugJBWsVtYAs/ltJwzeBfYDrwEJd1N8tw2IRuGlQOWiTAVVLBj4 +Zs+dikSuMoA399f/7BlUIEpVLUiV/emTtbkjFnDeKEV9zql6ypR0BtR8Knf8ALvL +YfMsWLvTe4rXeypzxIaE2pn8ttcXLYAX0ml2MofTi5xcDhMn1vznKIvs82xhncQx +I1MJMWqPHNHgJUJpA+y1IFh5LPbpag9PKQ0yQ9sM+/dyGumF2jElsMw71flh/Txr +2dEv8+FNV1pPK26XJZBK24rNWFs30eAFfH9EQCwVla174I4PDoWqsIR7vtQMObDt +Bq34R3TjjJJIt2sCSlYLooWwiK7Q+d/SgYqA+MSDmmwhzm86ToK6cwbCsvuw1AxR +X6VIs4U8wOotgljzX/CSpKqlxcqZjhnAuelZ1+KiN8RHKPj7AzSLYOv/YwTjLTIq +EOxquoNR58uDa5pBG22a7xWbSaKosn/mEl8SrUr6klzzc8Vh09IMoxrw74uLdAg2 +1jnrhm7qg91Ttb0aXiqbV+Kg/qQzojdewnnoBFnv4jaQ3y8zDCfMhsBtWlWz4Knb +Zqga1WyRm3Gj1j6IV0oOincYMrw5YA7bgXpwop/Lo/mmliMA14ps +-----END CERTIFICATE-----""" -- cgit v1.2.3 From 0d3b52cde94b9297d614ded74e84e57e6ee0e53d Mon Sep 17 00:00:00 2001 From: Ivan Alejandro Date: Fri, 12 Dec 2014 16:53:03 -0300 Subject: Fold in changes. --- CHANGELOG.rst | 5 +++-- changes/feature-6518_pin-calyx-provider | 1 - 2 files changed, 3 insertions(+), 3 deletions(-) delete mode 100644 changes/feature-6518_pin-calyx-provider diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 2cf96d8d..82b86918 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -6,8 +6,8 @@ History 2014 ==== -0.7.0rc5 November 14 -- the "One window to rule them all, and in the darkness bind them." release: -++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +0.7.0 December 12 -- the "One window to rule them all, and in the darkness bind them." release: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - Select current provider on EIP preferences. Closes #5815. - Handle logout correctly when we stop_services to launch the @@ -38,6 +38,7 @@ History - Remove instructions/references of mail from the client. Closes #6140. - Add support for the internal LXDE polkit agent. Closes #6043. - Allow the server to set a custom --fragment openvpn option (#5933) +- Add Calyx.net as pinned provider. Closes #6518. 0.6.1 August 15 -- the "knock knock knocking on beta's door" release: +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ diff --git a/changes/feature-6518_pin-calyx-provider b/changes/feature-6518_pin-calyx-provider deleted file mode 100644 index 9d204d00..00000000 --- a/changes/feature-6518_pin-calyx-provider +++ /dev/null @@ -1 +0,0 @@ - - Add Calyx.net as pinned provider. Closes #6518. -- cgit v1.2.3 From 9e89e4fc8dba7541f3475de0183b47fa9342ea84 Mon Sep 17 00:00:00 2001 From: Ivan Alejandro Date: Fri, 12 Dec 2014 16:53:13 -0300 Subject: Update relnotes for 0.7.0. --- relnotes.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/relnotes.txt b/relnotes.txt index 2eca5716..c4104fc5 100644 --- a/relnotes.txt +++ b/relnotes.txt @@ -1,7 +1,7 @@ -ANNOUNCING Bitmask, the Internet Encryption Toolkit, release 0.7.0rc5 +ANNOUNCING Bitmask, the Internet Encryption Toolkit, release 0.7.0. The LEAP team is pleased to announce the immediate availability of -version 0.7.0rc5 of Bitmask, the Internet Encryption Toolkit, codename +version 0.7.0 of Bitmask, the Internet Encryption Toolkit, codename "One window to rule them all, and in the darkness bind them." https://downloads.leap.se/client/ @@ -107,6 +107,6 @@ beyond any border. The LEAP team, -November 14, 2014 +December 12, 2014 Somewhere in the middle of the intertubes. EOF -- cgit v1.2.3