From: Bert Hubert Date: Thu, 13 May 2010 17:18:48 +0000 (+0000) Subject: implement first ghetto nsec3 generation code - all wrong X-Git-Tag: rec-3.3~87 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=5c3bf2dbf241d5b8f3582a5a18e2425a9e8c1784;p=pdns implement first ghetto nsec3 generation code - all wrong git-svn-id: svn://svn.powerdns.com/pdns/trunk/pdns@1615 d19b8d6e-7fed-0310-83ef-9ca221ded41b --- diff --git a/pdns/backends/gsql/gsqlbackend.cc b/pdns/backends/gsql/gsqlbackend.cc index c34cfe923..970c2a59d 100644 --- a/pdns/backends/gsql/gsqlbackend.cc +++ b/pdns/backends/gsql/gsqlbackend.cc @@ -244,20 +244,22 @@ GSQLBackend::GSQLBackend(const string &mode, const string &suffix) } bool GSQLBackend::updateDNSSECOrderAndAuth(uint32_t domain_id, const std::string& zonename, const std::string& qname, bool auth) +{ + string ins=toLower(labelReverse(makeRelative(qname, zonename))); + return this->updateDNSSECOrderAndAuthAbsolute(domain_id, qname, ins, auth); +} + +bool GSQLBackend::updateDNSSECOrderAndAuthAbsolute(uint32_t domain_id, const std::string& qname, const std::string& ordername, bool auth) { char output[1024]; // ordername='%s',auth=%d where name='%s' and domain_id='%d' - string ins=toLower(labelReverse(makeRelative(qname, zonename))); - snprintf(output, sizeof(output)-1, d_setOrderAuthQuery.c_str(), sqlEscape(ins).c_str(), auth, sqlEscape(qname).c_str(), domain_id); + snprintf(output, sizeof(output)-1, d_setOrderAuthQuery.c_str(), sqlEscape(ordername).c_str(), auth, sqlEscape(qname).c_str(), domain_id); cerr<<"sql: '"<doCommand(output); - return true; } - - bool GSQLBackend::getBeforeAndAfterNamesAbsolute(uint32_t id, const std::string& qname, std::string& before, std::string& after) { cerr<<"gsql before/after called for id="<d_salt; + n3rc.d_iterations = ns3rc->d_iterations; + n3rc.d_algorithm = 1; + + DNSResourceRecord rr; + B.lookup(QType(QType::ANY), begin); + while(B.get(rr)) { + n3rc.d_set.insert(rr.qtype.getCode()); + } + + n3rc.d_nexthash=end; + + rr.qname=dotConcat(toBase32Hex(begin), auth); + rr.ttl=3600; + rr.qtype=QType::NSEC3; + rr.content=n3rc.getZoneRepresentation(); + cerr<<"nsec3: '"<addRecord(rr); +} + @@ -491,8 +519,21 @@ void PacketHandler::addNSEC3(DNSPacket *p, DNSPacket *r, const string& target, c cerr<<"NSEC3 generator called!"<(DNSRecordContent::mastermake(QType::NSEC3PARAM, 1, nsec3param.content)); - cerr<<"NSEC3 hash, "<d_iterations<<" iterations, salt '"<d_salt)<<"': "<d_iterations, ns3rc->d_salt, p->qdomain))<d_iterations, ns3rc->d_salt, p->qdomain)); + cerr<<"NSEC3 hash, "<d_iterations<<" iterations, salt '"<d_salt)<<"': "<getBeforeAndAfterNamesAbsolute(sd.domain_id, hashed, before, after); + cerr<<"Done calling, before='"< '"<updateDNSSECOrderAndAuth(sd.domain_id, zone, qname, true); + string hashed=toBase32Hex(hashQNameWithSalt(100, salt, qname)); + cerr<<"'"< '"<< hashed <<"'"<updateDNSSECOrderAndAuthAbsolute(sd.domain_id, qname, hashed, true); + // sd.db->updateDNSSECOrderAndAuth(sd.domain_id, zone, qname, true); } cerr<<"Done listing"<