From ab0fbe563a79fa60ef9bde52ba7a82a543d0f7e2 Mon Sep 17 00:00:00 2001 From: Kees Monshouwer Date: Sat, 22 Oct 2016 21:01:16 +0200 Subject: [PATCH] use DNSName for before and afternames in the other backends --- modules/luabackend/dnssec.cc | 8 ++++---- modules/luabackend/luabackend.hh | 2 +- modules/oraclebackend/oraclebackend.cc | 8 ++++---- modules/oraclebackend/oraclebackend.hh | 6 +++--- modules/remotebackend/remotebackend.cc | 12 ++++++------ modules/remotebackend/remotebackend.hh | 2 +- modules/remotebackend/test-remotebackend.cc | 9 ++++----- 7 files changed, 23 insertions(+), 24 deletions(-) diff --git a/modules/luabackend/dnssec.cc b/modules/luabackend/dnssec.cc index 86280e9ecd..9802e5a68b 100644 --- a/modules/luabackend/dnssec.cc +++ b/modules/luabackend/dnssec.cc @@ -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) diff --git a/modules/luabackend/luabackend.hh b/modules/luabackend/luabackend.hh index c861558a60..5f3c12b902 100644 --- a/modules/luabackend/luabackend.hh +++ b/modules/luabackend/luabackend.hh @@ -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 diff --git a/modules/oraclebackend/oraclebackend.cc b/modules/oraclebackend/oraclebackend.cc index b3ab9fd8ed..d9ecebb92e 100644 --- a/modules/oraclebackend/oraclebackend.cc +++ b/modules/oraclebackend/oraclebackend.cc @@ -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; diff --git a/modules/oraclebackend/oraclebackend.hh b/modules/oraclebackend/oraclebackend.hh index f2fcc15d3f..223e7ff552 100644 --- a/modules/oraclebackend/oraclebackend.hh +++ b/modules/oraclebackend/oraclebackend.hh @@ -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 getDomainMasters(const DNSName& domain, int zoneId); bool isMaster(const DNSName& domain, const string &master); diff --git a/modules/remotebackend/remotebackend.cc b/modules/remotebackend/remotebackend.cc index 5f76b4d846..5be1c2e06d 100644 --- a/modules/remotebackend/remotebackend.cc +++ b/modules/remotebackend/remotebackend.cc @@ -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(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; } diff --git a/modules/remotebackend/remotebackend.hh b/modules/remotebackend/remotebackend.hh index 0cf0f39817..3a7182afeb 100644 --- a/modules/remotebackend/remotebackend.hh +++ b/modules/remotebackend/remotebackend.hh @@ -162,7 +162,7 @@ class RemoteBackend : public DNSBackend virtual bool getDomainMetadata(const DNSName& name, const std::string& kind, std::vector& meta); virtual bool getDomainKeys(const DNSName& name, unsigned int kind, std::vector& 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 >& meta); virtual bool removeDomainKey(const DNSName& name, unsigned int id); virtual bool addDomainKey(const DNSName& name, const KeyData& key, int64_t& id); diff --git a/modules/remotebackend/test-remotebackend.cc b/modules/remotebackend/test-remotebackend.cc index b9ce22de59..acbb3f4a00 100644 --- a/modules/remotebackend/test-remotebackend.cc +++ b/modules/remotebackend/test-remotebackend.cc @@ -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) { -- 2.47.2