::arg().set("negquery-cache-ttl","Seconds to store negative query results in the QueryCache")="60";
::arg().set("query-cache-ttl","Seconds to store query results in the QueryCache")="20";
::arg().set("soa-minimum-ttl","Default SOA minimum ttl")="3600";
- ::arg().set("server-id", "Returned when queried for 'server.id' TXT or NSID, defaults to hostname")="";
+ ::arg().set("server-id", "Returned when queried for 'server.id' TXT or NSID, defaults to hostname - valid options: anonymous, disabled or custom")="");
::arg().set("soa-refresh-default","Default SOA refresh")="10800";
::arg().set("soa-retry-default","Default SOA retry")="3600";
::arg().set("soa-expire-default","Default SOA expire")="604800";
DNSPacketWriter::optvect_t opts;
if(d_wantsnsid) {
- opts.push_back(make_pair(3, ::arg()["server-id"]));
+ const static string mode_server_id=::arg()["server-id"];
+ if(mode_server_id != "anonymous" && mode_server_id != "disabled") {
+ opts.push_back(make_pair(3, mode_server_id));
+ }
}
if(!d_ednsping.empty()) {
{
DNSResourceRecord rr;
- if(p->qclass == QClass::CHAOS && p->qtype.getCode()==QType::TXT && target=="version.bind") {// TXT
+ if(p->qclass == QClass::CHAOS && p->qtype.getCode()==QType::TXT &&
+ (target == "version.bind") || (target == "id.server") || (target == "version.pdns") ) {// TXT
// modes: anonymous, powerdns only, full, spoofed
- const static string mode=::arg()["version-string"];
-
- if(mode.empty() || mode=="full")
- rr.content=fullVersionString();
- else if(mode=="anonymous") {
- r->setRcode(RCode::ServFail);
- return 1;
+
+ static string mode;
+ if (target == "id.server") {
+ mode=::arg()["server-id"];
+
+ if (mode == "anonymous") {
+ r->setRcode(RCode::ServFail);
+ return 1;
+ }
+ else if (mode == "disabled") {
+ return 0;
+ }
+ else
+ rr.content=mode;
+ } // We were asked for a version, not RFC 4892 id.server
+ else {
+ mode=::arg()["version-string"];
+
+ if(mode.empty() || mode=="full")
+ rr.content=fullVersionString();
+ else if(mode=="anonymous") {
+ r->setRcode(RCode::ServFail);
+ return 1;
+ }
+ else if(mode=="powerdns") {
+ rr.content="Served by PowerDNS - http://www.powerdns.com";
+ }
+ else
+ rr.content=mode;
}
- else if(mode=="powerdns")
- rr.content="Served by PowerDNS - http://www.powerdns.com";
- else
- rr.content=mode;
rr.ttl=5;
rr.qname=target;
# send-root-referral=no
#################################
-# server-id Returned when queried for 'server.id' TXT or NSID, defaults to hostname
+# server-id Returned when queried for 'server.id' TXT or NSID, defaults to hostname - valid options: anonymous, disabled or custom
#
# server-id=