From 823e06271fe1915e5989629d0e0d7ea0d5540971 Mon Sep 17 00:00:00 2001 From: Prachi Date: Tue, 10 Oct 2017 17:29:38 +0200 Subject: [PATCH] Add client information for modules Added information for the following: -diaspora -ejabbered -infinoted -ikiwiki -jsxc -matrixsynapse -minetest -mumble -quassel -radicale -repro -restore -roundcube -shaarli -synchting -tor -shaarli -transmission -ttrss Reviewed-by: James Valleroy --- plinth/modules/deluge/__init__.py | 2 + plinth/modules/deluge/manifest.py | 34 ++++++ plinth/modules/diaspora/__init__.py | 3 + plinth/modules/diaspora/manifest.py | 50 +++++++++ plinth/modules/ejabberd/__init__.py | 3 + plinth/modules/ejabberd/manifest.py | 132 +++++++++++++++++++++++ plinth/modules/ikiwiki/__init__.py | 3 + plinth/modules/ikiwiki/manifest.py | 28 +++++ plinth/modules/infinoted/__init__.py | 3 + plinth/modules/infinoted/manifest.py | 43 ++++++++ plinth/modules/jsxc/__init__.py | 3 + plinth/modules/jsxc/manifest.py | 31 ++++++ plinth/modules/matrixsynapse/__init__.py | 3 + plinth/modules/matrixsynapse/manifest.py | 70 ++++++++++++ plinth/modules/minetest/__init__.py | 3 + plinth/modules/minetest/manifest.py | 53 +++++++++ plinth/modules/mumble/__init__.py | 3 + plinth/modules/mumble/manifest.py | 89 +++++++++++++++ plinth/modules/quassel/__init__.py | 3 + plinth/modules/quassel/manifest.py | 50 +++++++++ plinth/modules/radicale/__init__.py | 3 + plinth/modules/radicale/manifest.py | 66 ++++++++++++ plinth/modules/repro/__init__.py | 3 + plinth/modules/repro/manifest.py | 89 +++++++++++++++ plinth/modules/restore/__init__.py | 3 + plinth/modules/restore/manifest.py | 30 ++++++ plinth/modules/roundcube/__init__.py | 3 + plinth/modules/roundcube/manifest.py | 30 ++++++ plinth/modules/shaarli/__init__.py | 3 + plinth/modules/shaarli/manifest.py | 30 ++++++ plinth/modules/syncthing/__init__.py | 3 + plinth/modules/syncthing/manifest.py | 67 ++++++++++++ plinth/modules/tor/__init__.py | 3 + plinth/modules/tor/manifest.py | 74 +++++++++++++ plinth/modules/transmission/__init__.py | 54 ++++------ plinth/modules/transmission/manifest.py | 30 ++++++ plinth/modules/ttrss/__init__.py | 3 + plinth/modules/ttrss/manifest.py | 45 ++++++++ 38 files changed, 1115 insertions(+), 33 deletions(-) create mode 100644 plinth/modules/deluge/manifest.py create mode 100644 plinth/modules/diaspora/manifest.py create mode 100644 plinth/modules/ejabberd/manifest.py create mode 100644 plinth/modules/ikiwiki/manifest.py create mode 100644 plinth/modules/infinoted/manifest.py create mode 100644 plinth/modules/jsxc/manifest.py create mode 100644 plinth/modules/matrixsynapse/manifest.py create mode 100644 plinth/modules/minetest/manifest.py create mode 100644 plinth/modules/mumble/manifest.py create mode 100644 plinth/modules/quassel/manifest.py create mode 100644 plinth/modules/radicale/manifest.py create mode 100644 plinth/modules/repro/manifest.py create mode 100644 plinth/modules/restore/manifest.py create mode 100644 plinth/modules/roundcube/manifest.py create mode 100644 plinth/modules/shaarli/manifest.py create mode 100644 plinth/modules/syncthing/manifest.py create mode 100644 plinth/modules/tor/manifest.py create mode 100644 plinth/modules/transmission/manifest.py create mode 100644 plinth/modules/ttrss/manifest.py diff --git a/plinth/modules/deluge/__init__.py b/plinth/modules/deluge/__init__.py index 344ed0dbb..285ce957c 100644 --- a/plinth/modules/deluge/__init__.py +++ b/plinth/modules/deluge/__init__.py @@ -28,6 +28,7 @@ from plinth import service as service_module from plinth.client import web_client from plinth.menu import main_menu from plinth.modules.users import add_group +from .manifest import clients version = 2 @@ -53,6 +54,7 @@ description = [ reserved_usernames = ['debian-deluged'] +clients = clients web_clients = [web_client(name='Deluge', url='/deluge')] diff --git a/plinth/modules/deluge/manifest.py b/plinth/modules/deluge/manifest.py new file mode 100644 index 000000000..3306ecb7b --- /dev/null +++ b/plinth/modules/deluge/manifest.py @@ -0,0 +1,34 @@ +# +# This file is part of Plinth. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero 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 Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# + +from django.utils.translation import ugettext_lazy as _ + +clients = [ + { + 'name': _('Deluge'), + 'description': _('Bittorrent client written in Python/PyGTK '), + 'platforms': [ + { + 'type': 'web', + 'relative_path': '/deluge' + }, + { + 'type': 'apt', + 'os': 'Debian', + 'package_name': 'deluge' + }] + }] diff --git a/plinth/modules/diaspora/__init__.py b/plinth/modules/diaspora/__init__.py index 6aed51458..7cbdeee30 100644 --- a/plinth/modules/diaspora/__init__.py +++ b/plinth/modules/diaspora/__init__.py @@ -24,6 +24,7 @@ from plinth import actions, action_utils, frontpage, \ service as service_module from plinth.errors import DomainNotRegisteredError from plinth.menu import main_menu +from .manifest import clients domain_name_file = "/etc/diaspora/domain_name" lazy_domain_name = None # To avoid repeatedly reading from file @@ -69,6 +70,8 @@ description = [ ' federate with other diaspora* pods.') ] +clients = clients + def init(): """Initialize the Diaspora module.""" diff --git a/plinth/modules/diaspora/manifest.py b/plinth/modules/diaspora/manifest.py new file mode 100644 index 000000000..86fb0ce0c --- /dev/null +++ b/plinth/modules/diaspora/manifest.py @@ -0,0 +1,50 @@ +# +# This file is part of Plinth. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero 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 Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# + +from django.utils.translation import ugettext_lazy as _ + +from plinth.utils import format_lazy +from . import get_configured_domain_name + +clients = [ + { + 'name': _('dandelion*'), + 'description': _('It is an unofficial webview based client for the ' + 'community-run, distributed social network diaspora*'), + 'platforms': [ + { + 'type': 'store', + 'os': 'Android', + 'os_version': '>4.2.0', + 'store_type': 'fdroid_store', + 'url': 'https://f-droid.org/repository/browse/?fdid=com' + '.github.dfa.diaspora_android ', + 'fully_qualified_name': 'com.github.dfa.diaspora_android' + } + ] + }, + { + 'name': _('diaspora*'), + 'platforms': [ + { + 'type': 'web', + 'url': format_lazy('https://diaspora.{host}', + host=get_configured_domain_name()) + } + ] + } +] diff --git a/plinth/modules/ejabberd/__init__.py b/plinth/modules/ejabberd/__init__.py index b2fa81999..e877e2e99 100644 --- a/plinth/modules/ejabberd/__init__.py +++ b/plinth/modules/ejabberd/__init__.py @@ -34,6 +34,7 @@ from plinth import service as service_module from plinth.menu import main_menu from plinth.signals import pre_hostname_change, post_hostname_change from plinth.signals import domainname_change +from .manifest import clients from plinth.client import web_client @@ -64,6 +65,8 @@ web_clients = [web_client(name='JSXC', url='/plinth/apps/jsxc'), web_client(name='XMPP client', url='http://xmpp.org/xmpp' '-software/clients')] +clients = clients + reserved_usernames = ['ejabberd'] service = None diff --git a/plinth/modules/ejabberd/manifest.py b/plinth/modules/ejabberd/manifest.py new file mode 100644 index 000000000..aa0e9f2ec --- /dev/null +++ b/plinth/modules/ejabberd/manifest.py @@ -0,0 +1,132 @@ +# +# This file is part of Plinth. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero 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 Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# + +from django.utils.translation import ugettext_lazy as _ + +from plinth.modules.jsxc import manifest as jsxc_manifest + +clients = [ + { + 'name': _('yaxim'), + 'platforms': [ + { + 'type': 'store', + 'os': 'Android', + 'store_type': 'google_play_store', + 'fully_qualified_name': 'org.yaxim.androidclient', + 'url': 'https://play.google.com/store/apps/details?id=org' + '.yaxim.androidclient ' + }] + }, + { + 'name': _('Bruno'), + 'description': _('Bruno is a themed version of the open source ' + 'yaxim app.'), + 'platforms': [ + { + 'type': 'store', + 'os': 'Android', + 'store_type': 'google_play_store', + 'fully_qualified_name': 'org.yaxim.bruno', + 'url': 'https://play.google.com/store/apps/details?id' + '=org.yaxim.bruno ' + } + ] + }, + { + 'name': _('Chat secure - Encrypted Messenger'), + 'description': _('ChatSecure is a free and open source ' + 'messaging app that features OTR encryption ' + 'over XMPP. You can connect to an existing ' + 'Google account, create new accounts on ' + 'public XMPP servers (including via Tor), ' + 'or even connect to your own server for ' + 'extra security.'), + 'platforms': [ + { + 'type': 'store', + 'os': 'iOS', + 'store_type': 'apple_store', + 'url': 'https://itunes.apple.com/us/app/chatsecure' + '/id464200063 ' + } + ] + }, + { + 'name': _('Conversations'), + 'platforms': [ + { + 'type': 'store', + 'os': 'Android', + 'store_type': 'google_play_store', + 'url': 'https://play.google.com/store/apps/details?id' + '=eu.siacs.conversations ', + 'fully_qualified_name': 'eu.siacs.conversations' + } + ] + }, + { + 'name': _('Dino'), + 'platforms': [ + { + 'type': 'download', + 'os': 'Debian', + 'url': 'https://download.opensuse.org/repositories/network' + ':/messaging:/xmpp:/dino/Debian_9.0/amd64/dino_0.0' + '~git178.9d8e1e8_amd64.deb', + } + ] + }, + { + 'name': _('Gajim'), + 'platforms': [ + { + 'type': 'apt', + 'os': 'Debian', + 'package_name': 'gajim' + }, + { + 'type': 'download', + 'os': 'Windows', + 'url': 'https://gajim.org/downloads/0.16/gajim-0.16.8-2.exe' + } + ] + }, + { + 'name': _('OneTeam'), + 'platforms': [ + { + 'type': 'download', + 'os': 'Windows', + 'url': 'https://download.process-one.net/oneteam/release' + '-installers/OneTeam.msi' + }, + { + 'type': 'download', + 'os': 'macOS', + 'url': 'https://download.process-one.net/oneteam/release' + '-installers/OneTeam.dmg ' + }, + { + 'type': 'download', + 'os': 'Linux', + 'url': 'https://download.process-one.net/oneteam/release' + '-installers/oneteam.tar.bz2 ' + } + ] + } +].append(jsxc_manifest.clients) diff --git a/plinth/modules/ikiwiki/__init__.py b/plinth/modules/ikiwiki/__init__.py index 2407e0e48..9aceebe2c 100644 --- a/plinth/modules/ikiwiki/__init__.py +++ b/plinth/modules/ikiwiki/__init__.py @@ -29,6 +29,7 @@ from plinth import frontpage from plinth import service as service_module from plinth.menu import main_menu from plinth.client import web_client +from .manifest import clients version = 1 @@ -58,6 +59,8 @@ description = [ 'permissions or add new users.'), box_name=_(cfg.box_name)) ] +clients = clients + web_clients = [web_client(name='ikiwiki', url='/ikiwiki')] def init(): diff --git a/plinth/modules/ikiwiki/manifest.py b/plinth/modules/ikiwiki/manifest.py new file mode 100644 index 000000000..e138050bd --- /dev/null +++ b/plinth/modules/ikiwiki/manifest.py @@ -0,0 +1,28 @@ +# +# This file is part of Plinth. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero 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 Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# + +from django.utils.translation import ugettext_lazy as _ + +clients = [ + { + 'name': _('ikiwiki'), + 'platforms': [{ + 'type': 'web', + 'relative_url': '/ikiwiki' + }] + } +] diff --git a/plinth/modules/infinoted/__init__.py b/plinth/modules/infinoted/__init__.py index 294c8605e..d074e5bb0 100644 --- a/plinth/modules/infinoted/__init__.py +++ b/plinth/modules/infinoted/__init__.py @@ -30,6 +30,7 @@ from plinth import service as service_module from plinth.menu import main_menu from plinth.utils import format_lazy from plinth.views import ServiceView +from .manifest import clients from plinth.client import desktop_client @@ -57,6 +58,8 @@ description = [ desktop_clients = [desktop_client(name='Gobby', url='https://gobby.github.io/')] +clients = clients + def init(): """Initialize the infinoted module.""" diff --git a/plinth/modules/infinoted/manifest.py b/plinth/modules/infinoted/manifest.py new file mode 100644 index 000000000..85d7a2207 --- /dev/null +++ b/plinth/modules/infinoted/manifest.py @@ -0,0 +1,43 @@ +# +# This file is part of Plinth. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero 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 Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# + +from django.utils.translation import ugettext_lazy as _ + +from plinth.utils import format_lazy +from plinth import cfg + +clients = [ + { + 'name': _('Gobby'), + 'description': _('Gobby is a collaborative text editor'), + 'usage': format_lazy(_('start Gobby and select "Connect to Server" and ' + 'enter your {box_name}\'s domain name.'), + box_name=_(cfg.box_name)), + 'platforms': [ + { + 'type': 'download', + 'os': 'Windows', + 'url': 'http://releases.0x539.de/gobby/gobby-stable.exe' + }, + { + 'type': 'apt', + 'os': 'Debian', + 'package_name': 'gobby-infinote' + } + ] + } +] diff --git a/plinth/modules/jsxc/__init__.py b/plinth/modules/jsxc/__init__.py index 0d7a8c3b6..ca1cb7559 100644 --- a/plinth/modules/jsxc/__init__.py +++ b/plinth/modules/jsxc/__init__.py @@ -27,6 +27,7 @@ import socket from plinth import frontpage from plinth import service as service_module from plinth.menu import main_menu +from .manifest import clients version = 1 @@ -43,6 +44,8 @@ description = [ 'server running locally.'), ] +clients = clients + service = None logger = logging.getLogger(__name__) diff --git a/plinth/modules/jsxc/manifest.py b/plinth/modules/jsxc/manifest.py new file mode 100644 index 000000000..313db43d0 --- /dev/null +++ b/plinth/modules/jsxc/manifest.py @@ -0,0 +1,31 @@ +# +# This file is part of Plinth. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero 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 Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# + +from django.utils.translation import ugettext_lazy as _ + +clients = [ + { + 'name': _('JSXC'), + 'platforms': [ + { + 'type': 'apt', + 'os': 'Debian', + 'package_name': 'libjs-jsxc' + } + ] + } +] diff --git a/plinth/modules/matrixsynapse/__init__.py b/plinth/modules/matrixsynapse/__init__.py index 84d0cc09d..f4e96fdaf 100644 --- a/plinth/modules/matrixsynapse/__init__.py +++ b/plinth/modules/matrixsynapse/__init__.py @@ -32,6 +32,7 @@ from plinth import frontpage from plinth import service as service_module from plinth.client import desktop_client, web_client, mobile_client from plinth.menu import main_menu +from .manifest import clients version = 2 @@ -79,6 +80,8 @@ logger = logging.getLogger(__name__) SERVER_NAME_PATH = "/etc/matrix-synapse/conf.d/server_name.yaml" CONFIG_FILE_PATH = '/etc/matrix-synapse/homeserver.yaml' +clients = clients + def init(): """Initialize the matrix-synapse module.""" diff --git a/plinth/modules/matrixsynapse/manifest.py b/plinth/modules/matrixsynapse/manifest.py new file mode 100644 index 000000000..5964826ea --- /dev/null +++ b/plinth/modules/matrixsynapse/manifest.py @@ -0,0 +1,70 @@ +# +# This file is part of Plinth. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero 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 Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# + +from django.utils.translation import ugettext_lazy as _ + +clients = [ + { + 'name': _('Riot'), + 'platforms': [ + { + 'type': 'store', + 'os': 'Android', + 'store_type': 'google_play_store', + 'fully_qualified_name': 'im.vector.alpha', + 'url': 'https://play.google.com/store/apps/details?id=im' + '.vector.alpha ' + }, + { + 'type': 'store', + 'os': 'Android', + 'os_version': '>=6.0', + 'store_type': 'fdroid_store', + 'fully_qualified_name': 'im.vector.alpha', + 'url': 'https://f-droid.org/packages/im.vector.alpha/' + }, + { + 'type': 'web', + 'url': 'https://riot.im/app/#/home' + }, + { + 'type': 'download', + 'os': 'macOS', + 'url': 'https://riot.im/download/desktop/install/macos' + '/Riot-0.12.4.dmg' + }, + { + 'type': 'download', + 'os': 'Windows(32 bit)', + 'os_version': '>=7', + 'url': 'https://riot.im/download/desktop/install/win32/ia32/' + 'Riot%20Setup%200.12.4-ia32.exe' + }, + { + 'type': 'download', + 'os': 'Windows(64 bit)', + 'os_version': '>=7', + 'url': 'https://riot.im/download/desktop/install/win32/x64/Riot' + '%20Setup%200.12.4.exe' + }, + { + 'type': 'download', + 'os': 'Debian/Ubuntu', + 'url': 'https://riot.im/packages/debian/' + } + ] + }] diff --git a/plinth/modules/minetest/__init__.py b/plinth/modules/minetest/__init__.py index 74e04de05..7b05f5a74 100644 --- a/plinth/modules/minetest/__init__.py +++ b/plinth/modules/minetest/__init__.py @@ -32,6 +32,7 @@ from plinth import service as service_module from plinth.menu import main_menu from plinth.utils import format_lazy from plinth.client import desktop_client, mobile_client +from .manifest import clients version = 2 @@ -59,6 +60,8 @@ description = [ 'is needed.'), box_name=_(cfg.box_name)), ] +clients = clients + desktop_clients = [desktop_client(name='Minetest', url= 'https://www.minetest.net/downloads/')] diff --git a/plinth/modules/minetest/manifest.py b/plinth/modules/minetest/manifest.py new file mode 100644 index 000000000..bc637c5b9 --- /dev/null +++ b/plinth/modules/minetest/manifest.py @@ -0,0 +1,53 @@ +# +# This file is part of Plinth. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero 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 Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# + +from django.utils.translation import ugettext_lazy as _ + +clients = [ + { + 'name': _('Minetest'), + 'platforms': [ + { + 'type': 'download', + 'os': 'Windows(64-bit)', + 'os_version': 'XP, Vista, >=7', + 'url': 'https://github.com/minetest/minetest/releases' + '/download/0.4.16/minetest-0.4.16-win64.zip ' + }, + { + 'type': 'store', + 'os': 'Android', + 'store_type': 'google_play_store', + 'fully_qualified_name': 'net.minetest.minetest', + 'url': 'https://play.google.com/store/apps/details?id=net' + '.minetest.minetest ' + }, + { + 'type': 'store', + 'os': 'Android', + 'store_type': 'fdroid_store', + 'fully_qualified_name': 'net.minetest.minetest', + 'url': 'https://f-droid.org/packages/net.minetest.minetest/ ' + }, + { + 'type': 'apt', + 'os': 'Debian', + 'package_name': 'minetest' + } + ] + } +] diff --git a/plinth/modules/mumble/__init__.py b/plinth/modules/mumble/__init__.py index c618f1e30..9b1a5385d 100644 --- a/plinth/modules/mumble/__init__.py +++ b/plinth/modules/mumble/__init__.py @@ -29,6 +29,7 @@ from plinth import service as service_module from plinth.menu import main_menu from plinth.views import ServiceView from plinth.client import desktop_client, mobile_client +from .manifest import clients version = 1 @@ -52,6 +53,8 @@ description = [ 'from your desktop and Android devices are available.') ] +clients = clients + desktop_clients = [ desktop_client(name='Mumble',url= 'https://wiki.mumble.info/wiki/Main_Page')] diff --git a/plinth/modules/mumble/manifest.py b/plinth/modules/mumble/manifest.py new file mode 100644 index 000000000..db211000f --- /dev/null +++ b/plinth/modules/mumble/manifest.py @@ -0,0 +1,89 @@ +# +# This file is part of Plinth. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero 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 Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# + +from django.utils.translation import ugettext_lazy as _ + +clients = [ + { + 'name': _('Mumble'), + 'platforms': [ + { + 'type': 'download', + 'os': 'Windows(32-bit)', + 'url': 'https://github.com/mumble-voip/mumble/releases' + '/download/1.2.19/mumble-1.2.19.msi ' + }, + { + 'type': 'download', + 'os': 'Windows(64-bit)', + 'url': 'https://dl.mumble.info/mumble-1.3.0~2569~gd196a4b' + '~snapshot.winx64.msi ' + }, + { + 'type': 'download', + 'os': 'macOS', + 'url': 'https://github.com/mumble-voip/mumble/releases' + '/download/1.2.19/Mumble-1.2.19.dmg ' + }, + { + 'type': 'apt', + 'os': 'Debian', + 'package_name': 'mumble' + }, + { + 'type': 'store', + 'os': 'iOS', + 'os_version': '>=8.0', + 'store_type': 'apple_store', + 'url': 'https://itunes.apple.com/us/app/mumble/id443472808' + } + ] + }, + { + 'name': _('Plumble'), + 'platforms': [ + { + 'type': 'store', + 'os': 'Android', + 'store_type': 'google_play_store', + 'url': 'https://play.google.com/store/apps/details?id=com' + '.morlunk.mumbleclient.free ', + 'fully_qualified_name': 'com.morlunk.mumbleclient' + }, + { + 'type': 'store', + 'os': 'Android', + 'store_type': 'fdroid_store', + 'url': 'https://play.google.com/store/apps/details?id=com' + '.morlunk.mumbleclient.free ', + 'fully_qualified_name': 'com.morlunk.mumbleclient' + } + ] + }, + { + 'name': _('Mumblefly'), + 'platforms': [ + { + 'type': 'store', + 'os': 'iOS', + 'os_version': '>=7.0', + 'store_type': 'apple_store', + 'url': 'https://itunes.apple.com/dk/app/mumblefy/id858752232' + } + ] + } +] diff --git a/plinth/modules/quassel/__init__.py b/plinth/modules/quassel/__init__.py index 5aa3d69f8..ba8b510df 100644 --- a/plinth/modules/quassel/__init__.py +++ b/plinth/modules/quassel/__init__.py @@ -31,6 +31,7 @@ from plinth.menu import main_menu from plinth.utils import format_lazy from plinth.views import ServiceView from plinth.client import mobile_client, desktop_client +from .manifest import clients version = 1 @@ -61,6 +62,8 @@ description = [ 'are available.'), ] +clients = clients + desktop_clients = [ desktop_client(name='Quassel', url='http://quassel-irc.org/downloads')] diff --git a/plinth/modules/quassel/manifest.py b/plinth/modules/quassel/manifest.py new file mode 100644 index 000000000..5e64a83bc --- /dev/null +++ b/plinth/modules/quassel/manifest.py @@ -0,0 +1,50 @@ +# +# This file is part of Plinth. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero 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 Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# + +from django.utils.translation import ugettext_lazy as _ + +clients = [ + { + 'name': _('Quassel'), + 'platforms': [ + { + 'type': 'download', + 'os': 'macOS', + 'url': 'http://quassel-irc.org/pub/QuasselClient_MacOSX' + '-x86_64_0.12.4.dmg ' + }, + { + 'type': 'apt', + 'os': 'Debian', + 'package_name': 'quassel-client' + } + ] + }, + { + 'name': _('Quassseldroid'), + 'platforms': [ + { + 'type': 'store', + 'os': 'Android', + 'store_type': 'google_play_store', + 'url': 'https://play.google.com/store/apps/details?id=com' + '.iskrembilen.quasseldroid', + 'fully_qualified_name': 'com.iskrembilen.quasseldroid' + } + ] + } +] diff --git a/plinth/modules/radicale/__init__.py b/plinth/modules/radicale/__init__.py index b7a75d6d2..5a8ef0777 100644 --- a/plinth/modules/radicale/__init__.py +++ b/plinth/modules/radicale/__init__.py @@ -31,6 +31,7 @@ from plinth import service as service_module from plinth.menu import main_menu from plinth.utils import format_lazy from plinth.client import desktop_client, mobile_client +from .manifest import clients version = 1 @@ -54,6 +55,8 @@ description = [ 'with a {box_name} login.'), box_name=_(cfg.box_name)), ] +clients = clients + desktop_clients = [desktop_client(name='GNOME Calendar', url='https://wiki.gnome.org/Apps/Calendar'), desktop_client(name='Contacts', diff --git a/plinth/modules/radicale/manifest.py b/plinth/modules/radicale/manifest.py new file mode 100644 index 000000000..180ca797f --- /dev/null +++ b/plinth/modules/radicale/manifest.py @@ -0,0 +1,66 @@ +# +# This file is part of Plinth. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero 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 Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# + +from django.utils.translation import ugettext_lazy as _ + +clients = [ + { + 'name': _('DAVDroid'), + 'usage': _('Enter the URL of the Radicale server (e.g. ' + 'http://localhost:5232) and your user name. DAVdroid will ' + 'show all existing calendars and address books and you can ' + 'create new.'), + 'platforms': [ + { + 'type': 'store', + 'os': 'Android', + 'store_type': 'google_play_store', + 'url': 'https://play.google.com/store/apps/details?id=at' + '.bitfire.davdroid', + 'fully_qualified_name': 'at.bitfire.davdroid' + } + ] + }, + { + 'name': _('GNOME Calendar'), + 'platforms': [ + { + 'type': 'apt', + 'os': 'Debian', + 'package-name': 'gnome-calendar' + } + ] + }, + { + 'name': _('Evolution'), + 'description': _('Evolution is a personal information management ' + 'application that provides integrated mail, ' + 'calendaring and address book functionality.'), + 'usage': _('In Evolution add a new calendar and address book ' + 'respectively with WebDAV. Enter the URL of the Radicale ' + 'server (e.g. http://localhost:5232) and your user name. ' + 'Clicking on the search button will list the existing ' + 'calendars and address books.'), + 'platforms': [ + { + 'type': 'apt', + 'os': 'Debian', + 'package-name': 'gnome-calendar' + } + ] + } +] diff --git a/plinth/modules/repro/__init__.py b/plinth/modules/repro/__init__.py index 00adcfa50..4fa491e9b 100644 --- a/plinth/modules/repro/__init__.py +++ b/plinth/modules/repro/__init__.py @@ -29,6 +29,7 @@ from plinth import service as service_module from plinth.menu import main_menu from plinth.views import ServiceView from plinth.client import desktop_client, mobile_client +from .manifest import clients version = 2 @@ -61,6 +62,8 @@ description = [ 'service and re-enable it.'), ] +clients = clients + desktop_clients = [desktop_client(name='Jitsi',url='https://jitsi.org/')] mobile_clients = [ diff --git a/plinth/modules/repro/manifest.py b/plinth/modules/repro/manifest.py new file mode 100644 index 000000000..3847d5fb3 --- /dev/null +++ b/plinth/modules/repro/manifest.py @@ -0,0 +1,89 @@ +# +# This file is part of Plinth. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero 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 Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# + +from django.utils.translation import ugettext_lazy as _ + +clients = [ + { + 'name': _('Jitsi Meet'), + 'description': _('Jitsi is a set of open-source projects that allows ' + 'you to easily build and deploy secure ' + 'videoconferencing solutions. At the heart of Jitsi ' + 'are Jitsi Videobridge and Jitsi Meet, which let you ' + 'have conferences on the internet, while other ' + 'projects in the community enable other features ' + 'such as audio, dial-in, recording, ' + 'and simulcasting.'), + 'platforms': [ + { + 'type': 'store', + 'os': 'Android', + 'store_type': 'google_play_store', + 'fully_qualified_name': 'org.jitsi.meet', + 'url': 'https://play.google.com/store/apps/details?id=org' + '.jitsi.meet ' + }, + { + 'type': 'store', + 'os': 'iOS', + 'store_type': 'apple_store', + 'url': 'https://itunes.apple.com/in/app/jitsi-meet/id1165103905' + }, + { + 'type': 'download', + 'os': 'Linux', + 'url': 'https://download.jitsi.org/jitsi/debian/' + }, + { + 'type': 'dnf', + 'os': 'Linux', + 'package_name': 'jitsi' + }, + { + 'type': 'download', + 'os': 'macOS', + 'url': 'https://download.jitsi.org/jitsi/macosx/jitsi-latest' + '.dmg ' + }, + { + 'type': 'download', + 'os': 'Windows', + 'url': 'https://download.jitsi.org/jitsi/windows/jitsi-latest' + '-x86.exe ' + }, + { + 'type': 'download', + 'os': 'macOS', + 'url': 'https://download.jitsi.org/jitsi/macosx/jitsi-latest' + '.dmg ' + } + ] + }, + { + 'name': _('CSipSimple'), + 'platforms': [ + { + 'type': 'store', + 'os': 'Android', + 'store_type': 'google_play_store', + 'fully_qualified_name': 'com.csipsimple', + 'url': 'https://play.google.com/store/apps/details?id=com' + '.csipsimple ' + } + ] + } +] diff --git a/plinth/modules/restore/__init__.py b/plinth/modules/restore/__init__.py index db3e09c32..4cd8ed8b5 100644 --- a/plinth/modules/restore/__init__.py +++ b/plinth/modules/restore/__init__.py @@ -26,6 +26,7 @@ from plinth import service as service_module from plinth.menu import main_menu from plinth.utils import format_lazy from plinth.client import web_client +from .manifest import clients version = 1 @@ -51,6 +52,8 @@ description = [ 'reStore web-interface.') ] +clients = clients + web_clients = [web_client(name='reStore web-interface', url='/restore')] reserved_usernames = ['node-restore'] diff --git a/plinth/modules/restore/manifest.py b/plinth/modules/restore/manifest.py new file mode 100644 index 000000000..385484751 --- /dev/null +++ b/plinth/modules/restore/manifest.py @@ -0,0 +1,30 @@ +# +# This file is part of Plinth. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero 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 Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# + +from django.utils.translation import ugettext_lazy as _ + +clients = [ + { + 'name': _('reStore'), + 'platforms': [ + { + 'type': 'web', + 'relative_url': '/restore' + } + ] + } +] diff --git a/plinth/modules/roundcube/__init__.py b/plinth/modules/roundcube/__init__.py index 015ddd7cc..5ebdfc062 100644 --- a/plinth/modules/roundcube/__init__.py +++ b/plinth/modules/roundcube/__init__.py @@ -27,6 +27,7 @@ from plinth import frontpage from plinth import service as service_module from plinth.menu import main_menu from plinth.client import web_client +from .manifest import clients version = 1 @@ -59,6 +60,8 @@ description = [ '>https://www.google.com/settings/security/lesssecureapps).'), ] +clients = clients + web_clients = [web_client('Roundcube', '/roundcube')] service = None diff --git a/plinth/modules/roundcube/manifest.py b/plinth/modules/roundcube/manifest.py new file mode 100644 index 000000000..b17432ec7 --- /dev/null +++ b/plinth/modules/roundcube/manifest.py @@ -0,0 +1,30 @@ +# +# This file is part of Plinth. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero 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 Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# + +from django.utils.translation import ugettext_lazy as _ + +clients = [ + { + 'name': _('Roundcube'), + 'platforms': [ + { + 'type': 'web', + 'relative_url': '/roundcube' + } + ] + } +] diff --git a/plinth/modules/shaarli/__init__.py b/plinth/modules/shaarli/__init__.py index 68de45cfc..814cb9ec6 100644 --- a/plinth/modules/shaarli/__init__.py +++ b/plinth/modules/shaarli/__init__.py @@ -27,6 +27,7 @@ from plinth import frontpage from plinth import service as service_module from plinth.menu import main_menu from plinth.client import web_client +from .manifest import clients version = 1 @@ -46,6 +47,8 @@ description = [ 'visit.'), ] +clients = clients + web_clients = [web_client(name='Shaarli', url='/shaarli')] service = None diff --git a/plinth/modules/shaarli/manifest.py b/plinth/modules/shaarli/manifest.py new file mode 100644 index 000000000..e65df1039 --- /dev/null +++ b/plinth/modules/shaarli/manifest.py @@ -0,0 +1,30 @@ +# +# This file is part of Plinth. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero 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 Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# + +from django.utils.translation import ugettext_lazy as _ + +clients = [ + { + 'name': _('Shaarli'), + 'platforms': [ + { + 'type': 'web', + 'relative_url': '/shaarli' + } + ] + } +] diff --git a/plinth/modules/syncthing/__init__.py b/plinth/modules/syncthing/__init__.py index fcc24c096..a905e6ab6 100644 --- a/plinth/modules/syncthing/__init__.py +++ b/plinth/modules/syncthing/__init__.py @@ -29,6 +29,7 @@ from plinth import service as service_module from plinth.menu import main_menu from plinth.utils import format_lazy from plinth.client import desktop_client, mobile_client, web_client +from .manifest import clients version = 1 @@ -59,6 +60,8 @@ description = [ 'also available.'), ] +clients = clients + web_clients = [web_client(name='Syncthing', url='/syncthing')] desktop_clients = [desktop_client(name='Syncthing', diff --git a/plinth/modules/syncthing/manifest.py b/plinth/modules/syncthing/manifest.py new file mode 100644 index 000000000..c85537dc5 --- /dev/null +++ b/plinth/modules/syncthing/manifest.py @@ -0,0 +1,67 @@ +# +# This file is part of Plinth. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero 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 Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# + +from django.utils.translation import ugettext_lazy as _ + +clients = [ + { + 'name': _('Syncthing'), + 'platforms': [ + { + 'type': 'apt', + 'os': 'Debian/Ubuntu', + 'usage': _('For more usage information refer to /transmission.') ] -web_clients = [web_client(name='Transmission', url='/transmission')] +clients = clients reserved_usernames = ['debian-transmission'] @@ -61,14 +62,10 @@ def init(): global service setup_helper = globals()['setup_helper'] if setup_helper.get_state() != 'needs-setup': - service = service_module.Service( - managed_services[0], - name, - ports=['http', 'https'], - is_external=True, - is_enabled=is_enabled, - enable=enable, - disable=disable) + service = service_module.Service(managed_services[0], name, ports=[ + 'http', 'https' + ], is_external=True, is_enabled=is_enabled, enable=enable, + disable=disable) if is_enabled(): add_shortcut() @@ -82,41 +79,32 @@ def setup(helper, old_version=None): 'rpc-whitelist-enabled': False, 'rpc-authentication-required': False } - helper.call( - 'post', - actions.superuser_run, - 'transmission', ['merge-configuration'], - input=json.dumps(new_configuration).encode()) + helper.call('post', actions.superuser_run, 'transmission', + ['merge-configuration'], + input=json.dumps(new_configuration).encode()) helper.call('post', actions.superuser_run, 'transmission', ['enable']) global service if service is None: - service = service_module.Service( - managed_services[0], - name, - ports=['http', 'https'], - is_external=True, - is_enabled=is_enabled, - enable=enable, - disable=disable) + service = service_module.Service(managed_services[0], name, ports=[ + 'http', 'https' + ], is_external=True, is_enabled=is_enabled, enable=enable, + disable=disable) helper.call('post', service.notify_enabled, None, True) helper.call('post', add_shortcut) add_group('bit-torrent') def add_shortcut(): - frontpage.add_shortcut( - 'transmission', - name, - short_description=short_description, - url='/transmission', - login_required=True) + frontpage.add_shortcut('transmission', name, + short_description=short_description, + url='/transmission', login_required=True) def is_enabled(): """Return whether the module is enabled.""" - return (action_utils.service_is_enabled('transmission-daemon') - and action_utils.webserver_is_enabled('transmission-plinth')) + return (action_utils.service_is_enabled('transmission-daemon') and + action_utils.webserver_is_enabled('transmission-plinth')) def enable(): @@ -138,7 +126,7 @@ def diagnose(): results.append(action_utils.diagnose_port_listening(9091, 'tcp4')) results.append(action_utils.diagnose_port_listening(9091, 'tcp6')) results.extend( - action_utils.diagnose_url_on_all( - 'https://{host}/transmission', check_certificate=False)) + action_utils.diagnose_url_on_all('https://{host}/transmission', + check_certificate=False)) return results diff --git a/plinth/modules/transmission/manifest.py b/plinth/modules/transmission/manifest.py new file mode 100644 index 000000000..028b5d825 --- /dev/null +++ b/plinth/modules/transmission/manifest.py @@ -0,0 +1,30 @@ +# +# This file is part of Plinth. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero 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 Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# + +from django.utils.translation import ugettext_lazy as _ + +clients = [ + { + 'name': _('Transmission'), + 'platforms': [ + { + 'type': 'web', + 'relative_url': '/transmission' + } + ] + } +] diff --git a/plinth/modules/ttrss/__init__.py b/plinth/modules/ttrss/__init__.py index 0a664ac51..22df7b829 100644 --- a/plinth/modules/ttrss/__init__.py +++ b/plinth/modules/ttrss/__init__.py @@ -29,6 +29,7 @@ from plinth import frontpage from plinth import service as service_module from plinth.menu import main_menu from plinth.client import web_client, mobile_client +from .manifest import clients version = 2 @@ -58,6 +59,8 @@ description = [ 'the URL /tt-rss-app for connecting.')) ] +clients = clients + web_clients = [web_client(name='TT-RSS', url='/tt-rss')] mobile_clients = [ diff --git a/plinth/modules/ttrss/manifest.py b/plinth/modules/ttrss/manifest.py new file mode 100644 index 000000000..83f53f498 --- /dev/null +++ b/plinth/modules/ttrss/manifest.py @@ -0,0 +1,45 @@ +# +# This file is part of Plinth. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero 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 Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# + +from django.utils.translation import ugettext_lazy as _ + +clients = [ + { + 'name': _('TT-RSS Reader'), + 'platforms': [ + { + 'type': 'store', + 'os': 'Android', + 'store_type': 'google_play-store', + 'url': 'https://play.google.com/store/apps/details?id=org' + '.ttrssreader', + 'fully_qualified_name': 'org.ttrssreader' + }, + { + 'type': 'store', + 'os': 'Android', + 'store_type': 'fdroid_store', + 'url': 'https://f-droid.org/packages/org.ttrssreader/', + 'fully_qualified_name': 'org.ttrssreader' + }, + { + 'type': 'web', + 'relative_url': '/tt-rss' + } + ] + } +]