Enhancement: Adds support for UDP streams. Closes #617

This commit is contained in:
SergeantPanda 2025-11-11 18:30:59 -06:00
parent a7f449f746
commit b9e819e343
6 changed files with 54 additions and 18 deletions

View file

@ -377,13 +377,13 @@ def validate_flexible_url(value):
import re
# More flexible pattern for non-FQDN hostnames with paths
# Matches: http://hostname, https://hostname/, http://hostname:port/path/to/file.xml, rtp://192.168.2.1, rtsp://192.168.178.1
# Also matches FQDNs for rtsp/rtp protocols: rtsp://FQDN/path?query=value
non_fqdn_pattern = r'^(rts?p|https?)://([a-zA-Z0-9]([a-zA-Z0-9\-\.]{0,61}[a-zA-Z0-9])?|[0-9.]+)?(\:[0-9]+)?(/[^\s]*)?$'
# Matches: http://hostname, https://hostname/, http://hostname:port/path/to/file.xml, rtp://192.168.2.1, rtsp://192.168.178.1, udp://239.0.0.1:1234
# Also matches FQDNs for rtsp/rtp/udp protocols: rtsp://FQDN/path?query=value
non_fqdn_pattern = r'^(rts?p|https?|udp)://([a-zA-Z0-9]([a-zA-Z0-9\-\.]{0,61}[a-zA-Z0-9])?|[0-9.]+)?(\:[0-9]+)?(/[^\s]*)?$'
non_fqdn_match = re.match(non_fqdn_pattern, value)
if non_fqdn_match:
return # Accept non-FQDN hostnames and rtsp/rtp URLs
return # Accept non-FQDN hostnames and rtsp/rtp/udp URLs
# If it doesn't match our flexible patterns, raise the original error
raise ValidationError("Enter a valid URL.")