summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Basti <mbasti@redhat.com>2014-07-03 18:14:40 +0200
committerMartin Kosek <mkosek@redhat.com>2014-07-04 09:26:49 +0200
commit29951ada9fd7dd8e0887f0832c6b58f266960b72 (patch)
tree6706195b8b3d2cf117e22250eb6ccd28c56e0b7a
parent6f2451ce9e68e2425c665f5dc11d0800ae83a0b2 (diff)
downloadfreeipa-29951ada9fd7dd8e0887f0832c6b58f266960b72.tar.gz
freeipa-29951ada9fd7dd8e0887f0832c6b58f266960b72.tar.xz
freeipa-29951ada9fd7dd8e0887f0832c6b58f266960b72.zip
Non IDNA zonename should be normalized to lowercase
Before IDNA support zone was normalized. Reviewed-By: Petr Spacek <pspacek@redhat.com>
-rw-r--r--ipalib/plugins/dns.py10
1 files changed, 10 insertions, 0 deletions
diff --git a/ipalib/plugins/dns.py b/ipalib/plugins/dns.py
index c3a09e9d9..4c3497f6c 100644
--- a/ipalib/plugins/dns.py
+++ b/ipalib/plugins/dns.py
@@ -1708,6 +1708,15 @@ def _records_idn_postprocess(record, **options):
rrs.append(dnsvalue)
record[attr] = rrs
+def _normalize_zone(zone):
+ if isinstance(zone, unicode):
+ # normalize only non-IDNA zones
+ try:
+ return unicode(zone.encode('ascii')).lower()
+ except UnicodeError:
+ pass
+ return zone
+
class DNSZoneBase(LDAPObject):
"""
@@ -1727,6 +1736,7 @@ class DNSZoneBase(LDAPObject):
label=_('Zone name'),
doc=_('Zone name (FQDN)'),
default_from=lambda name_from_ip: _reverse_zone_name(name_from_ip),
+ normalizer=_normalize_zone,
primary_key=True,
),
Str('name_from_ip?', _validate_ipnet,