diff options
author | Martin Kosek <mkosek@redhat.com> | 2012-02-03 14:25:53 +0100 |
---|---|---|
committer | Martin Kosek <mkosek@redhat.com> | 2012-02-03 16:26:01 +0100 |
commit | 4ae3a605de405a6d1aa736da420e5ce28fc31157 (patch) | |
tree | c1febafbe91f04917624f65edaeda19523a77f50 | |
parent | 43c3fbc3b06d5bc453f0178d05f7bc63ee2dc592 (diff) | |
download | freeipa.git-4ae3a605de405a6d1aa736da420e5ce28fc31157.tar.gz freeipa.git-4ae3a605de405a6d1aa736da420e5ce28fc31157.tar.xz freeipa.git-4ae3a605de405a6d1aa736da420e5ce28fc31157.zip |
Add SRV record target validator
Add missing SRV record target validator to filter out possible
user errors.
https://fedorahosted.org/freeipa/ticket/2308
-rw-r--r-- | ipalib/plugins/dns.py | 7 | ||||
-rw-r--r-- | tests/test_xmlrpc/test_dns_plugin.py | 9 |
2 files changed, 16 insertions, 0 deletions
diff --git a/ipalib/plugins/dns.py b/ipalib/plugins/dns.py index d296f66d..a975d4db 100644 --- a/ipalib/plugins/dns.py +++ b/ipalib/plugins/dns.py @@ -888,6 +888,12 @@ class RPRecord(DNSRecord): rfc = 1183 supported = False +def _srv_target_validator(ugettext, value): + if value == u'.': + # service not available + return + return _domain_name_validator(ugettext, value) + class SRVRecord(DNSRecord): rrtype = 'SRV' rfc = 2782 @@ -908,6 +914,7 @@ class SRVRecord(DNSRecord): maxvalue=65535, ), Str('target', + _srv_target_validator, label=_('Target'), doc=_('The domain name of the target host or \'.\' if the service is decidedly not available at this domain'), ), diff --git a/tests/test_xmlrpc/test_dns_plugin.py b/tests/test_xmlrpc/test_dns_plugin.py index b177b9d0..9d83d924 100644 --- a/tests/test_xmlrpc/test_dns_plugin.py +++ b/tests/test_xmlrpc/test_dns_plugin.py @@ -566,6 +566,15 @@ class test_dns(Declarative): ), dict( + desc='Try to add invalid SRV record via parts to zone %r using dnsrecord_add' % (dnszone1), + command=('dnsrecord_add', [dnszone1, u'_foo._tcp'], {'srv_part_priority': 0, + 'srv_part_weight' : 0, + 'srv_part_port' : 123, + 'srv_part_target' : u'foo bar'}), + expected=errors.ValidationError(name='srv_part_target', error=''), + ), + + dict( desc='Add SRV record to zone %r using dnsrecord_add' % (dnszone1), command=('dnsrecord_add', [dnszone1, u'_foo._tcp'], {'srvrecord': u"0 100 1234 %s" % dnszone1_mname}), expected={ |