summaryrefslogtreecommitdiffstats
path: root/ipaserver/plugins/dns.py
diff options
context:
space:
mode:
authorMartin Basti <mbasti@redhat.com>2016-06-13 20:02:21 +0200
committerMartin Basti <mbasti@redhat.com>2016-06-17 15:22:24 +0200
commit2157ea0e6d0d762bdc71022ddd55045406c4b300 (patch)
tree312c488152c3d417f230906fb2476c4885bc17f7 /ipaserver/plugins/dns.py
parent88a0952f26f9d1e2ee9d02126b27f3075dbad46a (diff)
downloadfreeipa-2157ea0e6d0d762bdc71022ddd55045406c4b300.tar.gz
freeipa-2157ea0e6d0d762bdc71022ddd55045406c4b300.tar.xz
freeipa-2157ea0e6d0d762bdc71022ddd55045406c4b300.zip
DNS Locations: dnsserver-* commands
New commands for manipulation with DNS server configuration were added: * dnsserver-show * dnsserver-mod * dnsserver-find https://fedorahosted.org/bind-dyndb-ldap/wiki/Design/PerServerConfigInLDAP https://fedorahosted.org/freeipa/ticket/2008 Reviewed-By: Petr Spacek <pspacek@redhat.com> Reviewed-By: Jan Cholasta <jcholast@redhat.com>
Diffstat (limited to 'ipaserver/plugins/dns.py')
-rw-r--r--ipaserver/plugins/dns.py41
1 files changed, 7 insertions, 34 deletions
diff --git a/ipaserver/plugins/dns.py b/ipaserver/plugins/dns.py
index e9eb1f98f..094f8eb57 100644
--- a/ipaserver/plugins/dns.py
+++ b/ipaserver/plugins/dns.py
@@ -66,7 +66,9 @@ from ipalib.util import (normalize_zonemgr,
EDNS0UnsupportedError, DNSSECValidationError,
validate_dnssec_zone_forwarder_step1,
validate_dnssec_zone_forwarder_step2,
- verify_host_resolvable)
+ verify_host_resolvable,
+ validate_bind_forwarder,
+ ipaddr_validator)
from ipapython.dn import DN
from ipapython.ipautil import CheckedIPAddress
from ipapython.dnsutil import check_zone_overlap
@@ -373,23 +375,12 @@ def _reverse_zone_name(netstr):
else:
return None
-def _validate_ipaddr(ugettext, ipaddr, ip_version=None):
- try:
- ip = netaddr.IPAddress(str(ipaddr), flags=netaddr.INET_PTON)
-
- if ip_version is not None:
- if ip.version != ip_version:
- return _('invalid IP address version (is %(value)d, must be %(required_value)d)!') \
- % dict(value=ip.version, required_value=ip_version)
- except (netaddr.AddrFormatError, ValueError):
- return _('invalid IP address format')
- return None
def _validate_ip4addr(ugettext, ipaddr):
- return _validate_ipaddr(ugettext, ipaddr, 4)
+ return ipaddr_validator(ugettext, ipaddr, 4)
def _validate_ip6addr(ugettext, ipaddr):
- return _validate_ipaddr(ugettext, ipaddr, 6)
+ return ipaddr_validator(ugettext, ipaddr, 6)
def _validate_ipnet(ugettext, ipnet):
try:
@@ -457,24 +448,6 @@ def _normalize_bind_aci(bind_acis):
acis += u';'
return acis
-def _validate_bind_forwarder(ugettext, forwarder):
- ip_address, sep, port = forwarder.partition(u' port ')
-
- ip_address_validation = _validate_ipaddr(ugettext, ip_address)
-
- if ip_address_validation is not None:
- return ip_address_validation
-
- if sep:
- try:
- port = int(port)
- if port < 0 or port > 65535:
- raise ValueError()
- except ValueError:
- return _('%(port)s is not a valid port' % dict(port=port))
-
- return None
-
def _validate_nsec3param_record(ugettext, value):
_nsec3param_pattern = (r'^(?P<alg>\d+) (?P<flags>\d+) (?P<iter>\d+) '
r'(?P<salt>([0-9a-fA-F]{2})+|-)$')
@@ -2001,7 +1974,7 @@ class DNSZoneBase(LDAPObject):
attribute=True,
),
Str('idnsforwarders*',
- _validate_bind_forwarder,
+ validate_bind_forwarder,
cli_name='forwarder',
label=_('Zone forwarders'),
doc=_('Per-zone forwarders. A custom port can be specified '
@@ -4043,7 +4016,7 @@ class dnsconfig(LDAPObject):
takes_params = (
Str('idnsforwarders*',
- _validate_bind_forwarder,
+ validate_bind_forwarder,
cli_name='forwarder',
label=_('Global forwarders'),
doc=_('Global forwarders. A custom port can be specified for each '