From b000f8e4b3436acaba9e04fac7fd20317baeef9d Mon Sep 17 00:00:00 2001 From: Shreyas Zare Date: Sun, 23 May 2021 17:51:21 +0530 Subject: [PATCH] StubZone: code refactoring done. implemented zone transfer and notify properties. --- DnsServerCore/Dns/Zones/StubZone.cs | 42 +++++++++++++++++++++-------- 1 file changed, 31 insertions(+), 11 deletions(-) diff --git a/DnsServerCore/Dns/Zones/StubZone.cs b/DnsServerCore/Dns/Zones/StubZone.cs index 11bb3bd9..a661de24 100644 --- a/DnsServerCore/Dns/Zones/StubZone.cs +++ b/DnsServerCore/Dns/Zones/StubZone.cs @@ -47,31 +47,33 @@ namespace DnsServerCore.Dns.Zones #region constructor - private StubZone(string name) - : base(name) - { } - public StubZone(DnsServer dnsServer, AuthZoneInfo zoneInfo) - : base(zoneInfo.Name) + : base(zoneInfo) { _dnsServer = dnsServer; - _disabled = zoneInfo.Disabled; _expiry = zoneInfo.Expiry; _isExpired = DateTime.UtcNow > _expiry; _refreshTimer = new Timer(RefreshTimerCallback, null, Timeout.Infinite, Timeout.Infinite); } + private StubZone(DnsServer dnsServer, string name) + : base(name) + { + _dnsServer = dnsServer; + + _zoneTransfer = AuthZoneTransfer.Deny; + _notify = AuthZoneNotify.None; + } + #endregion #region static public static async Task CreateAsync(DnsServer dnsServer, string name, string primaryNameServerAddresses = null) { - StubZone stubZone = new StubZone(name); - - stubZone._dnsServer = dnsServer; + StubZone stubZone = new StubZone(dnsServer, name); DnsQuestionRecord soaQuestion = new DnsQuestionRecord(name, DnsResourceRecordType.SOA, DnsClass.IN); DnsDatagram soaResponse = null; @@ -209,6 +211,9 @@ namespace DnsServerCore.Dns.Zones } DnsClient client = new DnsClient(primaryNameServers); + + client.Proxy = _dnsServer.Proxy; + client.PreferIPv6 = _dnsServer.PreferIPv6; client.Timeout = REFRESH_TIMEOUT; client.Retries = REFRESH_RETRIES; @@ -254,6 +259,9 @@ namespace DnsServerCore.Dns.Zones primaryNameServers = tcpNameServers; client = new DnsClient(primaryNameServers); + + client.Proxy = _dnsServer.Proxy; + client.PreferIPv6 = _dnsServer.PreferIPv6; client.Timeout = REFRESH_TIMEOUT; client.Retries = REFRESH_RETRIES; @@ -320,7 +328,7 @@ namespace DnsServerCore.Dns.Zones #region public - public void RefreshZone() + public void TriggerRefresh() { if (_disabled) return; @@ -389,11 +397,23 @@ namespace DnsServerCore.Dns.Zones if (_disabled) _refreshTimer.Change(Timeout.Infinite, Timeout.Infinite); else - RefreshZone(); + TriggerRefresh(); } } } + public override AuthZoneTransfer ZoneTransfer + { + get { return _zoneTransfer; } + set { throw new InvalidOperationException(); } + } + + public override AuthZoneNotify Notify + { + get { return _notify; } + set { throw new InvalidOperationException(); } + } + public override bool IsActive { get { return !_disabled && !_isExpired; }