From 200026649a194068ac23c47f9b4369145504831f Mon Sep 17 00:00:00 2001 From: Bert Hubert Date: Sat, 8 May 2010 20:16:38 +0000 Subject: [PATCH] revamp the 'activeness' of keys, dnsseckeeper now gives more information about keys git-svn-id: svn://svn.powerdns.com/pdns/trunk/pdns@1596 d19b8d6e-7fed-0310-83ef-9ca221ded41b --- pdns/dnssecinfra.cc | 10 ++-- pdns/dnsseckeeper.cc | 18 ++++--- pdns/dnsseckeeper.hh | 15 ++++-- pdns/pdnssec.cc | 124 +++++++++++++++++++++++++++++++++++++++---- 4 files changed, 143 insertions(+), 24 deletions(-) diff --git a/pdns/dnssecinfra.cc b/pdns/dnssecinfra.cc index 2a3c92262..c1db21fe0 100644 --- a/pdns/dnssecinfra.cc +++ b/pdns/dnssecinfra.cc @@ -216,13 +216,13 @@ DNSKEYRecordContent getDNSKEYFor(const std::string& keyRepositoryDir, const std: if(!withKSK) { DNSSECKeeper::zskset_t zskset=dk.getZSKsFor(qname); BOOST_FOREACH(DNSSECKeeper::zskset_t::value_type value, zskset) { - if(value.second) { - cerr<<"Found a ZSK for '"< dpk.beginValidity && now < dpk.endValidity)); + kmd.active = now > kmd.beginValidity && now < kmd.endValidity; + kmd.fname = dir_itr->leaf(); + zskset.push_back(make_pair(dpk, kmd)); } sort(zskset.begin(), zskset.end(), zskSortByDates); } diff --git a/pdns/dnsseckeeper.hh b/pdns/dnsseckeeper.hh index 656044d15..f2b027218 100644 --- a/pdns/dnsseckeeper.hh +++ b/pdns/dnsseckeeper.hh @@ -76,21 +76,30 @@ struct DNSSECPrivateKey RSAContext d_key; DNSKEYRecordContent getDNSKEY(); - time_t beginValidity, endValidity; // wart }; class DNSSECKeeper { +public: + struct KeyMetaData + { + time_t beginValidity, endValidity; // wart + bool active; + string fname; + }; public: explicit DNSSECKeeper(const std::string& dirname) : d_dirname(dirname){} bool haveKSKFor(const std::string& zone, DNSSECPrivateKey* ksk=0); - typedef std::vector > zskset_t; + typedef std::vector > zskset_t; zskset_t getZSKsFor(const std::string& zone, bool all=false); - void addZSKFor(const std::string& fname, bool next=false); + void addZSKFor(const std::string& zname, bool next=false); + void deleteZSKFor(const std::string& zname, const std::string& fname); void addZone(const std::string& fname); + + private: std::string d_dirname; }; diff --git a/pdns/pdnssec.cc b/pdns/pdnssec.cc index b85950d58..dd5955551 100644 --- a/pdns/pdnssec.cc +++ b/pdns/pdnssec.cc @@ -3,12 +3,26 @@ #include "statbag.hh" #include #include +#include "dnsbackend.hh" +#include "ueberbackend.hh" +#include "arguments.hh" +#include "packetcache.hh" + +StatBag S; +PacketCache PC; using namespace boost; namespace po = boost::program_options; po::variables_map g_vm; -StatBag S; +string s_programname="pdns_server"; + +ArgvMap &arg() +{ + static ArgvMap arg; + return arg; +} + string humanTime(time_t t) { @@ -19,7 +33,85 @@ string humanTime(time_t t) return ret; } +void loadMainConfig() +{ + static char pietje[128]="!@@SYSCONFDIR@@:"; + ::arg().set("config-dir","Location of configuration directory (pdns.conf)")= + strcmp(pietje+1,"@@SYSCONFDIR@@:") ? pietje+strlen("@@SYSCONFDIR@@:")+1 : SYSCONFDIR; + + ::arg().set("launch","Which backends to launch"); + + ::arg().set("config-name","Name of this virtual configuration - will rename the binary image")=""; + ::arg().setCmd("help","Provide a helpful message"); + //::arg().laxParse(argc,argv); + + if(::arg().mustDo("help")) { + cerr<<"syntax:"<getSOA("powerdnssec.org", sd)) { + cerr<<"No SOA!"<list("powerdnssec.org", sd.domain_id); + DNSResourceRecord rr; + + while(sd.db->get(rr)) { + cerr<()); - if(cmds[0] == "update-zone-keys") { + if(cmds[0] == "list-zones") { + listZones(); + } + else if(cmds[0] == "update-zone-keys") { if(cmds.size() != 2) { cerr << "Error: "<