diff --git a/Apps/FilterAaaaApp/App.cs b/Apps/FilterAaaaApp/App.cs index 37f3110d..76ce2c8b 100644 --- a/Apps/FilterAaaaApp/App.cs +++ b/Apps/FilterAaaaApp/App.cs @@ -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) diff --git a/Apps/FilterAaaaApp/dnsApp.config b/Apps/FilterAaaaApp/dnsApp.config index fd6a6285..23b998c3 100644 --- a/Apps/FilterAaaaApp/dnsApp.config +++ b/Apps/FilterAaaaApp/dnsApp.config @@ -5,5 +5,7 @@ ], "bypassDomains": [ "example.com" + ], + "filterDomains": [ ] } \ No newline at end of file