From: Pieter Lexis Date: Tue, 14 Jan 2020 13:59:23 +0000 (+0100) Subject: remote: Support ::alsoNotifies X-Git-Tag: auth-4.3.0-beta1~29^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a1df148ac4cbf7f80ca3d8591f32f86e6bfa8644;p=thirdparty%2Fpdns.git remote: Support ::alsoNotifies --- diff --git a/docs/backends/remote.rst b/docs/backends/remote.rst index 49e74b4afc..6cb2653cc1 100644 --- a/docs/backends/remote.rst +++ b/docs/backends/remote.rst @@ -144,6 +144,11 @@ in this array will be logged in PowerDNS at loglevel ``info`` (6). Methods ^^^^^^^ +Methods required for different features +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +:Always required: ``initialize``, ``lookup`` +:Master operation: ``list``, ``getUpdatedMasters``, ``setNotified`` + ``initialize`` ~~~~~~~~~~~~~~ @@ -958,12 +963,13 @@ Alternative response ``createSlaveDomain`` ~~~~~~~~~~~~~~~~~~~~~ - Creates new domain. This method is called when NOTIFY is received and you are superslaving. -Mandatory: No Parameters: ip, domain Optional parameters: nameserver, -account Reply: true for success, false for failure + - Mandatory: No + - Parameters: ip, domain + - Optional parameters: nameserver, account + - Reply: true for success, false for failure Example JSON/RPC '''''''''''''''' @@ -1516,7 +1522,7 @@ Used to find out any updates to master domains. This is used to trigger notifica - Mandatory: no - Parameters: none -- Reply: array of DomainInfo +- Reply: array of DomainInfo or at least the ``id``, ``zone``, ``serial`` and ``notified_serial`` fields Example JSON/RPC '''''''''''''''' diff --git a/modules/remotebackend/remotebackend.cc b/modules/remotebackend/remotebackend.cc index 6d7f34437f..2c20cd306a 100644 --- a/modules/remotebackend/remotebackend.cc +++ b/modules/remotebackend/remotebackend.cc @@ -904,6 +904,13 @@ void RemoteBackend::getAllDomains(vector *domains, bool include_disa } } +void RemoteBackend::alsoNotifies(const DNSName &domain, set *ips) +{ + std::vector meta; + getDomainMetadata(domain, "ALSO-NOTIFY", meta); + ips->insert(meta.begin(), meta.end()); +} + void RemoteBackend::getUpdatedMasters(vector* domains) { Json query = Json::object{ diff --git a/modules/remotebackend/remotebackend.hh b/modules/remotebackend/remotebackend.hh index c453c52e99..647da8cdd9 100644 --- a/modules/remotebackend/remotebackend.hh +++ b/modules/remotebackend/remotebackend.hh @@ -189,6 +189,7 @@ class RemoteBackend : public DNSBackend bool searchComments(const string &pattern, int maxResults, vector& result) override; void getAllDomains(vector *domains, bool include_disabled=false) override; void getUpdatedMasters(vector* domains) override; + void alsoNotifies(const DNSName &domain, set *ips) override; static DNSBackend *maker();