mirror of
https://github.com/fergalmoran/DnsServer.git
synced 2026-02-05 15:33:57 +00:00
Add filterDomains setting to Filter AAAA app.
This allows filtering `AAAA` records only for specific domains. If `filterDomains` is empty, all domains (except the ones listed in `bypassDomains`) will be filtered. See https://github.com/TechnitiumSoftware/DnsServer/discussions/1016
This commit is contained in:
@@ -40,6 +40,7 @@ namespace FilterAaaa
|
||||
bool _bypassLocalZones;
|
||||
NetworkAddress[] _bypassNetworks;
|
||||
string[] _bypassDomains;
|
||||
string[] _filterDomains;
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -74,6 +75,11 @@ namespace FilterAaaa
|
||||
else
|
||||
_bypassDomains = [];
|
||||
|
||||
if (jsonConfig.TryReadArray("filterDomains", out string[] filterDomains))
|
||||
_filterDomains = filterDomains;
|
||||
else
|
||||
_filterDomains = [];
|
||||
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
@@ -95,6 +101,19 @@ namespace FilterAaaa
|
||||
if (question.Type != DnsResourceRecordType.AAAA)
|
||||
return response;
|
||||
|
||||
bool filterDomain = _filterDomains.Length == 0;
|
||||
foreach (string filterDomain in _filterDomains)
|
||||
{
|
||||
if (qname.Equals(filterDomain, StringComparison.OrdinalIgnoreCase) || qname.EndsWith("." + filterDomain, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
filterDomain = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!filterDomain)
|
||||
return response;
|
||||
|
||||
bool hasAAAA = false;
|
||||
|
||||
foreach (DnsResourceRecord record in response.Answer)
|
||||
|
||||
@@ -5,5 +5,7 @@
|
||||
],
|
||||
"bypassDomains": [
|
||||
"example.com"
|
||||
],
|
||||
"filterDomains": [
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user