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 <jvalleroy@mailbox.org>
This commit is contained in:
Prachi 2017-10-10 17:29:38 +02:00 committed by James Valleroy
parent 98186e2c72
commit 823e06271f
No known key found for this signature in database
GPG Key ID: 77C0C75E7B650808
38 changed files with 1115 additions and 33 deletions

View File

@ -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')]

View File

@ -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 <http://www.gnu.org/licenses/>.
#
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'
}]
}]

View File

@ -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."""

View File

@ -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 <http://www.gnu.org/licenses/>.
#
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())
}
]
}
]

View File

@ -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

View File

@ -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 <http://www.gnu.org/licenses/>.
#
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)

View File

@ -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():

View File

@ -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 <http://www.gnu.org/licenses/>.
#
from django.utils.translation import ugettext_lazy as _
clients = [
{
'name': _('ikiwiki'),
'platforms': [{
'type': 'web',
'relative_url': '/ikiwiki'
}]
}
]

View File

@ -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."""

View File

@ -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 <http://www.gnu.org/licenses/>.
#
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'
}
]
}
]

View File

@ -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__)

View File

@ -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 <http://www.gnu.org/licenses/>.
#
from django.utils.translation import ugettext_lazy as _
clients = [
{
'name': _('JSXC'),
'platforms': [
{
'type': 'apt',
'os': 'Debian',
'package_name': 'libjs-jsxc'
}
]
}
]

View File

