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