mirror of
https://github.com/freedombox/FreedomBox.git
synced 2026-01-28 08:03:36 +00:00
During the re-organization of data files into individual apps, a regression for JSXC preventing the symbolic links in the source code from being copied to destination folder during 'setup.py install'. Fix this by removing symbolic links and serving the file using CherryPy mappings with the help of StaticFiles component. Closes: #1180. Tests performed: - Access the following URLs successfully: https://localhost:4430/plinth/static/jsxc/img/menu_black.svg https://localhost:4430/plinth/static/jsxc/libjs-jsxc/jsxc.css https://localhost:4430/plinth/static/jsxc/libjs-jsxc/sound/Ping1.mp3 https://localhost:4430/plinth/static/jsxc/libjs-jsxc/lib/otr/lib/dsa-webworker.js - Login to JSXC, see the roster properly on the right side. Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org> Reviewed-by: Veiko Aasa <veiko17@disroot.org>
87 lines
2.7 KiB
Python
87 lines
2.7 KiB
Python
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
"""
|
|
FreedomBox app to configure XMPP web client/jsxc.
|
|
"""
|
|
|
|
import logging
|
|
|
|
from django.urls import reverse_lazy
|
|
from django.utils.translation import ugettext_lazy as _
|
|
|
|
from plinth import app as app_module
|
|
from plinth import frontpage, menu
|
|
from plinth.modules.firewall.components import Firewall
|
|
from plinth.web_server import StaticFiles
|
|
|
|
from .manifest import backup, clients # noqa, pylint: disable=unused-import
|
|
|
|
version = 1
|
|
|
|
managed_packages = ['libjs-jsxc']
|
|
|
|
_description = [
|
|
_('JSXC is a web client for XMPP. Typically it is used with an XMPP '
|
|
'server running locally.'),
|
|
]
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
app = None
|
|
|
|
|
|
class JSXCApp(app_module.App):
|
|
"""FreedomBox app for JSXC."""
|
|
|
|
app_id = 'jsxc'
|
|
|
|
def __init__(self):
|
|
"""Create components for the app."""
|
|
super().__init__()
|
|
info = app_module.Info(app_id=self.app_id, version=version,
|
|
name=_('JSXC'), icon_filename='jsxc',
|
|
short_description=_('Chat Client'),
|
|
description=_description, clients=clients)
|
|
self.add(info)
|
|
|
|
menu_item = menu.Menu('menu-jsxc', info.name, info.short_description,
|
|
info.icon_filename, 'jsxc:index',
|
|
parent_url_name='apps')
|
|
self.add(menu_item)
|
|
|
|
shortcut = frontpage.Shortcut('shortcut-jsxc', name=info.name,
|
|
short_description=info.short_description,
|
|
icon=info.icon_filename,
|
|
url=reverse_lazy('jsxc:jsxc'),
|
|
clients=info.clients)
|
|
self.add(shortcut)
|
|
|
|
firewall = Firewall('firewall-jsxc', info.name,
|
|
ports=['http', 'https'], is_external=True)
|
|
self.add(firewall)
|
|
|
|
directory_map = {
|
|
'/static/jsxc/img': '/usr/share/libjs-jsxc/img/',
|
|
'/static/jsxc/libjs-jsxc/lib': '/usr/share/javascript/jsxc/lib/',
|
|
'/static/jsxc/libjs-jsxc/sound': '/usr/share/libjs-jsxc/sound/',
|
|
'/static/jsxc/libjs-jsxc/': '/usr/share/libjs-jsxc/css/',
|
|
}
|
|
static_files = StaticFiles('static-files-jsxc',
|
|
directory_map=directory_map)
|
|
self.add(static_files)
|
|
|
|
|
|
def init():
|
|
"""Initialize the JSXC module"""
|
|
global app
|
|
app = JSXCApp()
|
|
|
|
setup_helper = globals()['setup_helper']
|
|
if setup_helper.get_state() != 'needs-setup' and app.is_enabled():
|
|
app.set_enabled(True)
|
|
|
|
|
|
def setup(helper, old_version=None):
|
|
"""Install and configure the module."""
|
|
helper.install(managed_packages)
|
|
helper.call('post', app.enable)
|