From 13503e628cb19dfcc57813bf473c6cb52e394b31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20Sch=C3=A4fer?= <felix@thegcat.net> Date: Sun, 18 Jun 2023 22:40:09 +0200 Subject: [PATCH] Gracefully handle non-hostname matrix servers #16 --- pretix_matrix_inviter/forms.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/pretix_matrix_inviter/forms.py b/pretix_matrix_inviter/forms.py index ce4def8..f3d4245 100644 --- a/pretix_matrix_inviter/forms.py +++ b/pretix_matrix_inviter/forms.py @@ -1,3 +1,4 @@ +from django.core.exceptions import ValidationError from django.forms import ( CharField, CheckboxSelectMultiple, @@ -7,6 +8,8 @@ from django.forms import ( from django.utils.translation import gettext_lazy from i18nfield.forms import I18nFormField, I18nTextInput from pretix.base.forms import SettingsForm +from urllib3.exceptions import LocationParseError +from urllib3.util import parse_url from .helpers import matrix_room_info_for_event @@ -58,6 +61,14 @@ class MatrixInviterSettingsForm(SettingsForm): strip=True, ) + def clean_matrix_inviter_matrix_server(self): + url = self.cleaned_data["matrix_inviter_matrix_server"] + try: + return parse_url(url).host + except LocationParseError: + raise ValidationError("Please enter a valid hostname") + return url + def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.fields["matrix_inviter_items"].choices = [ -- GitLab