DnsServer: implemented UseNxDomainForBlocking option.

This commit is contained in:
Shreyas Zare
2021-04-11 17:42:05 +05:30
parent 8e4cfacbb0
commit eeac4ec5a6

View File

@@ -111,6 +111,7 @@ namespace DnsServerCore.Dns
int _cachePrefetchTrigger = 9;
int _cachePrefetchSampleIntervalInMinutes = 5;
int _cachePrefetchSampleEligibilityHitsPerHour = 30;
bool _useNxDomainForBlocking;
LogManager _queryLog;
readonly StatsManager _stats;
@@ -1501,11 +1502,16 @@ namespace DnsServerCore.Dns
response = _blockListZoneManager.Query(request); //check in block list zone
if (response == null)
return null;
return null; //domain not blocked in block list zone
//domain is blocked in block list zone
}
else
{
//domain is blocked in blocked zone
if (_useNxDomainForBlocking && (request.Question[0].Type != DnsResourceRecordType.TXT))
return new DnsDatagram(request.Identifier, true, DnsOpcode.StandardQuery, false, false, request.RecursionDesired, true, false, false, DnsResponseCode.NxDomain, request.Question);
IReadOnlyList<DnsResourceRecord> answer = null;
IReadOnlyList<DnsResourceRecord> authority = null;
@@ -1794,7 +1800,7 @@ namespace DnsServerCore.Dns
switch (response.RCODE)
{
case DnsResponseCode.NoError:
case DnsResponseCode.NameError:
case DnsResponseCode.NxDomain:
taskCompletionSource.SetResult(response);
break;
@@ -2842,6 +2848,12 @@ namespace DnsServerCore.Dns
}
}
public bool UseNxDomainForBlocking
{
get { return _useNxDomainForBlocking; }
set { _useNxDomainForBlocking = value; }
}
public LogManager LogManager
{
get { return _log; }