summaryrefslogtreecommitdiffstats
path: root/ipalib/parameters.py
diff options
context:
space:
mode:
authorMartin Basti <mbasti@redhat.com>2014-11-27 14:16:23 +0100
committerJan Cholasta <jcholast@redhat.com>2014-12-01 12:31:36 +0000
commitca25c92ea89661755d7204ac703e8c419c8929fa (patch)
tree4303e1c3b14cc12ecfc799f9d18fae0a0ceccb5a /ipalib/parameters.py
parent45dbd12d8886ca2025bcab5b10ec5e004af3d9ab (diff)
downloadfreeipa-ca25c92ea89661755d7204ac703e8c419c8929fa.tar.gz
freeipa-ca25c92ea89661755d7204ac703e8c419c8929fa.tar.xz
freeipa-ca25c92ea89661755d7204ac703e8c419c8929fa.zip
Throw zonemgr error message before installation proceeds
Ticket: https://fedorahosted.org/freeipa/ticket/4771 Reviewed-By: Jan Cholasta <jcholast@redhat.com>
Diffstat (limited to 'ipalib/parameters.py')
-rw-r--r--ipalib/parameters.py35
1 files changed, 5 insertions, 30 deletions
diff --git a/ipalib/parameters.py b/ipalib/parameters.py
index 0cf14a4cd..7fa55fd6a 100644
--- a/ipalib/parameters.py
+++ b/ipalib/parameters.py
@@ -112,7 +112,7 @@ from errors import ConversionError, RequirementError, ValidationError
from errors import PasswordMismatch, Base64DecodeError
from constants import TYPE_ERROR, CALLABLE_ERROR, LDAP_GENERALIZED_TIME_FORMAT
from text import Gettext, FixMe
-from util import json_serialize
+from util import json_serialize, validate_idna_domain
from ipapython.dn import DN
from ipapython.dnsutil import DNSName
import dns.name
@@ -1950,36 +1950,11 @@ class DNSNameParam(Param):
error = None
try:
- domain_name = DNSName(value)
- except dns.name.BadEscape:
- error = _('invalid escape code in domain name')
- except dns.name.EmptyLabel:
- error = _('empty DNS label')
- except dns.name.NameTooLong:
- error = _('domain name cannot be longer than 255 characters')
- except dns.name.LabelTooLong:
- error = _('DNS label cannot be longer than 63 characters')
- except dns.exception.SyntaxError:
- error = _('invalid domain name')
- else:
- #compare if IDN normalized and original domain match
- #there is N:1 mapping between unicode and IDNA names
- #user should use normalized names to avoid mistakes
- labels = re.split(u'[.\uff0e\u3002\uff61]', value, flags=re.UNICODE)
- try:
- map(lambda label: label.encode("ascii"), labels)
- except UnicodeError:
- # IDNA
- is_nonnorm = any(encodings.idna.nameprep(x) != x for x in labels)
- if is_nonnorm:
- error = _("domain name '%(domain)s' should be normalized to"
- ": %(normalized)s") % {
- 'domain': value,
- 'normalized': '.'.join([encodings.idna.nameprep(x) for x in labels])}
- if error:
+ validate_idna_domain(value)
+ except ValueError as e:
raise ConversionError(name=self.get_param_name(), index=index,
- error=error)
- value = domain_name
+ error=unicode(e))
+ value = DNSName(value)
if self.only_absolute and not value.is_absolute():
value = value.make_absolute()