mirror of
https://github.com/freedombox/FreedomBox.git
synced 2026-01-21 07:55:00 +00:00
Closes: #2362. Passing ?transport= parameter in STUN URIs is invalid. It always uses UDP. Chrome and perhaps Firefox has recently started enforcing the correct syntax leading to failures using the Coturn server URIs we set in Janus. This also likely effects matrix-syanpse and ejabberd clients. Links: 1) https://www.rfc-editor.org/rfc/rfc7064#section-3.1 2) https://bugs.chromium.org/p/chromium/issues/detail?id=1385735 Tests: - Install Coturn. Observe that STUN URIs shown don't contain the 'transport' parameter. - Install Janus and launch the meeting room. Notice that the STUN URIs in the room page don't have 'transport' parameter. - Install ejabberd and notice that the auto-configured STUN URIs don't have 'transport' parameter. - Install matrix-synapse and notice that the auto-configured STUN URIs don't have 'transport' parameter. - Install ejabberd and matrix-synapse. Ensure that STUN URIs manually. They are not allowed to 'transport' parameter for the STUN URIs but must have transport parameter for TURN URIs. Signed-off-by: Sunil Mohan Adapa <sunil@medhas.org> Reviewed-by: James Valleroy <jvalleroy@mailbox.org>
37 lines
1.1 KiB
Python
37 lines
1.1 KiB
Python
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
"""
|
|
Forms for Coturn app.
|
|
"""
|
|
|
|
from django import forms
|
|
from django.core.exceptions import ValidationError
|
|
from django.utils.translation import gettext_lazy as _
|
|
|
|
from plinth.modules import coturn
|
|
from plinth.modules.coturn.components import TurnConfiguration
|
|
|
|
|
|
def get_domain_choices():
|
|
"""Double domain entries for inclusion in the choice field."""
|
|
return ((domain, domain) for domain in coturn.get_available_domains())
|
|
|
|
|
|
def turn_uris_validator(turn_uris):
|
|
"""Validate list of STUN/TURN Server URIs."""
|
|
uris = [uri for uri in turn_uris.split('\r\n') if uri]
|
|
if not TurnConfiguration.validate_turn_uris(uris):
|
|
raise ValidationError(_('Invalid list of STUN/TURN Server URIs'))
|
|
|
|
|
|
class CoturnForm(forms.Form):
|
|
"""Form to select a TLS domain for Coturn."""
|
|
|
|
domain = forms.ChoiceField(
|
|
choices=get_domain_choices,
|
|
label=_('TLS domain'),
|
|
help_text=_(
|
|
'Select a domain to use TLS with. If the list is empty, please '
|
|
'configure at least one domain with certificates.'),
|
|
required=False,
|
|
)
|