summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKali Kaneko <kali@leap.se>2018-01-02 17:09:02 +0100
committerKali Kaneko <kali@leap.se>2018-01-06 19:57:36 +0100
commiteb431c28a9e7df0cc8c2a701b9d0f053739dcbb4 (patch)
tree6df42e361ed0a5227115bc35c5b223d7419aafb8
parent1184768281a00aece92591b37fb7d89f198bdfca (diff)
[refactor] factor out common functions
used from both entrypoints for linux and mac apps.
-rw-r--r--src/leap/bitmask/gui/app.py37
-rw-r--r--src/leap/bitmask/gui/app2.py44
-rw-r--r--src/leap/bitmask/gui/housekeeping.py44
3 files changed, 58 insertions, 67 deletions
diff --git a/src/leap/bitmask/gui/app.py b/src/leap/bitmask/gui/app.py
index 03d5b5c4..a616dc3b 100644
--- a/src/leap/bitmask/gui/app.py
+++ b/src/leap/bitmask/gui/app.py
@@ -35,6 +35,9 @@ from leap.bitmask.core.launcher import run_bitmaskd, pid
from leap.bitmask.gui import app_rc
from leap.common.config import get_path_prefix
+from .housekeeping import cleanup, terminate, reset_authtoken
+from .housekeeping import get_authenticated_url
+
from .systray import WithTrayIcon
if platform.system() == 'Windows':
@@ -87,24 +90,8 @@ class BrowserWindow(QWebView, WithTrayIcon):
def __init__(self, *args, **kw):
url = kw.pop('url', None)
- first = False
if not url:
- url = "http://localhost:7070"
- path = os.path.join(get_path_prefix(), 'leap', 'authtoken')
- waiting = 20
- while not os.path.isfile(path):
- if waiting == 0:
- # If we arrive here, something really messed up happened,
- # because touching the token file is one of the first
- # things the backend does, and this BrowserWindow
- # should be called *right after* launching the backend.
- raise NoAuthToken(
- 'No authentication token found!')
- time.sleep(0.1)
- waiting -= 1
- token = open(path).read().strip()
- url += '#' + token
- first = True
+ url = get_authenticated_url()
self.url = url
self.closing = False
@@ -147,16 +134,13 @@ class BrowserWindow(QWebView, WithTrayIcon):
self.load(url)
def shutdown(self, *args):
+ global bitmaskd
if self.closing:
return
self.closing = True
- global bitmaskd
bitmaskd.join()
- if os.path.isfile(pid):
- with open(pid) as f:
- pidno = int(f.read())
- print('[bitmask] terminating bitmaskd...')
- os.kill(pidno, signal.SIGTERM)
+ terminate(pid)
+ cleanup()
print('[bitmask] shutting down gui...')
try:
self.stop()
@@ -269,12 +253,7 @@ def start_app():
from leap.bitmask.cli import bitmask_cli
return bitmask_cli.main()
- prev_auth = os.path.join(get_path_prefix(), 'leap', 'authtoken')
- try:
- os.remove(prev_auth)
- except OSError:
- pass
-
+ reset_authtoken()
launch_gui()
diff --git a/src/leap/bitmask/gui/app2.py b/src/leap/bitmask/gui/app2.py
index 8690f88f..649d5deb 100644
--- a/src/leap/bitmask/gui/app2.py
+++ b/src/leap/bitmask/gui/app2.py
@@ -43,6 +43,8 @@ from leap.bitmask.core.launcher import run_bitmaskd, pid
from leap.common.config import get_path_prefix
from leap.bitmask.gui.systray import WithTrayIcon
+from leap.bitmask.gui.housekeeping import cleanup, terminate, reset_authtoken
+from leap.bitmask.gui.housekeeping import get_authenticated_url
DEBUG = os.environ.get("DEBUG", False)
@@ -94,24 +96,8 @@ class BrowserWindow(object):
def __init__(self, *args, **kw):
url = kw.pop('url', None)
- first = False
if not url:
- url = "http://localhost:7070"
- path = os.path.join(get_path_prefix(), 'leap', 'authtoken')
- waiting = 20
- while not os.path.isfile(path):
- if waiting == 0:
- # If we arrive here, something really messed up happened,
- # because touching the token file is one of the first
- # things the backend does, and this BrowserWindow
- # should be called *right after* launching the backend.
- raise NoAuthToken(
- 'No authentication token found!')
- time.sleep(0.1)
- waiting -= 1
- token = open(path).read().strip()
- url += '#' + token
- first = True
+ url = get_authenticated_url()
self.url = url
self.closing = False
@@ -128,22 +114,10 @@ class BrowserWindow(object):
return
self.closing = True
bitmaskd.join()
- if os.path.isfile(pid):
- with open(pid) as f:
- pidno = int(f.read())
- print('[bitmask] terminating bitmaskd')
- os.kill(pidno, signal.SIGTERM)
- self.cleanup()
+ terminate(pid)
+ cleanup()
print('[bitmask] shutting down gui')
- def cleanup(self):
- print('[bitmask] cleaning up files')
- base = os.path.join(get_path_prefix(), 'leap')
- token = os.path.join(base, 'authtoken')
- pid = os.path.join(base, 'bitmaskd.pid')
- for _f in [token, pid]:
- if os.path.isfile(_f):
- os.unlink(_f)
def launch_gui():
@@ -184,7 +158,6 @@ def launch_gui():
def start_app():
from leap.bitmask.util import STANDALONE
-
mypid = os.getpid()
# Kill a previously-running process
@@ -203,12 +176,7 @@ def start_app():
from leap.bitmask.cli import bitmask_cli
return bitmask_cli.main()
- prev_auth = os.path.join(get_path_prefix(), 'leap', 'authtoken')
- try:
- os.remove(prev_auth)
- except OSError:
- pass
-
+ reset_authtoken()
launch_gui()
diff --git a/src/leap/bitmask/gui/housekeeping.py b/src/leap/bitmask/gui/housekeeping.py
new file mode 100644
index 00000000..3202f5e6
--- /dev/null
+++ b/src/leap/bitmask/gui/housekeeping.py
@@ -0,0 +1,44 @@
+import os
+
+from leap.common.config import get_path_prefix
+
+def get_authenticated_url():
+ url = "http://localhost:7070"
+ path = os.path.join(get_path_prefix(), 'leap', 'authtoken')
+ waiting = 20
+ while not os.path.isfile(path):
+ if waiting == 0:
+ # If we arrive here, something really messed up happened,
+ # because touching the token file is one of the first
+ # things the backend does, and this BrowserWindow
+ # should be called *right after* launching the backend.
+ raise NoAuthToken(
+ 'No authentication token found!')
+ time.sleep(0.1)
+ waiting -= 1
+ token = open(path).read().strip()
+ url += '#' + token
+ return url
+
+def terminate(pid):
+ if os.path.isfile(pid):
+ with open(pid) as f:
+ pidno = int(f.read())
+ print('[bitmask] terminating bitmaskd...')
+ os.kill(pidno, signal.SIGTERM)
+
+def reset_authtoken():
+ prev_auth = os.path.join(get_path_prefix(), 'leap', 'authtoken')
+ try:
+ os.remove(prev_auth)
+ except OSError:
+ pass
+
+def cleanup():
+ print('[bitmask] cleaning up files')
+ base = os.path.join(get_path_prefix(), 'leap')
+ token = os.path.join(base, 'authtoken')
+ pid = os.path.join(base, 'bitmaskd.pid')
+ for _f in [token, pid]:
+ if os.path.isfile(_f):
+ os.unlink(_f)