summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Cholasta <jcholast@redhat.com>2011-09-26 11:00:32 +0200
committerMartin Kosek <mkosek@redhat.com>2011-10-04 09:25:44 +0200
commit48a67d9a2e932b21d55cd5a2668ed8a9f11e1564 (patch)
treeccea34a681d231236ce5e58fbf9e9d74a27e24af
parent4db088d7f484c9446c27df32837a033721cb1dcb (diff)
downloadfreeipa-48a67d9a2e932b21d55cd5a2668ed8a9f11e1564.tar.gz
freeipa-48a67d9a2e932b21d55cd5a2668ed8a9f11e1564.tar.xz
freeipa-48a67d9a2e932b21d55cd5a2668ed8a9f11e1564.zip
Validate name_from_ip parameter of dnszone.
ticket 1627
-rw-r--r--ipalib/plugins/dns.py23
1 files changed, 22 insertions, 1 deletions
diff --git a/ipalib/plugins/dns.py b/ipalib/plugins/dns.py
index d922cdfb5..09642089e 100644
--- a/ipalib/plugins/dns.py
+++ b/ipalib/plugins/dns.py
@@ -167,7 +167,7 @@ def _validate_ipaddr(ugettext, ipaddr):
def _validate_ipnet(ugettext, ipnet):
try:
net = netaddr.IPNetwork(ipnet)
- except (UnboundLocalError, ValueError):
+ except (netaddr.AddrFormatError, ValueError, UnboundLocalError):
return u'invalid format'
return None
@@ -417,6 +417,13 @@ class dnszone_add(LDAPCreate):
),
)
+ def args_options_2_params(self, *args, **options):
+ # FIXME: Check if name_from_ip is valid. The framework should do that,
+ # but it does not. Before it's fixed, this should suffice.
+ if 'name_from_ip' in options:
+ self.obj.params['name_from_ip'](unicode(options['name_from_ip']))
+ return super(dnszone_add, self).args_options_2_params(*args, **options)
+
def pre_callback(self, ldap, dn, entry_attrs, *keys, **options):
if not dns_container_exists(self.api.Backend.ldap2):
raise errors.NotFound(reason=_('DNS is not configured'))
@@ -469,6 +476,13 @@ api.register(dnszone_del)
class dnszone_mod(LDAPUpdate):
__doc__ = _('Modify DNS zone (SOA record).')
+ def args_options_2_params(self, *args, **options):
+ # FIXME: Check if name_from_ip is valid. The framework should do that,
+ # but it does not. Before it's fixed, this should suffice.
+ if 'name_from_ip' in options:
+ self.obj.params['name_from_ip'](unicode(options['name_from_ip']))
+ return super(dnszone_mod, self).args_options_2_params(*args, **options)
+
def pre_callback(self, ldap, dn, entry_attrs, *keys, **options):
if 'name_from_ip' in entry_attrs:
del entry_attrs['name_from_ip']
@@ -483,6 +497,13 @@ api.register(dnszone_mod)
class dnszone_find(LDAPSearch):
__doc__ = _('Search for DNS zones (SOA records).')
+ def args_options_2_params(self, *args, **options):
+ # FIXME: Check if name_from_ip is valid. The framework should do that,
+ # but it does not. Before it's fixed, this should suffice.
+ if 'name_from_ip' in options:
+ self.obj.params['name_from_ip'](unicode(options['name_from_ip']))
+ return super(dnszone_find, self).args_options_2_params(*args, **options)
+
def args_options_2_entry(self, *args, **options):
if 'name_from_ip' in options:
if 'idnsname' not in options: