#include "namespaces.hh"
#include "dnsrecords.hh"
-static const string rpzDropName("rpz-drop."),
+// Names below are RPZ Actions and end with a dot (execpt "Local Data")
+static const std::string rpzDropName("rpz-drop."),
rpzTruncateName("rpz-tcp-only."),
rpzNoActionName("rpz-passthru."),
- rpzClientIPName("rpz-client-ip"),
- rpzIPName("rpz-ip."),
- rpzNSDnameName("rpz-nsdname."),
- rpzNSIPName("rpz-nsip.");
+ rpzCustomName("Local Data");
+
+// Names below are (part) of RPZ Trigger names and do NOT end with a dot
+static const std::string rpzClientIPName("rpz-client-ip"),
+ rpzIPName("rpz-ip"),
+ rpzNSDnameName("rpz-nsdname"),
+ rpzNSIPName("rpz-nsip");
DNSFilterEngine::DNSFilterEngine()
{
if(iter != polmap.end()) {
pol=iter->second;
pol.d_trigger = g_wildcarddnsname+s;
- pol.d_hit = qname.toString();
+ pol.d_hit = qname.toStringNoDot();
return true;
}
}
if (it != polmap.end()) {
pol = it->second;
pol.d_trigger = qname;
- pol.d_hit = qname.toString();
+ pol.d_hit = qname.toStringNoDot();
return true;
}
if (z->findExactNSPolicy(qname, pol)) {
// cerr<<"Had a hit on the nameserver ("<<qname<<") used to process the query"<<endl;
pol.d_trigger = qname;
- pol.d_trigger.appendRawLabel("rpz-nsdname");
- pol.d_hit = qname.toString();
+ pol.d_trigger.appendRawLabel(rpzNSDnameName);
+ pol.d_hit = qname.toStringNoDot();
return true;
}
// cerr<<"Had a hit on the nameserver ("<<qname<<") used to process the query"<<endl;
pol.d_trigger = wc;
pol.d_trigger.appendRawLabel(rpzNSDnameName);
- pol.d_hit = qname.toString();
+ pol.d_hit = qname.toStringNoDot();
return true;
}
}
if (z->findExactQNamePolicy(qname, pol)) {
// cerr<<"Had a hit on the name of the query"<<endl;
pol.d_trigger = qname;
- pol.d_hit = qname.toString();
+ pol.d_hit = qname.toStringNoDot();
return true;
}
if (z->findExactQNamePolicy(wc, pol)) {
// cerr<<"Had a hit on the name of the query"<<endl;
pol.d_trigger = wc;
- pol.d_hit = qname.toString();
+ pol.d_hit = qname.toStringNoDot();
return true;
}
}
return rmNetmaskTrigger(d_propolNSAddr, nm, pol);
}
+std::string DNSFilterEngine::Policy::getLogString() const {
+ return ": RPZ Hit; PolicyName=" + getName() + "; Trigger=" + d_trigger.toLogString() + "; Hit=" + d_hit + "; Type=" + getTypeToString(d_type) + "; Kind=" + getKindToString(d_kind);
+}
+
DNSRecord DNSFilterEngine::Policy::getRecordFromCustom(const DNSName& qname, const std::shared_ptr<DNSRecordContent>& custom) const
{
DNSRecord dr;
return g_wildcarddnsname.toString();
case DNSFilterEngine::PolicyKind::Truncate:
return rpzTruncateName;
+ case DNSFilterEngine::PolicyKind::Custom:
+ return rpzCustomName;
default:
throw std::runtime_error("Unexpected DNSFilterEngine::Policy kind");
}