From 6dd5486ce7a4bf4085d0c40ba07ad24386275539 Mon Sep 17 00:00:00 2001 From: Aki Tuomi Date: Sat, 1 Jun 2013 21:54:54 +0300 Subject: [PATCH] feedEnts, feedEnts3 implementation and few AddMember additions where forgotten --- modules/remotebackend/remotebackend.cc | 63 ++++++++++++++++++++++++-- 1 file changed, 60 insertions(+), 3 deletions(-) diff --git a/modules/remotebackend/remotebackend.cc b/modules/remotebackend/remotebackend.cc index a5b34076b0..3de3264f17 100644 --- a/modules/remotebackend/remotebackend.cc +++ b/modules/remotebackend/remotebackend.cc @@ -554,6 +554,8 @@ bool RemoteBackend::createSlaveDomain(const string &ip, const string &domain, co JSON_ADD_MEMBER(parameters, "ip", ip.c_str(), query.GetAllocator()); JSON_ADD_MEMBER(parameters, "domain", domain.c_str(), query.GetAllocator()); JSON_ADD_MEMBER(parameters, "account", account.c_str(), query.GetAllocator()); + query.AddMember("parameters", parameters, query.GetAllocator()); + if (connector->send(query) == false || connector->recv(answer) == false) return false; return true; @@ -588,9 +590,64 @@ bool RemoteBackend::replaceRRSet(uint32_t domain_id, const string& qname, const return true; } -bool RemoteBackend::feedRecord(const DNSResourceRecord &r, string *ordername) { return false; } -bool RemoteBackend::feedEnts(int domain_id, set& nonterm) { return false; } -bool RemoteBackend::feedEnts3(int domain_id, const string &domain, set &nonterm, unsigned int times, const string &salt, bool narrow) { return false; } +bool RemoteBackend::feedRecord(const DNSResourceRecord &rr, string *ordername) { + rapidjson::Document query,answer; + rapidjson::Value parameters; + JSON_ADD_MEMBER(parameters, "qtype", rr.qtype.getName().c_str(), query.GetAllocator()); + JSON_ADD_MEMBER(parameters, "qname", rr.qname.c_str(), query.GetAllocator()); + JSON_ADD_MEMBER(parameters, "qclass", QClass::IN, query.GetAllocator()); + JSON_ADD_MEMBER(parameters, "content", rr.content.c_str(), query.GetAllocator()); + JSON_ADD_MEMBER(parameters, "ttl", rr.ttl, query.GetAllocator()); + JSON_ADD_MEMBER(parameters, "priority", rr.priority, query.GetAllocator()); + JSON_ADD_MEMBER(parameters, "auth", rr.auth, query.GetAllocator()); + if (ordername) { + JSON_ADD_MEMBER(parameters, "ordername", ordername->c_str(), query.GetAllocator()); + } + query.AddMember("parameters", parameters, query.GetAllocator()); + + if (connector->send(query) == false || connector->recv(answer) == false) + return false; + return true; // XXX FIXME this API should not return 'true' I think -ahu +} + +bool RemoteBackend::feedEnts(int domain_id, set& nonterm) { + rapidjson::Document query,answer; + rapidjson::Value parameters; + rapidjson::Value nts; + JSON_ADD_MEMBER(parameters, "domain_id", domain_id, query.GetAllocator()); + nts.SetArray(); + BOOST_FOREACH(const string &t, nonterm) { + nts.PushBack(t.c_str(), query.GetAllocator()); + } + parameters.AddMember("nonterm", nts, query.GetAllocator()); + query.AddMember("parameters", parameters, query.GetAllocator()); + + if (connector->send(query) == false || connector->recv(answer) == false) + return false; + return true; +} + +bool RemoteBackend::feedEnts3(int domain_id, const string &domain, set &nonterm, unsigned int times, const string &salt, bool narrow) { + rapidjson::Document query,answer; + rapidjson::Value parameters; + rapidjson::Value nts; + JSON_ADD_MEMBER(parameters, "domain_id", domain_id, query.GetAllocator()); + JSON_ADD_MEMBER(parameters, "times", times, query.GetAllocator()); + JSON_ADD_MEMBER(parameters, "salt", salt.c_str(), query.GetAllocator()); + JSON_ADD_MEMBER(parameters, "narrow", narrow, query.GetAllocator()); + + nts.SetArray(); + BOOST_FOREACH(const string &t, nonterm) { + nts.PushBack(t.c_str(), query.GetAllocator()); + } + parameters.AddMember("nonterm", nts, query.GetAllocator()); + query.AddMember("parameters", parameters, query.GetAllocator()); + + if (connector->send(query) == false || connector->recv(answer) == false) + return false; + return true; +} + bool RemoteBackend::startTransaction(const string &domain, int domain_id) { return false; } bool RemoteBackend::commitTransaction() { return false; } bool RemoteBackend::abortTransaction() { return false; } -- 2.47.3