├── pkg ├── __init__.py ├── next-version ├── pyinst │ ├── bitmask.py │ ├── qt.conf │ ├── bitmaskd │ ├── bitmask_cli │ ├── trim-notes.txt │ ├── README.rst │ ├── bitmask_cli.spec │ ├── bitmaskd.spec │ ├── bitmask.spec.orig │ ├── bitmask.spec │ └── multi.spec ├── requirements-docs.pip ├── windows │ ├── bitmask.nis │ ├── pyinstaller │ │ ├── zlib-mingw-shared.patch │ │ └── pysqlcipher_setup.py.patch │ ├── installer │ │ └── Dockerfile │ ├── Makefile │ ├── openvpn │ │ └── Dockerfile │ ├── bitmask_client_product.nsh │ ├── TODO │ ├── openvpn_manifest │ ├── docker-compose.yml │ ├── openvpn-build.sh │ └── bitmask_client_registry_install.nsh ├── branding │ ├── branding.mk │ └── patch_pixel_logo.py ├── leap_versions.txt ├── osx │ ├── bitmask.icns │ ├── bitmask-wrapper │ ├── pre-inst.sh │ ├── post-inst.sh │ ├── README.rst │ ├── bitmask.pf.conf │ ├── se.leap.bitmask-helper.plist │ ├── build_tuntaposx │ ├── __init__.py │ └── daemon │ │ └── pidfile.py ├── requirements-leap.pip ├── tools │ ├── with_venv.sh │ ├── get_authors.sh │ ├── with_venvwrapper.sh │ └── profile.mk ├── requirements-pixelated.pip ├── requirements-testing.pip ├── scripts │ ├── checkout_leap_versions.sh │ ├── monitor_resource.zsh │ ├── filter-bitmask-deps │ └── check_code.sh ├── version-template ├── launcher │ ├── Makefile │ ├── README.rst │ └── bitmask-launcher.c ├── linux │ ├── leap.desktop │ ├── pyinst-notes.txt │ ├── bitmask-launcher │ ├── polkit │ │ ├── se.leap.bitmask.policy │ │ └── se.leap.bitmask.bundle.policy │ └── README.rst ├── generate_wheels.sh ├── requirements.pip ├── requirements-dev.pip ├── sumo-tarballs.mk ├── deps.mk ├── postmkvenv.sh ├── pip_install_requirements.sh └── tuf │ └── apply_updates.py ├── src └── leap │ ├── bitmask │ ├── cli │ │ └── __init__.py │ ├── backend │ │ └── __init__.py │ ├── config │ │ ├── __init__.py │ │ ├── flags.py │ │ └── tests │ │ │ └── test_leapsettings.py │ ├── crypto │ │ ├── __init__.py │ │ └── tests │ │ │ ├── test_provider.json │ │ │ ├── __init__.py │ │ │ ├── eip-service.json │ │ │ ├── openvpn.pem │ │ │ └── wrongcert.pem │ ├── provider │ │ ├── tests │ │ │ └── __init__.py │ │ └── __init__.py │ ├── services │ │ ├── mail │ │ │ ├── __init__.py │ │ │ └── smtpspec.py │ │ ├── tests │ │ │ └── __init__.py │ │ ├── eip │ │ │ ├── tests │ │ │ │ ├── __init__.py │ │ │ │ └── wrongcert.pem │ │ │ ├── connection.py │ │ │ ├── udstelnet.py │ │ │ ├── __init__.py │ │ │ └── windowsvpnlauncher.py │ │ └── soledad │ │ │ ├── __init__.py │ │ │ ├── soledadconfig.py │ │ │ └── soledadspec.py │ ├── util │ │ ├── tests │ │ │ ├── __init__.py │ │ │ └── test_is_release_version.py │ │ ├── constants.py │ │ ├── compat.py │ │ ├── request_helpers.py │ │ ├── autostart.py │ │ ├── keyring_helpers.py │ │ ├── polkit_agent.py │ │ └── averages.py │ ├── _appname.py │ ├── _components.py │ ├── logs │ │ ├── __init__.py │ │ └── streamtologger.py │ ├── platform_init │ │ └── __init__.py │ ├── gui │ │ ├── clickablelabel.py │ │ ├── __init__.py │ │ ├── wizardpage.py │ │ ├── preferences_page.py │ │ ├── systray.py │ │ ├── account.py │ │ ├── ui │ │ │ ├── logout.ui │ │ │ └── preferences_vpn_page.ui │ │ ├── signaltracker.py │ │ ├── flashable.py │ │ └── qt_browser.py │ └── __init__.py │ └── __init__.py ├── docs ├── dev │ ├── todo.rst │ ├── authors.rst │ ├── internals.rst │ ├── signals.rst │ ├── resources.rst │ ├── automating_login.rst │ ├── tests.rst │ ├── translations.rst │ └── quickstart.rst ├── pkg │ ├── osx.rst │ ├── win.rst │ └── debian.rst ├── user │ ├── gpl.png │ ├── leap-color-small.png │ └── running.rst ├── api │ ├── modules.rst │ ├── leap.keymanager.tests.rst │ ├── leap.services.eip.tests.rst │ ├── leap.services.rst │ ├── leap.config.rst │ ├── leap.crypto.tests.rst │ ├── leap.platform_init.rst │ ├── leap.services.mail.rst │ ├── leap.services.soledad.rst │ ├── leap.crypto.rst │ ├── leap.rst │ ├── leap.keymanager.rst │ ├── leap.util.rst │ ├── leap.services.eip.rst │ └── leap.gui.rst ├── leap-autopep8.post-commit.hook.ADD ├── leap-commit-template ├── leap-flake8.pre-commit.hook ├── config │ └── files.rst ├── leap-autopep8.post-commit.hook ├── core_api_contract ├── leap-commit-template.README ├── testing-rcs.README └── index.rst ├── data ├── images │ ├── pastebin.png │ ├── black │ │ ├── 22 │ │ │ ├── on.png │ │ │ ├── off.png │ │ │ ├── wait.png │ │ │ └── question.png │ │ └── 32 │ │ │ ├── user.png │ │ │ ├── earth.png │ │ │ ├── email.png │ │ │ ├── arrow-up.png │ │ │ └── arrow-down.png │ ├── mask-icon.png │ ├── white │ │ └── 22 │ │ │ ├── on.png │ │ │ ├── off.png │ │ │ ├── wait.png │ │ │ └── question.png │ ├── countries │ │ ├── ar.png │ │ ├── at.png │ │ ├── au.png │ │ ├── bd.png │ │ ├── be.png │ │ ├── br.png │ │ ├── ca.png │ │ ├── cat.png │ │ ├── ch.png │ │ ├── cl.png │ │ ├── cn.png │ │ ├── co.png │ │ ├── cy.png │ │ ├── cz.png │ │ ├── de.png │ │ ├── dk.png │ │ ├── ec.png │ │ ├── ee.png │ │ ├── es.png │ │ ├── fi.png │ │ ├── fr.png │ │ ├── gb.png │ │ ├── gr.png │ │ ├── hk.png │ │ ├── hu.png │ │ ├── id.png │ │ ├── ie.png │ │ ├── il.png │ │ ├── in.png │ │ ├── iq.png │ │ ├── ir.png │ │ ├── is.png │ │ ├── it.png │ │ ├── jp.png │ │ ├── kh.png │ │ ├── kr.png │ │ ├── lb.png │ │ ├── ly.png │ │ ├── mx.png │ │ ├── my.png │ │ ├── ng.png │ │ ├── nl.png │ │ ├── no.png │ │ ├── nz.png │ │ ├── pe.png │ │ ├── pk.png │ │ ├── pl.png │ │ ├── ps.png │ │ ├── py.png │ │ ├── ru.png │ │ ├── se.png │ │ ├── sg.png │ │ ├── tn.png │ │ ├── tr.png │ │ ├── ua.png │ │ ├── us.png │ │ ├── ve.png │ │ ├── vn.png │ │ ├── xx.png │ │ └── za.png │ ├── menubar-mask-icon.png │ └── oxygen-icons │ │ ├── edit-bomb.png │ │ ├── dialog-error.png │ │ ├── script-error.png │ │ ├── dialog-warning.png │ │ ├── dialog-information.png │ │ └── document-save-as.png ├── translations │ ├── es.qm │ ├── vi.qm │ ├── en_GB.qm │ └── README.rst ├── resources │ ├── locale.qrc │ ├── loggerwindow.qrc │ ├── icons.qrc │ └── flags.qrc ├── bitmask.pro.template ├── ts │ └── README.rst └── make_project_file.py ├── thirdparty ├── openvpn │ ├── Sources │ └── README └── gnupg │ └── build_gnupg.sh ├── docker ├── bitmask-nightly.json ├── debian │ ├── bitmask-on-docker.sh │ └── run-docker-for-bitmask.sh ├── Dockerfile └── README.rst ├── MANIFEST.in ├── changes ├── VERSION_COMPAT └── next-changelog.rst ├── AUTHORS ├── setup.cfg ├── release-notes.rst └── README.rst /pkg/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /pkg/next-version: -------------------------------------------------------------------------------- 1 | 0.9.2 2 | -------------------------------------------------------------------------------- /src/leap/bitmask/cli/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/leap/bitmask/backend/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/leap/bitmask/config/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/leap/bitmask/crypto/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/leap/bitmask/provider/tests/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/leap/bitmask/services/mail/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/leap/bitmask/services/tests/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/leap/bitmask/util/tests/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/leap/bitmask/services/eip/tests/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/leap/bitmask/services/soledad/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /pkg/pyinst/bitmask.py: -------------------------------------------------------------------------------- 1 | ../../src/leap/bitmask/app.py -------------------------------------------------------------------------------- /pkg/pyinst/qt.conf: -------------------------------------------------------------------------------- 1 | [Paths] 2 | Plugins=qt4_plugins -------------------------------------------------------------------------------- /pkg/pyinst/bitmaskd: -------------------------------------------------------------------------------- 1 | ../../src/leap/bitmask/core/launcher.py -------------------------------------------------------------------------------- /src/leap/bitmask/_appname.py: -------------------------------------------------------------------------------- 1 | __appname__ = "bitmask" 2 | -------------------------------------------------------------------------------- /pkg/pyinst/bitmask_cli: -------------------------------------------------------------------------------- 1 | ../../src/leap/bitmask/cli/bitmask_cli.py -------------------------------------------------------------------------------- /pkg/requirements-docs.pip: -------------------------------------------------------------------------------- 1 | sphinx 2 | Sphinx-PyPI-upload 3 | -------------------------------------------------------------------------------- /docs/dev/todo.rst: -------------------------------------------------------------------------------- 1 | .. _todo: 2 | 3 | To-Do 4 | ===== 5 | 6 | alot 7 | -------------------------------------------------------------------------------- /pkg/windows/bitmask.nis: -------------------------------------------------------------------------------- 1 | !define PKGNAME bitmask 2 | !include .\bitmask.nsh -------------------------------------------------------------------------------- /docs/pkg/osx.rst: -------------------------------------------------------------------------------- 1 | .. _osx: 2 | 3 | OS X 4 | ===== 5 | 6 | Nothing here 7 | move on 8 | -------------------------------------------------------------------------------- /pkg/branding/branding.mk: -------------------------------------------------------------------------------- 1 | branding-logo: 2 | python pkg/branding/patch_pixel_logo.py 3 | -------------------------------------------------------------------------------- /docs/pkg/win.rst: -------------------------------------------------------------------------------- 1 | .. _win: 2 | 3 | Windows 4 | ======= 5 | 6 | Nothing here 7 | move on 8 | -------------------------------------------------------------------------------- /docs/user/gpl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/docs/user/gpl.png -------------------------------------------------------------------------------- /docs/api/modules.rst: -------------------------------------------------------------------------------- 1 | leap 2 | ==== 3 | 4 | .. toctree:: 5 | :maxdepth: 4 6 | 7 | leap 8 | -------------------------------------------------------------------------------- /pkg/leap_versions.txt: -------------------------------------------------------------------------------- 1 | soledad 0.8.0 2 | keymanager 0.5.0 3 | leap_common 0.5.1 4 | leap_mail 0.4.1 5 | -------------------------------------------------------------------------------- /pkg/osx/bitmask.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/pkg/osx/bitmask.icns -------------------------------------------------------------------------------- /data/images/pastebin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/pastebin.png -------------------------------------------------------------------------------- /data/translations/es.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/translations/es.qm -------------------------------------------------------------------------------- /data/translations/vi.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/translations/vi.qm -------------------------------------------------------------------------------- /data/images/black/22/on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/black/22/on.png -------------------------------------------------------------------------------- /data/images/mask-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/mask-icon.png -------------------------------------------------------------------------------- /data/images/white/22/on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/white/22/on.png -------------------------------------------------------------------------------- /data/translations/en_GB.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/translations/en_GB.qm -------------------------------------------------------------------------------- /docs/dev/authors.rst: -------------------------------------------------------------------------------- 1 | .. _authors: 2 | 3 | Authors 4 | ======= 5 | 6 | We are many. 7 | We are legion. 8 | 9 | -------------------------------------------------------------------------------- /data/images/black/22/off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/black/22/off.png -------------------------------------------------------------------------------- /data/images/black/22/wait.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/black/22/wait.png -------------------------------------------------------------------------------- /data/images/black/32/user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/black/32/user.png -------------------------------------------------------------------------------- /data/images/countries/ar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/countries/ar.png -------------------------------------------------------------------------------- /data/images/countries/at.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/countries/at.png -------------------------------------------------------------------------------- /data/images/countries/au.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/countries/au.png -------------------------------------------------------------------------------- /data/images/countries/bd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/countries/bd.png -------------------------------------------------------------------------------- /data/images/countries/be.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/countries/be.png -------------------------------------------------------------------------------- /data/images/countries/br.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/countries/br.png -------------------------------------------------------------------------------- /data/images/countries/ca.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/countries/ca.png -------------------------------------------------------------------------------- /data/images/countries/cat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/countries/cat.png -------------------------------------------------------------------------------- /data/images/countries/ch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/countries/ch.png -------------------------------------------------------------------------------- /data/images/countries/cl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/countries/cl.png -------------------------------------------------------------------------------- /data/images/countries/cn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/countries/cn.png -------------------------------------------------------------------------------- /data/images/countries/co.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/countries/co.png -------------------------------------------------------------------------------- /data/images/countries/cy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/countries/cy.png -------------------------------------------------------------------------------- /data/images/countries/cz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/countries/cz.png -------------------------------------------------------------------------------- /data/images/countries/de.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/countries/de.png -------------------------------------------------------------------------------- /data/images/countries/dk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/countries/dk.png -------------------------------------------------------------------------------- /data/images/countries/ec.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/countries/ec.png -------------------------------------------------------------------------------- /data/images/countries/ee.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/countries/ee.png -------------------------------------------------------------------------------- /data/images/countries/es.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/countries/es.png -------------------------------------------------------------------------------- /data/images/countries/fi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/countries/fi.png -------------------------------------------------------------------------------- /data/images/countries/fr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/countries/fr.png -------------------------------------------------------------------------------- /data/images/countries/gb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/countries/gb.png -------------------------------------------------------------------------------- /data/images/countries/gr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/countries/gr.png -------------------------------------------------------------------------------- /data/images/countries/hk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/countries/hk.png -------------------------------------------------------------------------------- /data/images/countries/hu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/countries/hu.png -------------------------------------------------------------------------------- /data/images/countries/id.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/countries/id.png -------------------------------------------------------------------------------- /data/images/countries/ie.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/countries/ie.png -------------------------------------------------------------------------------- /data/images/countries/il.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/countries/il.png -------------------------------------------------------------------------------- /data/images/countries/in.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/countries/in.png -------------------------------------------------------------------------------- /data/images/countries/iq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/countries/iq.png -------------------------------------------------------------------------------- /data/images/countries/ir.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/countries/ir.png -------------------------------------------------------------------------------- /data/images/countries/is.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/countries/is.png -------------------------------------------------------------------------------- /data/images/countries/it.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/countries/it.png -------------------------------------------------------------------------------- /data/images/countries/jp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/countries/jp.png -------------------------------------------------------------------------------- /data/images/countries/kh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/countries/kh.png -------------------------------------------------------------------------------- /data/images/countries/kr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/countries/kr.png -------------------------------------------------------------------------------- /data/images/countries/lb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/countries/lb.png -------------------------------------------------------------------------------- /data/images/countries/ly.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/countries/ly.png -------------------------------------------------------------------------------- /data/images/countries/mx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/countries/mx.png -------------------------------------------------------------------------------- /data/images/countries/my.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/countries/my.png -------------------------------------------------------------------------------- /data/images/countries/ng.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/countries/ng.png -------------------------------------------------------------------------------- /data/images/countries/nl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/countries/nl.png -------------------------------------------------------------------------------- /data/images/countries/no.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/countries/no.png -------------------------------------------------------------------------------- /data/images/countries/nz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/countries/nz.png -------------------------------------------------------------------------------- /data/images/countries/pe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/countries/pe.png -------------------------------------------------------------------------------- /data/images/countries/pk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/countries/pk.png -------------------------------------------------------------------------------- /data/images/countries/pl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/countries/pl.png -------------------------------------------------------------------------------- /data/images/countries/ps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/countries/ps.png -------------------------------------------------------------------------------- /data/images/countries/py.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/countries/py.png -------------------------------------------------------------------------------- /data/images/countries/ru.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/countries/ru.png -------------------------------------------------------------------------------- /data/images/countries/se.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/countries/se.png -------------------------------------------------------------------------------- /data/images/countries/sg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/countries/sg.png -------------------------------------------------------------------------------- /data/images/countries/tn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/countries/tn.png -------------------------------------------------------------------------------- /data/images/countries/tr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/countries/tr.png -------------------------------------------------------------------------------- /data/images/countries/ua.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/countries/ua.png -------------------------------------------------------------------------------- /data/images/countries/us.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/countries/us.png -------------------------------------------------------------------------------- /data/images/countries/ve.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/countries/ve.png -------------------------------------------------------------------------------- /data/images/countries/vn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/countries/vn.png -------------------------------------------------------------------------------- /data/images/countries/xx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/countries/xx.png -------------------------------------------------------------------------------- /data/images/countries/za.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/countries/za.png -------------------------------------------------------------------------------- /data/images/white/22/off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/white/22/off.png -------------------------------------------------------------------------------- /data/images/white/22/wait.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/white/22/wait.png -------------------------------------------------------------------------------- /data/images/black/32/earth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/black/32/earth.png -------------------------------------------------------------------------------- /data/images/black/32/email.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/black/32/email.png -------------------------------------------------------------------------------- /docs/user/leap-color-small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/docs/user/leap-color-small.png -------------------------------------------------------------------------------- /data/images/black/22/question.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/black/22/question.png -------------------------------------------------------------------------------- /data/images/black/32/arrow-up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/black/32/arrow-up.png -------------------------------------------------------------------------------- /data/images/menubar-mask-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/menubar-mask-icon.png -------------------------------------------------------------------------------- /data/images/white/22/question.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/white/22/question.png -------------------------------------------------------------------------------- /pkg/requirements-leap.pip: -------------------------------------------------------------------------------- 1 | leap.soledad.client>=0.8.0 2 | leap.keymanager>=0.5.0 3 | leap.mail>=0.4.1 4 | leap.common>=0.5.1 5 | -------------------------------------------------------------------------------- /pkg/tools/with_venv.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | TOOLS=`dirname $0` 3 | VENV=$TOOLS/../../.venv 4 | source $VENV/bin/activate && $@ 5 | -------------------------------------------------------------------------------- /data/images/black/32/arrow-down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/black/32/arrow-down.png -------------------------------------------------------------------------------- /pkg/osx/bitmask-wrapper: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) 3 | exec $DIR/bitmask-app --debug 4 | -------------------------------------------------------------------------------- /thirdparty/openvpn/Sources: -------------------------------------------------------------------------------- 1 | lzo -2.06 .tar.gz 2 | opensc -0.12.2 .tar.gz 3 | openssl -1.0.1c .tar.gz 4 | polarssl -1.1.4 .tgz 5 | -------------------------------------------------------------------------------- /data/images/oxygen-icons/edit-bomb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/oxygen-icons/edit-bomb.png -------------------------------------------------------------------------------- /docs/leap-autopep8.post-commit.hook.ADD: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | cd .git/hooks && ln -s ../../docs/leap-autopep8.post-commit.hook post-commit 3 | -------------------------------------------------------------------------------- /data/images/oxygen-icons/dialog-error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/oxygen-icons/dialog-error.png -------------------------------------------------------------------------------- /data/images/oxygen-icons/script-error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/oxygen-icons/script-error.png -------------------------------------------------------------------------------- /data/images/oxygen-icons/dialog-warning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/oxygen-icons/dialog-warning.png -------------------------------------------------------------------------------- /data/images/oxygen-icons/dialog-information.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/oxygen-icons/dialog-information.png -------------------------------------------------------------------------------- /data/images/oxygen-icons/document-save-as.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leapcode/bitmask_client/HEAD/data/images/oxygen-icons/document-save-as.png -------------------------------------------------------------------------------- /pkg/requirements-pixelated.pip: -------------------------------------------------------------------------------- 1 | --find-links https://downloads.leap.se/libs/pixelated/ 2 | pixelated-user-agent 3 | pixelated-www 4 | whoosh 5 | leap.auth -------------------------------------------------------------------------------- /pkg/tools/get_authors.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | git log --format='%aN <%aE>' | awk '{arr[$0]++} END{for (i in arr){print arr[i], i;}}' | sort -rn | cut -d' ' -f2- 3 | -------------------------------------------------------------------------------- /docs/leap-commit-template: -------------------------------------------------------------------------------- 1 | [bug|feat|docs|style|refactor|test|pkg|i18n] ... 2 | ... 3 | 4 | - Resolves: #XYZ 5 | - Related: #XYZ 6 | - Documentation: #XYZ 7 | - Releases: XYZ 8 | -------------------------------------------------------------------------------- /src/leap/bitmask/_components.py: -------------------------------------------------------------------------------- 1 | """ 2 | Enabled Modules in Bitmask. 3 | Change these values for builds of the client with only one module enabled. 4 | """ 5 | HAS_EIP = True 6 | HAS_MAIL = True 7 | -------------------------------------------------------------------------------- /pkg/osx/pre-inst.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # Bitmask Post-Instalation script 3 | [[ -f /Library/LaunchDaemons/se.leap.bitmask-helper.plist ]] && launchctl unload /Library/LaunchDaemons/se.leap.bitmask-helper.plist 4 | -------------------------------------------------------------------------------- /pkg/requirements-testing.pip: -------------------------------------------------------------------------------- 1 | nose 2 | nose-exclude 3 | nose-progressive 4 | mock 5 | 6 | 7 | unittest2 # TODO we should include this dep only for python2.6 8 | coverage 9 | pep8>=1.1 10 | flake8 11 | tox 12 | -------------------------------------------------------------------------------- /data/resources/locale.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | ../translations/vi.qm 4 | ../translations/en_GB.qm 5 | ../translations/es.qm 6 | 7 | 8 | -------------------------------------------------------------------------------- /data/bitmask.pro.template: -------------------------------------------------------------------------------- 1 | {header} 2 | 3 | SOURCES += {sources} 4 | 5 | FORMS += {forms} 6 | 7 | # where to generate ts files -- tx will pick from here 8 | # original file, english 9 | TRANSLATIONS += ts/en_US.ts 10 | -------------------------------------------------------------------------------- /docs/dev/internals.rst: -------------------------------------------------------------------------------- 1 | .. _internals: 2 | 3 | Internals 4 | ========= 5 | 6 | This section covers briefly the internal organization of Bitmask source tree. 7 | 8 | .. note:: 9 | 10 | very unfinished. 11 | 12 | `TBD` 13 | -------------------------------------------------------------------------------- /src/leap/bitmask/logs/__init__.py: -------------------------------------------------------------------------------- 1 | LOG_FORMAT = (u'[{record.time:%Y-%m-%d %H:%M:%S}] ' 2 | u'{record.level_name: <8} - L#{record.lineno: <4} : ' 3 | u'{record.module}:{record.func_name} - {record.message}') 4 | -------------------------------------------------------------------------------- /docs/leap-flake8.pre-commit.hook: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # Auto-check for pep8 so I don't check in bad code 3 | FILES=$(git diff --cached --name-only --diff-filter=ACM | grep -e '\.py$') 4 | 5 | if [ -n "$FILES" ]; then 6 | flake8 -r $FILES 7 | fi 8 | -------------------------------------------------------------------------------- /pkg/scripts/checkout_leap_versions.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | cat pkg/leap_versions.txt | while read line 3 | do 4 | package=$(echo $line | cut -f1 -d' ') 5 | tag=$(echo $line | cut -f2 -d' ') 6 | cd ../$package && git fetch origin && git checkout $tag 7 | done 8 | -------------------------------------------------------------------------------- /pkg/version-template: -------------------------------------------------------------------------------- 1 | version_version = "xxx" 2 | full_revisionid = 'deadbeef' 3 | 4 | 5 | def get_versions(default={}, verbose=False): 6 | return {'version': version_version, 7 | 'full-revisionid': full_revisionid} 8 | 9 | -------------------------------------------------------------------------------- /data/translations/README.rst: -------------------------------------------------------------------------------- 1 | data/translations 2 | ================= 3 | 4 | We expect finished translations (i.e., those downloaded from ``transifex``) to live here. 5 | 6 | Translator object will pick them from here. 7 | 8 | (Actually, from the embedded locale_rc) 9 | -------------------------------------------------------------------------------- /docs/config/files.rst: -------------------------------------------------------------------------------- 1 | .. _files: 2 | 3 | Configuration Files 4 | =================== 5 | 6 | This document covers the different configuration files used by Bitmask. 7 | 8 | leap.conf 9 | --------- 10 | 11 | TBD 12 | 13 | eip.json 14 | -------- 15 | 16 | TBD 17 | -------------------------------------------------------------------------------- /pkg/osx/post-inst.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # Bitmask Post-Instalation script 3 | 4 | cp se.leap.bitmask-helper.plist /Library/LaunchDaemons/ 5 | launchctl load /Library/LaunchDaemons/se.leap.bitmask-helper.plist 6 | cp tuntap_20150118.pkg /tmp/ 7 | open /tmp/tuntap_20150118.pkg 8 | -------------------------------------------------------------------------------- /src/leap/__init__.py: -------------------------------------------------------------------------------- 1 | # See http://peak.telecommunity.com/DevCenter/setuptools#namespace-packages 2 | try: 3 | __import__('pkg_resources').declare_namespace(__name__) 4 | except ImportError: 5 | from pkgutil import extend_path 6 | __path__ = extend_path(__path__, __name__) 7 | -------------------------------------------------------------------------------- /docs/api/leap.keymanager.tests.rst: -------------------------------------------------------------------------------- 1 | tests Package 2 | ============= 3 | 4 | :mod:`test_keymanager` Module 5 | ----------------------------- 6 | 7 | .. automodule:: leap.keymanager.tests.test_keymanager 8 | :members: 9 | :undoc-members: 10 | :show-inheritance: 11 | 12 | -------------------------------------------------------------------------------- /docs/api/leap.services.eip.tests.rst: -------------------------------------------------------------------------------- 1 | tests Package 2 | ============= 3 | 4 | :mod:`test_eipconfig` Module 5 | ---------------------------- 6 | 7 | .. automodule:: leap.services.eip.tests.test_eipconfig 8 | :members: 9 | :undoc-members: 10 | :show-inheritance: 11 | 12 | -------------------------------------------------------------------------------- /pkg/pyinst/trim-notes.txt: -------------------------------------------------------------------------------- 1 | 88M 2 | ------------- 3 | libaudio.so.2 4 | libQt3Support.so.4 5 | libQtNetwork.so.4 6 | libtiff.so.5 7 | libQtSvg.so.4 8 | libQtXml.so.4 9 | libQtSql.so.4 10 | libQtOpenGL.so.4 11 | libnvidia-glcore.so.352.79 12 | PySide.QtNetwork.x86_64-linux-gnu.so 13 | -------------------------------------------------------------------------------- /docker/bitmask-nightly.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "nightly", 3 | "tuf_repo": "", 4 | "bitmask_client": "develop", 5 | "soledad": "develop", 6 | "keymanager": "develop", 7 | "leap_mail": "develop", 8 | "leap_pycommon": "develop", 9 | "bitmask_launcher": "develop", 10 | "leap_assets": "master" 11 | } 12 | -------------------------------------------------------------------------------- /pkg/launcher/Makefile: -------------------------------------------------------------------------------- 1 | CC = gcc 2 | CFLAGS = -g -Wall 3 | STRIP = strip 4 | 5 | default: bitmask 6 | 7 | bitmask.o: bitmask-launcher.c 8 | $(CC) $(CFLAGS) -c bitmask-launcher.c -o bitmask.o 9 | 10 | bitmask: bitmask.o 11 | $(CC) bitmask.o -o bitmask 12 | $(STRIP) bitmask 13 | clean: 14 | -rm -f bitmask.o 15 | -rm -f bitmask 16 | -------------------------------------------------------------------------------- /thirdparty/openvpn/README: -------------------------------------------------------------------------------- 1 | OpenVPN binary, build scripts 2 | Works using a GCC minGW32 cross-compiler on Debian/Ubuntu 3 | Produces a working MS Windows executable 4 | openvpn.exe: PE32 executable (DLL) (console) Intel 80386, for MS Windows 5 | goes smooth for the 99%, might still need some slapping the flags around now and then 6 | -jrml 7 | -------------------------------------------------------------------------------- /docs/dev/signals.rst: -------------------------------------------------------------------------------- 1 | Startup process 2 | --------------- 3 | 4 | mainwindow._login -> backend.run_provider_setup_checks 5 | [...provider bootstrap...] 6 | self._provider_config_loaded 7 | [...login...] 8 | authentication_finished 9 | _start_eip_bootstrap 10 | _maybe_start_eip 11 | _maybe_run_soledad_setup_checks 12 | soledadbootstrapper 13 | -------------------------------------------------------------------------------- /pkg/linux/leap.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Version=0.1.0 3 | Encoding=UTF-8 4 | Name=EIP 5 | Comment=Anonymity and privacy 6 | Comment[en]=Anonymity and privacy 7 | Comment[es]=Anonimato y privacidad 8 | Comment[sv]=Anonymitet och avlyssningsskydd 9 | Exec=leap 10 | Terminal=false 11 | Type=Application 12 | Icon=leap.png 13 | Categories=Network; 14 | -------------------------------------------------------------------------------- /data/ts/README.rst: -------------------------------------------------------------------------------- 1 | data/ts 2 | ======= 3 | 4 | Here we expect the .ts files generated by typing:: 5 | 6 | $ make translations 7 | 8 | Which will generate the sources (en_US) 9 | 10 | For uploading a source:: 11 | 12 | $ tx push -s 13 | 14 | Translator should pick finished ``.qm`` files from ``data/translations`` instead of this folder. 15 | -------------------------------------------------------------------------------- /pkg/windows/pyinstaller/zlib-mingw-shared.patch: -------------------------------------------------------------------------------- 1 | diff -Naur ../zlib-1.2.8-org/win32/Makefile.gcc ./win32/Makefile.gcc 2 | --- ../zlib-1.2.8-org/win32/Makefile.gcc 2008-10-23 17:44:36.000000000 +0000 3 | +++ ./win32/Makefile.gcc 2015-12-06 19:20:00.449471787 +0000 4 | @@ -37,6 +37,6 @@ 5 | # Set to 1 if shared object needs to be installed 6 | # 7 | -SHARED_MODE=0 8 | +SHARED_MODE=1 9 | 10 | #LOC = -DASMV -------------------------------------------------------------------------------- /pkg/generate_wheels.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # Generate wheels for dependencies 3 | # Use at your own risk. 4 | 5 | if [ "$WHEELHOUSE" = "" ]; then 6 | WHEELHOUSE=$HOME/wheelhouse 7 | fi 8 | 9 | pip wheel --wheel-dir $WHEELHOUSE pip 10 | pip wheel --wheel-dir $WHEELHOUSE -r pkg/requirements.pip 11 | if [ -f pkg/requirements-testing.pip ]; then 12 | pip wheel --wheel-dir $WHEELHOUSE -r pkg/requirements-testing.pip 13 | fi 14 | -------------------------------------------------------------------------------- /docs/leap-autopep8.post-commit.hook: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # Auto pep8 correction as a post-commit hook. 4 | # Thanks to http://victorlin.me/posts/2014/02/05/auto-post-commit-pep8-correction 5 | 6 | echo "[+] running autopep8..." 7 | FILES=$(git diff HEAD^ HEAD --name-only --diff-filter=ACM | grep -e '\.py$') 8 | 9 | for f in $FILES 10 | do 11 | # auto pep8 correction 12 | autopep8 --in-place $f 13 | done 14 | 15 | git status 16 | -------------------------------------------------------------------------------- /pkg/osx/README.rst: -------------------------------------------------------------------------------- 1 | environment setup in osx 2 | ======================== 3 | 4 | Requirements 5 | ============ 6 | 7 | pyinstaller 8 | ----------- 9 | You need at least version 3.0. 10 | 11 | pyside 12 | ---------- 13 | use repo branch kalikaneko/PySide (has --standalone patch) 14 | 15 | python2.7 setup.py bdist_wheel --version=1.2.2 --standalone 16 | 17 | Blockers 18 | ======== 19 | #7321 - requests bug in merge_environment_settings 20 | -------------------------------------------------------------------------------- /pkg/windows/installer/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM debian:jessie 2 | MAINTAINER paixu@0xn0.de 3 | RUN apt-get update 4 | 5 | ###### 6 | # install packages required to build 7 | 8 | RUN apt-get -y install \ 9 | nsis 10 | WORKDIR /var/src/bitmask/pkg/windows 11 | 12 | ###### 13 | # set a specific user 14 | # needs external tuning of the /var/dist rights! 15 | # RUN useradd installer 16 | # USER installer 17 | ENTRYPOINT ["/var/src/bitmask/pkg/windows/installer-build.sh"] -------------------------------------------------------------------------------- /docs/dev/resources.rst: -------------------------------------------------------------------------------- 1 | .. _resources: 2 | 3 | PySide Resource files 4 | ===================== 5 | 6 | Compiling resource/ui files 7 | --------------------------- 8 | 9 | You should refresh resource/ui files every time you change an image or a resource/ui (.ui / .qc). From the root folder:: 10 | 11 | % make ui 12 | % make resources 13 | 14 | As there are some tests to guard against unwanted resource updates, you will have to update the resource hash in those failing tests. 15 | -------------------------------------------------------------------------------- /src/leap/bitmask/crypto/tests/test_provider.json: -------------------------------------------------------------------------------- 1 | { 2 | "api_uri": "https://localhost:8443", 3 | "api_version": "1", 4 | "ca_cert_fingerprint": "SHA256: 0f17c033115f6b76ff67871872303ff65034efe7dd1b910062ca323eb4da5c7e", 5 | "ca_cert_uri": "https://bitmask.net/ca.crt", 6 | "default_language": "en", 7 | "domain": "example.com", 8 | "enrollment_policy": "open", 9 | "name": { 10 | "en": "Bitmask" 11 | }, 12 | "services": [ 13 | "openvpn" 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /MANIFEST.in: -------------------------------------------------------------------------------- 1 | include pkg/* 2 | include docs/* 3 | recursive-include docs api/* config/* dev/* man/* pkg/* testers/* user/* 4 | prune docs/_build 5 | prune docs/covhtml 6 | include versioneer.py 7 | include LICENSE 8 | include README.rst 9 | include CHANGELOG.rst 10 | include src/leap/bitmask/util/reqs.txt 11 | include src/leap/bitmask/crypto/tests/wrongcert.pem 12 | 13 | include src/leap/bitmask/gui/ui_*.py 14 | include src/leap/bitmask/gui/*_rc.py 15 | include src/leap/bitmask/_version.py 16 | -------------------------------------------------------------------------------- /pkg/launcher/README.rst: -------------------------------------------------------------------------------- 1 | bitmask-launcher.c 2 | ------------------ 3 | 4 | A small, portable launcher for bitmask bundles. 5 | 6 | Problem that solves 7 | ------------------- 8 | PyInstaller bundles leave everything (libs, data and the main binary) in a 9 | single folder. In a case like ours, there are too many files cluttering this 10 | top-most folder. 11 | 12 | We wanted to have a cleaner folder, with an obviously clickable entrypoint, that 13 | calls the binary that hides in an inferior folder. 14 | 15 | -------------------------------------------------------------------------------- /pkg/tools/with_venvwrapper.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | #Wraps a command in a virtualenwrapper passed as first argument. 4 | #Example: 5 | #with_virtualenvwrapper.sh leap-bitmask ./run_tests.sh 6 | 7 | wd=`pwd` 8 | alias pyver='python -c "import $1;print $1.__path__[0]; print $1.__version__;"' 9 | 10 | source `which virtualenvwrapper.sh` 11 | echo "Activating virtualenv " $1 12 | echo "------------------------------------" 13 | workon $1 14 | cd $wd 15 | echo "running version: " `pyver leap.bitmask` 16 | $2 $3 $4 $5 17 | -------------------------------------------------------------------------------- /pkg/osx/bitmask.pf.conf: -------------------------------------------------------------------------------- 1 | default_device = "en99" 2 | 3 | set block-policy drop 4 | set skip on lo0 5 | 6 | # block all traffic on default device 7 | block out on $default_device all 8 | 9 | # allow traffic to gateways 10 | pass out on $default_device to 11 | 12 | # allow traffic to local networks over the default device 13 | pass out on $default_device to $default_device:network 14 | 15 | # block all DNS, except to the gateways 16 | block out proto udp to any port 53 17 | pass out proto udp to port 53 18 | -------------------------------------------------------------------------------- /pkg/launcher/bitmask-launcher.c: -------------------------------------------------------------------------------- 1 | /* 2 | * bitmask-launcher.c 3 | * 4 | * part of the bitmask bundle. 5 | * execute main entrypoint in a child folder inside the bundle. 6 | * 7 | * (c) LEAP Encryption Access Project, 2016. 8 | * License: GPL. 9 | * 10 | */ 11 | 12 | #include 13 | #include 14 | 15 | char* const bitmask_path = "lib"; 16 | char* const entrypoint = "bitmask"; 17 | 18 | int main(int argc, char *argv[]) 19 | { 20 | argv[0] = entrypoint; 21 | chdir(bitmask_path); 22 | execv(entrypoint, argv); 23 | } 24 | -------------------------------------------------------------------------------- /pkg/windows/Makefile: -------------------------------------------------------------------------------- 1 | .PHONY: all pkg installer openvpn pyinstaller 2 | all: 3 | docker-compose build 4 | $(MAKE) pkg 5 | 6 | pkg: 7 | $(MAKE) openvpn 8 | $(MAKE) pyinstaller 9 | $(MAKE) installer 10 | 11 | pyinstaller: 12 | docker-compose run --rm pyinstaller 13 | 14 | openvpn: 15 | docker-compose run --rm openvpn 16 | 17 | installer: 18 | docker-compose run --rm installer 19 | 20 | clean: 21 | docker rmi windows_pyinstaller 22 | docker rmi windows_openvpn 23 | docker rmi windows_installer 24 | rm -rf ../../dist/*.exe 25 | rm -rf ../../build/* -------------------------------------------------------------------------------- /data/resources/loggerwindow.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | ../images/pastebin.png 4 | ../images/oxygen-icons/edit-bomb.png 5 | ../images/oxygen-icons/document-save-as.png 6 | ../images/oxygen-icons/dialog-information.png 7 | ../images/oxygen-icons/script-error.png 8 | ../images/oxygen-icons/dialog-error.png 9 | ../images/oxygen-icons/dialog-information.png 10 | ../images/oxygen-icons/dialog-warning.png 11 | 12 | 13 | -------------------------------------------------------------------------------- /changes/VERSION_COMPAT: -------------------------------------------------------------------------------- 1 | ################################################# 2 | # This file keeps track of the recent changes 3 | # introduced in internal leap dependencies. 4 | # Add your changes here so we can properly update 5 | # requirements.pip during the release process. 6 | # (leave header when resetting) 7 | # 8 | # When bumping it during the release cycle 9 | # remember to update also pkg/leap_versions.txt 10 | ################################################# 11 | # 12 | # BEGIN DEPENDENCY LIST ------------------------- 13 | # leap.foo.bar>=x.y.z 14 | 15 | leap.keymanager >= 0.5.1 16 | -------------------------------------------------------------------------------- /AUTHORS: -------------------------------------------------------------------------------- 1 | Tomás Touceda 2 | Ivan Alejandro 3 | Kali Kaneko 4 | drebs 5 | antialias 6 | elijah 7 | Ruben Pollan 8 | k clair 9 | Jaromil 10 | kwadronaut 11 | Duda Dornelles 12 | Bruno Wagner Goncalves 13 | Parménides GV 14 | Neissi Lima 15 | Micah Anderson 16 | irregulator 17 | -------------------------------------------------------------------------------- /docs/api/leap.services.rst: -------------------------------------------------------------------------------- 1 | services Package 2 | ================ 3 | 4 | :mod:`abstractbootstrapper` Module 5 | ---------------------------------- 6 | 7 | .. automodule:: leap.services.abstractbootstrapper 8 | :members: 9 | :undoc-members: 10 | :show-inheritance: 11 | 12 | :mod:`tx` Module 13 | ---------------- 14 | 15 | .. automodule:: leap.services.tx 16 | :members: 17 | :undoc-members: 18 | :show-inheritance: 19 | 20 | Subpackages 21 | ----------- 22 | 23 | .. toctree:: 24 | 25 | leap.services.eip 26 | leap.services.mail 27 | leap.services.soledad 28 | 29 | -------------------------------------------------------------------------------- /docs/pkg/debian.rst: -------------------------------------------------------------------------------- 1 | .. _debian: 2 | 3 | Debian 4 | ====== 5 | 6 | This section documents all related to the Debian package. 7 | 8 | 9 | Dependencies 10 | ------------ 11 | 12 | * ``openvpn`` 13 | * ``python-pyside`` 14 | * ``python-crypto`` 15 | * ``python-setuptools`` 16 | * ``python-requests`` 17 | * ``python-openssl`` 18 | 19 | .. note:: 20 | these need a version that is not found in the current debian stable or in ubuntu 12.04. 21 | They will be packaged... soon. 22 | 23 | * ``python-keyring`` 24 | 25 | For tests 26 | ^^^^^^^^^ 27 | * ``python-nose``, ``python-mock``, ``python-coverage`` 28 | 29 | -------------------------------------------------------------------------------- /pkg/windows/openvpn/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM debian:jessie 2 | MAINTAINER paixu@0xn0.de 3 | 4 | ###### 5 | # install packages required to build 6 | # https-transport: winehq deb 7 | # winbind: pip install keyring (requirements.pip) needs this somehow 8 | # git-core: clone rw copy of repo and build specific commit 9 | # imagemagick: convert png to ico-files 10 | RUN apt-get update && apt-get -y install \ 11 | unzip bzip2 \ 12 | curl wget \ 13 | apt-transport-https \ 14 | man2html \ 15 | git-core \ 16 | build-essential autoconf mingw-w64 17 | ENTRYPOINT ["/var/src/bitmask/pkg/windows/openvpn-build.sh"] -------------------------------------------------------------------------------- /docs/api/leap.config.rst: -------------------------------------------------------------------------------- 1 | config Package 2 | ============== 3 | 4 | :mod:`leapsettings` Module 5 | -------------------------- 6 | 7 | .. automodule:: leap.config.leapsettings 8 | :members: 9 | :undoc-members: 10 | :show-inheritance: 11 | 12 | :mod:`provider_spec` Module 13 | --------------------------- 14 | 15 | .. automodule:: leap.config.provider_spec 16 | :members: 17 | :undoc-members: 18 | :show-inheritance: 19 | 20 | :mod:`providerconfig` Module 21 | ---------------------------- 22 | 23 | .. automodule:: leap.config.providerconfig 24 | :members: 25 | :undoc-members: 26 | :show-inheritance: 27 | 28 | -------------------------------------------------------------------------------- /pkg/windows/bitmask_client_product.nsh: -------------------------------------------------------------------------------- 1 | !define APPNAME "Bitmask" 2 | !define COMPANYNAME "leap.se" 3 | !define DESCRIPTION "With Bitmask VPN, all your traffic is securely routed through your provider before it is decrypted and sent on to the open internet." 4 | # These will be displayed by the "Click here for support information" link in "Add/Remove Programs" 5 | # It is possible to use "mailto:" links in here to open the email client 6 | !define HELPURL "https://bitmask.net/en/help" # "Support Information" link 7 | !define UPDATEURL "https://bitmask.net/en/install" # "Product Updates" link 8 | !define ABOUTURL "https://bitmask.net/" # "Publisher" link -------------------------------------------------------------------------------- /setup.cfg: -------------------------------------------------------------------------------- 1 | [build_sphinx] 2 | source-dir = docs/ 3 | build-dir = docs/_build 4 | all_files = 1 5 | 6 | [upload_sphinx] 7 | upload-dir = docs/_build/html 8 | repository = https://pypi.python.org/pypi 9 | 10 | [pep8] 11 | ignore = E731 12 | exclude = *_rc.py,ui_*,_version.py,docker,build,docs,pkg,versioneer.py,_binaries.py,pinned_* 13 | 14 | [flake8] 15 | ignore = E731 16 | exclude = *_rc.py,ui_*,_version.py,docker,build,docs,pkg,versioneer.py,_binaries.py 17 | 18 | [versioneer] 19 | VCS = git 20 | style = pep440 21 | versionfile_source = src/leap/bitmask/_version.py 22 | versionfile_build = leap/bitmask/_version.py 23 | tag_prefix = 24 | -------------------------------------------------------------------------------- /docs/api/leap.crypto.tests.rst: -------------------------------------------------------------------------------- 1 | tests Package 2 | ============= 3 | 4 | :mod:`tests` Package 5 | -------------------- 6 | 7 | .. automodule:: leap.crypto.tests 8 | :members: 9 | :undoc-members: 10 | :show-inheritance: 11 | 12 | :mod:`fake_provider` Module 13 | --------------------------- 14 | 15 | .. automodule:: leap.crypto.tests.fake_provider 16 | :members: 17 | :undoc-members: 18 | :show-inheritance: 19 | 20 | :mod:`test_srpregister` Module 21 | ------------------------------ 22 | 23 | .. automodule:: leap.crypto.tests.test_srpregister 24 | :members: 25 | :undoc-members: 26 | :show-inheritance: 27 | 28 | -------------------------------------------------------------------------------- /docs/api/leap.platform_init.rst: -------------------------------------------------------------------------------- 1 | platform_init Package 2 | ===================== 3 | 4 | :mod:`platform_init` Package 5 | ---------------------------- 6 | 7 | .. automodule:: leap.platform_init 8 | :members: 9 | :undoc-members: 10 | :show-inheritance: 11 | 12 | :mod:`initializers` Module 13 | -------------------------- 14 | 15 | .. automodule:: leap.platform_init.initializers 16 | :members: 17 | :undoc-members: 18 | :show-inheritance: 19 | 20 | :mod:`locks` Module 21 | ------------------- 22 | 23 | .. automodule:: leap.platform_init.locks 24 | :members: 25 | :undoc-members: 26 | :show-inheritance: 27 | 28 | -------------------------------------------------------------------------------- /docs/api/leap.services.mail.rst: -------------------------------------------------------------------------------- 1 | mail Package 2 | ============ 3 | 4 | :mod:`smtpbootstrapper` Module 5 | ------------------------------ 6 | 7 | .. automodule:: leap.services.mail.smtpbootstrapper 8 | :members: 9 | :undoc-members: 10 | :show-inheritance: 11 | 12 | :mod:`smtpconfig` Module 13 | ------------------------ 14 | 15 | .. automodule:: leap.services.mail.smtpconfig 16 | :members: 17 | :undoc-members: 18 | :show-inheritance: 19 | 20 | :mod:`smtpspec` Module 21 | ---------------------- 22 | 23 | .. automodule:: leap.services.mail.smtpspec 24 | :members: 25 | :undoc-members: 26 | :show-inheritance: 27 | 28 | -------------------------------------------------------------------------------- /pkg/windows/pyinstaller/pysqlcipher_setup.py.patch: -------------------------------------------------------------------------------- 1 | --- setup.py.org 2014-11-12 16:38:07.000000000 +0000 2 | +++ setup.py 2016-01-23 14:08:13.255261595 +0000 3 | @@ -192,10 +192,7 @@ 4 | ext.define_macros.append(("inline", "__inline")) 5 | 6 | # Configure the linker 7 | - ext.extra_link_args.append("libeay32.lib") 8 | - ext.extra_link_args.append( 9 | - "/LIBPATH:" + os.path.join(openssl, "lib") 10 | - ) 11 | + ext.extra_link_args.append("-lcrypto") 12 | else: 13 | ext.extra_link_args.append("-lcrypto") 14 | 15 | -------------------------------------------------------------------------------- /docs/dev/automating_login.rst: -------------------------------------------------------------------------------- 1 | .. _automating_login: 2 | 3 | Automating login 4 | ================ 5 | 6 | There's an annoying bug with python keyring module, that makes the 'remember 7 | login' checkbox non functional. 8 | 9 | That, and the need to script end-to-end tests with the client inside a docker 10 | environment, made us put a mechanism to pass credentials via environment 11 | variables. 12 | 13 | To automate login, set BITMASK_CREDENTIALS env var:: 14 | 15 | BITMASK_CREDENTIALS=/tmp/secrets.conf bitmask --debug 16 | 17 | where the pointed file looks like this:: 18 | 19 | [Credentials] 20 | username = user@provider 21 | password = mypass 22 | -------------------------------------------------------------------------------- /docs/api/leap.services.soledad.rst: -------------------------------------------------------------------------------- 1 | soledad Package 2 | =============== 3 | 4 | :mod:`soledadbootstrapper` Module 5 | --------------------------------- 6 | 7 | .. automodule:: leap.services.soledad.soledadbootstrapper 8 | :members: 9 | :undoc-members: 10 | :show-inheritance: 11 | 12 | :mod:`soledadconfig` Module 13 | --------------------------- 14 | 15 | .. automodule:: leap.services.soledad.soledadconfig 16 | :members: 17 | :undoc-members: 18 | :show-inheritance: 19 | 20 | :mod:`soledadspec` Module 21 | ------------------------- 22 | 23 | .. automodule:: leap.services.soledad.soledadspec 24 | :members: 25 | :undoc-members: 26 | :show-inheritance: 27 | 28 | -------------------------------------------------------------------------------- /docker/debian/bitmask-on-docker.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Helper script to install, run and do a screenshot of bitmask 3 | 4 | # You can use this as follows: 5 | # $ docker run -t -i --rm -v `pwd`:/host/ ubuntu:14.04 /bin/bash 6 | # $ cd /host/ 7 | # $ ./bitmask-on-docker.sh stable 8 | 9 | [[ -z $1 ]] && exit 1 10 | 11 | ./apt-bitmask.sh $1 # this does an `apt-get update` 12 | apt-get -y install xinit xvfb imagemagick lxpolkit 13 | 14 | startx -- `which Xvfb` :1 -screen 0 1024x768x24 & 15 | sleep 1 16 | 17 | DISPLAY=:1 lxpolkit & 18 | sleep 0.5 # bitmask needs polkit to work 19 | 20 | DISPLAY=:1 bitmask & 21 | sleep 2 # wait for bitmask to start 22 | 23 | DISPLAY=:1 import -window root bitmask.png 24 | -------------------------------------------------------------------------------- /docs/api/leap.crypto.rst: -------------------------------------------------------------------------------- 1 | crypto Package 2 | ============== 3 | 4 | :mod:`constants` Module 5 | ----------------------- 6 | 7 | .. automodule:: leap.crypto.constants 8 | :members: 9 | :undoc-members: 10 | :show-inheritance: 11 | 12 | :mod:`srpauth` Module 13 | --------------------- 14 | 15 | .. automodule:: leap.crypto.srpauth 16 | :members: 17 | :undoc-members: 18 | :show-inheritance: 19 | 20 | :mod:`srpregister` Module 21 | ------------------------- 22 | 23 | .. automodule:: leap.crypto.srpregister 24 | :members: 25 | :undoc-members: 26 | :show-inheritance: 27 | 28 | Subpackages 29 | ----------- 30 | 31 | .. toctree:: 32 | 33 | leap.crypto.tests 34 | 35 | -------------------------------------------------------------------------------- /docker/debian/run-docker-for-bitmask.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # NOTE: to get X11 socket forwarding to work we need this 3 | xhost local:root 4 | 5 | docker run --rm -it \ 6 | --net host \ 7 | --privileged \ 8 | -v /tmp/.X11-unix:/tmp/.X11-unix \ 9 | -e DISPLAY=unix$DISPLAY \ 10 | -v `pwd`:/host/ \ 11 | -p 1984:1984 -p 2013:2013 \ 12 | ubuntu:vivid bash 13 | 14 | # NOTE: what to do next? 15 | # Install bitmask package: 16 | # $ apt-bitmask.sh stable 17 | # Install polkit agent (bitmask needs it): 18 | # $ apt-get install lxpolkit 19 | # Run polkit in background: 20 | # $ lxpolkit & # this will show you a message like: 'No session for pid 5801', ignore it 21 | # Run bitmask: 22 | # $ bitmask -d 23 | -------------------------------------------------------------------------------- /pkg/linux/pyinst-notes.txt: -------------------------------------------------------------------------------- 1 | hacks 2 | ----- 3 | **because nobody's perfect, at least the first time** 4 | 5 | missing osrandom_engine header 6 | =============================== 7 | 8 | 1. extract osrandom_engine.* from original cryptography tarball: 9 | 10 | cp /src/cryptography/hazmat/bindings/openssl/src/osrandom_engine.h /tmp 11 | cp /src/cryptography/hazmat/bindings/openssl/src/osrandom_engine.c /tmp 12 | 13 | cd dist/bitmask 14 | mkdir -p cryptography/hazmat/bindings/openssl/src 15 | cp /tmp/osrandom_engine.* cryptography/hazmat/bindings/openssl/src 16 | 17 | missing dbschema.sql 18 | ==================== 19 | mkdir -p u1db/backends 20 | cp ~VIRTUAL_ENV/lib/python2.7/site-packages/u1db/backends/dbschema.sql u1db/backends 21 | -------------------------------------------------------------------------------- /pkg/requirements.pip: -------------------------------------------------------------------------------- 1 | # in order of addition to the project. 2 | # try not to change the ordering. 3 | # 4 | # PySide -- It's a requirement indeed, but 5 | # it gives troubles when operating inside virtualenvs. 6 | # Use LEAP_VENV_SKIP_PYSIDE to avoid installing it! 7 | 8 | argparse 9 | requests>=1.1.0 10 | srp>=1.0.2 11 | pyopenssl 12 | coloredlogs 13 | 14 | psutil 15 | 16 | ipaddr 17 | twisted 18 | python-daemon==1.6.1 # this should not be needed for Windows. 19 | keyring 20 | zope.proxy 21 | 22 | # You will want to install this bundled if you don't have sodium in your system: 23 | # pip install pyzmq --install-option="--zmq=bundled" 24 | pyzmq 25 | txzmq 26 | 27 | # Remove this when u1db fixes its dependency on oauth 28 | oauth 29 | 30 | logbook>=0.7.0 31 | -------------------------------------------------------------------------------- /pkg/windows/TODO: -------------------------------------------------------------------------------- 1 | TODO 2 | ==== 3 | 4 | fix python-code (0.9.1) that fails on windows: 5 | - fix the race condition for the backend/frontend startup. 6 | spawning the backend takes time. with a introduced 15s timeout 7 | it was possible to ensure the backend is up. It would be ideal 8 | if the backend could signal the app to continue loading the frontend 9 | - fix the ~/leap/events/zmq_certificates/public_keys/server.key 10 | - fix logger (& remove hack in pyinstaller-build.sh:228) 11 | - fix pysqlcipher (/LIB:,https get not working in setup.py, remove hack 12 | in pyinstaller-build:164) 13 | - merge bitmask_root from https://github.com/alirezamirzaeiyan/bitmask-root 14 | 15 | create similar infrastructure for osx dmg, preferably run on osx for compressed dmg -------------------------------------------------------------------------------- /docs/api/leap.rst: -------------------------------------------------------------------------------- 1 | leap Package 2 | ============ 3 | 4 | :mod:`leap` Package 5 | ------------------- 6 | 7 | .. automodule:: leap.__init__ 8 | :members: 9 | :undoc-members: 10 | :show-inheritance: 11 | 12 | :mod:`_version` Module 13 | ---------------------- 14 | 15 | .. automodule:: leap._version 16 | :members: 17 | :undoc-members: 18 | :show-inheritance: 19 | 20 | :mod:`app` Module 21 | ----------------- 22 | 23 | .. automodule:: leap.app 24 | :members: 25 | :undoc-members: 26 | :show-inheritance: 27 | 28 | Subpackages 29 | ----------- 30 | 31 | .. toctree:: 32 | 33 | leap.config 34 | leap.crypto 35 | leap.gui 36 | leap.keymanager 37 | leap.platform_init 38 | leap.services 39 | leap.util 40 | 41 | -------------------------------------------------------------------------------- /pkg/pyinst/README.rst: -------------------------------------------------------------------------------- 1 | Building da bundles 2 | -------------------- 3 | Because, you know, bundles are cool. Who needs a decent package manager nowadays? . 4 | 5 | You need a couple of things in your virtualenv: 6 | 7 | - All the dependencies. A sumo tarball is probably a good idea. 8 | - PyInstaller. Version 3 or higher. 9 | - A PySide build. While the postmkenv.sh hack is good enough for 10 | developing, you will need a wheel built with --standalone flag. 11 | See 12 | http://pyside.readthedocs.org/en/latest/building/linux.html#building-pyside-distribution:: 13 | 14 | $ python2.7 setup.py bdist_wheel --qmake=/usr/bin/qmake-qt4 --standalone 15 | 16 | (since this takes a while, you can probably grab the already built wheel from 17 | the leap servers). 18 | -------------------------------------------------------------------------------- /src/leap/bitmask/crypto/tests/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # __init__.py 3 | # Copyright (C) 2013 LEAP 4 | # 5 | # This program is free software: you can redistribute it and/or modify 6 | # it under the terms of the GNU General Public License as published by 7 | # the Free Software Foundation, either version 3 of the License, or 8 | # (at your option) any later version. 9 | # 10 | # This program is distributed in the hope that it will be useful, 11 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | # GNU General Public License for more details. 14 | # 15 | # You should have received a copy of the GNU General Public License 16 | # along with this program. If not, see . 17 | -------------------------------------------------------------------------------- /pkg/scripts/monitor_resource.zsh: -------------------------------------------------------------------------------- 1 | #!/bin/zsh 2 | if (( ! $# )); then 3 | echo "Usage: $0:t " >&2 4 | return 1; 5 | fi 6 | 7 | OUT="$1-usage.data" 8 | GRAPH="bitmask-resources.png" 9 | MAX=150 10 | let "ticks=$2*60/3" 11 | echo "cpu mem" >> $OUT 12 | for i in {1..$ticks}; do; 13 | cpu=$(ps -p $1 -o pcpu | grep -v %) 14 | mem=$(ps wuh -p $1 | awk '{print $4}') 15 | echo "$cpu $mem" >> $OUT; 16 | sleep 3; 17 | echo $i / $ticks; 18 | done; 19 | 20 | gnuplot -e "set term dumb; \ 21 | set key outside; set yrange [0:$MAX]; \ 22 | plot for [col=1:2] '$OUT' using 0:col title columnheader s c" 23 | 24 | gnuplot -e "set term png; set output '$GRAPH'; \ 25 | set key outside; set yrange [0:$MAX]; \ 26 | plot for [col=1:2] '$OUT' using 0:col with lines title columnheader" 27 | -------------------------------------------------------------------------------- /docker/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:trusty 2 | 3 | MAINTAINER Ivan Alejandro 4 | 5 | RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ 6 | g++ \ 7 | git \ 8 | libffi-dev \ 9 | libsqlite3-dev \ 10 | libssl-dev \ 11 | libzmq-dev \ 12 | openvpn \ 13 | pyside-tools \ 14 | python-dev \ 15 | python-openssl \ 16 | python-pip \ 17 | python-pyside \ 18 | python-setuptools \ 19 | python-virtualenv \ 20 | make realpath lxpolkit policykit-1 iptables && \ 21 | apt-get clean && rm -rf /var/lib/apt/lists/* 22 | 23 | 24 | RUN mkdir -p /bitmask 25 | WORKDIR /bitmask 26 | 27 | COPY leap_bootstrap.sh /bitmask/ 28 | 29 | VOLUME ["/data/"] 30 | 31 | EXPOSE 1984 2013 32 | ENTRYPOINT ["/bitmask/leap_bootstrap.sh"] 33 | -------------------------------------------------------------------------------- /pkg/scripts/filter-bitmask-deps: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | """ 4 | Filter bitmask dependencies. 5 | 6 | Usage: pipdeptree | filter-bitmask-deps 7 | """ 8 | import fileinput 9 | 10 | TARGET = "leap.bitmask" 11 | 12 | 13 | def get_bitmask_deps(dep_lines): 14 | res = [] 15 | begin = False 16 | for dep in dep_lines: 17 | if dep.startswith(TARGET): 18 | begin = True 19 | res.append(dep) 20 | continue 21 | elif dep.startswith(' ') and begin: 22 | res.append(dep) 23 | continue 24 | if begin: 25 | return res 26 | 27 | 28 | if __name__ == "__main__": 29 | lines = [] 30 | for line in fileinput.input(): 31 | lines.append(line) 32 | 33 | bitmask_deps = get_bitmask_deps(lines) 34 | for line in bitmask_deps: 35 | print line[:-1] 36 | -------------------------------------------------------------------------------- /pkg/tools/profile.mk: -------------------------------------------------------------------------------- 1 | do_cprofile: 2 | python -m cProfile -o bitmask.cprofile src/leap/bitmask/app.py --debug -N 3 | 4 | view_cprofile: 5 | cprofilev bitmask.cprofile 6 | 7 | mailprofile: 8 | gprof2dot -f pstats /tmp/leap_mail_profile.pstats -n 0.2 -e 0.2 | dot -Tpdf -o /tmp/leap_mail_profile.pdf 9 | 10 | do_lineprof: 11 | LEAP_PROFILE_IMAPCMD=1 LEAP_MAIL_MANHOLE=1 kernprof.py -l src/leap/bitmask/app.py --debug 12 | 13 | do_lineprof_offline: 14 | LEAP_PROFILE_IMAPCMD=1 LEAP_MAIL_MANHOLE=1 kernprof.py -l src/leap/bitmask/app.py --offline --debug -N 15 | 16 | view_lineprof: 17 | @python -m line_profiler app.py.lprof | $(EDITOR) - 18 | 19 | resource_graph: 20 | #./pkg/scripts/monitor_resource.zsh `ps aux | grep app.py | head -1 | awk '{print $$2}'` $(RESOURCE_TIME) 21 | ./pkg/scripts/monitor_resource.zsh `pgrep bitmask` $(RESOURCE_TIME) 22 | display bitmask-resources.png 23 | 24 | -------------------------------------------------------------------------------- /src/leap/bitmask/util/constants.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # constants.py 3 | # Copyright (C) 2013 LEAP 4 | # 5 | # This program is free software: you can redistribute it and/or modify 6 | # it under the terms of the GNU General Public License as published by 7 | # the Free Software Foundation, either version 3 of the License, or 8 | # (at your option) any later version. 9 | # 10 | # This program is distributed in the hope that it will be useful, 11 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | # GNU General Public License for more details. 14 | # 15 | # You should have received a copy of the GNU General Public License 16 | # along with this program. If not, see . 17 | 18 | SIGNUP_TIMEOUT = 5 19 | REQUEST_TIMEOUT = 15 20 | PASTEBIN_API_DEV_KEY = "09563100642af6085d641f749a1922b4" 21 | -------------------------------------------------------------------------------- /changes/next-changelog.rst: -------------------------------------------------------------------------------- 1 | 0.10.0 - xxx 2 | +++++++++++++++++++++++++++++++ 3 | 4 | Please add lines to this file, they will be moved to the CHANGELOG.rst during 5 | the next release. 6 | 7 | There are two template lines for each category, use them as reference. 8 | 9 | I've added a new category `Misc` so we can track doc/style/packaging stuff. 10 | 11 | Features 12 | ~~~~~~~~ 13 | - `#1234 `_: Description of the new feature corresponding with issue #1234. 14 | - New feature without related issue number. 15 | 16 | Bugfixes 17 | ~~~~~~~~ 18 | - `#1235 `_: Description for the fixed stuff corresponding with issue #1235. 19 | - Bugfix without related issue number. 20 | 21 | Misc 22 | ~~~~ 23 | - `#1236 `_: Description of the new feature corresponding with issue #1236. 24 | - Some change without issue number. 25 | 26 | Known Issues 27 | ~~~~~~~~~~~~ 28 | -------------------------------------------------------------------------------- /pkg/linux/bitmask-launcher: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # The Bitmask Launcher 3 | # (c) 2015 - The LEAP Encryption Access Project 4 | 5 | [ -f libQtCore.so.4 ] || ln -s libQtCore.so.4.orig libQtCore.so.4 6 | [ -f libQtGui.so.4 ] || ln -s libQtGui.so.4.orig libQtGui.so.4 7 | [ -f libQtNetwork.so.4 ] || ln -s libQtNetwork.so.4.orig libQtNetwork.so.4 8 | [ -f libQtSvg.so.4 ] || ln -s libQtSvg.so.4.orig libQtSvg.so.4 9 | [ -f libQtWebKit.so.4 ] || ln -s libQtWebKit.so.4.orig libQtWebKit.so.4 10 | [ -f libQtXmlPatterns.so.4 ] || ln -s libQtXmlPatterns.so.4.orig libQtXmlPatterns.so.4 11 | [ -f libQtXml.so.4 ] || ln -s libQtXml.so.4.orig libQtXml.so.4 12 | 13 | cat /etc/os-release | grep ID | grep -i ubuntu && \ 14 | unlink libQtCore.so.4 && \ 15 | unlink libQtGui.so.4 && \ 16 | unlink libQtNetwork.so.4 && \ 17 | unlink libQtSvg.so.4 && \ 18 | unlink libQtWebKit.so.4 && \ 19 | unlink libQtXmlPatterns.so.4 && \ 20 | unlink libQtXml.so.4 21 | 22 | ./bitmask-app --standalone "$@" 23 | -------------------------------------------------------------------------------- /pkg/requirements-dev.pip: -------------------------------------------------------------------------------- 1 | # ------------------------------------ 2 | # -- useful tools that you probably -- 3 | # -- will want during development -- 4 | # ------------------------------------ 5 | 6 | wheel 7 | sphinx 8 | ipdb 9 | pipdeptree 10 | 11 | # --------------------------- 12 | # -- external requirements -- 13 | # -- during development -- 14 | # --------------------------- 15 | # 16 | # For temporary work, you can point this to your developer repo. 17 | # consolidated changes will be pushed to pypi and then added 18 | # to the main requirements.pip 19 | # 20 | # NOTE: you have to run pip install -r pkg/requirements.pip for pip 21 | # to install it. (do it after python setup.py develop and it 22 | # will only install this) 23 | # 24 | 25 | # in case you want to install a package from a git source, you can use this: 26 | # Useful to test pre-release branches together. 27 | #-e git+https://github.com/leapcode/leap_pycommon.git@develop#egg=leap.common 28 | -------------------------------------------------------------------------------- /pkg/osx/se.leap.bitmask-helper.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | StandardOutPath 6 | bitmask-helper.log 7 | StandardErrorPath 8 | bitmask-helper-err.log 9 | GroupName 10 | daemon 11 | KeepAlive 12 | 13 | SuccessfulExit 14 | 15 | 16 | Label 17 | se.leap.bitmask-helper 18 | ProgramArguments 19 | 20 | /Applications/Bitmask.app/Contents/Resources/bitmask-helper/bitmask-helper 21 | 22 | RunAtLoad 23 | 24 | WorkingDirectory 25 | /Applications/Bitmask.app/Contents/Resources/bitmask-helper/ 26 | SessionCreate 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /pkg/scripts/check_code.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Escape code 4 | esc=`echo -en "\033"` 5 | 6 | # Set colors 7 | cc_green="${esc}[0;32m" 8 | cc_red="${esc}[0;31m" 9 | cc_normal=`echo -en "${esc}[m\017"` 10 | 11 | 12 | [[ -z "$1" ]] && WHERE='src/leap/bitmask' || WHERE=$1 13 | 14 | PEP8="pep8 --ignore=E202,W602 --exclude=*_rc.py,ui_*,_version.py $WHERE" 15 | echo "${cc_green}$PEP8${cc_normal}" 16 | $PEP8 17 | 18 | echo 19 | FLAKE8="flake8 --ignore=E202,W602 --exclude=*_rc.py,ui_*,_version.py $WHERE" 20 | echo "${cc_green}$FLAKE8${cc_normal}" 21 | $FLAKE8 22 | 23 | echo 24 | echo "${cc_green}Looking for 'print's, no prints in code, use logging/twisted.log.${cc_normal}" 25 | echo `git grep -n "print " | wc -l` 'coincidences.' 26 | 27 | echo 28 | echo "${cc_green}Grepping for 'pdb' code left behind.${cc_normal}" 29 | git grep -n "pdb" 30 | 31 | echo 32 | echo "${cc_green}Grepping for 'XXX|TODO|FIXME|NOTE|HACK'.${cc_normal}" 33 | echo `git grep -E "XXX|TODO|FIXME|NOTE|HACK" | wc -l` 'coincidences.' 34 | -------------------------------------------------------------------------------- /pkg/pyinst/bitmask_cli.spec: -------------------------------------------------------------------------------- 1 | # -*- mode: python -*- 2 | 3 | block_cipher = None 4 | 5 | 6 | a = Analysis(['bitmask_cli'], 7 | pathex=['/home/kali/leap/bitmask_client/pkg/pyinst'], 8 | binaries=None, 9 | datas=None, 10 | hiddenimports=[], 11 | hookspath=[], 12 | runtime_hooks=[], 13 | excludes=[], 14 | win_no_prefer_redirects=False, 15 | win_private_assemblies=False, 16 | cipher=block_cipher) 17 | pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher) 18 | exe = EXE(pyz, 19 | a.scripts, 20 | exclude_binaries=True, 21 | name='bitmask_cli', 22 | debug=False, 23 | strip=False, 24 | upx=True, 25 | console=True ) 26 | coll = COLLECT(exe, 27 | a.binaries, 28 | a.zipfiles, 29 | a.datas, 30 | strip=False, 31 | upx=True, 32 | name='bitmask_cli') 33 | -------------------------------------------------------------------------------- /pkg/pyinst/bitmaskd.spec: -------------------------------------------------------------------------------- 1 | # -*- mode: python -*- 2 | 3 | block_cipher = None 4 | 5 | 6 | a = Analysis(['bitmaskd'], 7 | pathex=['/home/kali/leap/bitmask_client/pkg/pyinst'], 8 | binaries=None, 9 | datas=None, 10 | hiddenimports=[], 11 | hookspath=[], 12 | runtime_hooks=[], 13 | excludes=[], 14 | win_no_prefer_redirects=False, 15 | win_private_assemblies=False, 16 | cipher=block_cipher) 17 | pyz = PYZ(a.pure, a.zipped_data, 18 | cipher=block_cipher) 19 | exe = EXE(pyz, 20 | a.scripts, 21 | exclude_binaries=True, 22 | name='bitmaskd', 23 | debug=False, 24 | strip=False, 25 | upx=True, 26 | console=True ) 27 | coll = COLLECT(exe, 28 | a.binaries, 29 | a.zipfiles, 30 | a.datas, 31 | strip=False, 32 | upx=True, 33 | name='bitmaskd') 34 | -------------------------------------------------------------------------------- /src/leap/bitmask/platform_init/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # __init__.py 3 | # Copyright (C) 2013 LEAP 4 | # 5 | # This program is free software: you can redistribute it and/or modify 6 | # it under the terms of the GNU General Public License as published by 7 | # the Free Software Foundation, either version 3 of the License, or 8 | # (at your option) any later version. 9 | # 10 | # This program is distributed in the hope that it will be useful, 11 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | # GNU General Public License for more details. 14 | # 15 | # You should have received a copy of the GNU General Public License 16 | # along with this program. If not, see . 17 | 18 | """ 19 | System constants 20 | """ 21 | import platform 22 | 23 | _system = platform.system() 24 | 25 | IS_LINUX = _system == "Linux" 26 | IS_MAC = _system == "Darwin" 27 | IS_UNIX = IS_MAC or IS_LINUX 28 | IS_WIN = _system == "Windows" 29 | -------------------------------------------------------------------------------- /docs/api/leap.keymanager.rst: -------------------------------------------------------------------------------- 1 | keymanager Package 2 | ================== 3 | 4 | :mod:`keymanager` Package 5 | ------------------------- 6 | 7 | .. automodule:: leap.keymanager 8 | :members: 9 | :undoc-members: 10 | :show-inheritance: 11 | 12 | :mod:`errors` Module 13 | -------------------- 14 | 15 | .. automodule:: leap.keymanager.errors 16 | :members: 17 | :undoc-members: 18 | :show-inheritance: 19 | 20 | :mod:`gpg` Module 21 | ----------------- 22 | 23 | .. automodule:: leap.keymanager.gpg 24 | :members: 25 | :undoc-members: 26 | :show-inheritance: 27 | 28 | :mod:`keys` Module 29 | ------------------ 30 | 31 | .. automodule:: leap.keymanager.keys 32 | :members: 33 | :undoc-members: 34 | :show-inheritance: 35 | 36 | :mod:`openpgp` Module 37 | --------------------- 38 | 39 | .. automodule:: leap.keymanager.openpgp 40 | :members: 41 | :undoc-members: 42 | :show-inheritance: 43 | 44 | Subpackages 45 | ----------- 46 | 47 | .. toctree:: 48 | 49 | leap.keymanager.tests 50 | 51 | -------------------------------------------------------------------------------- /src/leap/bitmask/gui/clickablelabel.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # clickablelabel.py 3 | # Copyright (C) 2013 LEAP 4 | # 5 | # This program is free software: you can redistribute it and/or modify 6 | # it under the terms of the GNU General Public License as published by 7 | # the Free Software Foundation, either version 3 of the License, or 8 | # (at your option) any later version. 9 | # 10 | # This program is distributed in the hope that it will be useful, 11 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | # GNU General Public License for more details. 14 | # 15 | # You should have received a copy of the GNU General Public License 16 | # along with this program. If not, see . 17 | 18 | """ 19 | Clickable label 20 | """ 21 | from PySide import QtCore, QtGui 22 | 23 | 24 | class ClickableLabel(QtGui.QLabel): 25 | clicked = QtCore.Signal() 26 | 27 | def mousePressEvent(self, event): 28 | self.clicked.emit() 29 | -------------------------------------------------------------------------------- /src/leap/bitmask/crypto/tests/eip-service.json: -------------------------------------------------------------------------------- 1 | { 2 | "gateways": [ 3 | { 4 | "capabilities": { 5 | "adblock": false, 6 | "filter_dns": false, 7 | "limited": true, 8 | "ports": [ 9 | "1194", 10 | "443", 11 | "53", 12 | "80" 13 | ], 14 | "protocols": [ 15 | "tcp", 16 | "udp" 17 | ], 18 | "transport": [ 19 | "openvpn" 20 | ], 21 | "user_ips": false 22 | }, 23 | "host": "harrier.cdev.bitmask.net", 24 | "ip_address": "199.254.238.50", 25 | "location": "seattle__wa" 26 | } 27 | ], 28 | "locations": { 29 | "seattle__wa": { 30 | "country_code": "US", 31 | "hemisphere": "N", 32 | "name": "Seattle, WA", 33 | "timezone": "-7" 34 | } 35 | }, 36 | "openvpn_configuration": { 37 | "auth": "SHA1", 38 | "cipher": "AES-128-CBC", 39 | "tls-cipher": "DHE-RSA-AES128-SHA" 40 | }, 41 | "serial": 1, 42 | "version": 1 43 | } -------------------------------------------------------------------------------- /pkg/sumo-tarballs.mk: -------------------------------------------------------------------------------- 1 | checkout_leapdeps_release: 2 | pkg/scripts/checkout_leap_versions.sh 3 | 4 | setup_without_namespace: 5 | awk '!/namespace_packages*/' setup.py > file && mv file setup.py 6 | 7 | sumo_tarball_release: checkout_leapdeps_release setup_without_namespace 8 | python setup.py sdist --sumo 9 | git checkout -- src/leap/__init__.py 10 | git checkout -- src/leap/bitmask/_version.py 11 | rm -rf src/leap/soledad 12 | git checkout -- setup.py 13 | 14 | # XXX We need two sets of sumo-tarballs: the one published for a release 15 | # (that will pick the pinned leap deps), and the other which will be used 16 | # for the nightly builds. 17 | # TODO change naming scheme for sumo-latest: should include date (in case 18 | # bitmask is not updated bu the dependencies are) 19 | 20 | sumo_tarball_latest: checkout_leapdeps_develop pull_leapdeps setup_without_namespace 21 | python setup.py sdist --sumo # --latest 22 | git checkout -- src/leap/__init__.py 23 | git checkout -- src/leap/bitmask/_version.py 24 | rm -rf src/leap/soledad 25 | git checkout -- setup.py 26 | -------------------------------------------------------------------------------- /pkg/linux/polkit/se.leap.bitmask.policy: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | LEAP Project 8 | http://leap.se/ 9 | 10 | 11 | Runs bitmask helper to launch firewall and openvpn 12 | Ejecuta el asistente de bitmask para lanzar el firewall y openvpn 13 | Bitmask needs that you authenticate to start 14 | Bitmask necesita autorizacion para comenzar 15 | package-x-generic 16 | 17 | yes 18 | yes 19 | yes 20 | 21 | /usr/sbin/bitmask-root 22 | 23 | 24 | -------------------------------------------------------------------------------- /src/leap/bitmask/gui/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # __init__.py 3 | # Copyright (C) 2013 LEAP 4 | # 5 | # This program is free software: you can redistribute it and/or modify 6 | # it under the terms of the GNU General Public License as published by 7 | # the Free Software Foundation, either version 3 of the License, or 8 | # (at your option) any later version. 9 | # 10 | # This program is distributed in the hope that it will be useful, 11 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | # GNU General Public License for more details. 14 | # 15 | # You should have received a copy of the GNU General Public License 16 | # along with this program. If not, see . 17 | """ 18 | init file for leap.gui 19 | """ 20 | # This was added for coverage and testing, but when doing the osx 21 | # bundle with py2app it fails because of this, so commenting for now 22 | # Also creates conflicts with the new frontend/backend separation. 23 | # app = __import__("app", globals(), locals(), [], 2) 24 | # __all__ = [app] 25 | -------------------------------------------------------------------------------- /pkg/windows/openvpn_manifest: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /pkg/deps.mk: -------------------------------------------------------------------------------- 1 | get_wheels: 2 | pip install --upgrade setuptools 3 | pip install --upgrade pip 4 | pip install wheel 5 | 6 | gather_wheels: 7 | pip wheel --wheel-dir=../wheelhouse pyzmq --build-option "--zmq=bundled" 8 | # because fuck u1db externals, that's why... 9 | pip wheel --wheel-dir=../wheelhouse --allow-external dirspec --allow-unverified dirspec --allow-external u1db --allow-unverified u1db -r pkg/requirements.pip 10 | 11 | install_wheel: 12 | # if it's the first time, you'll need to get_wheels first 13 | pip install --pre --use-wheel --no-index --find-links=../wheelhouse -r pkg/requirements.pip 14 | 15 | gather_deps: 16 | pipdeptree | pkg/scripts/filter-bitmask-deps 17 | 18 | install_base_deps: 19 | for repo in leap_pycommon keymanager leap_mail soledad/common soledad/client; do cd $(CURDIR)/../$$repo && pkg/pip_install_requirements.sh; done 20 | pkg/pip_install_requirements.sh 21 | 22 | pull_leapdeps: 23 | for repo in $(LEAP_REPOS); do cd $(CURDIR)/../$$repo && git pull; done 24 | 25 | checkout_leapdeps_develop: 26 | for repo in $(LEAP_REPOS); do cd $(CURDIR)/../$$repo && git checkout develop; done 27 | git checkout develop 28 | 29 | -------------------------------------------------------------------------------- /pkg/linux/polkit/se.leap.bitmask.bundle.policy: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | LEAP Project 8 | http://leap.se/ 9 | 10 | 11 | Runs bitmask helper to launch firewall and openvpn (bundle version) 12 | Ejecuta el asistente de bitmask para lanzar el firewall y openvpn (version bundle) 13 | Bitmask needs that you authenticate to start 14 | Bitmask necesita autorizacion para comenzar 15 | package-x-generic 16 | 17 | yes 18 | yes 19 | yes 20 | 21 | /usr/local/sbin/bitmask-root 22 | 23 | 24 | -------------------------------------------------------------------------------- /pkg/pyinst/bitmask.spec.orig: -------------------------------------------------------------------------------- 1 | # -*- mode: python -*- 2 | 3 | block_cipher = None 4 | 5 | 6 | a = Analysis([os.path.join('bitmask.py')], 7 | hiddenimports=[ 8 | 'zope.interface', 'zope.proxy', 9 | 'PySide.QtCore', 'PySide.QtGui'], 10 | hookspath=None, 11 | runtime_hooks=None, 12 | excludes=None, 13 | cipher=block_cipher) 14 | pyz = PYZ(a.pure, 15 | cipher=block_cipher) 16 | exe = EXE(pyz, 17 | a.scripts, 18 | exclude_binaries=True, 19 | name='bitmask', 20 | debug=False, 21 | strip=False, 22 | upx=True, 23 | console=False ) 24 | coll = COLLECT(exe, 25 | a.binaries, 26 | a.zipfiles, 27 | a.datas, 28 | strip=False, 29 | upx=True, 30 | name='bitmask') 31 | if sys.platform.startswith("darwin"): 32 | app = BUNDLE(coll, 33 | name=os.path.join( 34 | 'dist', 'Bitmask.app'), 35 | appname='Bitmask', 36 | version='0.9.0rc2', 37 | icon='pkg/osx/bitmask.icns', 38 | bundle_identifier='bitmask-0.9.0rc2') 39 | -------------------------------------------------------------------------------- /docs/api/leap.util.rst: -------------------------------------------------------------------------------- 1 | util Package 2 | ============ 3 | 4 | :mod:`util` Package 5 | ------------------- 6 | 7 | .. automodule:: leap.util 8 | :members: 9 | :undoc-members: 10 | :show-inheritance: 11 | 12 | :mod:`leap_argparse` Module 13 | --------------------------- 14 | 15 | .. automodule:: leap.util.leap_argparse 16 | :members: 17 | :undoc-members: 18 | :show-inheritance: 19 | 20 | :mod:`leap_log_handler` Module 21 | ------------------------------ 22 | 23 | .. automodule:: leap.util.leap_log_handler 24 | :members: 25 | :undoc-members: 26 | :show-inheritance: 27 | 28 | :mod:`privilege_policies` Module 29 | -------------------------------- 30 | 31 | .. automodule:: leap.util.privilege_policies 32 | :members: 33 | :undoc-members: 34 | :show-inheritance: 35 | 36 | :mod:`request_helpers` Module 37 | ----------------------------- 38 | 39 | .. automodule:: leap.util.request_helpers 40 | :members: 41 | :undoc-members: 42 | :show-inheritance: 43 | 44 | :mod:`requirement_checker` Module 45 | --------------------------------- 46 | 47 | .. automodule:: leap.util.requirement_checker 48 | :members: 49 | :undoc-members: 50 | :show-inheritance: 51 | 52 | -------------------------------------------------------------------------------- /src/leap/bitmask/util/compat.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # compat.py 3 | # Copyright (C) 2013 LEAP 4 | # 5 | # This program is free software: you can redistribute it and/or modify 6 | # it under the terms of the GNU General Public License as published by 7 | # the Free Software Foundation, either version 3 of the License, or 8 | # (at your option) any later version. 9 | # 10 | # This program is distributed in the hope that it will be useful, 11 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | # GNU General Public License for more details. 14 | # 15 | # You should have received a copy of the GNU General Public License 16 | # along with this program. If not, see . 17 | """ 18 | Utilities for dealing with compat versions. 19 | """ 20 | from distutils.version import LooseVersion as V 21 | 22 | from requests import __version__ as _requests_version 23 | 24 | 25 | def _requests_has_max_retries(): 26 | """ 27 | Returns True if we can use the max_retries parameter 28 | """ 29 | return V(_requests_version) > V('1.1.0') 30 | 31 | requests_has_max_retries = _requests_has_max_retries() 32 | -------------------------------------------------------------------------------- /pkg/osx/build_tuntaposx: -------------------------------------------------------------------------------- 1 | #!/bin/zsh 2 | # 3 | # Copyright (C) 2012 ... 4 | # 5 | 6 | REPO="https://github.com/bbits/tuntaposx.git" 7 | 8 | autoload colors; colors 9 | # standard output message routines 10 | # it's always useful to wrap them, in case we change behaviour later 11 | notice() { if [[ $QUIET == 0 ]]; then print "$fg_bold[green][*]$fg_no_bold[default] $1" >&2; fi } 12 | error() { if [[ $QUIET == 0 ]]; then print "$fg[red][!]$fg[default] $1" >&2; fi } 13 | func() { if [[ $DEBUG == 1 ]]; then print "$fg[blue][D]$fg[default] $1" >&2; fi } 14 | act() { 15 | if [[ $QUIET == 0 ]]; then 16 | if [ "$1" = "-n" ]; then 17 | print -n "$fg_bold[white] . $fg_no_bold[default] $2" >&2; 18 | else 19 | print "$fg_bold[white] . $fg_no_bold[default] $1" >&2; 20 | fi 21 | fi 22 | } 23 | 24 | { test "$1" = "clean" } && { 25 | notice "Cleaning up all tuntaposx build" 26 | rm -rf tuntaposx 27 | act "Done." 28 | return 0 29 | } 30 | 31 | build_tuntap() { 32 | test -d tuntaposx || git clone $REPO 33 | notice "Cloning tuntaposx sources" 34 | cd tuntaposx/tuntap 35 | notice "Building tuntaposx" 36 | make 37 | mkdir -p ../../dist/tun.kext 38 | cp -r tun.kext/* ../../dist/tun.kext 39 | mkdir -p ../../dist/tuntaposx/StartupItems 40 | cp -r startup_item/tun ../../dist/tuntaposx/StartupItems 41 | cd ../.. 42 | } 43 | 44 | act "Building tuntap" 45 | build_tuntap 46 | -------------------------------------------------------------------------------- /src/leap/bitmask/gui/wizardpage.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # wizardpage.py 3 | # Copyright (C) 2013 LEAP 4 | # 5 | # This program is free software: you can redistribute it and/or modify 6 | # it under the terms of the GNU General Public License as published by 7 | # the Free Software Foundation, either version 3 of the License, or 8 | # (at your option) any later version. 9 | # 10 | # This program is distributed in the hope that it will be useful, 11 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | # GNU General Public License for more details. 14 | # 15 | # You should have received a copy of the GNU General Public License 16 | # along with this program. If not, see . 17 | 18 | from PySide import QtGui 19 | 20 | 21 | class WizardPage(QtGui.QWizardPage): 22 | """ 23 | Simple wizard page helper 24 | """ 25 | 26 | def __init__(self): 27 | QtGui.QWizardPage.__init__(self) 28 | self._completed = False 29 | 30 | def set_completed(self, val=True): 31 | self._completed = val 32 | if val: 33 | self.completeChanged.emit() 34 | 35 | def isComplete(self): 36 | return self._completed 37 | 38 | def cleanupPage(self): 39 | self._completed = False 40 | QtGui.QWizardPage.cleanupPage(self) 41 | -------------------------------------------------------------------------------- /data/resources/icons.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | ../images/mask-icon.png 6 | ../images/menubar-mask-icon.png 7 | 8 | 9 | ../images/black/off.svg 10 | ../images/black/on.svg 11 | ../images/black/question.svg 12 | ../images/black/wait.svg 13 | ../images/black/22/off.png 14 | ../images/black/22/on.png 15 | ../images/black/22/question.png 16 | ../images/black/22/wait.png 17 | 18 | ../images/white/off.svg 19 | ../images/white/on.svg 20 | ../images/white/question.svg 21 | ../images/white/wait.svg 22 | ../images/white/22/off.png 23 | ../images/white/22/on.png 24 | ../images/white/22/question.png 25 | ../images/white/22/wait.png 26 | 27 | 28 | ../images/black/32/user.png 29 | 30 | 31 | ../images/black/32/earth.png 32 | ../images/black/32/arrow-down.png 33 | ../images/black/32/arrow-up.png 34 | 35 | 36 | ../images/black/32/email.png 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /pkg/linux/README.rst: -------------------------------------------------------------------------------- 1 | Files 2 | ===== 3 | 4 | In GNU/Linux, we expect these files to be in place:: 5 | 6 | bitmask-root -> /usr/sbin/bitmask-root 7 | polkit/se.leap.bitmask.policy -> /usr/share/polkit-1/actions/se.leap.bitmask.policy 8 | 9 | Bundle 10 | ====== 11 | 12 | The bundle will ask for permission to install to a different path. This search 13 | path will be used if the flag ``--standalone`` is set:: 14 | 15 | bitmask-root -> /usr/local/sbin/bitmask-root 16 | polkit/se.leap.bitmask.bundle.policy -> /usr/share/polkit-1/actions/se.leap.bitmask.bundle.policy 17 | 18 | When running with ``--standalone`` flag, the openvpn binary is expected in the following path:: 19 | 20 | leap-openvpn -> /usr/local/sbin/leap-openvpn 21 | 22 | The bundle will use the script ``leap-install-helper.sh`` to copy the needed 23 | files. If you ever want to use it manually to update the helpers or bins, it 24 | needs a ``--from-path`` parameter to be passed to it. This points to a folder 25 | from where all the needed binaries and scripts can be found. 26 | 27 | 28 | Binary hashing 29 | ============== 30 | 31 | To be able to update the binaries when needed, the bundles distribute with the 32 | sha256 hash of the packaged binaries for each release. This info can be found 33 | in:: 34 | 35 | src/leap/bitmask/_binaries.py 36 | 37 | That file is generated during the bundling process, by issuing the following 38 | command from the root folder:: 39 | 40 | python setup.py hash_binaries 41 | -------------------------------------------------------------------------------- /docs/api/leap.services.eip.rst: -------------------------------------------------------------------------------- 1 | eip Package 2 | =========== 3 | 4 | :mod:`eipbootstrapper` Module 5 | ----------------------------- 6 | 7 | .. automodule:: leap.services.eip.eipbootstrapper 8 | :members: 9 | :undoc-members: 10 | :show-inheritance: 11 | 12 | :mod:`eipconfig` Module 13 | ----------------------- 14 | 15 | .. automodule:: leap.services.eip.eipconfig 16 | :members: 17 | :undoc-members: 18 | :show-inheritance: 19 | 20 | :mod:`eipspec` Module 21 | --------------------- 22 | 23 | .. automodule:: leap.services.eip.eipspec 24 | :members: 25 | :undoc-members: 26 | :show-inheritance: 27 | 28 | :mod:`providerbootstrapper` Module 29 | ---------------------------------- 30 | 31 | .. automodule:: leap.services.eip.providerbootstrapper 32 | :members: 33 | :undoc-members: 34 | :show-inheritance: 35 | 36 | :mod:`udstelnet` Module 37 | ----------------------- 38 | 39 | .. automodule:: leap.services.eip.udstelnet 40 | :members: 41 | :undoc-members: 42 | :show-inheritance: 43 | 44 | :mod:`vpnlaunchers` Module 45 | -------------------------- 46 | 47 | .. automodule:: leap.services.eip.vpnlaunchers 48 | :members: 49 | :undoc-members: 50 | :show-inheritance: 51 | 52 | :mod:`vpnprocess` Module 53 | ------------------------ 54 | 55 | .. automodule:: leap.services.eip.vpnprocess 56 | :members: 57 | :undoc-members: 58 | :show-inheritance: 59 | 60 | Subpackages 61 | ----------- 62 | 63 | .. toctree:: 64 | 65 | leap.services.eip.tests 66 | 67 | -------------------------------------------------------------------------------- /docs/user/running.rst: -------------------------------------------------------------------------------- 1 | .. _running: 2 | 3 | Running 4 | ================== 5 | 6 | This document covers how to launch Bitmask. Also know as, where the magic 7 | happens. 8 | 9 | Launching Bitmask 10 | ----------------- 11 | After a successful installation, there should be a launcher called `bitmask` somewhere in your path:: 12 | 13 | % bitmask 14 | 15 | The first time you launch it, it should launch the first run wizard that will guide you through the mostly automatic configuration of the LEAP Services. 16 | 17 | .. note:: 18 | 19 | You will need to enter a valid test provider running the LEAP Platform. You can use the LEAP test service, *https://bitmask.net* 20 | 21 | .. _debugmode: 22 | 23 | Debug mode 24 | ---------- 25 | If you are happy having lots of output in your terminal, you will like to know that you can run bitmask in debug mode:: 26 | 27 | $ bitmask --debug 28 | 29 | If you ask for it, you can also have all that debug info in a beautiful file ready to be attached to your bug reports:: 30 | 31 | $ bitmask --debug --logfile /tmp/leap.log 32 | 33 | .. warning 34 | .. the following is broken since it will clutter your stdout with all the commands sent to the management interface. 35 | See bug #1232 36 | 37 | .. not working... 38 | .. If you want to increment the level of verbosity passed to openvpn, you can do:: 39 | .. $ bitmask --openvpn-verbosity 4 40 | 41 | I want all the options! 42 | ----------------------- 43 | To see all the available command line options:: 44 | 45 | $ bitmask --help 46 | -------------------------------------------------------------------------------- /docs/core_api_contract: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | # api_contract.py 4 | # Copyright (C) 2016 LEAP Encryption Acess Project 5 | # 6 | # This program is free software: you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation, either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | """ 19 | Display a human-readable representation of the methods that compound the public 20 | api for Bitmask Core. 21 | 22 | The values are meant to be type annotations. 23 | """ 24 | 25 | if __name__ == "__main__": 26 | from leap.bitmask.core.service import BitmaskBackend 27 | from leap.bitmask.core import api 28 | backend = BitmaskBackend() 29 | 30 | print '========= Bitmask Core API ==================' 31 | print 32 | 33 | for key in api.registry: 34 | human_key = key.replace('do_', '').lower() 35 | value = api.registry[key] 36 | 37 | print("{}:\t\t{}".format( 38 | human_key, 39 | ' '.join([x for x in value]))) 40 | print 41 | print '=============================================' 42 | -------------------------------------------------------------------------------- /docs/leap-commit-template.README: -------------------------------------------------------------------------------- 1 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2 | HOW TO USE THIS TEMPLATE: 3 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4 | 5 | Run `git config commit.template docs/leap-commit-template` or 6 | edit the .git/config for this project and add 7 | `template = docs/leap-commit-template` 8 | under the [commit] block 9 | 10 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 11 | COMMIT TEMPLATE FORMAT EXPLAINED 12 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 13 | 14 | [type] 15 | 16 | 17 |