From 005e9ffbd8c4013eeccb6c351606229018a1d8e0 Mon Sep 17 00:00:00 2001 From: Joseph Nuthalapati Date: Fri, 29 Nov 2019 16:21:58 +0530 Subject: [PATCH] openvpn: Add client apps Closes #1702 Signed-off-by: Joseph Nuthalapati Reviewed-by: James Valleroy --- plinth/modules/openvpn/__init__.py | 4 +- plinth/modules/openvpn/manifest.py | 51 +++++++++++++++++-- plinth/modules/openvpn/templates/openvpn.html | 2 + plinth/modules/openvpn/views.py | 1 + 4 files changed, 52 insertions(+), 6 deletions(-) diff --git a/plinth/modules/openvpn/__init__.py b/plinth/modules/openvpn/__init__.py index a3d7853ab..b99b97a4d 100644 --- a/plinth/modules/openvpn/__init__.py +++ b/plinth/modules/openvpn/__init__.py @@ -28,7 +28,7 @@ from plinth.daemon import Daemon from plinth.modules.firewall.components import Firewall from plinth.utils import format_lazy -from .manifest import backup # noqa, pylint: disable=unused-import +from .manifest import backup, clients # noqa, pylint: disable=unused-import version = 3 @@ -57,6 +57,8 @@ port_forwarding_info = [('UDP', 1194)] app = None +clients = clients + class OpenVPNApp(app_module.App): """FreedomBox app for OpenVPN.""" diff --git a/plinth/modules/openvpn/manifest.py b/plinth/modules/openvpn/manifest.py index 05b241959..bd57c5431 100644 --- a/plinth/modules/openvpn/manifest.py +++ b/plinth/modules/openvpn/manifest.py @@ -18,11 +18,52 @@ Application manifest for OpenVPN. """ +from django.utils.translation import ugettext_lazy as _ + +from plinth.clients import store_url, validate from plinth.modules.backups.api import validate as validate_backup +_package_id = 'de.blinkt.openvpn' +_download_url = 'https://openvpn.net/community-downloads' -backup = validate_backup({ - 'secrets': { - 'directories': ['/etc/openvpn/'] - } -}) +backup = validate_backup({'secrets': {'directories': ['/etc/openvpn/']}}) + +clients = validate([{ + 'name': + _('OpenVPN'), + 'platforms': [{ + 'type': 'package', + 'format': 'deb', + 'name': 'openvpn', + }, { + 'type': 'package', + 'format': 'brew', + 'name': 'openvpn', + }, { + 'type': 'store', + 'os': 'android', + 'store_name': 'f-droid', + 'url': store_url('f-droid', _package_id) + }, { + 'type': 'store', + 'os': 'android', + 'store_name': 'google-play', + 'url': store_url('google-play', _package_id) + }, { + 'type': 'download', + 'os': 'gnu-linux', + 'url': _download_url, + }, { + 'type': 'download', + 'os': 'windows', + 'url': _download_url, + }] +}, { + 'name': + _('TunnelBlick'), + 'platforms': [{ + 'type': 'download', + 'os': 'macos', + 'url': 'https://tunnelblick.net/downloads.html' + }] +}]) diff --git a/plinth/modules/openvpn/templates/openvpn.html b/plinth/modules/openvpn/templates/openvpn.html index 31802f18c..71609f4af 100644 --- a/plinth/modules/openvpn/templates/openvpn.html +++ b/plinth/modules/openvpn/templates/openvpn.html @@ -35,6 +35,8 @@ {% block configuration %} + {% include "clients.html" with clients=clients enabled=is_enabled %} + {% if status.is_setup %}

{% trans "Profile" %}

diff --git a/plinth/modules/openvpn/views.py b/plinth/modules/openvpn/views.py index fd2b36f5b..668449e06 100644 --- a/plinth/modules/openvpn/views.py +++ b/plinth/modules/openvpn/views.py @@ -59,6 +59,7 @@ def index(request): return TemplateResponse( request, 'openvpn.html', { 'title': openvpn.name, + 'clients': openvpn.clients, 'description': openvpn.description, 'manual_page': openvpn.manual_page, 'port_forwarding_info': openvpn.port_forwarding_info,