Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
Loading items

Target

Select target project
  • drebs/bitmask-dev-deleted-406
1 result
Select Git revision
Loading items
Show changes

Commits on Source 963

863 additional commits have been omitted to prevent performance issues.
Showing with 1883 additions and 121 deletions
......@@ -25,6 +25,7 @@ docs/cov_html/
.cache
coverage.xml
*,cover
_trial_temp
# Sphinx documentation
docs/_build/
......@@ -49,3 +50,17 @@ pkg/pyinst/build/
pkg/launcher/bitmask
NOTES
# logs and screenshots from failed functional tests
/failures/
# temporary home folders for functional tests
/tmp/
# snaps
parts
prime
stage
*.snap
*.tar.bz2
snap/.snapcraft
# Todo: move test stage to the top once it succeeds again
---
stages:
- build
- test
- publish
test:
image: leapcode/soledad:latest
variables:
DOCKER_DRIVER: overlay
# Cache gems in between stages for this pipeline only
cache:
paths:
- .tox/py27-dev
linux_test:
image: 0xacab.org:4567/leap/bitmask-dev:latest
stage: test
script:
# In this first job, recreate the tox venv from scratch
# on start of every pipeline
- dpkg -l tox > /dev/null || apt-get -y --no-install-recommends install tox
- tox --recreate -e py27-dev
tags:
- linux
build:
image: leapcode/bitmask-dev:latest
stage: build
osx_test:
stage: test
allow_failure: true
script:
- virtualenv venv
- source venv/bin/activate
- make dev-backend
- make dev-all
- cd ui
- make dev-install
- ls -la /usr/bin/gpg
- /usr/local/bin/tox --recreate -e py27-dev
tags:
- yosemite
- osx
# disabling latest builds for now. should enable them when I can test
# the new docker builder w/o virtualenvs.
# bitmask_latest_bundle:
# image: 0xacab.org:4567/leap/docker/bitmask-bundler:latest
# stage: publish
# script:
# - pkg/build_bundle_with_venv.sh
# - mv "dist/bitmask-`cat pkg/next-version`" .
# artifacts:
# paths:
# - "bitmask-`cat pkg/next-version`"
# name: "Bitmask_linux64_latest_${CI_BUILD_REF}"
# expire_in: 1 month
# tags:
# - linux
e2e_test_mail:
image: 0xacab.org:4567/leap/bitmask-dev:latest
stage: test
script:
- dpkg -l tox gnupg1 haveged > /dev/null || apt-get -y --no-install-recommends install tox gnupg1 haveged
- tox -e py27-dev --notest
- source .tox/py27-dev/bin/activate
- make dev-latest-backend
- mkdir -p /root/.config/leap/
- bitmaskd
- bitmaskctl status
- make install_helpers
- make test_e2e_mail
tags:
- linux
e2e_test_vpn:
image: 0xacab.org:4567/leap/bitmask-dev:latest
stage: test
script:
- dpkg -l tox gnupg1 haveged > /dev/null || apt-get -y --no-install-recommends install tox gnupg1 haveged
- tox -e py27-dev --notest
- source .tox/py27-dev/bin/activate
- make dev-latest-backend
- mkdir -p /root/.config/leap/
- make install_helpers
- make test_e2e_vpn
tags:
- linux
e2e_test_conditional_downloads:
image: 0xacab.org:4567/leap/bitmask-dev:latest
stage: test
allow_failure: true
script:
- dpkg -l tox gnupg1 haveged > /dev/null || apt-get -y --no-install-recommends install tox gnupg1 haveged
- tox -e py27-dev --notest
- source .tox/py27-dev/bin/activate
- make dev-latest-backend
- mkdir -p /root/.config/leap/
- make install_helpers
- make test_e2e_conditional_downloads
tags:
- linux
functional_tests:
image: 0xacab.org:4567/leap/bitmask-dev:latest
stage: test
before_script:
- dpkg -l tox > /dev/null || apt-get -y --no-install-recommends install tox
- tox -e py27-dev --notest
- source .tox/py27-dev/bin/activate
- make dev-latest-all
- make test_functional_setup
script:
- make test_functional
artifacts:
when: on_failure
paths:
- failures
name: "Bitmask_linux64_${CI_BUILD_REF}_e2e_screenshots"
expire_in: 1 month
tags:
- linux
# This is Work In Progress
#functional_test_bundle:
# image: 0xacab.org:4567/leap/bitmask-dev:latest
# stage: test_bundle
# allow_failure: true
# script:
# - TEST_MODE='bundle_ci' make test_functional
# artifacts:
# when: on_failure
# paths:
# - failures
# name: "Bitmask_linux64_${CI_BUILD_REF}_e2e_screenshots"
# expire_in: 1 month
# tags:
# - linux
build_ui:
image: 0xacab.org:4567/leap/bitmask-dev:latest
stage: test
script:
- cd ui && make dev-build
tags:
- linux
cache:
paths:
- ui/node_modules/
build_docker_image:
image: 0xacab.org:4567/leap/bitmask-dev:latest
stage: publish
services:
- docker:dind
tags:
- docker-in-docker
only:
- branches@leap/bitmask-dev
before_script:
- >
export LAST_COMMIT=$(curl -s --header "PRIVATE-TOKEN: ${LEAP_CODE_O_MATIC_PRIVATE_TOKEN}" https://0xacab.org/api/v4/projects/574/pipelines |
python -c "import sys, json; print json.load(sys.stdin)[1]['sha']")
script:
- >
if git diff $LAST_COMMIT HEAD --name-only | egrep '(tests/docker|.gitlab)' || [ "$CI_JOB_MANUAL" == "true" ] ; then
if [ "$CI_COMMIT_REF_SLUG" == "master" ]
then
TAG='latest'
else
TAG="$CI_COMMIT_REF_SLUG"
fi
docker --version
docker info
docker login -u gitlab-ci-token -e sysdev@leap.se -p $CI_JOB_TOKEN $CI_REGISTRY
docker build -t ${CI_REGISTRY_IMAGE}:${TAG} tests/docker
docker push ${CI_REGISTRY_IMAGE}:${TAG}
fi
build_docker_bundle_image:
image: 0xacab.org:4567/leap/docker/bitmask-bundler:latest
stage: publish
services:
- docker:dind
tags:
- docker-in-docker
only:
- branches@leap/bitmask-dev
before_script:
- >
export LAST_COMMIT=$(curl -s --header "PRIVATE-TOKEN: ${LEAP_CODE_O_MATIC_PRIVATE_TOKEN}" https://0xacab.org/api/v4/projects/574/pipelines |
python -c "import sys, json; print json.load(sys.stdin)[1]['sha']")
script:
- >
if git diff $LAST_COMMIT HEAD --name-only | egrep '(pkg/docker_bundle|.gitlab)' || [ "$CI_JOB_MANUAL" == "true" ] ; then
if [ "$CI_COMMIT_REF_SLUG" == "master" ]
then
TAG='latest'
else
TAG="$CI_COMMIT_REF_SLUG"
fi
docker --version
docker info
docker login -u gitlab-ci-token -e sysdev@leap.se -p $CI_JOB_TOKEN $CI_REGISTRY
docker build -t ${CI_REGISTRY_IMAGE}:${TAG} pkg/docker_bundle
docker push ${CI_REGISTRY_IMAGE}:${TAG}
fi
.job_template: &job_definition
stage: publish
# Only build packages for https://0xacab.org/leap/bitmask-dev, not
# for forks
only:
- master@leap/bitmask-dev
- tags@leap/bitmask-dev
image: "0xacab.org:4567/leap/gitlab-buildpackage:build_${DIST}_${ARCH}"
script:
- "pwd; git describe"
- build-build-package
# Test the package with lintian
- build-test-lintian
- upload-package
# sleep 1h to allow debugging of running container
#- sleep 3600
artifacts:
expire_in: 1w
paths:
- '*_*.xz'
- '*_*.dsc'
- '*_amd64.changes'
- '*.deb'
- 'results/*'
package:amd64_stretch:
variables:
ARCH: "amd64"
DIST: "stretch"
REPONAMES: "client"
# Default is to fail on warnings, we disable it here
# unless all lintian warnings are fixed (#9033)
LINTIAN_OPTS: "-X filename-length, --suppress-tags newer-standards-version"
<<: *job_definition
package:amd64_buster:
variables:
ARCH: "amd64"
DIST: "buster"
REPONAMES: "client"
# Default is to fail on warnings, we disable it here
# unless all lintian warnings are fixed (#9033)
LINTIAN_OPTS: "-X filename-length"
<<: *job_definition
package:amd64_sid:
variables:
ARCH: "amd64"
DIST: "sid"
REPONAMES: "client"
# Default is to fail on warnings, we disable it here
# unless all lintian warnings are fixed (#9033)
LINTIAN_OPTS: "-X filename-length, --suppress-tags newer-standards-version"
<<: *job_definition
package:amd64_artful:
variables:
ARCH: "amd64"
DIST: "artful"
REPONAMES: "client"
# Default is to fail on warnings, we disable it here
# unless all lintian warnings are fixed (#9033)
LINTIAN_OPTS: "-X filename-length, --suppress-tags newer-standards-version"
<<: *job_definition
package:amd64_bionic:
variables:
ARCH: "amd64"
DIST: "bionic"
REPONAMES: "client"
# Default is to fail on warnings, we disable it here
# unless all lintian warnings are fixed (#9033)
LINTIAN_OPTS: "-X filename-length, --suppress-tags newer-standards-version"
<<: *job_definition
---
os: osx
# Xcode 6.4, OS X 10.10
osx_image: xcode6.4
# language: python is not supported on OSX
# see https://github.com/travis-ci/travis-ci/issues/2312
language: generic
before_install:
- brew update
- brew install python
# Only if we need a newer version of openssl (1.0.2l instead of 1.0.2a-1)
# - brew upgrade OpenSSL
- pip2 install virtualenv
# https://stackoverflow.com/questions/36555679/fatal-error-in-building-sqlcipher-openssl-rand-h-file-not-found
- brew link openssl --force --overwrite
- virtualenv env -p python2.7
- source env/bin/activate
- pip2 install tox
script: tox --recreate -e py27-dev
include versioneer.py
include src/leap/bitmask/_version.py
include src/leap/bitmask/core/bitmaskd.tac
include *.bin
DIST=dist/bitmask
NEXT_VERSION = $(shell cat pkg/next-version)
DIST_VERSION = dist/bitmask-$(NEXT_VERSION)/
include pkg/pyinst/build.mk
DIST_VERSION = $(DIST)-$(NEXT_VERSION)/
clean:
find . -type f -name "*.py[co]" -delete
find . -type d -name "__pycache__" -delete
HEADLESS_DIST=dist/bitmask-nox
HEADLESS_DIST_VERSION = $(HEADLESS_DIST)-$(NEXT_VERSION)/
ANONVPN_DIST=dist/anonvpn
ANONVPN_DIST_VERSION = $(ANONVPN_DIST)-$(NEXT_VERSION)/
BITMASK_ROOT = src/leap/bitmask/vpn/helpers/linux/bitmask-root
POLKIT_POLICY = src/leap/bitmask/vpn/helpers/linux/se.leap.bitmask.bundle.policy
SUDO = /usr/bin/sudo
include pkg/bundles/build.mk
include pkg/thirdparty/openvpn/build.mk
dev-bootstrap:
pkg/tools/bitmask-bootstrap.sh
dev-mail:
pip install -e '.[mail]'
pip install -U -e '.[mail]'
dev-gui: install_pixelated
pip install -U -e '.[gui]'
dev-backend:
pip install -e '.[backend]'
pip install -U -e '.[backend]'
dev-all: install_pixelated
pip install -I --install-option="--bundled" pysqlcipher
pip install -U -e '.[all]'
dev-latest-leap:
pip install -U -e 'git+https://0xacab.org/leap/leap_pycommon@master#egg=leap.common'
pip install -U -e 'git+https://0xacab.org/leap/soledad@master#egg=leap.soledad'
dev-all:
pip install -e '.[all]'
dev-latest-backend: dev-backend dev-latest-leap
dev-latest-all: dev-all dev-latest-leap
upgrade-all:
python pkg/tools/upgrade_all.py
uninstall:
pip uninstall leap.bitmask
test:
tox
test_e2e_mail: install_helpers
tests/e2e/e2e-test-mail.sh
test_e2e_vpn: install_helpers
tests/e2e/e2e-test-vpn.sh
test_e2e_conditional_downloads: install_helpers
tests/e2e/conditional_downloads.py
test_functional_setup:
pip install -U behave selenium
test_functional: install_helpers
test -f /usr/bin/lxpolkit && lxpolkit &
xvfb-run --server-args="-screen 0 1280x1024x24" behave --tags ~@wip --tags @smoke tests/functional/features -k --no-capture -D host=localhost
test_functional_graphical:
behave --tags ~@wip --tags @smoke tests/functional/features -k --no-capture -D host=localhost
test_functional_graphical_wip:
behave --tags @wip tests/functional/features -k --no-capture -D host=localhost
install_helpers:
# if there's no sudo, assumming this is running as root by the CI
test -f $(SUDO) && sudo cp $(BITMASK_ROOT) /usr/local/sbin/ || cp $(BITMASK_ROOT) /usr/local/sbin/
test -f $(SUDO) && sudo cp $(POLKIT_POLICY) /usr/share/polkit-1/actions/se.leap.bitmask.bundle.policy || cp $(POLKIT_POLICY) /usr/share/polkit-1/actions/se.leap.bitmask.bundle.policy
install_pixelated:
pip install leap.pixelated leap.pixelated-www
qt-resources:
pyrcc5 pkg/branding/icons.qrc -o src/leap/bitmask/gui/app_rc.py
doc:
cd docs && make html
bundle_in_virtualenv:
pkg/build_bundle_with_venv.sh
bundle_in_virtualenv_osx:
pkg/build_osx_bundle_with_venv.sh
package_in_docker:
# needs docker_ce and gitlab-runner from upstream
gitlab-runner exec docker package:amd64_stretch
bundler_image:
cd pkg/docker_bundler && make bundler
bundle_in_docker:
# needs a docker container called 'bitmask-bundler-apt', created with 'make bundler_image'
# XXX why was it needed to specify -u `id -u` again? if it's something with gilab CI we might need
# to chown it first.
cat pkg/bundle_from_docker | docker run -i -v /srv/bitmask-builds:/dist -w /dist -e REPO="$(REPO)" -e BRANCH="$(BRANCH)" bitmask-bundler-apt bash
bundle_riseupvpn:
# needs a docker container called 'bitmask-bundler-apt', created with 'make bundler_image'
# XXX why was it needed to specify -u `id -u` again? if it's something with gilab CI we might need
# to chown it first.
cat pkg/bundle_riseupvpn_from_docker | docker run -i -v /srv/bitmask-builds:/dist -w /dist -e REPO="$(REPO)" -e BRANCH="$(BRANCH)" bitmask-bundler-apt bash
bundle_riseupvpn_osx_in_virtualenv:
pkg/build_osx_bundle_riseupvpn_with_venv.sh
bundle_in_docker_virtualenv:
# this runs bundles inside a virtualenv. it is kind of slow because it compiles all python extensions in dependencies each time.
cat pkg/bundle_from_docker_venv | docker run -i -v ~/leap/bitmask-dev:/dist -w /dist -u `id -u` -e REPO="$(REPO)" -e BRANCH="$(BRANCH)" bitmask-bundler-venv bash
mkdir -p dist/
cp -r bitmaskbuild/$(DIST_VERSION) dist/
rm -rf bitmaskbuild
snap_in_docker:
cd pkg/riseupvpn && ./pack_installers && cd ..
sudo docker run -v $(PWD):$(PWD) -w $(PWD) snapcore/snapcraft snapcraft
snap_clean:
sudo rm -rf stage prime parts
upload:
python setup.py sdist bdist_wheel --universal upload --sign -i kali@leap.se -r pypi
clean:
find . -type f -name "*.py[co]" -delete
find . -type d -name "__pycache__" -delete
Ticket numbers in this file can be looked up by visiting
http://leap.se/code/issues/<number>
http://0xacab.org/leap/bitmask-dev/issues/<number>
Bitmask 0.10.0
==============
......
......@@ -5,6 +5,8 @@ Bitmask
.. image:: https://badge.fury.io/py/leap.bitmask.svg
:target: http://badge.fury.io/py/leap.bitmask
.. image:: https://0xacab.org/leap/bitmask-dev/badges/master/build.svg
:target: https://0xacab.org/leap/bitmask-dev/pipelines
.. image:: https://readthedocs.org/projects/bitmask/badge/?version=latest
:target: http://bitmask.readthedocs.io/en/latest/?badge=latest
:alt: Documentation Status
......@@ -33,147 +35,110 @@ the application.
Package under development!
-----------------------------------------------------------
This is a unified repo that has merged the following packages, previously
isolated, under the leap namespace:
The previous client using PySide has been deprecated (Bitmask version 0.9.2,
still available at the http://github.com/leapcode/bitmask_client repo).
bonafide, mail, keymanager, bitmask.
The previous Qt client has been deprecated (bitmask version 0.8.2, still
available at the http://github.com/leapcode/bitmask_client repo).
Note that this repo still doesn't have support for VPN: its porting will
follow soon.
Read the Docs!
-----------------------------------------------------------
The latest documentation about Bitmask is available at `LEAP`_.
There is documentation about Bitmask `for users`_ and `for developers`_. For
developers, be sure to read the sections on `hacking`_ and `contributing_`.
Testers should read the section on `testing and QA`_.
.. _`LEAP`: https://leap.se/en/docs/client
.. _`for users`: https://leap.se/en/docs/client
.. _`for developers`: https://bitmask.readthedocs.io
.. _`hacking`: https://bitmask.readthedocs.io/en/latest/hacking/index.html
.. _`contributing`: https://bitmask.readthedocs.io/en/latest/hacking/contributing.html#contributing
.. _`testing and QA`: https://bitmask.readthedocs.io/en/latest/testing/index.html
Bugs
===========================================================
Please report any bugs `in our bug tracker`_.
.. _`in our bug tracker`: https://leap.se/code/projects/report-issues
.. _`in our bug tracker`: https://0xacab.org/leap/bitmask-dev/issues/
Logs
----
Development
===========================================================
If you want to watch the logs, from the command line::
Running Tests
-----------------------------------------------------------
bitmaskctl logs watch
You need tox to run the tests. If you don't have it in your system yet::
The paste command can be handy to do bug reports (needs ``pastebinit`` installed
in the system)::
pip install tox
bitmaskctl logs send
And then run all the tests::
but do not upload anything that you do not want to make public ;)
tox
Development
===========================================================
Hacking
Running Tests
-----------------------------------------------------------
In order to run bitmask in a development environment, you must activate a
virtualenv and install the various packages using 'pip install -e'. This
installs python packages as links to the source code, so that your code
changes are immediately reflected in the packages installed in the
virtualenv.
The various ``make dev-*`` commands will run the appropriate ``pip install``
commands for you.
Run headless backend in development mode
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Prerequisites::
sudo apt install build-essential python-dev python-virtualenv \
libsqlcipher-dev libssl-dev libffi-dev
Install and activate a virtualenv::
cd bitmask-dev
virtualenv venv
source venv/bin/activate
All the subsequent commands assume that you have activated the virtualenv.
Install all the python dependencies::
make dev-backend
Run application::
bitmaskd
Run user interface frontend
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
If you want to run the Bitmask user interface, you additionally need the
following:
Prerequisites::
You need tox to run the tests. If you don't have it in your system yet::
sudo apt install python-pyqt5 python-pyqt5.qtwebkit
pip install tox
Install python dependencies::
And then run all the python tests::
make dev-all
tox
Note: even though the UI is in javascript, Qt is used to create a webview
window.
There are some minimal end-to-end tests::
Run user interface::
make test_e2e
bitmask
For testing the UI (aka ``bitmask-js``) you need to have ``mocha``
installed. You can run ui tests like this::
The command `bitmask` should be in your path if you have activated the virtual
environment.
cd ui && make test
Install Bitmask user interface in development mode
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
More info abou testing can be found in the ``docs/hacking/testing`` document.
The above instructions will install a python package that contains a pre-
bundled version of the javascript UI.
If you want to modify the javascript UI, then you need to be able to update the
javascript bundle whenever a javascript or CSS source file changes.
Hacking
-----------------------------------------------------------
Prerequisites::
In order to run bitmask in a development environment, you must activate a
`virtualenv`_ and install the various leap-related python packages using ``pip
install -e``. This installs them as links to the source code, so
that your code changes are immediately reflected in the packages imported from
within the virtualenv.
sudo apt install nodejs npm nodejs-legacy
The various ``make dev-*`` commands will run the appropriate ``pip install``
commands for you.
Next, run ``dev-install``::
If you want to setup your whole development environment in a single step, and
you are running a debian-based system, you can use::
cd ui
make dev-install # install JS code as a python package in "develop" mode.
make dev-bootstrap
Now you should be able to run the user interface with debugging tools::
That should install all the system dependencies, create a virtualenv for you,
and drop you in a shell inside that virtualenv. In the future, you can enter this
`virtualenv`_ again by using `pew`_::
bitmaskd
chromium-browser http://localhost:7070
pew workon bitmask
Firefox does not work as well, because the UI is only tested with webkit-based
browsers.
To upgrade regularly the python dependencies installed inside your virtualenv,
you can run::
Chromium is not the best for this, however, because it uses a newer webkit.
Instead, try qupzilla::
make upgrade-all
sudo apt install qupzilla
bitmaskd
qupzilla -ow http://localhost:7070
inside your virtualenv, and it will install any new version of your
dependencies that is found in `pypi`_.
If you make a change to any of the CSS or JS source files, you need to rebuild
the javascript bundle. You can do this continually as files change like so::
Check out the ``docs/hacking`` page for more extense instructions `to get
you started`_.
cd ui
node run watch
.. _`to get you started`: https://bitmask.readthedocs.io/en/latest/hacking/
.. _`pew`: https://pypi.python.org/pypi/pew
.. _`virtualenv`: https://pypi.python.org/pypi/virtualenv
.. _`pypi`: https://pypi.python.org
For more information, see ``ui/README.md``.
License
===========================================================
......
......@@ -205,6 +205,118 @@ RZXoH+FTg9UAW87eqU610npOkT6cRaBxaMK/mDtGNdc=
-----END PGP PRIVATE KEY BLOCK-----
"""
# different private key to the same address
# A4337956D27DC89C Leap Test Key <leap@leap.se>
# no expiry date
DIFFERENT_KEY_FPR = "EFA5842560D6462AD9CCE7A2A4337956D27DC89C"
DIFFERENT_PRIVATE_KEY = """
-----BEGIN PGP PRIVATE KEY BLOCK-----
Version: GnuPG v1
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
=3mjv
-----END PGP PRIVATE KEY BLOCK-----
"""
# the corresponding public key
# this is signed by the other key 2F455E2824D18DDF above
DIFFERENT_PUBLIC_KEY = """
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1
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
=X/jT
-----END PGP PUBLIC KEY BLOCK-----
"""
# key 7FEE575A: public key "anotheruser <anotheruser@leap.se>"
KEY_FINGERPRINT_2 = "F6E2B572ADB84EA58BD2E9A57F9DFA687FEE575A"
PUBLIC_KEY_2 = """
......@@ -264,3 +376,68 @@ THx7N776fcYHGumbqUMYrxrcZSbNveE6SaK8fphRam1dewM0
=a5gs
-----END PGP PRIVATE KEY BLOCK-----
"""
# key with expiry date, change if key below is changed
ADDRESS_EXPIRING = 'leap.expiring@leap.se'
KEY_EXPIRING_CREATION_DATE = '2016-11-06'
PRIVATE_EXPIRING_KEY = """
-----BEGIN PGP PRIVATE KEY BLOCK-----
Version: GnuPG v1
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
=2Zjl
-----END PGP PRIVATE KEY BLOCK-----
"""
/usr/bin/bitmask_chromium
/usr/lib/python2.7/dist-packages/leap/bitmask/chrome/
/usr/bin/bitmaskd
/usr/bin/bitmaskctl
/usr/lib/python2.7/dist-packages/leap/bitmask/core/
/usr/lib/python2.7/dist-packages/leap/bitmask/cli/
/usr/lib/python2.7/dist-packages/leap/bitmask/bonafide/
/usr/lib/python2.7/dist-packages/leap/bitmask/__init__.py
/usr/lib/python2.7/dist-packages/leap/bitmask/_version.py
/usr/lib/python2.7/dist-packages/leap/bitmask/config.py
/usr/lib/python2.7/dist-packages/leap/bitmask/hooks.py
/usr/lib/python2.7/dist-packages/leap/bitmask/system.py
/usr/lib/python2.7/dist-packages/leap/bitmask/util.py
/usr/lib/python2.7/dist-packages/leap.bitmask-*.egg-info
ui/pydist/leap/bitmask_js/ /usr/lib/python2.7/dist-packages/leap
/usr/lib/python2.7/dist-packages/leap/bitmask/mail/
/usr/lib/python2.7/dist-packages/leap/bitmask/keymanager/
src/leap/bitmask/mua /usr/lib/python2.7/dist-packages/leap/bitmask/mua
[Desktop Entry]
Version=1.0
Type=Application
Name=Bitmask
Comment=Secure Communication
Comment[es]=Secure Communication
Comment[de]=Secure Communication
Exec=bitmask %U
Terminal=false
Icon=bitmask
Categories=Network;Application;
StartupNotify=true
X-AppInstall-Package=bitmask
Keywords=email;messaging;encryption;vpn;leap
/usr/bin/bitmask
src/leap/bitmask/gui /usr/lib/python2.7/dist-packages/leap/bitmask/
debian/bitmask-qt.xpm usr/share/pixmaps
debian/bitmask-qt.desktop usr/share/applications
debian/icons/hicolor usr/share/icons
?package(bitmask):needs="X11"\
hints="LEAP,Routing,Network Routing,Anonymous,openvpn"\
section="Applications/System/Security"\
title="Bitmask, the Internet Encryption Toolkit"\
command="/usr/bin/bitmask"\
icon="/usr/share/pixmaps/bitmask-qt.xpm"
/* XPM */
static char * mask_icon_xpm[] = {
"32 32 837 2",
" c None",
". c #B72F2F",
"+ c #B83434",
"@ c #BA3838",
"# c #E89499",
"$ c #FFC0C9",
"% c #FFC1CA",
"& c #FFC2CB",
"* c #FFC3CC",
"= c #FFC4CD",
"- c #EA9EB5",
"; c #E28EA9",
"> c #E38FAA",
", c #E390AB",
"' c #E392AC",
") c #D44CA2",
"! c #DE7BC6",
"~ c #E391DF",
"{ c #E290DF",
"] c #E28FDF",
"^ c #E38FE0",
"/ c #AA41AA",
"( c #A130A1",
"_ c #9F2D9F",
": c #9E2A9E",
"< c #9C269C",
"[ c #9C269D",
"} c #9F7ADA",
"| c #9E7FDF",
"1 c #9B7BDE",
"2 c #BB3C3C",
"3 c #BD4040",
"4 c #C04848",
"5 c #F5B1B9",
"6 c #FFC5CE",
"7 c #FFC6CF",
"8 c #FFC7CF",
"9 c #FBC4CF",
"0 c #E494AF",
"a c #E496AF",
"b c #E597B0",
"c c #E597B1",
"d c #DA61AB",
"e c #D757A7",
"f c #E18CD2",
"g c #E497E1",
"h c #E496E1",
"i c #DC90DA",
"j c #A73EA7",
"k c #A63BA6",
"l c #A438A4",
"m c #A335A3",
"n c #A132A1",
"o c #A779D5",
"p c #A486E1",
"q c #A284E0",
"r c #A081DF",
"s c #BE4545",
"t c #C04949",
"u c #C14D4D",
"v c #C85D5D",
"w c #FDC3CB",
"x c #FFC8D0",
"y c #FFC9D1",
"z c #FFCAD2",
"A c #FFCBD2",
"B c #E8A2B8",
"C c #E69CB4",
"D c #E69DB5",
"E c #E79EB6",
"F c #DF7CB4",
"G c #D962AD",
"H c #E59ADE",
"I c #E69EE3",
"J c #E69DE3",
"K c #E59CE3",
"L c #C26EC2",
"M c #AC49AC",
"N c #AB46AB",
"O c #A943A9",
"P c #A83FA8",
"Q c #AF6CC6",
"R c #AA8FE3",
"S c #A88CE2",
"T c #A689E1",
"U c #BF4848",
"V c #C14C4C",
"W c #C35252",
"X c #C45656",
"Y c #C65A5A",
"Z c #D27B7C",
"` c #FFCBD3",
" . c #FFCCD4",
".. c #FFCDD5",
"+. c #FFCED5",
"@. c #F8C6D2",
"#. c #E8A2B9",
"$. c #E8A4BA",
"%. c #E593BD",
"&. c #DC6CB2",
"*. c #DC6EB3",
"=. c #E8A5E4",
"-. c #E7A4E5",
";. c #E7A5E5",
">. c #B357B3",
",. c #B154B1",
"'. c #B051B0",
"). c #AE4DAE",
"!. c #B465BC",
"~. c #B097E5",
"{. c #AE94E4",
"]. c #AC92E3",
"^. c #AA8EE3",
"/. c #A88BE2",
"(. c #C45151",
"_. c #C45454",
":. c #C55959",
"<. c #C75E5E",
"[. c #C86262",
"}. c #CA6666",
"|. c #E8A6AB",
"1. c #FFCFD6",
"2. c #FFD0D7",
"3. c #FFD1D8",
"4. c #FED3DA",
"5. c #EAABBF",
"6. c #EAAABF",
"7. c #E9A6C6",
"8. c #DE77B8",
"9. c #E181BD",
"0. c #E9ABE7",
"a. c #E9AAE7",
"b. c #D999D8",
"c. c #B862B8",
"d. c #B65FB6",
"e. c #B55CB5",
"f. c #B863B9",
"g. c #B69CE4",
"h. c #B49CE6",
"i. c #B299E5",
"j. c #AC91E3",
"k. c #FA8C79",
"l. c #CE6563",
"m. c #C86161",
"n. c #CB6B6B",
"o. c #CD6F6F",
"p. c #CE7575",
"q. c #F4C0C5",
"r. c #FFD3DA",
"s. c #FFD4DB",
"t. c #FFD5DC",
"u. c #F5C6D3",
"v. c #EBB0C4",
"w. c #EBB1C4",
"x. c #EDB5CC",
"y. c #E182BE",
"z. c #E494C8",
"A. c #EBB2E9",
"B. c #EBB1E9",
"C. c #ECB1E8",
"D. c #C278C2",
"E. c #BD6DBD",
"F. c #BB6ABB",
"G. c #BA68BA",
"H. c #C0A1E1",
"I. c #BAA4E8",
"J. c #B9A2E8",
"K. c #B69FE7",
"L. c #B399E6",
"M. c #9F8ECD",
"N. c #FF8D79",
"O. c #FE9280",
"P. c #DF817A",
"Q. c #CC6D6D",
"R. c #CE7373",
"S. c #D07777",
"T. c #D17C7C",
"U. c #D68687",
"V. c #FCD1D6",
"W. c #FFD7DD",
"X. c #FFD8DE",
"Y. c #FEDAE1",
"Z. c #EDB7C8",
"`. c #EDB8C9",
" + c #EFBCCF",
".+ c #E48CC3",
"++ c #E48DC4",
"@+ c #E9A4D3",
"#+ c #EDB8EB",
"$+ c #E8B7E7",
"%+ c #C37BC3",
"&+ c #C074C0",
"*+ c #C89FDB",
"=+ c #C1ADEA",
"-+ c #BFAAEA",
";+ c #BDA7E9",
">+ c #BAA5E7",
",+ c #948AC0",
"'+ c #7E76AD",
")+ c #FF927F",
"!+ c #FF9683",
"~+ c #FF9A88",
"{+ c #F09C91",
"]+ c #D27B7B",
"^+ c #D38080",
"/+ c #D48484",
"(+ c #D68888",
"_+ c #DF9F9F",
":+ c #FFDAE0",
"<+ c #FFDCE1",
"[+ c #FFDCE2",
"}+ c #F2C8D5",
"|+ c #EFBECE",
"1+ c #EEC1D1",
"2+ c #E697C9",
"3+ c #EDB4DD",
"4+ c #EEBFED",
"5+ c #EEBEEC",
"6+ c #D6A0D6",
"7+ c #C886C8",
"8+ c #C783C7",
"9+ c #CE9BD4",
"0+ c #C7B4EC",
"a+ c #C5B2EC",
"b+ c #C2AFEB",
"c+ c #C0ACEA",
"d+ c #BEAEE6",
"e+ c #9189BA",
"f+ c #8881B3",
"g+ c #837BB0",
"h+ c #FF9684",
"i+ c #FF9B89",
"j+ c #FF9E8D",
"k+ c #FFA392",
"l+ c #FCAC9E",
"m+ c #DA8E8D",
"n+ c #D78C8C",
"o+ c #D99191",
"p+ c #DA9595",
"q+ c #ECBCBE",
"r+ c #FFDFE4",
"s+ c #FFE0E4",
"t+ c #FCE0E5",
"u+ c #F0C5D3",
"v+ c #F1C6D4",
"w+ c #EAA7D0",
"x+ c #E9A2CF",
"y+ c #F1C1E6",
"z+ c #F0C5EE",
"A+ c #F0C8EF",
"B+ c #CE94CE",
"C+ c #CD91CD",
"D+ c #D09AD2",
"E+ c #CEBDEE",
"F+ c #CBBAEE",
"G+ c #C9B7ED",
"H+ c #C7B4ED",
"I+ c #BCB2DE",
"J+ c #9891BD",
"K+ c #928BBA",
"L+ c #8E87B7",
"M+ c #8981B4",
"N+ c #FF9F8E",
"O+ c #FFA393",
"P+ c #FFA898",
"Q+ c #E1978A",
"R+ c #90655D",
"S+ c #6D4D4C",
"T+ c #946868",
"U+ c #D89999",
"V+ c #DFA2A2",
"W+ c #F5D3D6",
"X+ c #FFE3E7",
"Y+ c #FEE4E8",
"Z+ c #F3CED9",
"`+ c #F2CCD8",
" @ c #EEBBD9",
".@ c #EBADD4",
"+@ c #F1CBEC",
"@@ c #F2CCF0",
"#@ c #E8C3E7",
"$@ c #D39FD3",
"%@ c #D39ED3",
"&@ c #D6C2ED",
"*@ c #D1C2F0",
"=@ c #9D91B5",
"-@ c #706881",
";@ c #625E73",
">@ c #77728F",
",@ c #9C96C0",
"'@ c #938CBA",
")@ c #FCA495",
"!@ c #9A685F",
"~@ c #11100F",
"{@ c #222222",
"]@ c #2A2A2A",
"^@ c #181515",
"/@ c #735757",
"(@ c #D7A8A8",
"_@ c #FCE1E4",
":@ c #FFE7EA",
"<@ c #FBE4E9",
"[@ c #F4D3DE",
"}@ c #F3CDE1",
"|@ c #EEB7DA",
"1@ c #F4D3F1",
"2@ c #F4D4F3",
"3@ c #DCB0DC",
"4@ c #D8AAD8",
"5@ c #DBC3E7",
"6@ c #877F99",
"7@ c #232228",
"8@ c #1D1D1D",
"9@ c #2B2B2B",
"0@ c #252525",
"a@ c #141414",
"b@ c #3B3948",
"c@ c #9791BD",
"d@ c #9791C0",
"e@ c #C69781",
"f@ c #D6A491",
"g@ c #CF9A8E",
"h@ c #0E0D0C",
"i@ c #343434",
"j@ c #3D3D3D",
"k@ c #454545",
"l@ c #4D4D4D",
"m@ c #535353",
"n@ c #373737",
"o@ c #1B1818",
"p@ c #776364",
"q@ c #F1DDDF",
"r@ c #FEECEF",
"s@ c #F5D9E2",
"t@ c #F5DAE6",
"u@ c #F1C4E1",
"v@ c #F5D9F4",
"w@ c #F3DBF2",
"x@ c #DCB6DC",
"y@ c #8E7E91",
"z@ c #28272B",
"A@ c #2E2E2E",
"B@ c #525252",
"C@ c #505050",
"D@ c #484848",
"E@ c #404040",
"F@ c #383838",
"G@ c #676582",
"H@ c #8887DE",
"I@ c #6C6CE2",
"J@ c #C89B85",
"K@ c #CBA08C",
"L@ c #5E4B42",
"M@ c #202020",
"N@ c #3A3A3A",
"O@ c #424242",
"P@ c #4A4A4A",
"Q@ c #5A5A5A",
"R@ c #626262",
"S@ c #6A6A6A",
"T@ c #4E4E4E",
"U@ c #302F2F",
"V@ c #777070",
"W@ c #D0C1C5",
"X@ c #F2DEE8",
"Y@ c #F4D3E8",
"Z@ c #DCC7DB",
"`@ c #827482",
" # c #373337",
".# c #6A696A",
"+# c #646464",
"@# c #5D5D5D",
"## c #545454",
"$# c #2F2F2F",
"%# c #1A1A2E",
"&# c #7979E5",
"*# c #7171E3",
"=# c #C99D88",
"-# c #CCA38F",
";# c #2C241F",
"># c #333232",
",# c #3F3F3F",
"'# c #474747",
")# c #4F4F4F",
"!# c #575757",
"~# c #5F5F5F",
"{# c #676767",
"]# c #717171",
"^# c #797979",
"/# c #656565",
"(# c #414141",
"_# c #606060",
":# c #7B7B7B",
"<# c #757575",
"[# c #6D6D6D",
"}# c #696969",
"|# c #616161",
"1# c #595959",
"2# c #0D0D0F",
"3# c #7B7BE1",
"4# c #7575E4",
"5# c #CA9F8B",
"6# c #CDA591",
"7# c #191514",
"8# c #3B3B3B",
"9# c #444444",
"0# c #313131",
"a# c #5E5E5E",
"b# c #6E6E6E",
"c# c #7C7C7C",
"d# c #818181",
"e# c #858585",
"f# c #868686",
"g# c #838383",
"h# c #7F7F7F",
"i# c #787878",
"j# c #464646",
"k# c #3E3E3E",
"l# c #131313",
"m# c #7171CC",
"n# c #7878E5",
"o# c #FCCF83",
"p# c #F8D191",
"q# c #1B1813",
"r# c #3C3C3C",
"s# c #12100F",
"t# c #786963",
"u# c #A7948C",
"v# c #80746E",
"w# c #3D3836",
"x# c #1E1E1E",
"y# c #747474",
"z# c #7A7A7A",
"A# c #777777",
"B# c #727272",
"C# c #25252D",
"D# c #5F5F79",
"E# c #7C7CA4",
"F# c #72729B",
"G# c #181820",
"H# c #434343",
"I# c #151515",
"J# c #8585B6",
"K# c #8D8DC2",
"L# c #FFCE75",
"M# c #FFD17E",
"N# c #3A301F",
"O# c #414140",
"P# c #4C4C4C",
"Q# c #151412",
"R# c #DCC292",
"S# c #FFE6B6",
"T# c #FEE9C4",
"U# c #FCEBCF",
"V# c #C6BBAC",
"W# c #363431",
"X# c #686868",
"Y# c #6F6F6F",
"Z# c #1D1D1F",
"`# c #9191A0",
" $ c #D4D4EC",
".$ c #CCCCE5",
"+$ c #C1C1DA",
"@$ c #B2B2CC",
"#$ c #1C1C21",
"$$ c #101011",
"%$ c #8E8EB8",
"&$ c #8888B5",
"*$ c #FFCF76",
"=$ c #705E3B",
"-$ c #333333",
";$ c #342F24",
">$ c #E9D0A3",
",$ c #FFE7BB",
"'$ c #FFEAC4",
")$ c #FFEDCC",
"!$ c #E4D9C4",
"~$ c #1D1D1B",
"{$ c #0C0C0C",
"]$ c #A9AAB3",
"^$ c #D9D9E8",
"/$ c #CECEE1",
"($ c #C7C7DC",
"_$ c #BBBBD2",
":$ c #43434D",
"<$ c #353535",
"[$ c #1E1E26",
"}$ c #9090BA",
"|$ c #C5A468",
"1$ c #1C1C1C",
"2$ c #565656",
"3$ c #1A1A18",
"4$ c #6C6B62",
"5$ c #969588",
"6$ c #6D6C64",
"7$ c #181818",
"8$ c #7E7E7E",
"9$ c #5C5C5D",
"0$ c #1A1B1B",
"a$ c #55585F",
"b$ c #818893",
"c$ c #696F79",
"d$ c #212225",
"e$ c #303030",
"f$ c #4F4F63",
"g$ c #8787B4",
"h$ c #F9EDBA",
"i$ c #F8F1C4",
"j$ c #F9F3C9",
"k$ c #302F28",
"l$ c #50504F",
"m$ c #636363",
"n$ c #686767",
"o$ c #494949",
"p$ c #737373",
"q$ c #515151",
"r$ c #666666",
"s$ c #141416",
"t$ c #A9BFE5",
"u$ c #B1C8F3",
"v$ c #ACBFEA",
"w$ c #F7F1BF",
"x$ c #F7F2C3",
"y$ c #F8F3C6",
"z$ c #BBB798",
"A$ c #1A1A1A",
"B$ c #383939",
"C$ c #434545",
"D$ c #323232",
"E$ c #606B80",
"F$ c #B5CDF6",
"G$ c #B0C9F6",
"H$ c #ABC6F5",
"I$ c #F6F1BD",
"J$ c #F7F1C1",
"K$ c #F7F2C4",
"L$ c #F8F3C8",
"M$ c #73715E",
"N$ c #2C2C2C",
"O$ c #414743",
"P$ c #AEBCB6",
"Q$ c #DFF5F0",
"R$ c #D8EBEB",
"S$ c #D3DCDD",
"T$ c #63686B",
"U$ c #5F6060",
"V$ c #2D3239",
"W$ c #B5CCF4",
"X$ c #B2CBF6",
"Y$ c #AEC7F6",
"Z$ c #A9C4F5",
"`$ c #F6F0BB",
" % c #F4F1C1",
".% c #E1EEB5",
"+% c #D0E8A5",
"@% c #545D42",
"#% c #282828",
"$% c #666665",
"%% c #191A19",
"&% c #7C8E84",
"*% c #CEEDDB",
"=% c #E0FEF4",
"-% c #D8F1ED",
";% c #C4E2E2",
">% c #EBF7F8",
",% c #E8F5FB",
"'% c #ACBBC1",
")% c #1E1F20",
"!% c #4B4B4B",
"~% c #242F39",
"{% c #8FC0EF",
"]% c #A3CEFD",
"^% c #B3CFF8",
"/% c #A6C2F5",
"(% c #E9EDB1",
"_% c #D1E89B",
":% c #C8E48F",
"<% c #CAE594",
"[% c #CDE69A",
"}% c #D0E89F",
"|% c #818F65",
"1% c #1C1E19",
"2% c #242B24",
"3% c #A2BCAA",
"4% c #C1E7D2",
"5% c #D4F3E5",
"6% c #D9FFF2",
"7% c #CAE8E6",
"8% c #B4DADA",
"9% c #E8F6F7",
"0% c #E7F6F8",
"a% c #DAF0F9",
"b% c #C8DCE7",
"c% c #40464B",
"d% c #1B1B1B",
"e% c #161719",
"f% c #4C637A",
"g% c #94C7F7",
"h% c #92C9FF",
"i% c #8CC6FF",
"j% c #86C3FF",
"k% c #88C3FD",
"l% c #A0C7F8",
"m% c #BFE07D",
"n% c #C2E183",
"o% c #C5E289",
"p% c #C8E48E",
"q% c #CDE699",
"r% c #C3E0A6",
"s% c #9ECC9E",
"t% c #8BB18B",
"u% c #8AAE8A",
"v% c #B8DDBE",
"w% c #B6E2CA",
"x% c #B9E4CC",
"y% c #D6FDF0",
"z% c #D3FFF0",
"A% c #BADFDE",
"B% c #A9D4D4",
"C% c #E3F3F5",
"D% c #E3F4F6",
"E% c #DBF1F9",
"F% c #D3EDF8",
"G% c #D1E9F5",
"H% c #A7BDCE",
"I% c #92A7B8",
"J% c #A9C2D7",
"K% c #AECEE9",
"L% c #98CCFF",
"M% c #80C0FF",
"N% c #7ABDFF",
"O% c #74BAFF",
"P% c #BCDE78",
"Q% c #BFDF7E",
"R% c #C4E288",
"S% c #C7E38F",
"T% c #ABD39B",
"U% c #90C590",
"V% c #94C794",
"W% c #98C998",
"X% c #A4D1A8",
"Y% c #ADDFC4",
"Z% c #AEDFC4",
"`% c #BCE9D2",
" & c #CCFFEE",
".& c #CDFFEE",
"+& c #A9D5D5",
"@& c #9DCECE",
"#& c #DBF0F1",
"$& c #E0F3F5",
"%& c #DEF3F7",
"&& c #CEEBF7",
"*& c #CCEAF7",
"=& c #C6E0EE",
"-& c #AAC6DD",
";& c #A6C3DB",
">& c #A3C1DA",
",& c #A0C1DD",
"'& c #93C8FC",
")& c #7FC0FF",
"!& c #6DB7FF",
"~& c #BADD72",
"{& c #BFDF7D",
"]& c #BDDE84",
"^& c #91C58A",
"/& c #82BD82",
"(& c #87C087",
"_& c #8CC28C",
":& c #92C693",
"<& c #A7DBBD",
"[& c #A3DBBC",
"}& c #A6DCBE",
"|& c #C8F8E5",
"1& c #C7FFEC",
"2& c #94CBCB",
"3& c #91C8C8",
"4& c #CEE9EA",
"5& c #DCF1F4",
"6& c #DCF1F3",
"7& c #CDEBF7",
"8& c #C7E8F6",
"9& c #C5E7F5",
"0& c #B6D1E5",
"a& c #A0BFD8",
"b& c #9CBCD7",
"c& c #98B9D5",
"d& c #94B7D5",
"e& c #8EC1F2",
"f& c #73BAFF",
"g& c #67B4FF",
"h& c #B7DB6D",
"i& c #B9DC72",
"j& c #ADD57D",
"k& c #78B877",
"l& c #76B776",
"m& c #7AB97A",
"n& c #7FBC7F",
"o& c #83BE83",
"p& c #9FD7B3",
"q& c #98D7B4",
"r& c #9BD8B6",
"s& c #A1DCBB",
"t& c #C1FFE9",
"u& c #C1FFEA",
"v& c #C0FBE8",
"w& c #85C2C2",
"x& c #B7DDDE",
"y& c #D9F0F3",
"z& c #D8F0F3",
"A& c #D3EDF5",
"B& c #C2E6F5",
"C& c #C0E5F5",
"D& c #BEE5F4",
"E& c #A4C2DA",
"F& c #95B7D4",
"G& c #91B5D3",
"H& c #8EB3D1",
"I& c #89B0CF",
"J& c #86B6E3",
"K& c #69B6FF",
"L& c #60B1FF",
"M& c #B4DA66",
"N& c #92C770",
"O& c #66AF66",
"P& c #69B069",
"Q& c #6EB36E",
"R& c #73B573",
"S& c #77B877",
"T& c #90CB9C",
"U& c #8DD3AC",
"V& c #90D4AE",
"W& c #92D5B0",
"X& c #B2EDD3",
"Y& c #BAFFE8",
"Z& c #BBFFE8",
"`& c #B3F1E1",
" * c #7ABDBD",
".* c #9BCFCF",
"+* c #D5EFF2",
"@* c #D5EEF2",
"#* c #D4EEF2",
"$* c #BDE4F4",
"%* c #BBE3F4",
"&* c #B9E3F3",
"** c #B6DEF0",
"=* c #91B5D2",
"-* c #8BB1D0",
";* c #87AECE",
">* c #83ABCD",
",* c #7FA9CB",
"'* c #7BAAD3",
")* c #63B0FC",
"!* c #73B661",
"~* c #58A758",
"{* c #5DAA5D",
"]* c #61AC61",
"^* c #66AE66",
"/* c #6AB16A",
"(* c #77BB7E",
"_* c #83CEA5",
":* c #85D0A6",
"<* c #88D1A8",
"[* c #8AD1AA",
"}* c #B8FEE6",
"|* c #B5FFE6",
"1* c #A2E4D7",
"2* c #6EB7B7",
"3* c #7CBEBE",
"4* c #D2EDF1",
"5* c #D1EDF0",
"6* c #C5E7F3",
"7* c #B6E1F3",
"8* c #B5E1F3",
"9* c #B3E0F2",
"0* c #ABD3E8",
"a* c #84ACCD",
"b* c #80A9CC",
"c* c #7CA7CA",
"d* c #79A4C9",
"e* c #74A1C7",
"f* c #71A0C8",
"g* c #4CA14C",
"h* c #50A350",
"i* c #55A655",
"j* c #59A859",
"k* c #5EAA5E",
"l* c #65AE66",
"m* c #7DCC9F",
"n* c #7ACB9E",
"o* c #7DCCA0",
"p* c #7FCDA2",
"q* c #93DBB8",
"r* c #AEFFE4",
"s* c #AFFFE4",
"t* c #B0FFE4",
"u* c #8FD6CB",
"v* c #62B1B1",
"w* c #CEEBEF",
"x* c #CEECEF",
"y* c #CDEBEF",
"z* c #CAEAF0",
"A* c #B1DFF2",
"B* c #AFDFF2",
"C* c #AEDEF1",
"D* c #ACDDF1",
"E* c #97C1DC",
"F* c #75A2C7",
"G* c #729FC6",
"H* c #6E9DC4",
"I* c #6A9AC2",
"J* c #419B41",
"K* c #489F48",
"L* c #51A451",
"M* c #73C693",
"N* c #6FC796",
"O* c #72C899",
"P* c #75C99A",
"Q* c #77CA9C",
"R* c #A6F5D7",
"S* c #A8FFE2",
"T* c #A9FFE2",
"U* c #AAFFE2",
"V* c #78C5BF",
"W* c #57ABAB",
"X* c #56ABAB",
"Y* c #C9E9EC",
"Z* c #CAEAEE",
"`* c #C9EAEE",
" = c #B2DFF1",
".= c #AADCF1",
"+= c #A9DCF1",
"@= c #A7DBF0",
"#= c #A5DBF0",
"$= c #81ADCF",
"%= c #6B9BC3",
"&= c #6799C2",
"*= c #6194BF",
". + @ # $ % & * = - ; > , ' ) ) ) ) ! ~ { ] ^ / ( _ : < [ } | 1 ",
"@ 2 3 4 5 = 6 7 8 9 0 a b c d e e e f g g h i j k l m n o p q r ",
"3 s t u v w x y z A B C D E F G G G H I J K L M N O P Q R S T p ",
"U V W X Y Z ` ...+.@.#.$.$.%.&.&.*.=.-.-.;.>.,.'.).!.~.{.].^./.",
"(._.:.<.[.}.|.1.2.3.4.5.6.5.7.8.8.9.0.0.a.b.c.d.e.f.g.h.i.~.{.j.",
"k.l.m.}.n.o.p.q.r.s.t.u.v.w.x.y.y.z.A.B.C.D.E.F.G.H.I.J.K.h.L.M.",
"N.O.P.Q.R.S.T.U.V.W.X.Y.Z.`. +.+++@+#+#+$+%+D.&+*+=+-+;+I.>+,+'+",
")+!+~+{+]+^+/+(+_+:+<+[+}+|+1+2+2+3+4+5+6+7+8+9+0+a+b+c+d+e+f+g+",
"h+i+j+k+l+m+n+o+p+q+r+s+t+u+v+w+x+y+z+A+B+C+D+E+F+G+H+I+J+K+L+M+",
"i+N+O+P+Q+R+S+T+U+V+W+X+Y+Z+`+ @.@+@@@#@$@%@&@*@=@-@;@>@,@J+'@L+",
")@k+P+!@~@{@]@{@^@/@(@_@:@<@[@}@|@1@2@3@4@5@6@7@8@9@0@a@b@,@c@d@",
"e@f@g@h@i@j@k@l@m@n@o@p@q@r@s@t@u@v@w@x@y@z@A@B@C@D@E@F@a@G@H@I@",
"J@K@L@M@N@O@P@B@Q@R@S@T@U@V@W@X@Y@Z@`@ #D@.#+#@###l@k@j@$#%#&#*#",
"=#-#;#>#,#'#)#!#~#{#S@]#^#/#P@,#(#'#_#:#<#[#}#|#1#B@P@(#N@2#3#4#",
"5#6#7#8#9#D@0#9@j@a#}#b#<#c#d#e#f#g#h#i#]#S@+#9#$#9@k@j#k#l#m#n#",
"o#p#q#E@r#s#t#u#v#w#x###b#y#i#:#c#z#A#B#R@]@C#D#E#F#G#0#H#I#J#K#",
"L#M#N#O#P#Q#R#S#T#U#V#W#9@X#Y#y#<#]#b#r#Z#`# $.$+$@$#$k@D@$$%$&$",
"*$M#=$-$B@'#;$>$,$'$)$!$~$,#b#y#<#]###{$]$^$/$($_$:$<$##'#[$}$&$",
"L#M#|$1$2$~#P#3$4$5$6$7$T@S@y#c#8$i#b#9$0$a$b$c$d$r#|#1#e$f$}$g$",
"h$i$j$k$l$m$}#n$P#,#o$X#}#b#:#g#e#8$p$}#}#q$E@'#+#}#r$@#s$t$u$v$",
"w$x$y$z$A${#}#}#}#}#}#}#}#a#,#B$C$j@!#}#}#}#}#}#}#}#}#D$E$F$G$H$",
"I$J$K$L$M$$#}#}#}#}#}#{#N$O$P$Q$R$S$T$x#U$}#}#}#}#}#D@V$W$X$Y$Z$",
"`$w$ %.%+%@%#%$%}#}#Q@%%&%*%=%-%;%>%,%'%)%!%}#}#X#r#~%{%]%^%H$/%",
"(%_%:%<%[%}%|%1%0@{@2%3%4%5%6%7%8%9%0%a%b%c%d%#%e%f%g%h%i%j%k%l%",
"m%n%o%p%<%q%r%s%t%u%v%w%x%y%z%A%B%C%D%E%F%G%H%I%J%K%L%i%j%M%N%O%",
"P%Q%n%R%S%T%U%V%W%X%Y%Z%`% &.&+&@&#&$&%&&&*&=&-&;&>&,&'&)&N%O%!&",
"~&P%{&]&^&/&(&_&:&<&[&}&|&1&1&2&3&4&5&6&7&8&9&0&a&b&c&d&e&f&!&g&",
"h&i&j&k&l&m&n&o&p&q&r&s&t&u&v&w&w&x&y&z&A&B&C&D&E&F&G&H&I&J&K&L&",
"M&N&O&P&Q&R&S&T&U&V&W&X&Y&Z&`& * *.*+*@*#*$*%*&***=*-*;*>*,*'*)*",
"!*~*{*]*^*/*(*_*:*<*[*}*|*|*1*2*2*3*4*5*5*6*7*8*9*0*a*b*c*d*e*f*",
"g*h*i*j*k*l*m*n*o*p*q*r*s*t*u*v*v*v*w*x*y*z*A*B*C*D*E*d*F*G*H*I*",
"J*K*g*L*i*M*N*O*P*Q*R*S*T*U*V*W*W*X*Y*Z*`*`* =.=+=@=#=$=H*%=&=*="};
src/leap/bitmask/vpn /usr/lib/python2.7/dist-packages/leap/bitmask/
src/leap/bitmask/vpn/helpers/linux/se.leap.bitmask.policy usr/share/polkit-1/actions/
src/leap/bitmask/vpn/helpers/linux/bitmask-root usr/sbin/
bitmask (0.10.6) unstable; urgency=medium
* Update to 0.10.6 release.
-- Kali Kaneko <kali@leap.se> Thu, 24 May 2018 01:54:34 +0200
bitmask (0.10.5) unstable; urgency=medium
* Update to 0.10.5 release.
-- Kali Kaneko <kali@leap.se> Wed, 28 Mar 2018 23:45:40 +0200
bitmask (0.10.4) unstable; urgency=medium
* Update to 0.10.4 release.
-- Kali Kaneko <kali@leap.se> Fri, 02 Mar 2018 04:07:26 +0100
bitmask (0.10.3) unstable; urgency=medium
* Update to 0.10.3 release.
-- Kali Kaneko <kali@leap.se> Thu, 25 Jan 2018 12:25:06 +0100
bitmask (0.10.0) unstable; urgency=medium
* Update to 0.10.0 release.
* Ported new UI with VPN and Email support.
-- Ben Carrillo <ben@futeisha.org> Wed, 19 Jul 2017 00:00:00 +0100
bitmask (0.9.2.1) unstable; urgency=medium
* Hotfix: suport newest OpenVPN status format.
-- Ben Carrillo <ben@futeisha.org> Sun, 12 Feb 2017 16:13:25 +0100
bitmask (0.9.2) unstable; urgency=medium
[ Ben Carrillo ]
* Update to 0.9.2 release "panis et circenses"
[ Micah Anderson]
* Add missing versioned dependency on leap-keymanager
-- Ben Carrillo <ben@futeisha.org> Mon, 25 Apr 2016 21:33:01 -0400
bitmask (0.9.1) unstable; urgency=medium
* Update to 0.9.1 release "the day of the calaca"
-- Ben Carrillo <ben@futeisha.org> Wed, 04 Nov 2015 10:51:52 -0400
bitmask (0.9.0) unstable; urgency=medium
* Update to 0.9.0 release.
* Update debian/control Description
* Remove deprecated Encoding key in debian/bitmask.desktop
* Add Keywords entry to debian/bitmask.desktop
* Add explicit dependency on python-txzmq
* Add versioned dependency on python-logbook
* Add versioned dependency on python-twisted-core
* Add Recommends on thunderbird extension
* Cherry-pick 9362e25 to avoid using system tornado in zmq.
* Cherry-pick 5d48352, pick gpg1 if /usr/bin/gpg is symlink.
* Add dependency libssl-dev as a workaround for #7566
-- Ben Carrillo <ben@futeisha.org> Thu, 29 Oct 2015 12:16:57 -0400
bitmask (0.8.1) unstable; urgency=medium
* Update to 0.8.1 release.
-- Ben Carrillo <ben@futeisha.org> Fri, 27 Feb 2015 10:48:29 -0400
bitmask (0.8.0) unstable; urgency=medium
* Update to 0.8.0 release.
* Change build-depends on python-requests to not build on -1 revision
* Update debian/copyright to fix space-in-std-shortname
* Update debian/copyright to fix dep5 copyright short name
* Update standards version to 3.9.6 - no changes
-- Ben Carrillo <ben@futeisha.org> Thu, 05 Feb 2015 15:23:14 -0400
bitmask (0.7.0.1) unstable; urgency=medium
* Add missing dependency on python-daemon (github #796)
-- Micah Anderson <micah@debian.org> Fri, 26 Dec 2014 02:06:38 -0500
bitmask (0.7.0) unstable; urgency=medium
* Update to 0.7.0 release
* Workarounds for #6219 and #6133
* Bump python-zmq package requirement to use leap
provided build against libsodium
-- Ben Carrillo <ben@futeisha.org> Mon, 24 Nov 2014 17:17:17 +0100
bitmask (0.6.1.2) unstable; urgency=medium
* add versioned depend on leap's python-zmq until libsodium is in debian
-- Micah Anderson <micah@debian.org> Tue, 26 Aug 2014 09:38:36 -0700
bitmask (0.6.1) unstable; urgency=medium
* Cherry-pick ced7ebf and c23f2be, fixing three bugs related to
provider change (#5995, #5996, #5997)
* Remove saucy required pydist-overrides for pyopenssl
* Cherry-pick fix for missing openvpn.pem not being re-downloaded
* Cherry-pick fix for 2.6 syntax error with dict comprenhension
* Update to 0.6.1 release
-- Micah Anderson <micah@debian.org> Tue, 19 Aug 2014 13:45:05 -0400
bitmask (0.5.4) unstable; urgency=medium
* Update to 0.5.4 release
* Remove dependency on resolvconf and pep8
-- Ben Carrillo <ben@futeisha.org> Fri, 25 Jul 2014 11:38:14 -0500
bitmask (0.5.3.5) unstable; urgency=medium
* Neglected to set python-requests dependency for Depends
-- Micah Anderson <micah@debian.org> Sun, 06 Jul 2014 19:07:56 -0400
bitmask (0.5.3.4) unstable; urgency=medium
* Add hint to pydist-overrides for python-openssl, seems this might be
needed for saucy (#676)
-- Micah Anderson <micah@debian.org> Thu, 03 Jul 2014 21:45:37 -0400
bitmask (0.5.3.3) unstable; urgency=medium
* Cherry-pick fix for syntax error on install for some suites
-- Micah Anderson <micah@debian.org> Wed, 02 Jul 2014 11:37:42 -0400
bitmask (0.5.3.2) unstable; urgency=medium
* Lower version dependency on python requests so
that other suites can still install
-- Micah Anderson <micah@debian.org> Tue, 01 Jul 2014 21:19:27 -0400
bitmask (0.5.3.1) unstable; urgency=medium
* Add version dependency for python-requests
-- Micah Anderson <micah@debian.org> Tue, 01 Jul 2014 21:00:49 -0400
bitmask (0.5.3) unstable; urgency=medium
* Update to 0.5.3 release
-- Ben Carrillo <ben@futeisha.org> Tue, 01 Jul 2014 01:49:02 -0500
bitmask (0.5.2) unstable; urgency=medium
* Update to 0.5.2 release
-- Ben Carrillo <ben@futeisha.org> Tue, 10 Jun 2014 09:29:25 -0500
bitmask (0.5.1) unstable; urgency=medium
* Update to 0.5.1 release.
* Block ipv6 traffic (leap #5693)
-- Ben Carrillo <ben@futeisha.org> Mon, 19 May 2014 16:06:57 -0500
bitmask (0.5.0) unstable; urgency=low
* Update to 0.5.0 release (first unified release, together with
soledad and mx).
-- Ben Carrillo <ben@futeisha.org> Wed, 09 Apr 2014 16:24:40 -0500
bitmask (0.3.8.4) unstable; urgency=medium
* Remove bitmask.trigger and bitmask.postinst, I misunderstood how
the triggers worked
-- Micah Anderson <micah@debian.org> Mon, 16 Dec 2013 10:04:32 -0500
bitmask (0.3.8.3) unstable; urgency=low
* Fix postinst trigger
-- Micah Anderson <micah@debian.org> Sun, 15 Dec 2013 15:13:34 -0500
bitmask (0.3.8.2) unstable; urgency=medium
* Update icons to get rendered versions with the right names
-- Micah Anderson <micah@debian.org> Thu, 12 Dec 2013 15:07:53 -0500
bitmask (0.3.8.1) unstable; urgency=medium
* Add desktop file
* Add icons and triggers for rebuilding icon cache
-- Micah Anderson <micah@debian.org> Wed, 11 Dec 2013 10:29:26 -0500
bitmask (0.3.8) unstable; urgency=low
* Update to 0.3.8 release, "The three-week child"
-- Ben Carrillo <ben@futeisha.org> Tue, 10 Dec 2013 18:14:26 -0400
bitmask (0.3.7) unstable; urgency=low
* Update to 0.3.7 release, "The Big Lewosky"
-- Ben Carrillo <ben@futeisha.org> Fri, 15 Nov 2013 23:43:35 -0200
bitmask (0.3.6) unstable; urgency=low
* Update to 0.3.6 release.
* Install CHANGELOG.rst after it was renamed.
-- Ben Carrillo <ben@futeisha.org> Tue, 05 Nov 2013 11:41:39 -0200
bitmask (0.3.5) unstable; urgency=low
* Update to 0.3.5 release.
* Freeze reported version to 0.3.5 using freeze_debianver
-- Ben Carrillo <ben@futeisha.org> Wed, 30 Oct 2013 16:35:10 -0200
bitmask (0.3.4) unstable; urgency=low
* Update to 0.3.4 release.
* Removed explicit gnupg dependency; now we indirectly depend on
python-gnupg-ng.
-- Ben Carrillo <ben@futeisha.org> Mon, 14 Oct 2013 17:34:43 -0300
bitmask (0.3.3) unstable; urgency=low
* Update to 0.3.3 release.
-- Micah Anderson <micah@debian.org> Tue, 24 Sep 2013 17:07:42 -0400
bitmask (0.3.2) unstable; urgency=low
* Merge master for 0.3.2 release.
-- Ben Carrillo <ben@futeisha.org> Thu, 12 Sep 2013 14:30:01 +0200
bitmask (0.3.1) unstable; urgency=low
[ Ben Carrillo ]
* Merge master for new release
* Cherrypick fix for updown script.
* Add data files to install /etc/leap/resolv-update
* Add leap.mail and leap.soledad.client dependencies explicitly.
* Install CHANGELOG.
* Update path to icon and menu entry to new package name.
[ Micah Anderson ]
* Update debian/copyright for new license
* Reformat extended description to fit properly
* Add leap-keymanager to pydist-overrides
-- Ben Carrillo <ben@futeisha.org> Mon, 26 Aug 2013 14:21:06 +0200
bitmask (0.3.0) unstable; urgency=low
* Upgrade to 0.3.0
* Add python-pyside dependencies
* Remove versioned dependency on python-requests
* Rename manpage for bitmask rename
* Remove no longer existing NEWS file installation
* Disable running of tests on package build
* Add man pages back in
* Rename to bitmask
-- Micah Anderson <micah@debian.org> Thu, 15 Aug 2013 20:22:18 -0400
leap-client (0.2.0) unstable; urgency=low
[ Kali ]
* add python-jsonschema dependency >= 0.8
* generate manpage from .rst file
* fixes to sphinxdoc install
* merged release/v0.2.0 branch
* updated dependency list
[ Micah Anderson ]
* updated build-dependencies to have necessary packages to pass tests
* removed unused comments from control file
* move build-depends to source package section of control file
* switch source/format to 3.0 (native)
* fix build-dependency on python-mock
[ Kali ]
* Initial release (Closes: #111111111111)
-- Ben Carrillo <ben@futeisha.org> Fri, 01 Feb 2013 02:40:00 -0900