]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
use DNSName for before and afternames in the other backends
authorKees Monshouwer <mind04@monshouwer.org>
Sat, 22 Oct 2016 19:01:16 +0000 (21:01 +0200)
committermind04 <mind04@monshouwer.org>
Sun, 23 Oct 2016 18:10:30 +0000 (20:10 +0200)
modules/luabackend/dnssec.cc
modules/luabackend/luabackend.hh
modules/oraclebackend/oraclebackend.cc
modules/oraclebackend/oraclebackend.hh
modules/remotebackend/remotebackend.cc
modules/remotebackend/remotebackend.hh
modules/remotebackend/test-remotebackend.cc

index 86280e9ecd3593c18de3ea59a1a1b50c1aa3c2dd..9802e5a68b6e91e87704b43c6ffcdb00cc7788c3 100644 (file)
@@ -114,7 +114,7 @@ bool LUABackend::updateDNSSECOrderAndAuthAbsolute(uint32_t domain_id, const DNSN
     return ok;
 }
 
-bool LUABackend::getBeforeAndAfterNamesAbsolute(uint32_t id, const std::string& qname, DNSName& unhashed, std::string& before, std::string& after) {
+bool LUABackend::getBeforeAndAfterNamesAbsolute(uint32_t id, const DNSName& qname, DNSName& unhashed, DNSName& before, DNSName& after) {
 
     if(f_lua_getbeforeandafternamesabsolute == 0)
        return false;
@@ -129,7 +129,7 @@ bool LUABackend::getBeforeAndAfterNamesAbsolute(uint32_t id, const std::string&
     lua_rawgeti(lua, LUA_REGISTRYINDEX, f_lua_updatednssecorderandauthabsolute);
 
     lua_pushinteger(lua, id);
-    lua_pushstring(lua, qname.c_str());
+    lua_pushstring(lua, qname.toString().c_str());
 
     if(lua_pcall(lua, 2, 3, f_lua_exec_error) != 0) {
         string e = backend_name + lua_tostring(lua, -1);
@@ -156,13 +156,13 @@ bool LUABackend::getBeforeAndAfterNamesAbsolute(uint32_t id, const std::string&
     returnedwhat = lua_type(lua, -1);
     ok = (returnedwhat == LUA_TSTRING) && ok;
     
-    before = lua_tostring(lua, -1);
+    before = DNSName(lua_tostring(lua, -1));
     lua_pop(lua, 1);
 
     returnedwhat = lua_type(lua, -1);
     ok = (returnedwhat == LUA_TSTRING) && ok;
     
-    after = lua_tostring(lua, -1);
+    after = DNSName(lua_tostring(lua, -1));
     lua_pop(lua, 1);
 
     if(logging)
index c861558a60fb01543688fdb0caa8673e07db9e5f..5f3c12b9023c03ccdb43e73fb11a5c4800937803 100644 (file)
@@ -100,7 +100,7 @@ public:
     bool getTSIGKey(const DNSName& name, DNSName* algorithm, string* content) override ;
     bool addDomainKey(const DNSName& name, const KeyData& key, int64_t& id) override ;
     bool updateDNSSECOrderAndAuthAbsolute(uint32_t domain_id, const DNSName& qname, const std::string& ordername, bool auth);
-    bool getBeforeAndAfterNamesAbsolute(uint32_t id, const      string& qname, DNSName& unhashed, string& before, string& after) override;
+    bool getBeforeAndAfterNamesAbsolute(uint32_t id, const DNSName& qname, DNSName& unhashed, DNSName& before, DNSName& after) override;
     bool updateDNSSECOrderNameAndAuth(uint32_t domain_id, const DNSName& zonename, const DNSName& qname, const DNSName& ordername, bool auth, const uint16_t qtype=QType::ANY) override;
     bool updateDNSSECOrderAndAuth(uint32_t domain_id, const DNSName& zonename, const DNSName& qname, bool auth);
 //  OTHER
index b3ab9fd8edb2bf882c341de2a7a414d4626dd3c6..d9ecebb92e7e44084aba8ca68e290d80d9027bfb 100644 (file)
@@ -521,7 +521,7 @@ OracleBackend::getBeforeAndAfterNames (
 
 bool
 OracleBackend::getBeforeAndAfterNamesAbsolute(uint32_t zoneId,
-  const string& name, DNSName& unhashed, string& before, string& after)
+  const DNSName& name, DNSName& unhashed, DNSName& before, DNSName& after)
 {
   if(!d_dnssecQueries)
     return -1; 
@@ -536,7 +536,7 @@ OracleBackend::getBeforeAndAfterNamesAbsolute(uint32_t zoneId,
   bind_str_ind(stmt, ":prev", mResultPrevName, sizeof(mResultPrevName), &mResultPrevNameInd);
   bind_str_ind(stmt, ":next", mResultNextName, sizeof(mResultNextName), &mResultNextNameInd);
   bind_uint32(stmt, ":zoneid", &zoneId);
-  string_to_cbuf(mQueryName, name, sizeof(mQueryName));
+  string_to_cbuf(mQueryName, name.labelReverse().toString(" ", false)), sizeof(mQueryName));
   mResultNameInd = -1;
   mResultPrevNameInd = -1;
   mResultNextNameInd = -1;
@@ -554,8 +554,8 @@ OracleBackend::getBeforeAndAfterNamesAbsolute(uint32_t zoneId,
   check_indicator(mResultNextNameInd, false);
 
   unhashed = DNSName(mResultName);
-  before = mResultPrevName;
-  after = mResultNextName;
+  before = DNSName(boost::replace_all_copy(mResultPrevName," ",".")).labelReverse();
+  after = DNSName(boost::replace_all_copy(mResultNextName," ",".")).labelReverse();
 
   release_query(stmt, prevNextHashQueryKey);
   return true;
index f2fcc15d3f8e5ddad7132cb9dd16886ff7f9548b..223e7ff5521720016f5f07cd697f9a958e2298ad 100644 (file)
@@ -70,10 +70,10 @@ public:
                               const DNSName& name,
                               DNSName& before, DNSName& after);
   bool getBeforeAndAfterNamesAbsolute(uint32_t zoneId,
-                                      const string& name,
+                                      const DNSName& name,
                                       DNSName& unhashed,
-                                      string& before,
-                                      string& after);
+                                      DNSName& before,
+                                      DNSName& after);
   bool get(DNSResourceRecord &rr);
   vector<string> getDomainMasters(const DNSName& domain, int zoneId);
   bool isMaster(const DNSName& domain, const string &master);
index 5f76b4d846ac6d9c70f8ea44640fe154f1cd7122..5be1c2e06d5044b8b53401c908adfc0519f51c8a 100644 (file)
@@ -252,7 +252,7 @@ bool RemoteBackend::get(DNSResourceRecord &rr) {
    return true;
 }
 
-bool RemoteBackend::getBeforeAndAfterNamesAbsolute(uint32_t id, const std::string& qname, DNSName& unhashed, std::string& before, std::string& after) {
+bool RemoteBackend::getBeforeAndAfterNamesAbsolute(uint32_t id, const DNSName& qname, DNSName& unhashed, DNSName& before, DNSName& after) {
    // no point doing dnssec if it's not supported
    if (d_dnssec == false) return false;
 
@@ -260,7 +260,7 @@ bool RemoteBackend::getBeforeAndAfterNamesAbsolute(uint32_t id, const std::strin
      { "method", "getBeforeAndAfterNamesAbsolute" },
      { "parameters", Json::object {
        { "id", Json(static_cast<double>(id)) },
-       { "qname", qname }
+       { "qname", qname.toString() }
      }}
    };
    Json answer;
@@ -269,12 +269,12 @@ bool RemoteBackend::getBeforeAndAfterNamesAbsolute(uint32_t id, const std::strin
      return false;
 
    unhashed = DNSName(stringFromJson(answer["result"], "unhashed"));
-   before = "";
-   after = "";
+   before.clear();
+   after.clear();
    if (answer["result"]["before"] != Json())
-     before = stringFromJson(answer["result"], "before");
+     before = DNSName(stringFromJson(answer["result"], "before"));
    if (answer["result"]["after"] != Json())
-     after = stringFromJson(answer["result"], "after");
+     after = DNSName(stringFromJson(answer["result"], "after"));
 
    return true;
 }
index 0cf0f39817d10bded56260f17b511afeddfb5737..3a7182afebb8e86dc24507c261960fea78f7f344 100644 (file)
@@ -162,7 +162,7 @@ class RemoteBackend : public DNSBackend
   virtual bool getDomainMetadata(const DNSName& name, const std::string& kind, std::vector<std::string>& meta);
   virtual bool getDomainKeys(const DNSName& name, unsigned int kind, std::vector<DNSBackend::KeyData>& keys);
   virtual bool getTSIGKey(const DNSName& name, DNSName* algorithm, std::string* content);
-  virtual bool getBeforeAndAfterNamesAbsolute(uint32_t id, const string& qname, DNSName& unhashed, string& before, string& after);
+  virtual bool getBeforeAndAfterNamesAbsolute(uint32_t id, const DNSName& qname, DNSName& unhashed, DNSName& before, DNSName& after);
   virtual bool setDomainMetadata(const DNSName& name, const string& kind, const std::vector<std::basic_string<char> >& meta);
   virtual bool removeDomainKey(const DNSName& name, unsigned int id);
   virtual bool addDomainKey(const DNSName& name, const KeyData& key, int64_t& id);
index b9ce22de59364ebbc6f5367ce892396195c4173b..acbb3f4a0043a5775669375b56358bf15e926008 100644 (file)
@@ -157,14 +157,13 @@ BOOST_AUTO_TEST_CASE(test_method_removeDomainKey) {
 }
 
 BOOST_AUTO_TEST_CASE(test_method_getBeforeAndAfterNamesAbsolute) {
-   DNSName unhashed;
-   std::string before,after;
+   DNSName unhashed, before, after;
    BOOST_TEST_MESSAGE("Testing getBeforeAndAfterNamesAbsolute method");
    
-   be->getBeforeAndAfterNamesAbsolute(-1, "middle.unit.test.", unhashed, before, after);
+   be->getBeforeAndAfterNamesAbsolute(-1, DNSName("middle.unit.test."), unhashed, before, after);
    BOOST_CHECK_EQUAL(unhashed.toString(), "middle.");
-   BOOST_CHECK_EQUAL(before, "begin.");
-   BOOST_CHECK_EQUAL(after, "stop.");
+   BOOST_CHECK_EQUAL(before.toString(), "begin.");
+   BOOST_CHECK_EQUAL(after.toString(), "stop.");
 }
 
 BOOST_AUTO_TEST_CASE(test_method_setTSIGKey) {