diff --git a/Apps/DropRequestsApp/App.cs b/Apps/DropRequestsApp/App.cs index 29f4acd9..600458f0 100644 --- a/Apps/DropRequestsApp/App.cs +++ b/Apps/DropRequestsApp/App.cs @@ -21,6 +21,7 @@ using DnsServerCore.ApplicationCommon; using Newtonsoft.Json; using System; using System.Collections.Generic; +using System.IO; using System.Net; using System.Threading.Tasks; using TechnitiumLibrary.Net; @@ -33,6 +34,7 @@ namespace DropRequests #region variables bool _enableBlocking; + bool _dropMalformedRequests; IReadOnlyList _allowedNetworks; IReadOnlyList _blockedNetworks; IReadOnlyList _blockedQuestions; @@ -50,12 +52,17 @@ namespace DropRequests #region public - public Task InitializeAsync(IDnsServer dnsServer, string config) + public async Task InitializeAsync(IDnsServer dnsServer, string config) { dynamic jsonConfig = JsonConvert.DeserializeObject(config); _enableBlocking = jsonConfig.enableBlocking.Value; + if (jsonConfig.dropMalformedRequests is null) + _dropMalformedRequests = false; + else + _dropMalformedRequests = jsonConfig.dropMalformedRequests.Value; + if (jsonConfig.allowedNetworks is null) { _allowedNetworks = Array.Empty(); @@ -104,7 +111,12 @@ namespace DropRequests _blockedQuestions = blockedQuestions; } - return Task.CompletedTask; + if (jsonConfig.dropMalformedRequests is null) + { + config = config.Replace("\"allowedNetworks\"", "\"dropMalformedRequests\": false,\r\n \"allowedNetworks\""); + + await File.WriteAllTextAsync(Path.Combine(dnsServer.ApplicationFolder, "dnsApp.config"), config); + } } public Task GetRequestActionAsync(DnsDatagram request, IPEndPoint remoteEP, DnsTransportProtocol protocol) @@ -112,6 +124,9 @@ namespace DropRequests if (!_enableBlocking) return Task.FromResult(DnsRequestControllerAction.Allow); + if (_dropMalformedRequests && (request.ParsingException is not null)) + return Task.FromResult(DnsRequestControllerAction.DropSilently); + IPAddress remoteIp = remoteEP.Address; foreach (NetworkAddress allowedNetwork in _allowedNetworks) diff --git a/Apps/DropRequestsApp/dnsApp.config b/Apps/DropRequestsApp/dnsApp.config index e5bb0ad8..9d22df06 100644 --- a/Apps/DropRequestsApp/dnsApp.config +++ b/Apps/DropRequestsApp/dnsApp.config @@ -1,5 +1,6 @@ { "enableBlocking": true, + "dropMalformedRequests": false, "allowedNetworks": [ "127.0.0.1", "::1",