From: Chris Hofstaedtler Date: Thu, 24 May 2018 08:51:17 +0000 (+0200) Subject: Auth API: add zone lookup by /zones?zone=example.org. X-Git-Tag: dnsdist-1.3.3~134^2~2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e543cc8f9f10aaa2c5f377253d378499f72ffb5f;p=thirdparty%2Fpdns.git Auth API: add zone lookup by /zones?zone=example.org. --- diff --git a/pdns/ws-auth.cc b/pdns/ws-auth.cc index 63214bddb7..190ffeccd5 100644 --- a/pdns/ws-auth.cc +++ b/pdns/ws-auth.cc @@ -1390,7 +1390,20 @@ static void apiServerZones(HttpRequest* req, HttpResponse* resp) { throw HttpMethodNotAllowedException(); vector domains; - B.getAllDomains(&domains, true); // incl. disabled + + auto zone_it = req->getvars.find("zone"); + if (zone_it != req->getvars.end()) { + string zone = zone_it->second; + apiCheckNameAllowedCharacters(zone); + DNSName zonename = apiNameToDNSName(zone); + zonename.makeUsLowerCase(); + DomainInfo di; + if (B.getDomainInfo(zonename, di)) { + domains.push_back(di); + } + } else { + B.getAllDomains(&domains, true); // incl. disabled + } Json::array doc; for(const DomainInfo& di : domains) { diff --git a/regression-tests.api/test_Zones.py b/regression-tests.api/test_Zones.py index a4a3ffcadb..60c5cddad8 100644 --- a/regression-tests.api/test_Zones.py +++ b/regression-tests.api/test_Zones.py @@ -603,6 +603,14 @@ class AuthZones(ApiTestCase, AuthZonesHelperMixin): self.assertEqual(data['serial'], 0) self.assertEqual(data['rrsets'], []) + def test_find_zone_by_name(self): + name = 'foo/' + unique_zone_name() + name, payload, data = self.create_zone(name=name) + r = self.session.get(self.url("/api/v1/servers/localhost/zones?zone=" + name)) + data = r.json() + print(data) + self.assertEquals(data[0]['name'], name) + def test_delete_slave_zone(self): name, payload, data = self.create_zone(kind='Slave', nameservers=None, masters=['127.0.0.2']) r = self.session.delete(self.url("/api/v1/servers/localhost/zones/" + data['id']))