diff options
| -rw-r--r-- | pkg/pyinst/anonvpn.spec | 56 | ||||
| -rw-r--r-- | setup.py | 2 | ||||
| -rw-r--r-- | src/leap/bitmask/gui/anonvpn.py | 72 | 
3 files changed, 130 insertions, 0 deletions
| diff --git a/pkg/pyinst/anonvpn.spec b/pkg/pyinst/anonvpn.spec new file mode 100644 index 00000000..3f5e18da --- /dev/null +++ b/pkg/pyinst/anonvpn.spec @@ -0,0 +1,56 @@ +# -*- mode: python -*- +import os +import sys +import platform + +block_cipher = None + +IS_MAC = sys.platform.startswith('darwin') +IS_WIN = platform.system() == 'Windows' + +BITMASK_VERSION = open('pkg/next-version').read() +if IS_MAC: +    # launchd chokes because more digits are added to the version string, +    # so let's skip the patch part of the version. +    BITMASK_VERSION  = '.'.join(BITMASK_VERSION.split('.')[:-1]) + +hiddenimports = [ +     'appdirs', +     'service_identity', +     'leap.common', 'leap.bitmask',  +     'leap.bitmask.core.logs', +     'packaging', 'packaging.version', 'packaging.specifiers', +     'packaging.requirements'] + +VENV = os.environ.get('VIRTUAL_ENV', '') +ENTRYPOINT = ['../../src/leap/bitmask/gui/anonvpn.py'] + +a = Analysis(ENTRYPOINT, +             binaries=None, +             datas=None, +             hiddenimports=hiddenimports, +             hookspath=[], +             runtime_hooks=[], +             excludes=excludes, + +             win_no_prefer_redirects=False, +             win_private_assemblies=False, +             cipher=block_cipher) +pyz = PYZ(a.pure, a.zipped_data, +             cipher=block_cipher) +exe = EXE(pyz, +          a.scripts, +	  exclude_binaries=True, +          name='anonvpn', +          debug=True, +          strip=True, +          upx=True, +	  # TODO remove console for win +          console=True) +coll = COLLECT(exe, +               a.binaries, +               a.zipfiles, +               a.datas, +               strip=False, +               upx=True, +               name='anonvpn') @@ -66,6 +66,7 @@ DOWNLOAD_URL = DOWNLOAD_BASE % VERSION  # Entry points  gui_launcher = 'bitmask=leap.bitmask.gui.app:start_app' +anonvpn = 'bitmask_anonvpn=leap.bitmask.gui.anonvpn:start_app'  chrome_launcher = 'bitmask_chromium=leap.bitmask.chrome.chromeapp:start_app'  bitmask_cli = 'bitmaskctl=leap.bitmask.cli.bitmask_cli:main'  bitmask_helpers = 'bitmask_helpers=leap.bitmask.vpn.helpers:main' @@ -96,6 +97,7 @@ setup(      entry_points={          'console_scripts': [              gui_launcher, +            anonvpn,              chrome_launcher,              bitmask_cli,              bitmaskd, diff --git a/src/leap/bitmask/gui/anonvpn.py b/src/leap/bitmask/gui/anonvpn.py new file mode 100644 index 00000000..b15f7c7f --- /dev/null +++ b/src/leap/bitmask/gui/anonvpn.py @@ -0,0 +1,72 @@ +# -*- coding: utf-8 -*- +# anonvpn.py +# Copyright (C) 2018 LEAP Encryption Acess Project +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program.  If not, see <http://www.gnu.org/licenses/>. + +""" +Entrypoint for an standalone systray binary. + +Launches bitmaskd and then launches the systray. +""" + +import subprocess +import os +import platform +import signal +import sys + +from functools import partial +from multiprocessing import Process + +from leap.bitmask.core.launcher import run_bitmaskd, pid +from leap.bitmask.gui.housekeeping import cleanup, terminate, reset_authtoken +from leap.bitmask.gui.housekeeping import NoAuthTokenError +from leap.common.config import get_path_prefix + + +bitmaskd = None + + +def _handle_kill(*args, **kw): +    global bitmaskd +    bitmaskd.join() +    terminate(pid) +    cleanup() +    sys.exit() + + +def launch_gui(): +    from leap.bitmask.util import STANDALONE +    if STANDALONE: +        gui = './bitmask-systray' +    else: +        gui = 'bitmask-systray' +    subprocess.call([gui]) + +def start_app(): +    global bitmaskd + +    bitmaskd = Process(target=run_bitmaskd) +    bitmaskd.start() +    reset_authtoken() +    launch_gui() +    print "[anonvpn] Systray Quitted." +    bitmaskd.join() +    terminate(pid) +    cleanup() + + +if __name__ == "__main__": +    start_app() | 
