From: Aki Tuomi Date: Sat, 8 Feb 2014 20:56:30 +0000 (+0200) Subject: Implementation for bind backend X-Git-Tag: rec-3.6.0-rc1~179^2~6 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=69bdd077133ae81797ea2beeb87aef5b2c983357;p=thirdparty%2Fpdns.git Implementation for bind backend --- diff --git a/modules/bindbackend/bindbackend2.hh b/modules/bindbackend/bindbackend2.hh index 0c7eba68f7..c0e1de7961 100644 --- a/modules/bindbackend/bindbackend2.hh +++ b/modules/bindbackend/bindbackend2.hh @@ -151,6 +151,7 @@ public: void alsoNotifies(const string &domain, set *ips); // the DNSSEC related (getDomainMetadata has broader uses too) + virtual bool getAllDomainMetadata(const string& name, std::map >& meta); virtual bool getDomainMetadata(const string& name, const std::string& kind, std::vector& meta); virtual bool setDomainMetadata(const string& name, const std::string& kind, const std::vector& meta); virtual bool getDomainKeys(const string& name, unsigned int kind, std::vector& keys); diff --git a/modules/bindbackend/binddnssec.cc b/modules/bindbackend/binddnssec.cc index f17c0d6fbc..bc50a3283f 100644 --- a/modules/bindbackend/binddnssec.cc +++ b/modules/bindbackend/binddnssec.cc @@ -39,6 +39,9 @@ bool Bind2Backend::doesDNSSEC() bool Bind2Backend::getNSEC3PARAM(const std::string& zname, NSEC3PARAMRecordContent* ns3p) { return false; } +bool Bind2Backend::getAllDomainMetadata(const string& name, std::map >& meta) +{ return false; } + bool Bind2Backend::getDomainMetadata(const string& name, const std::string& kind, std::vector& meta) { return false; } @@ -115,6 +118,28 @@ bool Bind2Backend::getNSEC3PARAM(const std::string& zname, NSEC3PARAMRecordConte return true; } +bool Bind2Backend::getAllDomainMetadata(const string& name, std::map >& meta) +{ + if(!d_dnssecdb) + return false; + + // cerr<<"Asked to get metadata for zone '"<doQuery((fmt % d_dnssecdb->escape(name)).str()); + + vector row; + while(d_dnssecdb->getRow(row)) { + meta[row[0]].push_back(row[1]); + } + } + catch(SSqlException& se) { + throw PDNSException("Error accessing DNSSEC database in BIND backend: "+se.txtReason()); + } + return true; +} + bool Bind2Backend::getDomainMetadata(const string& name, const std::string& kind, std::vector& meta) { if(!d_dnssecdb)