diff options
author | Ruben Pollan <meskio@sindominio.net> | 2017-03-28 13:35:56 +0200 |
---|---|---|
committer | Kali Kaneko (leap communications) <kali@leap.se> | 2017-04-03 15:41:19 +0200 |
commit | ef804c1fd5a8ae307aca70853c9224b63d14a731 (patch) | |
tree | 97e69bc1ca54b3dbb43e7215a15b2f5415f5dedd | |
parent | b71f8be2993c887130a00390e46615c882de6655 (diff) |
[feat] add a check for the installation of the helpers to the API
- Resolves: #8786
-rw-r--r-- | src/leap/bitmask/cli/vpn.py | 4 | ||||
-rw-r--r-- | src/leap/bitmask/core/dispatcher.py | 3 | ||||
-rw-r--r-- | src/leap/bitmask/vpn/helpers/__init__.py | 6 | ||||
-rw-r--r-- | src/leap/bitmask/vpn/service.py | 9 | ||||
-rw-r--r-- | ui/app/lib/bitmask.js | 8 |
5 files changed, 21 insertions, 9 deletions
diff --git a/src/leap/bitmask/cli/vpn.py b/src/leap/bitmask/cli/vpn.py index e413e89..60c57aa 100644 --- a/src/leap/bitmask/cli/vpn.py +++ b/src/leap/bitmask/cli/vpn.py @@ -80,7 +80,7 @@ SUBCOMMANDS: help='provider to check the VPN') subargs = parser.parse_args(raw_args) - provider = None + provider = "" if subargs.provider: provider = subargs.provider else: @@ -88,7 +88,7 @@ SUBCOMMANDS: try: _, provider = uid.split('@') except ValueError: - raise ValueError("A provider is needed to start the VPN") + pass self.data += ['check', provider] diff --git a/src/leap/bitmask/core/dispatcher.py b/src/leap/bitmask/core/dispatcher.py index 29a07e6..c026c49 100644 --- a/src/leap/bitmask/core/dispatcher.py +++ b/src/leap/bitmask/core/dispatcher.py @@ -217,8 +217,7 @@ class VPNCmd(SubCommand): try: provider = parts[2] except IndexError: - raise DispatchError( - 'wrong number of arguments: expected 1, got none') + provider = None d = vpn.do_check(provider) return d diff --git a/src/leap/bitmask/vpn/helpers/__init__.py b/src/leap/bitmask/vpn/helpers/__init__.py index 8905adf..69a9a5f 100644 --- a/src/leap/bitmask/vpn/helpers/__init__.py +++ b/src/leap/bitmask/vpn/helpers/__init__.py @@ -1,5 +1,6 @@ from os import remove, chmod from shutil import copyfile +import os.path import sys from leap.bitmask.vpn.constants import IS_LINUX @@ -21,6 +22,11 @@ if IS_LINUX: remove(helper_to) remove(polkit_to) + def check(): + helper = os.path.exists(helper_to) + polkit = os.path.exists(polkit_to) + return helper and polkit + def main(): if sys.argv[-1] == 'install': diff --git a/src/leap/bitmask/vpn/service.py b/src/leap/bitmask/vpn/service.py index 17e20af..a7dce3d 100644 --- a/src/leap/bitmask/vpn/service.py +++ b/src/leap/bitmask/vpn/service.py @@ -27,7 +27,7 @@ from twisted.internet import defer from leap.bitmask.hooks import HookableService from leap.bitmask.vpn.vpn import VPNManager from leap.bitmask.vpn._checks import is_service_ready, get_vpn_cert_path -from leap.bitmask.vpn import privilege +from leap.bitmask.vpn import privilege, helpers from leap.common.config import get_path_prefix from leap.common.files import check_and_fix_urw_only @@ -97,10 +97,13 @@ class VPNService(HookableService): return status - def do_check(self, domain): + def do_check(self, domain=None): """Check whether the VPN Service is properly configured, and can be started""" - return {'vpn_ready': is_service_ready(domain)} + ret = {'installed': helpers.check()} + if domain: + ret['vpn_ready'] = is_service_ready(domain) + return ret @defer.inlineCallbacks def do_get_cert(self, username): diff --git a/ui/app/lib/bitmask.js b/ui/app/lib/bitmask.js index b0ada5b..dd91436 100644 --- a/ui/app/lib/bitmask.js +++ b/ui/app/lib/bitmask.js @@ -255,10 +255,14 @@ var bitmask = function(){ /** * Check if the VPN is ready to start and has the cert downloaded * - * @return {Promise<bool>} User readable status + * @return {Promise<{'vpn_ready': bool, + * 'installed': bool}>} */ check: function(provider) { - return call(['vpn', 'check', provider]) + if (typeof provider !== 'string') { + provider = ""; + } + return call(['vpn', 'check', provider]); }, /** |