]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
Implementation for remotebackend
authorAki Tuomi <cmouse@desteem.org>
Sat, 8 Feb 2014 21:48:30 +0000 (23:48 +0200)
committerAki Tuomi <cmouse@desteem.org>
Sat, 8 Feb 2014 21:48:30 +0000 (23:48 +0200)
modules/remotebackend/remotebackend.cc
modules/remotebackend/remotebackend.hh

index 36cdc5b03840509fd250e84c4cd0e379cc5e15e4..fc3d9799ddac5a6739d8a6c50ceed855599bbb0f 100644 (file)
@@ -305,6 +305,34 @@ bool RemoteBackend::getBeforeAndAfterNamesAbsolute(uint32_t id, const std::strin
    return true;
 }
 
+bool RemoteBackend::getAllDomainMetadata(const string& name, std::map<std::string, std::vector<std::string> >& 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<std::string>& meta) {
    rapidjson::Document query,answer;
    rapidjson::Value parameters;
index bcbd4290831f6e2f779ffef72c50f41bff44814e..9bfa087ffeba2843079e14cc0825ca1d7e8f058e 100644 (file)
@@ -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<std::string, std::vector<std::string> >& meta);
   virtual bool getDomainMetadata(const std::string& name, const std::string& kind, std::vector<std::string>& meta);
   virtual bool getDomainKeys(const std::string& name, unsigned int kind, std::vector<DNSBackend::KeyData>& keys);
   virtual bool getTSIGKey(const std::string& name, std::string* algorithm, std::string* content);