BlockedZoneManager: using LoadSpecialPrimaryZones() to bulk load and import to avoid loading delays due to indexing. Minor code refactoring changes done.

This commit is contained in:
Shreyas Zare
2023-03-05 19:18:37 +05:30
parent 5f831ed998
commit 03603b1482

View File

@@ -87,16 +87,12 @@ namespace DnsServerCore.Dns.ZoneManagers
}
catch (Exception ex)
{
LogManager log = _dnsServer.LogManager;
if (log != null)
log.Write(ex);
_dnsServer.LogManager?.Write(ex);
}
try
{
LogManager log = _dnsServer.LogManager;
if (log != null)
log.Write("DNS Server is loading blocked zone file: " + blockedZoneFile);
_dnsServer.LogManager?.Write("DNS Server is loading blocked zone file: " + blockedZoneFile);
using (FileStream fS = new FileStream(blockedZoneFile, FileMode.Open, FileAccess.Read))
{
@@ -110,9 +106,15 @@ namespace DnsServerCore.Dns.ZoneManagers
{
case 1:
int length = bR.ReadInt32();
int i = 0;
for (int i = 0; i < length; i++)
BlockZone(bR.ReadShortString());
_zoneManager.LoadSpecialPrimaryZones(delegate ()
{
if (i++ < length)
return bR.ReadShortString();
return null;
}, _soaRecord, _nsRecord);
break;
@@ -121,19 +123,21 @@ namespace DnsServerCore.Dns.ZoneManagers
}
}
if (log != null)
log.Write("DNS Server blocked zone file was loaded: " + blockedZoneFile);
_dnsServer.LogManager?.Write("DNS Server blocked zone file was loaded: " + blockedZoneFile);
}
catch (FileNotFoundException)
{ }
catch (Exception ex)
{
LogManager log = _dnsServer.LogManager;
if (log != null)
log.Write("DNS Server encountered an error while loading blocked zone file: " + blockedZoneFile + "\r\n" + ex.ToString());
_dnsServer.LogManager?.Write("DNS Server encountered an error while loading blocked zone file: " + blockedZoneFile + "\r\n" + ex.ToString());
}
}
public void ImportZones(string[] domains)
{
_zoneManager.LoadSpecialPrimaryZones(domains, _soaRecord, _nsRecord);
}
public bool BlockZone(string domain)
{
if (_zoneManager.CreateSpecialPrimaryZone(domain, _soaRecord, _nsRecord) != null)
@@ -189,9 +193,7 @@ namespace DnsServerCore.Dns.ZoneManagers
bW.WriteShortString(zone.Name);
}
LogManager log = _dnsServer.LogManager;
if (log != null)
log.Write("DNS Server blocked zone file was saved: " + blockedZoneFile);
_dnsServer.LogManager?.Write("DNS Server blocked zone file was saved: " + blockedZoneFile);
}
public DnsDatagram Query(DnsDatagram request)
@@ -199,7 +201,7 @@ namespace DnsServerCore.Dns.ZoneManagers
if (_zoneManager.TotalZones < 1)
return null;
return _zoneManager.Query(request);
return _zoneManager.Query(request, false);
}
#endregion