From b0f2290bc0ec4112971999b79bdcd501f2218444 Mon Sep 17 00:00:00 2001 From: Shreyas Zare Date: Sat, 17 Dec 2022 16:33:57 +0530 Subject: [PATCH] DropRequests: removed newtonsoft --- Apps/DropRequestsApp/App.cs | 77 +++++++++++-------------------------- 1 file changed, 22 insertions(+), 55 deletions(-) diff --git a/Apps/DropRequestsApp/App.cs b/Apps/DropRequestsApp/App.cs index 724bbbf6..a542f27e 100644 --- a/Apps/DropRequestsApp/App.cs +++ b/Apps/DropRequestsApp/App.cs @@ -18,12 +18,13 @@ along with this program. If not, see . */ using DnsServerCore.ApplicationCommon; -using Newtonsoft.Json; using System; using System.Collections.Generic; using System.IO; using System.Net; +using System.Text.Json; using System.Threading.Tasks; +using TechnitiumLibrary; using TechnitiumLibrary.Net; using TechnitiumLibrary.Net.Dns; using TechnitiumLibrary.Net.Dns.ResourceRecords; @@ -55,64 +56,32 @@ namespace DropRequests public async Task InitializeAsync(IDnsServer dnsServer, string config) { - dynamic jsonConfig = JsonConvert.DeserializeObject(config); + using JsonDocument jsonDocument = JsonDocument.Parse(config); + JsonElement jsonConfig = jsonDocument.RootElement; - _enableBlocking = jsonConfig.enableBlocking.Value; + _enableBlocking = jsonConfig.GetProperty("enableBlocking").GetBoolean(); - if (jsonConfig.dropMalformedRequests is null) + if (jsonConfig.TryGetProperty("dropMalformedRequests", out JsonElement jsonDropMalformedRequests)) + _dropMalformedRequests = jsonDropMalformedRequests.GetBoolean(); + else _dropMalformedRequests = false; - else - _dropMalformedRequests = jsonConfig.dropMalformedRequests.Value; - - if (jsonConfig.allowedNetworks is null) - { - _allowedNetworks = Array.Empty(); - } - else - { - List allowedNetworks = new List(); - - foreach (dynamic allowedNetwork in jsonConfig.allowedNetworks) - { - allowedNetworks.Add(NetworkAddress.Parse(allowedNetwork.Value)); - } + if (jsonConfig.TryReadArray("allowedNetworks", NetworkAddress.Parse, out NetworkAddress[] allowedNetworks)) _allowedNetworks = allowedNetworks; - } - - if (jsonConfig.blockedNetworks is null) - { - _blockedNetworks = Array.Empty(); - } else - { - List blockedNetworks = new List(); - - foreach (dynamic blockedNetwork in jsonConfig.blockedNetworks) - { - blockedNetworks.Add(NetworkAddress.Parse(blockedNetwork.Value)); - } + _allowedNetworks = Array.Empty(); + if (jsonConfig.TryReadArray("blockedNetworks", NetworkAddress.Parse, out NetworkAddress[] blockedNetworks)) _blockedNetworks = blockedNetworks; - } - - if (jsonConfig.blockedQuestions is null) - { - _blockedQuestions = Array.Empty(); - } else - { - List blockedQuestions = new List(); - - foreach (dynamic blockedQuestion in jsonConfig.blockedQuestions) - { - blockedQuestions.Add(new BlockedQuestion(blockedQuestion)); - } + _blockedNetworks = Array.Empty(); + if (jsonConfig.TryReadArray("blockedQuestions", delegate (JsonElement blockedQuestion) { return new BlockedQuestion(blockedQuestion); }, out BlockedQuestion[] blockedQuestions)) _blockedQuestions = blockedQuestions; - } + else + _blockedQuestions = Array.Empty(); - if (jsonConfig.dropMalformedRequests is null) + if (!jsonConfig.TryGetProperty("dropMalformedRequests", out _)) { config = config.Replace("\"allowedNetworks\"", "\"dropMalformedRequests\": false,\r\n \"allowedNetworks\""); @@ -177,17 +146,15 @@ namespace DropRequests #region constructor - public BlockedQuestion(dynamic jsonQuestion) + public BlockedQuestion(JsonElement jsonQuestion) { - _name = jsonQuestion.name?.Value; - if (_name is not null) - _name = _name.TrimEnd('.'); + if (jsonQuestion.TryGetProperty("name", out JsonElement jsonName)) + _name = jsonName.GetString().TrimEnd('.'); - if (jsonQuestion.blockZone is not null) - _blockZone = jsonQuestion.blockZone.Value; + if (jsonQuestion.TryGetProperty("blockZone", out JsonElement jsonBlockZone)) + _blockZone = jsonBlockZone.GetBoolean(); - string strType = jsonQuestion.type?.Value; - if (!string.IsNullOrEmpty(strType) && Enum.TryParse(strType, true, out DnsResourceRecordType type)) + if (jsonQuestion.TryGetProperty("type", out JsonElement jsonType) && Enum.TryParse(jsonType.GetString(), true, out DnsResourceRecordType type)) _type = type; else _type = DnsResourceRecordType.Unknown;