From 3f0eb1417ca0162861a05e3ced6a532b3cfba2ab Mon Sep 17 00:00:00 2001 From: Martin Kosek Date: Wed, 23 Nov 2011 16:03:51 +0100 Subject: Improve zonemgr validator and normalizer The validator has been improved to support better both SOA format (e-mail address in a domain name format, without '@') and standard e-mail format. Allow '\.' character in a SOA format encoding the standard '.' in the local-part of an e-mail. Normalization code has been moved to one common function. https://fedorahosted.org/freeipa/ticket/2053 --- ipaserver/install/bindinstance.py | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) (limited to 'ipaserver/install/bindinstance.py') diff --git a/ipaserver/install/bindinstance.py b/ipaserver/install/bindinstance.py index 7da4a891..0b4a8d57 100644 --- a/ipaserver/install/bindinstance.py +++ b/ipaserver/install/bindinstance.py @@ -32,7 +32,7 @@ from ipapython import sysrestore from ipapython import ipautil from ipalib.constants import DNS_ZONE_REFRESH from ipalib.parameters import IA5Str -from ipalib.util import validate_zonemgr +from ipalib.util import validate_zonemgr, normalize_zonemgr from ipapython.ipa_log_manager import * import ipalib @@ -187,6 +187,9 @@ def add_zone(name, zonemgr=None, dns_backup=None, ns_hostname=None, ns_ip_addres if update_policy is None: update_policy = "grant %(realm)s krb5-self * A; grant %(realm)s krb5-self * AAAA;" % dict(realm=api.env.realm) + if zonemgr is None: + zonemgr = 'root.%s' % name + if ns_hostname is None: # automatically retrieve list of DNS masters dns_masters = api.Object.dnsrecord.get_dns_masters() @@ -298,10 +301,6 @@ def zonemgr_callback(option, opt_str, value, parser): except ValueError, e: parser.error("invalid zonemgr: " + unicode(e)) - name = opt_str.replace('--','') - v = unicode(value, 'utf-8') - ia = IA5Str(name) - ia._convert_scalar(v) parser.values.zonemgr = value class DnsBackup(object): @@ -387,10 +386,10 @@ class BindInstance(service.Service): self.zone_refresh = zone_refresh self.zone_notif = zone_notif - if zonemgr: - self.zonemgr = zonemgr.replace('@','.') - else: + if not zonemgr: self.zonemgr = 'root.%s.%s' % (self.host, self.domain) + else: + self.zonemgr = normalize_zonemgr(zonemgr) self.__setup_sub_dict() -- cgit