# along with this program. If not, see <http://www.gnu.org/licenses/>. # from django.utils.translation import ugettext_lazy as _ from plinth.clients import store_url, validate from plinth.modules.jsxc import manifest as jsxc_manifest _clients = validate([{ 'name': _('Conversations'), 'platforms': [{ 'type': 'store', 'os': 'android', 'store_name': 'f-droid', 'url': store_url('f-droid', 'eu.siacs.conversations') }, { 'type': 'store', 'os': 'android', 'store_name': 'google-play', 'url': store_url('google-play', 'eu.siacs.conversations') }] }, { 'name': _('Xabber'), 'description': _('Open source Jabber (XMPP) client with multi-account support ' 'and clean and simple interface. '), 'platforms': [{ 'type': 'store', 'os': 'android',
'os': 'gnu-linux', 'format': 'rpm', 'name': 'vlc', }, { 'type': 'download', 'os': 'windows', 'url': 'https://www.videolan.org/vlc/download-windows.html', }, { 'type': 'download', 'os': 'macos', 'url': 'https://www.videolan.org/vlc/download-macosx.html', }, { 'type': 'store', 'os': 'android', 'store_name': 'google-play', 'url': store_url('google-play', 'org.videolan.vlc') }, { 'type': 'store', 'os': 'android', 'store_name': 'f-droid', 'url': store_url('f-droid', 'org.videolan.vlc') }] }, { 'name': _('kodi'), 'platforms': [{ 'type': 'package', 'os': 'gnu-linux', 'format': 'deb', 'name': 'kodi',
from plinth.clients import store_url _element_android_package_id = 'im.vector.app' _element_desktop_download_url = 'https://element.io/get-started' _fluffychat_android_package_id = 'chat.fluffy.fluffychat' _fluffychat_desktop_download_url = 'https://fluffychat.im/' clients = [{ 'name': _('Element'), 'platforms': [{ 'type': 'store', 'os': 'android', 'store_name': 'google-play', 'url': store_url('google-play', _element_android_package_id) }, { 'type': 'store', 'os': 'android', 'store_name': 'f-droid', 'url': store_url('f-droid', _element_android_package_id) }, { 'type': 'store', 'os': 'ios', 'store_name': 'app-store', 'url': 'https://apps.apple.com/app/vector/id1083446067' }, { 'type': 'web', 'url': 'https://app.element.io/' }, { 'type': 'download',
'type': 'download', 'os': 'gnu-linux', 'url': 'https://www.kde.org/applications/internet/kmldonkey/' }, { 'type': 'package', 'format': 'deb', 'name': 'kmldonkey', }] }, { 'name': _('AMLDonkey'), 'platforms': [{ 'type': 'store', 'os': 'android', 'store_name': 'google-play', 'url': store_url('google-play', 'com.devwom.amldonkey'), }] }]) backup = validate_backup({ 'config': { 'files': [ '/var/lib/mldonkey/bittorrent.ini', '/var/lib/mldonkey/bt_dht.ini', '/var/lib/mldonkey/directconnect.ini', '/var/lib/mldonkey/donkey.ini', '/var/lib/mldonkey/downloads.ini', '/var/lib/mldonkey/files.ini', '/var/lib/mldonkey/file_sources.ini', '/var/lib/mldonkey/fileTP.ini', '/var/lib/mldonkey/friends.ini', '/var/lib/mldonkey/searches.ini', '/var/lib/mldonkey/servers.ini', '/var/lib/mldonkey/shared_files.ini', '/var/lib/mldonkey/shared_files_new.ini',
'type': 'download', 'os': 'gnu-linux', 'url': _tor_browser_download_url, }, { 'type': 'download', 'os': 'macos', 'url': _tor_browser_download_url, }] }, { 'name': _('Orbot: Proxy with Tor'), 'platforms': [{ 'type': 'store', 'os': 'android', 'store_name': 'google-play', 'url': store_url('google-play', _orbot_package_id) }, { 'type': 'store', 'os': 'android', 'store_name': 'f-droid', 'url': store_url('f-droid', _orbot_package_id) }] }]) backup = validate_backup({ 'config': { 'directories': ['/etc/tor/'] }, 'secrets': { 'directories': ['/var/lib/tor/', '/var/lib/tor-instances/'] },
'type': 'download', 'os': 'macos', 'url': 'https://www.thunderbird.net/en-US/' }, { 'type': 'download', 'os': 'windows', 'url': 'https://www.thunderbird.net/en-US/' }] }, { 'name': _('K-9 Mail'), 'platforms': [{ 'type': 'store', 'os': 'android', 'store_name': 'f-droid', 'url': store_url('f-droid', 'com.fsck.k9') }, { 'type': 'store', 'os': 'android', 'store_name': 'google-play', 'url': store_url('google-play', 'com.fsck.k9') }] }, { 'name': _('FairEmail'), 'platforms': [{ 'type': 'store', 'os': 'android', 'store_name': 'f-droid', 'url': store_url('f-droid', 'eu.faircode.email') }, {
'name': _('Minetest'), 'platforms': [{ 'type': 'download', 'os': 'gnu-linux', 'url': 'https://www.minetest.net/downloads/' }, { 'type': 'download', 'os': 'macos', 'url': 'https://www.minetest.net/downloads/' }, { 'type': 'download', 'os': 'windows', 'url': 'https://www.minetest.net/downloads/' }, { 'type': 'store', 'os': 'android', 'store_name': 'f-droid', 'url': store_url('f-droid', 'net.minetest.minetest') }, { 'type': 'store', 'os': 'android', 'store_name': 'google-play', 'url': store_url('google-play', 'net.minetest.minetest') }, { 'type': 'package', 'format': 'deb', 'name': 'minetest' }] }])
# along with this program. If not, see <http://www.gnu.org/licenses/>. # from django.utils.translation import ugettext_lazy as _ from plinth.clients import store_url, validate clients = validate([{ 'name': _('Minetest'), 'platforms': [{ 'type': 'download', 'os': 'windows', 'url': 'https://github.com/minetest/minetest/releases' }, { 'type': 'store', 'os': 'android', 'store_name': 'google-play', 'url': store_url('google-play', 'net.minetest.minetest') }, { 'type': 'store', 'os': 'android', 'store_name': 'f-droid', 'url': store_url('f-droid', 'net.minetest.minetest') }, { 'type': 'package', 'format': 'deb', 'name': 'minetest' }] }])
# 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 <http://www.gnu.org/licenses/>. # from django.utils.translation import ugettext_lazy as _ from plinth.clients import store_url, validate _package_id = 'org.ttrssreader' clients = validate([{ 'name': _('TT-RSS Reader'), 'platforms': [{ 'type': 'store', 'os': 'android', 'store_name': 'google-play', 'url': store_url('google-play', _package_id), }, { 'type': 'store', 'os': 'android', 'store_name': 'f-droid', 'url': store_url('f-droid', _package_id), }, { 'type': 'web', 'url': '/tt-rss' }] }])
from plinth.clients import store_url, validate clients = validate([{ '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_name': 'google-play', 'url': store_url('google-play', 'at.bitfire.davdroid'), }] }, { 'name': _('GNOME Calendar'), 'platforms': [{ 'type': 'package', 'format': 'deb', 'name': 'gnome-calendar' }] }, { 'name': _('Evolution'), 'description': _('Evolution is a personal information management ' 'application that provides integrated mail, '
# SPDX-License-Identifier: AGPL-3.0-or-later from django.utils.translation import gettext_lazy as _ from plinth.clients import store_url clients = [{ 'name': _('Tiny Tiny RSS (Fork)'), 'platforms': [{ 'type': 'store', 'os': 'android', 'store_name': 'f-droid', 'url': store_url('f-droid', 'org.fox.tttrss') }] }, { 'name': _('Tiny Tiny RSS'), 'platforms': [{ 'type': 'store', 'os': 'android', 'store_name': 'google-play', 'url': store_url('google-play', 'org.fox.ttrss') }, { 'type': 'web', 'url': '/tt-rss' }] }] backup = { 'data': {
from django.utils.translation import ugettext_lazy as _ from plinth.clients import store_url, validate from plinth.modules import diaspora from plinth.utils import format_lazy clients = validate([{ 'name': _('dandelion*'), 'description': _('It is an unofficial webview based client for the ' 'community-run, distributed social network diaspora*'), 'platforms': [{ 'type': 'store', 'os': 'android', 'store_name': 'f-droid', 'url': store_url('f-droid', 'com.github.dfa.diaspora_android'), }] }, { 'name': _('diaspora*'), 'platforms': [{ 'type': 'web', 'url': format_lazy('https://diaspora.{host}', host=diaspora.get_configured_domain_name() if diaspora.is_setup() else "<please-setup-domain-name>") }] }])
from django.utils.translation import ugettext_lazy as _ from plinth.clients import store_url, validate _android_package_id = 'im.vector.alpha' _riot_desktop_download_url = 'https://riot.im/desktop.html' clients = validate([{ 'name': _('Riot'), 'platforms': [{ 'type': 'store', 'os': 'android', 'store_name': 'google-play', 'url': store_url('google-play', _android_package_id) }, { 'type': 'store', 'os': 'android', 'store_name': 'f-droid', 'url': store_url('f-droid', _android_package_id) }, { 'type': 'web', 'url': 'https://riot.im/app/#/home' }, { 'type': 'download', 'os': 'gnu-linux', 'url': _riot_desktop_download_url, }, { 'type': 'download', 'os': 'macos',
""" Application manifest for bind. """ from django.utils.translation import gettext_lazy as _ from plinth.clients import store_url clients = [{ 'name': _('Shaarlier'), 'platforms': [{ 'type': 'store', 'os': 'android', 'store_name': 'google-play', 'url': store_url('google-play', 'com.dimtion.shaarlier'), }, { 'type': 'store', 'os': 'android', 'store_name': 'f-droid', 'url': store_url('f-droid', 'com.dimtion.shaarlier'), }] }, { 'name': _('Shaarli'), 'platforms': [{ 'type': 'web', 'url': '/shaarli/' }] }] backup = {'data': {'directories': ['/var/lib/shaarli/data']}}
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 _android_package_id = 'im.vector.app' _element_desktop_download_url = 'https://element.io/get-started' clients = validate([{ 'name': _('Element'), 'platforms': [{ 'type': 'store', 'os': 'android', 'store_name': 'google-play', 'url': store_url('google-play', _android_package_id) }, { 'type': 'store', 'os': 'android', 'store_name': 'f-droid', 'url': store_url('f-droid', _android_package_id) }, { 'type': 'store', 'os': 'ios', 'store_name': 'app-store', 'url': 'https://apps.apple.com/app/vector/id1083446067' }, { 'type': 'web', 'url': 'https://app.element.io/' }, { 'type': 'download',
'name': _('Mumblefly'), 'platforms': [{ 'type': 'store', 'os': 'ios', 'store_name': 'app-store', 'url': 'https://apps.apple.com/dk/app/mumblefy/id858752232' }] }, { 'name': _('Mumla'), 'platforms': [{ 'type': 'store', 'os': 'android', 'store_name': 'f-droid', 'url': store_url('f-droid', 'se.lublin.mumla') }, { 'type': 'store', 'os': 'android', 'store_name': 'google-play', 'url': store_url('google-play', 'se.lublin.mumla') }] }] backup = { 'data': { 'directories': ['/var/lib/mumble-server'] }, 'services': ['mumble-server'] }
# along with this program. If not, see <http://www.gnu.org/licenses/>. # from django.utils.translation import ugettext_lazy as _ from plinth.modules.jsxc import manifest as jsxc_manifest from plinth.clients import store_url, validate _clients = validate([{ 'name': _('yaxim'), 'platforms': [{ 'type': 'store', 'os': 'android', 'store_name': 'google-play', 'url': store_url('google-play', 'org.yaxim.androidclient'), }] }, { 'name': _('Bruno'), 'description': _('Bruno is a themed version of the open source ' 'yaxim app.'), 'platforms': [{ 'type': 'store', 'os': 'android', 'store_name': 'google-play', 'url': store_url('google-play', 'org.yaxim.bruno') }] }, { 'name':
from plinth.utils import format_lazy clients = validate([{ 'name': _('dandelion*'), 'description': _('It is an unofficial webview based client for the ' 'community-run, distributed social network diaspora*'), 'platforms': [{ 'type': 'store', 'os': 'android', 'store_name': 'f-droid', 'url': store_url('f-droid', 'com.github.dfa.diaspora_android'), }] }, { 'name': _('diaspora*'), 'platforms': [{ 'type': 'web', 'url': format_lazy('https://diaspora.{host}', host=diaspora.get_configured_domain_name() if diaspora.is_setup() else "<please-setup-domain-name>") }] }])
'format': 'deb', 'name': 'mumble' }, { 'type': 'store', 'os': 'ios', 'store_name': 'app-store', 'url': 'https://apps.apple.com/us/app/mumble/id443472808' }] }, { 'name': _('Plumble'), 'platforms': [{ 'type': 'store', 'os': 'android', 'store_name': 'f-droid', 'url': store_url('f-droid', _plumble_package_id) }, { 'type': 'store', 'os': 'android', 'store_name': 'google-play', 'url': store_url('google-play', _plumble_package_id) }] }, { 'name': _('Mumblefly'), 'platforms': [{ 'type': 'store', 'os': 'ios', 'store_name': 'app-store', 'url': 'https://apps.apple.com/dk/app/mumblefy/id858752232' }]
'format': 'deb', 'name': 'mumble' }, { 'type': 'store', 'os': 'ios', 'store_name': 'app-store', 'url': 'https://itunes.apple.com/us/app/mumble/id443472808' }] }, { 'name': _('Plumble'), 'platforms': [{ 'type': 'store', 'os': 'android', 'store_name': 'google-play', 'url': store_url('google-play', _plumble_package_id) }, { 'type': 'store', 'os': 'android', 'store_name': 'f-droid', 'url': store_url('f-droid', _plumble_package_id) }] }, { 'name': _('Mumblefly'), 'platforms': [{ 'type': 'store', 'os': 'ios', 'store_name': 'app-store', 'url': 'https://itunes.apple.com/dk/app/mumblefy/id858752232' }]
from plinth.clients import store_url, validate clients = validate([{ '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_name': 'google-play', 'url': store_url('google-play', 'at.bitfire.davdroid'), }] }, { 'name': _('GNOME Calendar'), 'platforms': [{ 'type': 'package', 'format': 'deb', 'name': 'gnome-calendar' }] }, { 'name': _('Evolution'), 'description': _('Evolution is a personal information management ' 'application that provides integrated mail, '
'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_name': 'google-play', 'url': store_url('google-play', _jitsi_package_id) }, { 'type': 'store', 'os': 'ios', 'store_name': 'app-store', 'url': 'https://itunes.apple.com/in/app/jitsi-meet/id1165103905' }, { 'type': 'download', 'os': 'gnu-linux', 'url': _jitsi_download_url }, { 'type': 'package',
'type': 'package', 'format': 'deb', 'name': 'quassel-client', }, { 'type': 'package', 'format': 'brew', 'name': 'quassel-client', }] }, { 'name': _('Quasseldroid'), 'platforms': [{ 'type': 'store', 'os': 'android', 'store_name': 'f-droid', 'url': store_url('f-droid', 'com.iskrembilen.quasseldroid'), }, { 'type': 'store', 'os': 'android', 'store_name': 'google-play', 'url': store_url('google-play', 'com.iskrembilen.quasseldroid'), }] }]) backup = validate_backup({ 'secrets': { 'directories': ['/var/lib/quassel/']
_('WireGuard'), 'platforms': [{ 'type': 'download', 'os': 'windows', 'url': 'https://download.wireguard.com' }, { 'type': 'download', 'os': 'macos', 'url': 'https://apps.apple.com/us/app/wireguard/id1451685025' }, { 'type': 'package', 'format': 'deb', 'name': 'wireguard' }, { 'type': 'store', 'os': 'android', 'store_name': 'f-droid', 'url': store_url('f-droid', _wireguard_package_id) }, { 'type': 'store', 'os': 'android', 'store_name': 'google-play', 'url': store_url('google-play', _wireguard_package_id) }, { 'type': 'store', 'os': 'ios', 'store_name': 'app-store', 'url': 'https://apps.apple.com/us/app/wireguard/id1441195209' }] }]
# along with this program. If not, see <http://www.gnu.org/licenses/>. # from django.utils.translation import ugettext_lazy as _ from plinth.modules.jsxc import manifest as jsxc_manifest from plinth.clients import store_url, validate _clients = validate([{ 'name': _('yaxim'), 'platforms': [{ 'type': 'store', 'os': 'android', 'store_name': 'google-play', 'url': store_url('google-play', 'org.yaxim.androidclient'), }] }, { 'name': _('Bruno'), 'description': _('Bruno is a themed version of the open source ' 'yaxim app.'), 'platforms': [{ 'type': 'store', 'os': 'android', 'store_name': 'google-play', 'url': store_url('google-play', 'org.yaxim.bruno') }] }, { 'name':
from plinth.clients import store_url SHARES_CONF_BACKUP_FILE = '/var/lib/plinth/backups-data/samba-shares-dump.conf' clients = [{ 'name': _('Android Samba Client'), 'platforms': [{ 'type': 'store', 'os': 'android', 'store_name': 'f-droid', 'url': store_url('f-droid', 'com.google.android.sambadocumentsprovider') }] }, { 'name': _('Ghost Commander - Samba plugin'), 'platforms': [{ 'type': 'store', 'os': 'android', 'store_name': 'f-droid', 'url': store_url('f-droid', 'com.ghostsq.commander.samba') }, { 'type': 'store', 'os': 'android', 'store_name': 'google-play', 'url': store_url('google-play', 'com.ghostsq.commander.smb') }]
'format': 'deb', 'name': 'mumble' }, { 'type': 'store', 'os': 'ios', 'store_name': 'app-store', 'url': 'https://itunes.apple.com/us/app/mumble/id443472808' }] }, { 'name': _('Plumble'), 'platforms': [{ 'type': 'store', 'os': 'android', 'store_name': 'google-play', 'url': store_url('google-play', _plumble_package_id) }, { 'type': 'store', 'os': 'android', 'store_name': 'f-droid', 'url': store_url('f-droid', _plumble_package_id) }] }, { 'name': _('Mumblefly'), 'platforms': [{ 'type': 'store', 'os': 'ios', 'store_name': 'app-store', 'url': 'https://itunes.apple.com/dk/app/mumblefy/id858752232' }]
'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_name': 'google-play', 'url': store_url('google-play', _jitsi_package_id) }, { 'type': 'store', 'os': 'ios', 'store_name': 'app-store', 'url': 'https://itunes.apple.com/in/app/jitsi-meet/id1165103905' }, { 'type': 'download', 'os': 'gnu-linux', 'url': _jitsi_download_url }, { 'type': 'package', 'format': 'deb', 'name': 'jitsi' }, { 'type': 'download',