diff options
| author | Martin Basti <mbasti@redhat.com> | 2014-07-03 18:14:40 +0200 |
|---|---|---|
| committer | Martin Kosek <mkosek@redhat.com> | 2014-07-04 09:26:49 +0200 |
| commit | 29951ada9fd7dd8e0887f0832c6b58f266960b72 (patch) | |
| tree | 6706195b8b3d2cf117e22250eb6ccd28c56e0b7a | |
| parent | 6f2451ce9e68e2425c665f5dc11d0800ae83a0b2 (diff) | |
| download | freeipa-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.py | 10 |
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, |
