From d97ea55614c05ca04dbb92570aa0d1fe3c69a20c Mon Sep 17 00:00:00 2001 From: Shreyas Zare Date: Sun, 21 Aug 2022 15:44:37 +0530 Subject: [PATCH] SplitHorizon.SimpleCNAME: Updated ProcessRequestAsync() to match the network name with the loaded networks list. --- Apps/SplitHorizonApp/SimpleCNAME.cs | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/Apps/SplitHorizonApp/SimpleCNAME.cs b/Apps/SplitHorizonApp/SimpleCNAME.cs index 413d6296..02868e37 100644 --- a/Apps/SplitHorizonApp/SimpleCNAME.cs +++ b/Apps/SplitHorizonApp/SimpleCNAME.cs @@ -1,6 +1,6 @@ /* Technitium DNS Server -Copyright (C) 2021 Shreyas Zare (shreyas@technitium.com) +Copyright (C) 2022 Shreyas Zare (shreyas@technitium.com) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -44,7 +44,7 @@ namespace SplitHorizon public Task InitializeAsync(IDnsServer dnsServer, string config) { - //no config needed + //SimpleAddress loads the shared config return Task.CompletedTask; } @@ -60,11 +60,27 @@ namespace SplitHorizon if ((name == "public") || (name == "private")) continue; - NetworkAddress networkAddress = NetworkAddress.Parse(name); - if (networkAddress.Contains(remoteEP.Address)) + if (SimpleAddress.Networks.TryGetValue(name, out List networkAddresses)) { - jsonCname = jsonProperty.Value; - break; + foreach (NetworkAddress networkAddress in networkAddresses) + { + if (networkAddress.Contains(remoteEP.Address)) + { + jsonCname = jsonProperty.Value; + break; + } + } + + if (jsonCname is not null) + break; + } + else if (NetworkAddress.TryParse(name, out NetworkAddress networkAddress)) + { + if (networkAddress.Contains(remoteEP.Address)) + { + jsonCname = jsonProperty.Value; + break; + } } } @@ -108,6 +124,7 @@ namespace SplitHorizon return @"{ ""public"": ""api.example.com"", ""private"": ""api.example.corp"", + ""custom-networks"": ""custom.example.corp"", ""10.0.0.0/8"": ""api.intranet.example.corp"" }"; }