From: Kees Monshouwer Date: Fri, 3 Jan 2014 10:27:11 +0000 (+0100) Subject: make oracle backend compilable X-Git-Tag: rec-3.6.0-rc1~273^2~1 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=672d2e8913bded21ef69c436e3c2d88597a6ec37;p=pdns make oracle backend compilable --- diff --git a/modules/oraclebackend/oraclebackend.cc b/modules/oraclebackend/oraclebackend.cc index bf6dbd41c..ead7e412a 100644 --- a/modules/oraclebackend/oraclebackend.cc +++ b/modules/oraclebackend/oraclebackend.cc @@ -213,6 +213,25 @@ static const char *getTSIGKeyQueryDefaultSQL = "FROM TSIGKeys " "WHERE name = :name"; +static const char *delTSIGKeyQueryKey = "PDNS_Del_TSIG_Key"; +static const char *delTSIGKeyQueryDefaultSQL = + "DELETE FROM TSIGKeys " + "WHERE name = :name"; + +static const char *setTSIGKeyQueryKey = "PDNS_Set_TSIG_Key"; +static const char *setTSIGKeyQueryDefaultSQL = + "INSERT INTO TSIGKeys (name,algorithm,secret)" + "VALUES(" + ":name," + ":algorithm," + ":secret" + ")"; + +static const char *getTSIGKeysQueryKey = "PDNS_Get_TSIG_Keys"; +static const char *getTSIGKeysQueryDefaultSQL = + "SELECT name, algorithm, secret " + "FROM TSIGKeys"; + static const char *getZoneKeysQueryKey = "PDNS_Get_Zone_Keys"; static const char *getZoneKeysQueryDefaultSQL = "SELECT k.id, k.flags, k.active, k.keydata " @@ -238,22 +257,6 @@ static const char *setZoneKeyStateQueryKey = "PDNS_Set_Zone_Key_State"; static const char *setZoneKeyStateQueryDefaultSQL = "UPDATE ZoneDNSKeys SET active = :active WHERE id = :keyid"; -static const char *setTSIGKeyQueryKey = "PDNS_Set_TSIG_Key"; -static const char *setTSIGKeyQueryDefaultSQL = - "INSERT INTO TSIGKeys (name,algorithm,secret)" - "VALUES(" - ":name," - ":algorithm," - ":secret" - ")"; -static const char *deleteTSIGKeyQueryKey = "PDNS_Delete_TSIG_Key"; -static const char *deleteTSIGKeyQueryDefaultSQL = - "DELETE FROM TSIGKeys " - "WHERE name = :name"; -static const char *getTSIGKeysQueryKey = "PDNS_Get_TSIG_Keys"; -static const char *getTSIGKeysQueryDefaultSQL = - "SELECT name, algorithm, secret " - "FROM TSIGKeys"; static void string_to_cbuf (char *buf, const string& s, size_t bufsize) @@ -325,8 +328,8 @@ OracleBackend::OracleBackend (const string &suffix, OCIEnv *envh, delZoneMetadataQuerySQL = getArg("del-zone-metadata-query"); setZoneMetadataQuerySQL = getArg("set-zone-metadata-query"); getTSIGKeyQuerySQL = getArg("get-tsig-key-query"); + delTSIGKeyQuerySQL = getArg("del-tsig-key-query"); setTSIGKeyQuerySQL = getArg("set-tsig-key-query"); - deleteTSIGKeyQuerySQL = getArg("delete-tsig-key-query"); getTSIGKeysQuerySQL = getArg("get-tsig-keys-query"); getZoneKeysQuerySQL = getArg("get-zone-keys-query"); delZoneKeyQuerySQL = getArg("del-zone-key-query"); @@ -1381,7 +1384,7 @@ OracleBackend::getTSIGKey (const string& name, string* algorithm, string* conten } bool -OracleBackend::setTSIGKey(const string& name, const string& algorithm, const string& content) +OracleBackend::delTSIGKey(const string& name) { if(!d_dnssecQueries) return -1; @@ -1390,46 +1393,28 @@ OracleBackend::setTSIGKey(const string& name, const string& algorithm, const str OCIStmt *stmt; openMasterConnection(); - rc = OCITransStart(masterSvcCtx, oraerr, 60, OCI_TRANS_NEW); - stmt = prepare_query(masterSvcCtx, deleteTSIGKeyQuerySQL, deleteTSIGKeyQueryKey); + stmt = prepare_query(masterSvcCtx, delTSIGKeyQuerySQL, delTSIGKeyQueryKey); string_to_cbuf(mQueryName, name, sizeof(mQueryName)); bind_str(stmt, ":name", mQueryName, sizeof(mQueryName)); - rc = OCIStmtExecute(masterSvcCtx, stmt, oraerr, 1, 0, NULL, NULL, OCI_DEFAULT); - if (rc == OCI_ERROR) { - throw OracleException("Oracle setTSIGKey", oraerr); - } - - release_query(stmt, setTSIGKeyQueryKey); - stmt = prepare_query(masterSvcCtx, setTSIGKeyQuerySQL, setTSIGKeyQueryKey); - string_to_cbuf(mQueryName, name, sizeof(mQueryName)); - string_to_cbuf(mQueryType, type, sizeof(mQueryType)); - string_to_cbuf(mQueryContent, content, sizeof(mQueryContent)); - - bind_str(stmt, ":name", mQueryName, sizeof(mQueryName)); - bind_str(stmt, ":algorithm", mQueryType, sizeof(mQueryType)); - bind_str(stmt, ":secret", mQueryContent, sizeof(mQueryContent)); - - rc = OCIStmtExecute(masterSvcCtx, stmt, oraerr, 1, 0, NULL, NULL, OCI_DEFAULT); if (rc == OCI_ERROR) { - throw OracleException("Oracle setTSIGKey", oraerr); + throw OracleException("Oracle delTSIGKey", oraerr); } release_query(stmt, setTSIGKeyQueryKey); rc = OCITransCommit(masterSvcCtx, oraerr, OCI_DEFAULT); if (rc == OCI_ERROR) { - throw OracleException("Oracle setTSIGKey COMMIT", oraerr); + throw OracleException("Oracle delTSIGKey COMMIT", oraerr); } - return true; } bool -OracleBackend::deleteTSIGKey(const string& name) +OracleBackend::setTSIGKey(const string& name, const string& algorithm, const string& content) { if(!d_dnssecQueries) return -1; @@ -1438,23 +1423,41 @@ OracleBackend::deleteTSIGKey(const string& name) OCIStmt *stmt; openMasterConnection(); + rc = OCITransStart(masterSvcCtx, oraerr, 60, OCI_TRANS_NEW); - stmt = prepare_query(masterSvcCtx, deleteTSIGKeyQuerySQL, deleteTSIGKeyQueryKey); + stmt = prepare_query(masterSvcCtx, delTSIGKeyQuerySQL, delTSIGKeyQueryKey); string_to_cbuf(mQueryName, name, sizeof(mQueryName)); bind_str(stmt, ":name", mQueryName, sizeof(mQueryName)); + rc = OCIStmtExecute(masterSvcCtx, stmt, oraerr, 1, 0, NULL, NULL, OCI_DEFAULT); + if (rc == OCI_ERROR) { + throw OracleException("Oracle setTSIGKey", oraerr); + } + release_query(stmt, setTSIGKeyQueryKey); + + stmt = prepare_query(masterSvcCtx, setTSIGKeyQuerySQL, setTSIGKeyQueryKey); + string_to_cbuf(mQueryName, name, sizeof(mQueryName)); + string_to_cbuf(mQueryType, algorithm, sizeof(mQueryType)); + string_to_cbuf(mQueryContent, content, sizeof(mQueryContent)); + + bind_str(stmt, ":name", mQueryName, sizeof(mQueryName)); + bind_str(stmt, ":algorithm", mQueryType, sizeof(mQueryType)); + bind_str(stmt, ":secret", mQueryContent, sizeof(mQueryContent)); + + rc = OCIStmtExecute(masterSvcCtx, stmt, oraerr, 1, 0, NULL, NULL, OCI_DEFAULT); if (rc == OCI_ERROR) { - throw OracleException("Oracle deleteTSIGKey", oraerr); + throw OracleException("Oracle setTSIGKey", oraerr); } release_query(stmt, setTSIGKeyQueryKey); rc = OCITransCommit(masterSvcCtx, oraerr, OCI_DEFAULT); if (rc == OCI_ERROR) { - throw OracleException("Oracle deleteTSIGKey COMMIT", oraerr); + throw OracleException("Oracle setTSIGKey COMMIT", oraerr); } + return true; } @@ -1468,8 +1471,9 @@ OracleBackend::getTSIGKeys(std::vector< struct TSIGKey > &keys) OCIStmt *stmt; stmt = prepare_query(pooledSvcCtx, getTSIGKeysQuerySQL, getTSIGKeysQueryKey); - define_output_str(stmt, 1, &mResultTypeInd, mResultType, sizeof(mResultType)); - define_output_str(stmt, 2, &mResultContentInd, mResultContent, sizeof(mResultContent)); + define_output_str(stmt, 1, &mResultNameInd, mResultName, sizeof(mResultName)); + define_output_str(stmt, 2, &mResultTypeInd, mResultType, sizeof(mResultType)); + define_output_str(stmt, 3, &mResultContentInd, mResultContent, sizeof(mResultContent)); rc = OCIStmtExecute(pooledSvcCtx, stmt, oraerr, 1, 0, NULL, NULL, OCI_DEFAULT); @@ -1484,9 +1488,9 @@ OracleBackend::getTSIGKeys(std::vector< struct TSIGKey > &keys) struct TSIGKey key; - key.name = name; - key.algorithm = type; - key.key = content; + key.name = mResultName; + key.algorithm = mResultType; + key.key = mResultContent; keys.push_back(key); rc = OCIStmtFetch2(stmt, oraerr, 1, OCI_FETCH_NEXT, 0, OCI_DEFAULT); @@ -2196,9 +2200,10 @@ OracleFactory () : BackendFactory("oracle") { declare(suffix, "set-zone-metadata-query", "", setZoneMetadataQueryDefaultSQL); declare(suffix, "get-tsig-key-query", "", getTSIGKeyQueryDefaultSQL); + declare(suffix, "del-tsig-key-query", "", delTSIGKeyQueryDefaultSQL); declare(suffix, "set-tsig-key-query", "", setTSIGKeyQueryDefaultSQL); - declare(suffix, "delete-tsig-key-query", "", deleteTSIGKeyQueryDefaultSQL); declare(suffix, "get-tsig-keys-query", "", getTSIGKeysQueryDefaultSQL); + declare(suffix, "get-zone-keys-query", "", getZoneKeysQueryDefaultSQL); declare(suffix, "del-zone-key-query", "", delZoneKeyQueryDefaultSQL); declare(suffix, "add-zone-key-query", "", addZoneKeyQueryDefaultSQL); diff --git a/modules/oraclebackend/oraclebackend.hh b/modules/oraclebackend/oraclebackend.hh index 95aa90811..7f270e2d0 100644 --- a/modules/oraclebackend/oraclebackend.hh +++ b/modules/oraclebackend/oraclebackend.hh @@ -82,6 +82,10 @@ public: bool setDomainMetadata(const string& name, const std::string& kind, const std::vector& meta); bool getTSIGKey(const string& name, string* algorithm, string* content); + bool delTSIGKey(const string& name); + bool setTSIGKey(const string& name, const string& algorithm, const string& content); + bool getTSIGKeys(std::vector< struct TSIGKey > &keys); + bool getDomainKeys(const string& name, unsigned int kind, vector& keys); bool removeDomainKey(const string& name, unsigned int id); int addDomainKey(const string& name, const KeyData& key); @@ -127,6 +131,10 @@ private: string setZoneMetadataQuerySQL; string getTSIGKeyQuerySQL; + string delTSIGKeyQuerySQL; + string setTSIGKeyQuerySQL; + string getTSIGKeysQuerySQL; + string getZoneKeysQuerySQL; string delZoneKeyQuerySQL; string addZoneKeyQuerySQL; diff --git a/modules/oraclebackend/schema.sql b/modules/oraclebackend/schema.sql index a96b5fdc1..7a1005f4e 100644 --- a/modules/oraclebackend/schema.sql +++ b/modules/oraclebackend/schema.sql @@ -84,9 +84,9 @@ CREATE INDEX zonednskeys_zone_ind ON ZoneDNSKeys (zone_id); CREATE TABLE TSIGKeys ( - name VARCHAR2(255) CONSTRAINT pkey_tsigkeys PRIMARY KEY, - algorithm VARCHAR2(63) NOT NULL, - secret VARCHAR2(2047) NOT NULL + name VARCHAR2(256) CONSTRAINT pkey_tsigkeys PRIMARY KEY, + algorithm VARCHAR2(64) NOT NULL, + secret VARCHAR2(2048) NOT NULL );