From c1eb90679fd7e4d46b0839d99e9863d810da0e98 Mon Sep 17 00:00:00 2001 From: Kees Monshouwer Date: Wed, 26 May 2021 23:32:12 +0200 Subject: [PATCH] auth: implement getAllDomains() in geoip backend --- modules/geoipbackend/geoipbackend.cc | 17 +++++++++++++++++ modules/geoipbackend/geoipbackend.hh | 1 + pdns/receiver.cc | 3 ++- 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/modules/geoipbackend/geoipbackend.cc b/modules/geoipbackend/geoipbackend.cc index 980c0643d5..3d563eab21 100644 --- a/modules/geoipbackend/geoipbackend.cc +++ b/modules/geoipbackend/geoipbackend.cc @@ -850,6 +850,23 @@ bool GeoIPBackend::getDomainInfo(const DNSName& domain, DomainInfo& di, bool get return false; } +void GeoIPBackend::getAllDomains(vector* domains, bool include_disabled) +{ + ReadLock rl(&s_state_lock); + + DomainInfo di; + for (const auto& dom : s_domains) { + SOAData sd; + this->getSOA(dom.domain, sd); + di.id = dom.id; + di.zone = dom.domain; + di.serial = sd.serial; + di.kind = DomainInfo::Native; + di.backend = this; + domains->emplace_back(di); + } +} + bool GeoIPBackend::getAllDomainMetadata(const DNSName& name, std::map>& meta) { if (!d_dnssec) diff --git a/modules/geoipbackend/geoipbackend.hh b/modules/geoipbackend/geoipbackend.hh index c8f786202c..cb463cc080 100644 --- a/modules/geoipbackend/geoipbackend.hh +++ b/modules/geoipbackend/geoipbackend.hh @@ -55,6 +55,7 @@ public: void reload() override; void rediscover(string* status = 0) override; bool getDomainInfo(const DNSName& domain, DomainInfo& di, bool getSerial = true) override; + void getAllDomains(vector* domains, bool include_disabled = false) override; // dnssec support bool doesDNSSEC() override { return d_dnssec; }; diff --git a/pdns/receiver.cc b/pdns/receiver.cc index 9e04452fe1..4d9c5a3f2f 100644 --- a/pdns/receiver.cc +++ b/pdns/receiver.cc @@ -628,13 +628,14 @@ int main(int argc, char **argv) } } + UeberBackend::go(); + g_zoneCache.setRefreshInterval(::arg().asNum("zone-cache-refresh-interval")); { UeberBackend B; B.updateZoneCache(); } - UeberBackend::go(); N=std::make_shared(); // this fails when we are not root, throws exception g_udpReceivers.push_back(N); -- 2.47.2