[1.8.x] Fixed #26204 -- Reallowed dashes in top-level domains for URLValidator.
Thanks Shai Berger for the review.
Backport of b1afebf882
from master
This commit is contained in:
parent
33525bb120
commit
0f667a580a
|
@ -74,7 +74,14 @@ class URLValidator(RegexValidator):
|
||||||
# Host patterns
|
# Host patterns
|
||||||
hostname_re = r'[a-z' + ul + r'0-9](?:[a-z' + ul + r'0-9-]*[a-z' + ul + r'0-9])?'
|
hostname_re = r'[a-z' + ul + r'0-9](?:[a-z' + ul + r'0-9-]*[a-z' + ul + r'0-9])?'
|
||||||
domain_re = r'(?:\.(?!-)[a-z' + ul + r'0-9-]+(?<!-))*'
|
domain_re = r'(?:\.(?!-)[a-z' + ul + r'0-9-]+(?<!-))*'
|
||||||
tld_re = r'\.(?:[a-z' + ul + r']{2,}|xn--[a-z0-9]+)\.?'
|
tld_re = (
|
||||||
|
'\.' # dot
|
||||||
|
'(?!-)' # can't start with a dash
|
||||||
|
'(?:[a-z' + ul + '-]{2,}' # domain label
|
||||||
|
'|xn--[a-z0-9]+)' # or punycode label
|
||||||
|
'(?<!-)' # can't end with a dash
|
||||||
|
'\.?' # may have a trailing dot
|
||||||
|
)
|
||||||
host_re = '(' + hostname_re + domain_re + tld_re + '|localhost)'
|
host_re = '(' + hostname_re + domain_re + tld_re + '|localhost)'
|
||||||
|
|
||||||
regex = re.compile(
|
regex = re.compile(
|
||||||
|
|
|
@ -21,3 +21,6 @@ Bugfixes
|
||||||
* Fixed :class:`~django.contrib.postgres.fields.RangeField` and
|
* Fixed :class:`~django.contrib.postgres.fields.RangeField` and
|
||||||
:class:`~django.contrib.postgres.fields.ArrayField` serialization with
|
:class:`~django.contrib.postgres.fields.ArrayField` serialization with
|
||||||
``None`` values (:ticket:`26215`).
|
``None`` values (:ticket:`26215`).
|
||||||
|
|
||||||
|
* Reallowed dashes in top-level domain names of URLs checked by
|
||||||
|
``URLValidator`` to fix a regression in Django 1.8 (:ticket:`26204`).
|
||||||
|
|
|
@ -6,7 +6,7 @@ http://.com
|
||||||
http://invalid-.com
|
http://invalid-.com
|
||||||
http://-invalid.com
|
http://-invalid.com
|
||||||
http://invalid.com-
|
http://invalid.com-
|
||||||
http://invalid.c-m
|
http://invalid.-com
|
||||||
http://inv-.alid-.com
|
http://inv-.alid-.com
|
||||||
http://inv-.-alid.com
|
http://inv-.-alid.com
|
||||||
file://localhost/path
|
file://localhost/path
|
||||||
|
@ -33,6 +33,8 @@ http:// shouldfail.com
|
||||||
:// should fail
|
:// should fail
|
||||||
http://foo.bar/foo(bar)baz quux
|
http://foo.bar/foo(bar)baz quux
|
||||||
http://-error-.invalid/
|
http://-error-.invalid/
|
||||||
|
http://dashinpunytld.trailingdot.xn--.
|
||||||
|
http://dashinpunytld.xn---
|
||||||
http://-a.b.co
|
http://-a.b.co
|
||||||
http://a.b-.co
|
http://a.b-.co
|
||||||
http://a.-b.co
|
http://a.-b.co
|
||||||
|
|
|
@ -63,3 +63,7 @@ http://0.0.0.0/
|
||||||
http://255.255.255.255
|
http://255.255.255.255
|
||||||
http://224.0.0.0
|
http://224.0.0.0
|
||||||
http://224.1.1.1
|
http://224.1.1.1
|
||||||
|
http://dashintld.c-m
|
||||||
|
http://multipledashintld.a-b-c
|
||||||
|
http://evenmoredashintld.a---c
|
||||||
|
http://dashinpunytld.xn---c
|
||||||
|
|
Loading…
Reference in New Issue