From 5f831ed99806c0bc39b97206bc6eb8fe1f44b347 Mon Sep 17 00:00:00 2001 From: Shreyas Zare Date: Sun, 5 Mar 2023 19:18:09 +0530 Subject: [PATCH] AllowedZoneManager: using LoadSpecialPrimaryZones() to bulk load and import to avoid loading delays due to indexing. Minor code refactoring changes done. --- .../Dns/ZoneManagers/AllowedZoneManager.cs | 32 +++++++++++-------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/DnsServerCore/Dns/ZoneManagers/AllowedZoneManager.cs b/DnsServerCore/Dns/ZoneManagers/AllowedZoneManager.cs index 7b94a70d..5f34fc6d 100644 --- a/DnsServerCore/Dns/ZoneManagers/AllowedZoneManager.cs +++ b/DnsServerCore/Dns/ZoneManagers/AllowedZoneManager.cs @@ -76,9 +76,7 @@ namespace DnsServerCore.Dns.ZoneManagers try { - LogManager log = _dnsServer.LogManager; - if (log != null) - log.Write("DNS Server is loading allowed zone file: " + allowedZoneFile); + _dnsServer.LogManager?.Write("DNS Server is loading allowed zone file: " + allowedZoneFile); using (FileStream fS = new FileStream(allowedZoneFile, FileMode.Open, FileAccess.Read)) { @@ -92,9 +90,15 @@ namespace DnsServerCore.Dns.ZoneManagers { case 1: int length = bR.ReadInt32(); + int i = 0; - for (int i = 0; i < length; i++) - AllowZone(bR.ReadShortString()); + _zoneManager.LoadSpecialPrimaryZones(delegate () + { + if (i++ < length) + return bR.ReadShortString(); + + return null; + }, _soaRecord, _nsRecord); break; @@ -103,19 +107,21 @@ namespace DnsServerCore.Dns.ZoneManagers } } - if (log != null) - log.Write("DNS Server allowed zone file was loaded: " + allowedZoneFile); + _dnsServer.LogManager?.Write("DNS Server allowed zone file was loaded: " + allowedZoneFile); } catch (FileNotFoundException) { } catch (Exception ex) { - LogManager log = _dnsServer.LogManager; - if (log != null) - log.Write("DNS Server encountered an error while loading allowed zone file: " + allowedZoneFile + "\r\n" + ex.ToString()); + _dnsServer.LogManager?.Write("DNS Server encountered an error while loading allowed zone file: " + allowedZoneFile + "\r\n" + ex.ToString()); } } + public void ImportZones(string[] domains) + { + _zoneManager.LoadSpecialPrimaryZones(domains, _soaRecord, _nsRecord); + } + public bool AllowZone(string domain) { if (_zoneManager.CreateSpecialPrimaryZone(domain, _soaRecord, _nsRecord) != null) @@ -171,9 +177,7 @@ namespace DnsServerCore.Dns.ZoneManagers bW.WriteShortString(zone.Name); } - LogManager log = _dnsServer.LogManager; - if (log != null) - log.Write("DNS Server allowed zone file was saved: " + allowedZoneFile); + _dnsServer.LogManager?.Write("DNS Server allowed zone file was saved: " + allowedZoneFile); } public bool IsAllowed(DnsDatagram request) @@ -181,7 +185,7 @@ namespace DnsServerCore.Dns.ZoneManagers if (_zoneManager.TotalZones < 1) return false; - return _zoneManager.Query(request) is not null; + return _zoneManager.Query(request, false) is not null; } #endregion