From c731caeabbd55bec4d86f2b65e48b356f08c6610 Mon Sep 17 00:00:00 2001 From: Aki Tuomi Date: Sat, 8 Feb 2014 23:48:30 +0200 Subject: [PATCH] Implementation for remotebackend --- modules/remotebackend/remotebackend.cc | 28 ++++++++++++++++++++++++++ modules/remotebackend/remotebackend.hh | 1 + 2 files changed, 29 insertions(+) diff --git a/modules/remotebackend/remotebackend.cc b/modules/remotebackend/remotebackend.cc index 36cdc5b038..fc3d9799dd 100644 --- a/modules/remotebackend/remotebackend.cc +++ b/modules/remotebackend/remotebackend.cc @@ -305,6 +305,34 @@ bool RemoteBackend::getBeforeAndAfterNamesAbsolute(uint32_t id, const std::strin return true; } +bool RemoteBackend::getAllDomainMetadata(const string& name, std::map >& meta) { + rapidjson::Document query,answer; + rapidjson::Value parameters; + + query.SetObject(); + JSON_ADD_MEMBER(query, "method", "getAllDomainMetadata", query.GetAllocator()); + parameters.SetObject(); + JSON_ADD_MEMBER(parameters, "name", name.c_str(), query.GetAllocator()); + query.AddMember("parameters", parameters, query.GetAllocator()); + + if (this->send(query) == false) + return false; + + meta.clear(); + + // not mandatory to implement + if (this->recv(answer) == false) + return true; + + if (answer["result"].IsObject()) { + for (rapidjson::Value::MemberIterator kind = answer["result"].MemberBegin(); kind != answer["result"].MemberEnd(); kind++) + for(rapidjson::Value::ValueIterator content = kind->value.Begin(); content != kind->value.End(); content++) + meta[kind->name.GetString()].push_back(getString(*content)); + } + + return true; +} + bool RemoteBackend::getDomainMetadata(const std::string& name, const std::string& kind, std::vector& meta) { rapidjson::Document query,answer; rapidjson::Value parameters; diff --git a/modules/remotebackend/remotebackend.hh b/modules/remotebackend/remotebackend.hh index bcbd429083..9bfa087ffe 100644 --- a/modules/remotebackend/remotebackend.hh +++ b/modules/remotebackend/remotebackend.hh @@ -132,6 +132,7 @@ class RemoteBackend : public DNSBackend bool get(DNSResourceRecord &rr); bool list(const std::string &target, int domain_id, bool include_disabled=false); + virtual bool getAllDomainMetadata(const string& name, std::map >& meta); virtual bool getDomainMetadata(const std::string& name, const std::string& kind, std::vector& meta); virtual bool getDomainKeys(const std::string& name, unsigned int kind, std::vector& keys); virtual bool getTSIGKey(const std::string& name, std::string* algorithm, std::string* content); -- 2.47.3