diff --git a/modoboa/lib/form_utils.py b/modoboa/lib/form_utils.py index da18fa26b..c52a94a39 100644 --- a/modoboa/lib/form_utils.py +++ b/modoboa/lib/form_utils.py @@ -344,17 +344,19 @@ class TabForms(object): # -def is_valid_host(host): - """IDN compatible domain validator.""" - host = host.encode('idna').lower() - if not hasattr(is_valid_host, '_re'): - is_valid_host._re = re.compile( - r'^([0-9a-z][-\w]*[0-9a-z]\.)+[a-z0-9\-]{2,15}$') - return bool(is_valid_host._re.match(host)) +def is_valid_hostname(hostname): + """Domain name validaton.""" + if len(hostname) > 255: + return False + if hostname[-1] == ".": + hostname = hostname[:-1] # strip exactly one dot from the + # right, if present + allowed = re.compile(r"(?!-)[A-Z\d-]{1,63}(?