@ -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."""

View File

@ -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 <http://www.gnu.org/licenses/>.
#
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/'
}
]
}]

View File

@ -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/')]

View File

@ -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 <http://www.gnu.org/licenses/>.
#
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'
}
]
}
]

View File

@ -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')]

View File

@ -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 <http://www.gnu.org/licenses/>.
#
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'
}
]
}
]

View File

@ -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')]

View File

@ -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 <http://www.gnu.org/licenses/>.
#
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'
}
]
}
]

View File

@ -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',

View File

@ -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 <http://www.gnu.org/licenses/>.
#
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'
}
]
}
]

View File

@ -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 = [

View File

@ -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 <http://www.gnu.org/licenses/>.
#
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 '
}
]
}
]

View File

@ -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 = [
'<a href=\'/restore/\'>reStore web-interface</a>.')
]
clients = clients
web_clients = [web_client(name='reStore web-interface', url='/restore')]
reserved_usernames = ['node-restore']

View File

@ -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 <http://www.gnu.org/licenses/>.
#
from django.utils.translation import ugettext_lazy as _
clients = [
{
'name': _('reStore'),
'platforms': [
{
'type': 'web',
'relative_url': '/restore'
}
]
}
]

View File

@ -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</a>).'),
]
clients = clients
web_clients = [web_client('Roundcube', '/roundcube')]
service = None

View File

@ -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 <http://www.gnu.org/licenses/>.
#
from django.utils.translation import ugettext_lazy as _
clients = [
{
'name': _('Roundcube'),
'platforms': [
{
'type': 'web',
'relative_url': '/roundcube'
}
]
}
]

View File

@ -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

View File

@ -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 <http://www.gnu.org/licenses/>.
#
from django.utils.translation import ugettext_lazy as _
clients = [
{
'name': _('Shaarli'),
'platforms': [
{
'type': 'web',
'relative_url': '/shaarli'
}
]
}
]

View File

@ -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 <a href="https://syncthing.net/">available</a>.'),
]
clients = clients
web_clients = [web_client(name='Syncthing', url='/syncthing')]
desktop_clients = [desktop_client(name='Syncthing',

View File

@ -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 <http://www.gnu.org/licenses/>.
#
from django.utils.translation import ugettext_lazy as _
clients = [
{
'name': _('Syncthing'),
'platforms': [
{
'type': 'apt',
'os': 'Debian/Ubuntu',
'usage': _('For more usage information refer to <a '
'href="https://apt.syncthing.net/>Syncthing</a>'),
'package_name': 'syncthing'
},
{
'type': 'download',
'os': 'Windows(64-bit)',
'url': 'https://github.com/syncthing/syncthing/releases'
'/download/v0.14.38/syncthing-windows-amd64-v0.14.38'
'.zip '
},
{
'type': 'download',
'os': 'macOS',
'url': 'https://github.com/syncthing/syncthing/releases'
'/download/v0.14.38/syncthing-macosx-amd64-v0.14.38'
'.tar.gz '
},
{
'type': 'store',
'os': 'Android',
'store_type': 'google_play_store',
'fully_qualified_name': 'com.nutomic.syncthingandroid',
'url': 'https://play.google.com/store/apps/details?id=com'
'.nutomic.syncthingandroid '
},
{
'type': 'store',
'os': 'Android',
'store_name': 'fdroid_store',
'fully_qualified_name': 'com.nutomic.syncthingandroid',
'url': 'https://f-droid.org/packages/com.nutomic'
'.syncthingandroid/ '
},
{
'type': 'web',
'relative_url': '/syncthing'
}
]
}
]

View File

@ -29,6 +29,7 @@ from plinth.menu import main_menu
from plinth.modules.names import SERVICES
from plinth.signals import domain_added, domain_removed
from plinth.client import desktop_client, mobile_client
from .manifest import clients
from . import utils
@ -53,6 +54,8 @@ description = [
'Tor Browser</a>.')
]
clients = clients
desktop_clients = [
desktop_client(name='Tor Browser',
url='https://www.torproject.org/download/download-easy'

View File

@ -0,0 +1,74 @@
#
# 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 <http://www.gnu.org/licenses/>.
#
from django.utils.translation import ugettext_lazy as _
version = '7.0.6'
clients = [
{
'name': _('Tor Browser'),
'platforms': [
{
'type': 'download',
'os': 'Windows',
'os_version': 'Windows XP, Vista, >=7',
'url': 'https://www.torproject.org/dist/torbrowser/{v}'
'/torbrowser-install-{v}_en-US.exe '.format(v=version)
},
{
'type': 'download',
'os': 'Linux(64-bit)',
'url': 'https://www.torproject.org/dist/torbrowser/{v}/tor'
'-browser-linux64-{v} _en-US.tar.xz'.format(v=version)
},
{
'type': 'download',
'os': 'Linux(32-bit)',
'url': 'https://www.torproject.org/dist/torbrowser/{v}/tor'
'-browser-linux32-{v}_en-US.tar.xz'.format(v=version)
},
{
'type': 'download',
'os': 'macOS',
'url': 'https://www.torproject.org/dist/torbrowser/{v}'
'/TorBrowser-{v}-osx64_en-US.dmg'.format(v=version)
}
]
},
{
'name': _('Orbot: Proxy with Tor'),
'platforms': [
{
'type': 'store',
'os': 'Android',
'store_type': 'google_play_store',
'url': 'https://play.google.com/store/apps/details?id=org'
'.torproject.android',
'fully_qualified_name': 'org.torproject.android'
},
{
'type': 'store',
'os': 'Android',
'store_type': 'fdroid_store',
'url': 'https://play.google.com/store/apps/details?id=org'
'.torproject.android',
'fully_qualified_name': 'org.torproject.android'
}
]
}
]

View File

@ -24,10 +24,11 @@ from django.utils.translation import ugettext_lazy as _
from plinth import service as service_module
from plinth import action_utils, actions, frontpage
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
managed_services = ['transmission-daemon']
@ -45,7 +46,7 @@ description = [
_('Access the web interface at <a href="/transmission">/transmission</a>.')
]
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

View File

@ -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 <http://www.gnu.org/licenses/>.
#
from django.utils.translation import ugettext_lazy as _
clients = [
{
'name': _('Transmission'),
'platforms': [
{
'type': 'web',
'relative_url': '/transmission'
}
]
}
]

View File

@ -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 <a href="/tt-rss-app/">/tt-rss-app</a> for connecting.'))
]
clients = clients
web_clients = [web_client(name='TT-RSS', url='/tt-rss')]
mobile_clients = [

View File

@ -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 <http://www.gnu.org/licenses/>.
#
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'
}
]
}
]