From 6c25e9498e8a2cc086e650482782d995a5307d72 Mon Sep 17 00:00:00 2001 From: Shreyas Zare Date: Sat, 27 Jun 2020 11:51:43 +0530 Subject: [PATCH] ForwarderZone: added SetRecords() and AddRecord() methods with validation checks. --- DnsServerCore/Dns/Zones/ForwarderZone.cs | 38 ++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/DnsServerCore/Dns/Zones/ForwarderZone.cs b/DnsServerCore/Dns/Zones/ForwarderZone.cs index 196ead01..ef236bd0 100644 --- a/DnsServerCore/Dns/Zones/ForwarderZone.cs +++ b/DnsServerCore/Dns/Zones/ForwarderZone.cs @@ -17,6 +17,8 @@ along with this program. If not, see . */ +using System; +using System.Collections.Generic; using TechnitiumLibrary.Net.Dns; using TechnitiumLibrary.Net.Dns.ResourceRecords; @@ -41,5 +43,41 @@ namespace DnsServerCore.Dns.Zones } #endregion + + #region public + + public override void SetRecords(DnsResourceRecordType type, IReadOnlyList records) + { + switch (type) + { + case DnsResourceRecordType.CNAME: + throw new InvalidOperationException("Cannot set CNAME record to zone root."); + + case DnsResourceRecordType.NS: + throw new InvalidOperationException("Cannot set NS record to forwarder zone root."); + + case DnsResourceRecordType.SOA: + throw new InvalidOperationException("Cannot set SOA record to forwarder zone root."); + + default: + base.SetRecords(type, records); + break; + } + } + + public override void AddRecord(DnsResourceRecord record) + { + switch (record.Type) + { + case DnsResourceRecordType.NS: + throw new InvalidOperationException("Cannot add NS record at forwarder zone root."); + + default: + base.AddRecord(record); + break; + } + } + + #endregion } }