mirror of
https://github.com/fergalmoran/DnsServer.git
synced 2026-01-01 22:40:39 +00:00
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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user