summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKali Kaneko <kali@leap.se>2018-02-08 01:03:09 +0100
committerKali Kaneko <kali@leap.se>2018-02-15 16:36:37 +0100
commit29832c73adea3573ead5fcc8007419c67305014e (patch)
tree23e8ec8c65b9db91afc5eca7565576d1d67365e1
parent7697beb7034acacbe6964af0385a03b2ea33ec93 (diff)
[feat] anonvpn entrypoints
-rw-r--r--pkg/pyinst/anonvpn.spec56
-rw-r--r--setup.py2
-rw-r--r--src/leap/bitmask/gui/anonvpn.py72
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')
diff --git a/setup.py b/setup.py
index 17a44c2d..6db93b7d 100644
--- a/setup.py
+++ b/setup.py
@@ -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()