Sunil Mohan Adapa e4f8a7942f
ejabberd: Revert changes to always keep localhost (aa5b1cea126d37)
Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org>
2022-06-20 17:06:03 -07:00

70 lines
2.8 KiB
Python

# SPDX-License-Identifier: AGPL-3.0-or-later
"""
Forms for configuring Ejabberd.
"""
from django import forms
from django.urls import reverse_lazy
from django.utils.translation import gettext_lazy as _
from plinth import cfg
from plinth.modules import ejabberd
from plinth.modules.coturn.forms import turn_uris_validator
from plinth.utils import format_lazy
class EjabberdForm(forms.Form):
"""Ejabberd configuration form."""
domain_names = forms.MultipleChoiceField(
label=_('Domain names'), widget=forms.CheckboxSelectMultiple,
help_text=_(
'Domains to be used by ejabberd. Note that user accounts are '
'unique for each domain, and migrating users to a new domain name '
'is not yet implemented.'), choices=[])
MAM_enabled = forms.BooleanField(
label=_('Enable Message Archive Management'), required=False,
help_text=format_lazy(
_('If enabled, your {box_name} will store chat message histories. '
'This allows synchronization of conversations between multiple '
'clients, and reading the history of a multi-user chat room. '
'It depends on the client settings whether the histories are '
'stored as plain text or encrypted.'), box_name=_(cfg.box_name)))
enable_managed_turn = forms.BooleanField(
label=_('Automatically manage audio/video call setup'), required=False,
help_text=format_lazy(
_('Configures the local <a href={coturn_url}>coturn</a> app as '
'the STUN/TURN server for ejabberd. Disable this if you '
'want to use a different STUN/TURN server.'),
coturn_url=reverse_lazy('coturn:index')))
# STUN/TURN server setup
turn_uris = forms.CharField(
label=_('STUN/TURN Server URIs'), required=False, strip=True,
widget=forms.Textarea(attrs={'rows': 4}),
help_text=_('List of public URIs of the STUN/TURN server, one on each '
'line.'), validators=[turn_uris_validator])
shared_secret = forms.CharField(
label=_('Shared Authentication Secret'), required=False, strip=True,
help_text=_('Shared secret used to compute passwords for the '
'TURN server.'))
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# Start with any existing domains from ejabberd configuration.
domains = set(ejabberd.get_domains())
# Add other domains that can be configured.
from plinth.modules.names.components import DomainName
domains |= DomainName.list_names()
self.fields['domain_names'].choices = zip(domains, domains)
def clean_turn_uris(self):
"""Normalize newlines in URIs."""
data = self.cleaned_data['turn_uris']
return '\n'.join([uri.strip() for uri in data.splitlines()])