diff --git a/Apps/AdvancedBlockingApp/App.cs b/Apps/AdvancedBlockingApp/App.cs index 2d64e1f5..c5f87910 100644 --- a/Apps/AdvancedBlockingApp/App.cs +++ b/Apps/AdvancedBlockingApp/App.cs @@ -44,8 +44,8 @@ namespace AdvancedBlocking IDnsServer _dnsServer; string _localCacheFolder; - DnsSOARecord _soaRecord; - DnsNSRecord _nsRecord; + DnsSOARecordData _soaRecord; + DnsNSRecordData _nsRecord; bool _enableBlocking; int _blockListUrlUpdateIntervalHours; @@ -807,8 +807,8 @@ namespace AdvancedBlocking Directory.CreateDirectory(_localCacheFolder); - _soaRecord = new DnsSOARecord(_dnsServer.ServerDomain, "hostadmin." + _dnsServer.ServerDomain, 1, 14400, 3600, 604800, 60); - _nsRecord = new DnsNSRecord(_dnsServer.ServerDomain); + _soaRecord = new DnsSOARecordData(_dnsServer.ServerDomain, "hostadmin." + _dnsServer.ServerDomain, 1, 14400, 3600, 604800, 60); + _nsRecord = new DnsNSRecordData(_dnsServer.ServerDomain); dynamic jsonConfig = JsonConvert.DeserializeObject(config); @@ -989,11 +989,11 @@ namespace AdvancedBlocking answer = new DnsResourceRecord[blockListUrls.Count]; for (int i = 0; i < answer.Length; i++) - answer[i] = new DnsResourceRecord(question.Name, DnsResourceRecordType.TXT, question.Class, 60, new DnsTXTRecord("source=advanced-blocking-app; group=" + group.Name + "; blockListUrl=" + blockListUrls[i].AbsoluteUri + "; domain=" + blockedDomain)); + answer[i] = new DnsResourceRecord(question.Name, DnsResourceRecordType.TXT, question.Class, 60, new DnsTXTRecordData("source=advanced-blocking-app; group=" + group.Name + "; blockListUrl=" + blockListUrls[i].AbsoluteUri + "; domain=" + blockedDomain)); } else { - answer = new DnsResourceRecord[] { new DnsResourceRecord(question.Name, DnsResourceRecordType.TXT, question.Class, 60, new DnsTXTRecord("source=advanced-blocking-app; group=" + group.Name + "; domain=" + blockedDomain)) }; + answer = new DnsResourceRecord[] { new DnsResourceRecord(question.Name, DnsResourceRecordType.TXT, question.Class, 60, new DnsTXTRecordData("source=advanced-blocking-app; group=" + group.Name + "; domain=" + blockedDomain)) }; } } else @@ -1003,11 +1003,11 @@ namespace AdvancedBlocking answer = new DnsResourceRecord[blockListUrls.Count]; for (int i = 0; i < answer.Length; i++) - answer[i] = new DnsResourceRecord(question.Name, DnsResourceRecordType.TXT, question.Class, 60, new DnsTXTRecord("source=advanced-blocking-app; group=" + group.Name + "; regexBlockListUrl=" + blockListUrls[i].AbsoluteUri + "; regex=" + blockedRegex)); + answer[i] = new DnsResourceRecord(question.Name, DnsResourceRecordType.TXT, question.Class, 60, new DnsTXTRecordData("source=advanced-blocking-app; group=" + group.Name + "; regexBlockListUrl=" + blockListUrls[i].AbsoluteUri + "; regex=" + blockedRegex)); } else { - answer = new DnsResourceRecord[] { new DnsResourceRecord(question.Name, DnsResourceRecordType.TXT, question.Class, 60, new DnsTXTRecord("source=advanced-blocking-app; group=" + group.Name + "; regex=" + blockedRegex)) }; + answer = new DnsResourceRecord[] { new DnsResourceRecord(question.Name, DnsResourceRecordType.TXT, question.Class, 60, new DnsTXTRecordData("source=advanced-blocking-app; group=" + group.Name + "; regex=" + blockedRegex)) }; } } @@ -1039,7 +1039,7 @@ namespace AdvancedBlocking { List rrList = new List(group.ARecords.Count); - foreach (DnsARecord record in group.ARecords) + foreach (DnsARecordData record in group.ARecords) rrList.Add(new DnsResourceRecord(question.Name, DnsResourceRecordType.A, question.Class, 60, record)); answer = rrList; @@ -1050,7 +1050,7 @@ namespace AdvancedBlocking { List rrList = new List(group.AAAARecords.Count); - foreach (DnsAAAARecord record in group.AAAARecords) + foreach (DnsAAAARecordData record in group.AAAARecords) rrList.Add(new DnsResourceRecord(question.Name, DnsResourceRecordType.AAAA, question.Class, 60, record)); answer = rrList; @@ -1095,8 +1095,8 @@ namespace AdvancedBlocking bool _allowTxtBlockingReport; bool _blockAsNxDomain; - IReadOnlyCollection _aRecords; - IReadOnlyCollection _aaaaRecords; + IReadOnlyCollection _aRecords; + IReadOnlyCollection _aaaaRecords; IReadOnlyDictionary _allowed; IReadOnlyDictionary _blocked; @@ -1130,8 +1130,8 @@ namespace AdvancedBlocking _blockAsNxDomain = jsonGroup.blockAsNxDomain.Value; { - List aRecords = new List(); - List aaaaRecords = new List(); + List aRecords = new List(); + List aaaaRecords = new List(); foreach (dynamic jsonBlockingAddress in jsonGroup.blockingAddresses) { @@ -1142,11 +1142,11 @@ namespace AdvancedBlocking switch (address.AddressFamily) { case AddressFamily.InterNetwork: - aRecords.Add(new DnsARecord(address)); + aRecords.Add(new DnsARecordData(address)); break; case AddressFamily.InterNetworkV6: - aaaaRecords.Add(new DnsAAAARecord(address)); + aaaaRecords.Add(new DnsAAAARecordData(address)); break; } } @@ -1473,13 +1473,13 @@ namespace AdvancedBlocking set { _blockAsNxDomain = value; } } - public IReadOnlyCollection ARecords + public IReadOnlyCollection ARecords { get { return _aRecords; } set { _aRecords = value; } } - public IReadOnlyCollection AAAARecords + public IReadOnlyCollection AAAARecords { get { return _aaaaRecords; } set { _aaaaRecords = value; } diff --git a/Apps/FailoverApp/Address.cs b/Apps/FailoverApp/Address.cs index 5b7bbda7..782143cb 100644 --- a/Apps/FailoverApp/Address.cs +++ b/Apps/FailoverApp/Address.cs @@ -82,11 +82,11 @@ namespace Failover switch (response.Status) { case HealthStatus.Unknown: - answers.Add(new DnsResourceRecord(question.Name, DnsResourceRecordType.A, question.Class, 30, new DnsARecord(address))); + answers.Add(new DnsResourceRecord(question.Name, DnsResourceRecordType.A, question.Class, 30, new DnsARecordData(address))); break; case HealthStatus.Healthy: - answers.Add(new DnsResourceRecord(question.Name, DnsResourceRecordType.A, question.Class, appRecordTtl, new DnsARecord(address))); + answers.Add(new DnsResourceRecord(question.Name, DnsResourceRecordType.A, question.Class, appRecordTtl, new DnsARecordData(address))); break; } } @@ -104,11 +104,11 @@ namespace Failover switch (response.Status) { case HealthStatus.Unknown: - answers.Add(new DnsResourceRecord(question.Name, DnsResourceRecordType.AAAA, question.Class, 30, new DnsAAAARecord(address))); + answers.Add(new DnsResourceRecord(question.Name, DnsResourceRecordType.AAAA, question.Class, 30, new DnsAAAARecordData(address))); break; case HealthStatus.Healthy: - answers.Add(new DnsResourceRecord(question.Name, DnsResourceRecordType.AAAA, question.Class, appRecordTtl, new DnsAAAARecord(address))); + answers.Add(new DnsResourceRecord(question.Name, DnsResourceRecordType.AAAA, question.Class, appRecordTtl, new DnsAAAARecordData(address))); break; } } @@ -132,7 +132,7 @@ namespace Failover if (response.Status == HealthStatus.Failed) text += " failureReason=" + response.FailureReason + ";"; - answers.Add(new DnsResourceRecord(question.Name, DnsResourceRecordType.TXT, question.Class, appRecordTtl, new DnsTXTRecord(text))); + answers.Add(new DnsResourceRecord(question.Name, DnsResourceRecordType.TXT, question.Class, appRecordTtl, new DnsTXTRecordData(text))); } } @@ -196,7 +196,7 @@ namespace Failover IPAddress address = IPAddress.Parse(jsonAddress.Value); if (address.AddressFamily == AddressFamily.InterNetwork) - answers.Add(new DnsResourceRecord(question.Name, DnsResourceRecordType.A, question.Class, 30, new DnsARecord(address))); + answers.Add(new DnsResourceRecord(question.Name, DnsResourceRecordType.A, question.Class, 30, new DnsARecordData(address))); } } else @@ -206,7 +206,7 @@ namespace Failover IPAddress address = IPAddress.Parse(jsonAddress.Value); if (address.AddressFamily == AddressFamily.InterNetworkV6) - answers.Add(new DnsResourceRecord(question.Name, DnsResourceRecordType.AAAA, question.Class, 30, new DnsAAAARecord(address))); + answers.Add(new DnsResourceRecord(question.Name, DnsResourceRecordType.AAAA, question.Class, 30, new DnsAAAARecordData(address))); } } } diff --git a/Apps/FailoverApp/CNAME.cs b/Apps/FailoverApp/CNAME.cs index 934cc01b..3872da04 100644 --- a/Apps/FailoverApp/CNAME.cs +++ b/Apps/FailoverApp/CNAME.cs @@ -62,15 +62,15 @@ namespace Failover { case HealthStatus.Unknown: if (question.Name.Equals(zoneName, StringComparison.OrdinalIgnoreCase)) //check for zone apex - return new DnsResourceRecord[] { new DnsResourceRecord(question.Name, DnsResourceRecordType.ANAME, DnsClass.IN, 30, new DnsANAMERecord(domain)) }; //use ANAME + return new DnsResourceRecord[] { new DnsResourceRecord(question.Name, DnsResourceRecordType.ANAME, DnsClass.IN, 30, new DnsANAMERecordData(domain)) }; //use ANAME else - return new DnsResourceRecord[] { new DnsResourceRecord(question.Name, DnsResourceRecordType.CNAME, DnsClass.IN, 30, new DnsCNAMERecord(domain)) }; + return new DnsResourceRecord[] { new DnsResourceRecord(question.Name, DnsResourceRecordType.CNAME, DnsClass.IN, 30, new DnsCNAMERecordData(domain)) }; case HealthStatus.Healthy: if (question.Name.Equals(zoneName, StringComparison.OrdinalIgnoreCase)) //check for zone apex - return new DnsResourceRecord[] { new DnsResourceRecord(question.Name, DnsResourceRecordType.ANAME, DnsClass.IN, appRecordTtl, new DnsANAMERecord(domain)) }; //use ANAME + return new DnsResourceRecord[] { new DnsResourceRecord(question.Name, DnsResourceRecordType.ANAME, DnsClass.IN, appRecordTtl, new DnsANAMERecordData(domain)) }; //use ANAME else - return new DnsResourceRecord[] { new DnsResourceRecord(question.Name, DnsResourceRecordType.CNAME, DnsClass.IN, appRecordTtl, new DnsCNAMERecord(domain)) }; + return new DnsResourceRecord[] { new DnsResourceRecord(question.Name, DnsResourceRecordType.CNAME, DnsClass.IN, appRecordTtl, new DnsCNAMERecordData(domain)) }; } return null; @@ -86,7 +86,7 @@ namespace Failover if (response.Status == HealthStatus.Failed) text += " failureReason=" + response.FailureReason + ";"; - answers.Add(new DnsResourceRecord(question.Name, DnsResourceRecordType.TXT, question.Class, appRecordTtl, new DnsTXTRecord(text))); + answers.Add(new DnsResourceRecord(question.Name, DnsResourceRecordType.TXT, question.Class, appRecordTtl, new DnsTXTRecordData(text))); } { @@ -97,7 +97,7 @@ namespace Failover if (response.Status == HealthStatus.Failed) text += " failureReason=" + response.FailureReason + ";"; - answers.Add(new DnsResourceRecord(question.Name, DnsResourceRecordType.TXT, question.Class, appRecordTtl, new DnsTXTRecord(text))); + answers.Add(new DnsResourceRecord(question.Name, DnsResourceRecordType.TXT, question.Class, appRecordTtl, new DnsTXTRecordData(text))); } } @@ -183,9 +183,9 @@ namespace Failover string serverDown = jsonAppRecordData.serverDown.Value; if (question.Name.Equals(zoneName, StringComparison.OrdinalIgnoreCase)) //check for zone apex - answers = new DnsResourceRecord[] { new DnsResourceRecord(question.Name, DnsResourceRecordType.ANAME, DnsClass.IN, 30, new DnsANAMERecord(serverDown)) }; //use ANAME + answers = new DnsResourceRecord[] { new DnsResourceRecord(question.Name, DnsResourceRecordType.ANAME, DnsClass.IN, 30, new DnsANAMERecordData(serverDown)) }; //use ANAME else - answers = new DnsResourceRecord[] { new DnsResourceRecord(question.Name, DnsResourceRecordType.CNAME, DnsClass.IN, 30, new DnsCNAMERecord(serverDown)) }; + answers = new DnsResourceRecord[] { new DnsResourceRecord(question.Name, DnsResourceRecordType.CNAME, DnsClass.IN, 30, new DnsCNAMERecordData(serverDown)) }; } } } diff --git a/Apps/GeoContinentApp/Address.cs b/Apps/GeoContinentApp/Address.cs index 660cf4f6..f7770a15 100644 --- a/Apps/GeoContinentApp/Address.cs +++ b/Apps/GeoContinentApp/Address.cs @@ -106,7 +106,7 @@ namespace GeoContinent IPAddress address = IPAddress.Parse(jsonAddress.Value); if (address.AddressFamily == AddressFamily.InterNetwork) - answers.Add(new DnsResourceRecord(question.Name, DnsResourceRecordType.A, DnsClass.IN, appRecordTtl, new DnsARecord(address))); + answers.Add(new DnsResourceRecord(question.Name, DnsResourceRecordType.A, DnsClass.IN, appRecordTtl, new DnsARecordData(address))); } break; @@ -116,7 +116,7 @@ namespace GeoContinent IPAddress address = IPAddress.Parse(jsonAddress.Value); if (address.AddressFamily == AddressFamily.InterNetworkV6) - answers.Add(new DnsResourceRecord(question.Name, DnsResourceRecordType.AAAA, DnsClass.IN, appRecordTtl, new DnsAAAARecord(address))); + answers.Add(new DnsResourceRecord(question.Name, DnsResourceRecordType.AAAA, DnsClass.IN, appRecordTtl, new DnsAAAARecordData(address))); } break; } diff --git a/Apps/GeoContinentApp/CNAME.cs b/Apps/GeoContinentApp/CNAME.cs index cfbd7d34..1857bb51 100644 --- a/Apps/GeoContinentApp/CNAME.cs +++ b/Apps/GeoContinentApp/CNAME.cs @@ -97,9 +97,9 @@ namespace GeoContinent IReadOnlyList answers; if (request.Question[0].Name.Equals(zoneName, StringComparison.OrdinalIgnoreCase)) //check for zone apex - answers = new DnsResourceRecord[] { new DnsResourceRecord(request.Question[0].Name, DnsResourceRecordType.ANAME, DnsClass.IN, appRecordTtl, new DnsANAMERecord(cname)) }; //use ANAME + answers = new DnsResourceRecord[] { new DnsResourceRecord(request.Question[0].Name, DnsResourceRecordType.ANAME, DnsClass.IN, appRecordTtl, new DnsANAMERecordData(cname)) }; //use ANAME else - answers = new DnsResourceRecord[] { new DnsResourceRecord(request.Question[0].Name, DnsResourceRecordType.CNAME, DnsClass.IN, appRecordTtl, new DnsCNAMERecord(cname)) }; + answers = new DnsResourceRecord[] { new DnsResourceRecord(request.Question[0].Name, DnsResourceRecordType.CNAME, DnsClass.IN, appRecordTtl, new DnsCNAMERecordData(cname)) }; return Task.FromResult(new DnsDatagram(request.Identifier, true, request.OPCODE, true, false, request.RecursionDesired, isRecursionAllowed, false, false, DnsResponseCode.NoError, request.Question, answers)); } diff --git a/Apps/GeoCountryApp/Address.cs b/Apps/GeoCountryApp/Address.cs index 26b768c4..2ae1b112 100644 --- a/Apps/GeoCountryApp/Address.cs +++ b/Apps/GeoCountryApp/Address.cs @@ -106,7 +106,7 @@ namespace GeoCountry IPAddress address = IPAddress.Parse(jsonAddress.Value); if (address.AddressFamily == AddressFamily.InterNetwork) - answers.Add(new DnsResourceRecord(question.Name, DnsResourceRecordType.A, DnsClass.IN, appRecordTtl, new DnsARecord(address))); + answers.Add(new DnsResourceRecord(question.Name, DnsResourceRecordType.A, DnsClass.IN, appRecordTtl, new DnsARecordData(address))); } break; @@ -116,7 +116,7 @@ namespace GeoCountry IPAddress address = IPAddress.Parse(jsonAddress.Value); if (address.AddressFamily == AddressFamily.InterNetworkV6) - answers.Add(new DnsResourceRecord(question.Name, DnsResourceRecordType.AAAA, DnsClass.IN, appRecordTtl, new DnsAAAARecord(address))); + answers.Add(new DnsResourceRecord(question.Name, DnsResourceRecordType.AAAA, DnsClass.IN, appRecordTtl, new DnsAAAARecordData(address))); } break; } diff --git a/Apps/GeoCountryApp/CNAME.cs b/Apps/GeoCountryApp/CNAME.cs index b0b4201e..548b2535 100644 --- a/Apps/GeoCountryApp/CNAME.cs +++ b/Apps/GeoCountryApp/CNAME.cs @@ -97,9 +97,9 @@ namespace GeoCountry IReadOnlyList answers; if (request.Question[0].Name.Equals(zoneName, StringComparison.OrdinalIgnoreCase)) //check for zone apex - answers = new DnsResourceRecord[] { new DnsResourceRecord(request.Question[0].Name, DnsResourceRecordType.ANAME, DnsClass.IN, appRecordTtl, new DnsANAMERecord(cname)) }; //use ANAME + answers = new DnsResourceRecord[] { new DnsResourceRecord(request.Question[0].Name, DnsResourceRecordType.ANAME, DnsClass.IN, appRecordTtl, new DnsANAMERecordData(cname)) }; //use ANAME else - answers = new DnsResourceRecord[] { new DnsResourceRecord(request.Question[0].Name, DnsResourceRecordType.CNAME, DnsClass.IN, appRecordTtl, new DnsCNAMERecord(cname)) }; + answers = new DnsResourceRecord[] { new DnsResourceRecord(request.Question[0].Name, DnsResourceRecordType.CNAME, DnsClass.IN, appRecordTtl, new DnsCNAMERecordData(cname)) }; return Task.FromResult(new DnsDatagram(request.Identifier, true, request.OPCODE, true, false, request.RecursionDesired, isRecursionAllowed, false, false, DnsResponseCode.NoError, request.Question, answers)); } diff --git a/Apps/GeoDistanceApp/Address.cs b/Apps/GeoDistanceApp/Address.cs index ea8f32e2..bbcd674a 100644 --- a/Apps/GeoDistanceApp/Address.cs +++ b/Apps/GeoDistanceApp/Address.cs @@ -140,7 +140,7 @@ namespace GeoDistance IPAddress address = IPAddress.Parse(jsonAddress.Value); if (address.AddressFamily == AddressFamily.InterNetwork) - answers.Add(new DnsResourceRecord(question.Name, DnsResourceRecordType.A, DnsClass.IN, appRecordTtl, new DnsARecord(address))); + answers.Add(new DnsResourceRecord(question.Name, DnsResourceRecordType.A, DnsClass.IN, appRecordTtl, new DnsARecordData(address))); } break; @@ -150,7 +150,7 @@ namespace GeoDistance IPAddress address = IPAddress.Parse(jsonAddress.Value); if (address.AddressFamily == AddressFamily.InterNetworkV6) - answers.Add(new DnsResourceRecord(question.Name, DnsResourceRecordType.AAAA, DnsClass.IN, appRecordTtl, new DnsAAAARecord(address))); + answers.Add(new DnsResourceRecord(question.Name, DnsResourceRecordType.AAAA, DnsClass.IN, appRecordTtl, new DnsAAAARecordData(address))); } break; } diff --git a/Apps/GeoDistanceApp/CNAME.cs b/Apps/GeoDistanceApp/CNAME.cs index 46c14e48..b693fed0 100644 --- a/Apps/GeoDistanceApp/CNAME.cs +++ b/Apps/GeoDistanceApp/CNAME.cs @@ -134,9 +134,9 @@ namespace GeoDistance IReadOnlyList answers; if (request.Question[0].Name.Equals(zoneName, StringComparison.OrdinalIgnoreCase)) //check for zone apex - answers = new DnsResourceRecord[] { new DnsResourceRecord(request.Question[0].Name, DnsResourceRecordType.ANAME, DnsClass.IN, appRecordTtl, new DnsANAMERecord(cname)) }; //use ANAME + answers = new DnsResourceRecord[] { new DnsResourceRecord(request.Question[0].Name, DnsResourceRecordType.ANAME, DnsClass.IN, appRecordTtl, new DnsANAMERecordData(cname)) }; //use ANAME else - answers = new DnsResourceRecord[] { new DnsResourceRecord(request.Question[0].Name, DnsResourceRecordType.CNAME, DnsClass.IN, appRecordTtl, new DnsCNAMERecord(cname)) }; + answers = new DnsResourceRecord[] { new DnsResourceRecord(request.Question[0].Name, DnsResourceRecordType.CNAME, DnsClass.IN, appRecordTtl, new DnsCNAMERecordData(cname)) }; return Task.FromResult(new DnsDatagram(request.Identifier, true, request.OPCODE, true, false, request.RecursionDesired, isRecursionAllowed, false, false, DnsResponseCode.NoError, request.Question, answers)); } diff --git a/Apps/NxDomainApp/App.cs b/Apps/NxDomainApp/App.cs index 548188cb..11b630a6 100644 --- a/Apps/NxDomainApp/App.cs +++ b/Apps/NxDomainApp/App.cs @@ -31,7 +31,7 @@ namespace NxDomain { #region variables - DnsSOARecord _soaRecord; + DnsSOARecordData _soaRecord; bool _enableBlocking; bool _allowTxtBlockingReport; @@ -98,7 +98,7 @@ namespace NxDomain public Task InitializeAsync(IDnsServer dnsServer, string config) { - _soaRecord = new DnsSOARecord(dnsServer.ServerDomain, "hostadmin." + dnsServer.ServerDomain, 1, 14400, 3600, 604800, 60); + _soaRecord = new DnsSOARecordData(dnsServer.ServerDomain, "hostadmin." + dnsServer.ServerDomain, 1, 14400, 3600, 604800, 60); dynamic jsonConfig = JsonConvert.DeserializeObject(config); @@ -120,7 +120,7 @@ namespace NxDomain if (_allowTxtBlockingReport && (question.Type == DnsResourceRecordType.TXT)) { //return meta data - DnsResourceRecord[] answer = new DnsResourceRecord[] { new DnsResourceRecord(question.Name, DnsResourceRecordType.TXT, question.Class, 60, new DnsTXTRecord("source=nx-domain-app; domain=" + blockedDomain)) }; + DnsResourceRecord[] answer = new DnsResourceRecord[] { new DnsResourceRecord(question.Name, DnsResourceRecordType.TXT, question.Class, 60, new DnsTXTRecordData("source=nx-domain-app; domain=" + blockedDomain)) }; return Task.FromResult(new DnsDatagram(request.Identifier, true, DnsOpcode.StandardQuery, false, false, request.RecursionDesired, isRecursionAllowed, false, false, DnsResponseCode.NoError, request.Question, answer) { Tag = DnsServerResponseType.Blocked }); } diff --git a/Apps/SplitHorizonApp/SimpleAddress.cs b/Apps/SplitHorizonApp/SimpleAddress.cs index 10f0b471..2baf21a5 100644 --- a/Apps/SplitHorizonApp/SimpleAddress.cs +++ b/Apps/SplitHorizonApp/SimpleAddress.cs @@ -95,7 +95,7 @@ namespace SplitHorizon IPAddress address = IPAddress.Parse(jsonAddress.Value); if (address.AddressFamily == AddressFamily.InterNetwork) - answers.Add(new DnsResourceRecord(question.Name, DnsResourceRecordType.A, DnsClass.IN, appRecordTtl, new DnsARecord(address))); + answers.Add(new DnsResourceRecord(question.Name, DnsResourceRecordType.A, DnsClass.IN, appRecordTtl, new DnsARecordData(address))); } break; @@ -105,7 +105,7 @@ namespace SplitHorizon IPAddress address = IPAddress.Parse(jsonAddress.Value); if (address.AddressFamily == AddressFamily.InterNetworkV6) - answers.Add(new DnsResourceRecord(question.Name, DnsResourceRecordType.AAAA, DnsClass.IN, appRecordTtl, new DnsAAAARecord(address))); + answers.Add(new DnsResourceRecord(question.Name, DnsResourceRecordType.AAAA, DnsClass.IN, appRecordTtl, new DnsAAAARecordData(address))); } break; } diff --git a/Apps/SplitHorizonApp/SimpleCNAME.cs b/Apps/SplitHorizonApp/SimpleCNAME.cs index 635ad41e..413d6296 100644 --- a/Apps/SplitHorizonApp/SimpleCNAME.cs +++ b/Apps/SplitHorizonApp/SimpleCNAME.cs @@ -87,9 +87,9 @@ namespace SplitHorizon IReadOnlyList answers; if (question.Name.Equals(zoneName, StringComparison.OrdinalIgnoreCase)) //check for zone apex - answers = new DnsResourceRecord[] { new DnsResourceRecord(question.Name, DnsResourceRecordType.ANAME, DnsClass.IN, appRecordTtl, new DnsANAMERecord(cname)) }; //use ANAME + answers = new DnsResourceRecord[] { new DnsResourceRecord(question.Name, DnsResourceRecordType.ANAME, DnsClass.IN, appRecordTtl, new DnsANAMERecordData(cname)) }; //use ANAME else - answers = new DnsResourceRecord[] { new DnsResourceRecord(question.Name, DnsResourceRecordType.CNAME, DnsClass.IN, appRecordTtl, new DnsCNAMERecord(cname)) }; + answers = new DnsResourceRecord[] { new DnsResourceRecord(question.Name, DnsResourceRecordType.CNAME, DnsClass.IN, appRecordTtl, new DnsCNAMERecordData(cname)) }; return Task.FromResult(new DnsDatagram(request.Identifier, true, request.OPCODE, true, false, request.RecursionDesired, isRecursionAllowed, false, false, DnsResponseCode.NoError, request.Question, answers)); } diff --git a/Apps/WhatIsMyDnsApp/App.cs b/Apps/WhatIsMyDnsApp/App.cs index 558f8b96..d4212345 100644 --- a/Apps/WhatIsMyDnsApp/App.cs +++ b/Apps/WhatIsMyDnsApp/App.cs @@ -55,18 +55,18 @@ namespace WhatIsMyDns if (remoteEP.AddressFamily != AddressFamily.InterNetwork) return Task.FromResult(null); - answer = new DnsResourceRecord(request.Question[0].Name, DnsResourceRecordType.A, DnsClass.IN, appRecordTtl, new DnsARecord(remoteEP.Address)); + answer = new DnsResourceRecord(request.Question[0].Name, DnsResourceRecordType.A, DnsClass.IN, appRecordTtl, new DnsARecordData(remoteEP.Address)); break; case DnsResourceRecordType.AAAA: if (remoteEP.AddressFamily != AddressFamily.InterNetworkV6) return Task.FromResult(null); - answer = new DnsResourceRecord(request.Question[0].Name, DnsResourceRecordType.AAAA, DnsClass.IN, appRecordTtl, new DnsAAAARecord(remoteEP.Address)); + answer = new DnsResourceRecord(request.Question[0].Name, DnsResourceRecordType.AAAA, DnsClass.IN, appRecordTtl, new DnsAAAARecordData(remoteEP.Address)); break; case DnsResourceRecordType.TXT: - answer = new DnsResourceRecord(request.Question[0].Name, DnsResourceRecordType.TXT, DnsClass.IN, appRecordTtl, new DnsTXTRecord(remoteEP.Address.ToString())); + answer = new DnsResourceRecord(request.Question[0].Name, DnsResourceRecordType.TXT, DnsClass.IN, appRecordTtl, new DnsTXTRecordData(remoteEP.Address.ToString())); break; default: diff --git a/DnsServerCore/Dhcp/DhcpServer.cs b/DnsServerCore/Dhcp/DhcpServer.cs index ad6bbb63..fcfb7754 100644 --- a/DnsServerCore/Dhcp/DhcpServer.cs +++ b/DnsServerCore/Dhcp/DhcpServer.cs @@ -782,7 +782,7 @@ namespace DnsServerCore.Dhcp { foreach (DnsResourceRecord existingRecord in existingRecords) { - if (!(existingRecord.RDATA as DnsARecord).Address.Equals(address)) + if (!(existingRecord.RDATA as DnsARecordData).Address.Equals(address)) { //a DNS record already exists for the specified domain name with a different address //do not change DNS record for this dynamic lease @@ -792,7 +792,7 @@ namespace DnsServerCore.Dhcp } } - _authZoneManager.SetRecords(zoneName, domain, DnsResourceRecordType.A, scope.DnsTtl, new DnsResourceRecordData[] { new DnsARecord(address) }); + _authZoneManager.SetRecords(zoneName, domain, DnsResourceRecordType.A, scope.DnsTtl, new DnsResourceRecordData[] { new DnsARecordData(address) }); log?.Write("DHCP Server updated DNS A record '" + domain + "' with IP address [" + address.ToString() + "]."); //update reverse zone @@ -818,7 +818,7 @@ namespace DnsServerCore.Dhcp } reverseZoneName = reverseZoneInfo.Name; - _authZoneManager.SetRecords(reverseZoneName, reverseDomain, DnsResourceRecordType.PTR, scope.DnsTtl, new DnsResourceRecordData[] { new DnsPTRRecord(domain) }); + _authZoneManager.SetRecords(reverseZoneName, reverseDomain, DnsResourceRecordType.PTR, scope.DnsTtl, new DnsResourceRecordData[] { new DnsPTRRecordData(domain) }); log?.Write("DHCP Server updated DNS PTR record '" + reverseDomain + "' with domain name '" + domain + "'."); } else @@ -829,7 +829,7 @@ namespace DnsServerCore.Dhcp { //primary zone exists zoneName = zoneInfo.Name; - _authZoneManager.DeleteRecord(zoneName, domain, DnsResourceRecordType.A, new DnsARecord(address)); + _authZoneManager.DeleteRecord(zoneName, domain, DnsResourceRecordType.A, new DnsARecordData(address)); log?.Write("DHCP Server deleted DNS A record '" + domain + "' with address [" + address.ToString() + "]."); } @@ -839,7 +839,7 @@ namespace DnsServerCore.Dhcp { //primary reverse zone exists reverseZoneName = reverseZoneInfo.Name; - _authZoneManager.DeleteRecord(reverseZoneName, reverseDomain, DnsResourceRecordType.PTR, new DnsPTRRecord(domain)); + _authZoneManager.DeleteRecord(reverseZoneName, reverseDomain, DnsResourceRecordType.PTR, new DnsPTRRecordData(domain)); log?.Write("DHCP Server deleted DNS PTR record '" + reverseDomain + "' with domain '" + domain + "'."); } } diff --git a/DnsServerCore/Dns/DnsServer.cs b/DnsServerCore/Dns/DnsServer.cs index 6a5e61bf..f23d36b5 100644 --- a/DnsServerCore/Dns/DnsServer.cs +++ b/DnsServerCore/Dns/DnsServer.cs @@ -111,8 +111,8 @@ namespace DnsServerCore.Dns readonly ResolverDnsCache _dnsCache; - readonly IReadOnlyCollection _aRecords = new DnsARecord[] { new DnsARecord(IPAddress.Any) }; - readonly IReadOnlyCollection _aaaaRecords = new DnsAAAARecord[] { new DnsAAAARecord(IPAddress.IPv6Any) }; + readonly IReadOnlyCollection _aRecords = new DnsARecordData[] { new DnsARecordData(IPAddress.Any) }; + readonly IReadOnlyCollection _aaaaRecords = new DnsAAAARecordData[] { new DnsAAAARecordData(IPAddress.IPv6Any) }; DnsServerRecursion _recursion; IReadOnlyCollection _recursionDeniedNetworks; @@ -145,8 +145,8 @@ namespace DnsServerCore.Dns bool _enableBlocking = true; bool _allowTxtBlockingReport = true; DnsServerBlockingType _blockingType = DnsServerBlockingType.AnyAddress; - IReadOnlyCollection _customBlockingARecords = Array.Empty(); - IReadOnlyCollection _customBlockingAAAARecords = Array.Empty(); + IReadOnlyCollection _customBlockingARecords = Array.Empty(); + IReadOnlyCollection _customBlockingAAAARecords = Array.Empty(); LogManager _queryLog; readonly StatsManager _stats; @@ -1183,7 +1183,7 @@ namespace DnsServerCore.Dns { IReadOnlyList localSoaRecords = authZoneInfo.GetRecords(DnsResourceRecordType.SOA); - if (!DnsSOARecord.IsZoneUpdateAvailable((localSoaRecords[0].RDATA as DnsSOARecord).Serial, (request.Answer[0].RDATA as DnsSOARecord).Serial)) + if (!DnsSOARecordData.IsZoneUpdateAvailable((localSoaRecords[0].RDATA as DnsSOARecordData).Serial, (request.Answer[0].RDATA as DnsSOARecordData).Serial)) { //no update was available return new DnsDatagram(request.Identifier, true, DnsOpcode.Notify, false, false, request.RecursionDesired, false, false, false, DnsResponseCode.NoError, request.Question) { Tag = DnsServerResponseType.Authoritative }; @@ -1386,7 +1386,7 @@ namespace DnsServerCore.Dns break; case DnsResourceRecordType.FWD: - if ((response.Authority.Count == 1) && (firstAuthority.RDATA as DnsForwarderRecord).Forwarder.Equals("this-server", StringComparison.OrdinalIgnoreCase)) + if ((response.Authority.Count == 1) && (firstAuthority.RDATA as DnsForwarderRecordData).Forwarder.Equals("this-server", StringComparison.OrdinalIgnoreCase)) { //do conditional forwarding via "this-server" return await ProcessRecursiveQueryAsync(request, remoteEP, protocol, null, false); @@ -1413,7 +1413,7 @@ namespace DnsServerCore.Dns private async Task ProcessAPPAsync(DnsDatagram request, IPEndPoint remoteEP, DnsDatagram response, bool isRecursionAllowed, DnsTransportProtocol protocol) { DnsResourceRecord appResourceRecord = response.Authority[0]; - DnsApplicationRecord appRecord = appResourceRecord.RDATA as DnsApplicationRecord; + DnsApplicationRecordData appRecord = appResourceRecord.RDATA as DnsApplicationRecordData; if (_dnsApplicationManager.Applications.TryGetValue(appRecord.AppName, out DnsApplication application)) { @@ -1478,7 +1478,7 @@ namespace DnsServerCore.Dns break; case DnsResourceRecordType.RRSIG: - switch ((record.RDATA as DnsRRSIGRecord).TypeCovered) + switch ((record.RDATA as DnsRRSIGRecordData).TypeCovered) { case DnsResourceRecordType.NSEC: case DnsResourceRecordType.NSEC3: @@ -1497,7 +1497,7 @@ namespace DnsServerCore.Dns int queryCount = 0; do { - DnsDatagram newRequest = new DnsDatagram(0, false, DnsOpcode.StandardQuery, false, false, request.RecursionDesired, false, false, false, DnsResponseCode.NoError, new DnsQuestionRecord[] { new DnsQuestionRecord((lastRR.RDATA as DnsCNAMERecord).Domain, request.Question[0].Type, request.Question[0].Class) }, null, null, null, _udpPayloadSize, _dnssecValidation ? EDnsHeaderFlags.DNSSEC_OK : EDnsHeaderFlags.None); + DnsDatagram newRequest = new DnsDatagram(0, false, DnsOpcode.StandardQuery, false, false, request.RecursionDesired, false, false, false, DnsResponseCode.NoError, new DnsQuestionRecord[] { new DnsQuestionRecord((lastRR.RDATA as DnsCNAMERecordData).Domain, request.Question[0].Type, request.Question[0].Class) }, null, null, null, _udpPayloadSize, _dnssecValidation ? EDnsHeaderFlags.DNSSEC_OK : EDnsHeaderFlags.None); //query authoritative zone first newResponse = _authZoneManager.Query(newRequest, isRecursionAllowed); @@ -1537,7 +1537,7 @@ namespace DnsServerCore.Dns break; case DnsResourceRecordType.FWD: - if ((newResponse.Authority.Count == 1) && (firstAuthority.RDATA as DnsForwarderRecord).Forwarder.Equals("this-server", StringComparison.OrdinalIgnoreCase)) + if ((newResponse.Authority.Count == 1) && (firstAuthority.RDATA as DnsForwarderRecordData).Forwarder.Equals("this-server", StringComparison.OrdinalIgnoreCase)) { //do conditional forwarding via "this-server" newResponse = await RecursiveResolveAsync(newRequest, null, false, false); @@ -1620,7 +1620,7 @@ namespace DnsServerCore.Dns async Task> ResolveANAMEAsync(DnsResourceRecord anameRR, int queryCount = 0) { - string lastDomain = (anameRR.RDATA as DnsANAMERecord).Domain; + string lastDomain = (anameRR.RDATA as DnsANAMERecordData).Domain; do { @@ -1645,7 +1645,7 @@ namespace DnsServerCore.Dns break; case DnsResourceRecordType.FWD: - if ((newResponse.Authority.Count == 1) && (firstAuthority.RDATA as DnsForwarderRecord).Forwarder.Equals("this-server", StringComparison.OrdinalIgnoreCase)) + if ((newResponse.Authority.Count == 1) && (firstAuthority.RDATA as DnsForwarderRecordData).Forwarder.Equals("this-server", StringComparison.OrdinalIgnoreCase)) { //do conditional forwarding via "this-server" newResponse = await RecursiveResolveAsync(newRequest, null, false, false); @@ -1693,7 +1693,7 @@ namespace DnsServerCore.Dns { if (newResponse.Answer.Count == 1) { - lastDomain = (lastRR.RDATA as DnsANAMERecord).Domain; + lastDomain = (lastRR.RDATA as DnsANAMERecordData).Domain; } else { @@ -1708,7 +1708,7 @@ namespace DnsServerCore.Dns } else if (lastRR.Type == DnsResourceRecordType.CNAME) { - lastDomain = (lastRR.RDATA as DnsCNAMERecord).Domain; + lastDomain = (lastRR.RDATA as DnsCNAMERecordData).Domain; } else { @@ -1783,14 +1783,14 @@ namespace DnsServerCore.Dns else blockedDomain = question.Name; - IReadOnlyList answer = new DnsResourceRecord[] { new DnsResourceRecord(question.Name, DnsResourceRecordType.TXT, question.Class, 60, new DnsTXTRecord("source=blocked-zone; domain=" + blockedDomain)) }; + IReadOnlyList answer = new DnsResourceRecord[] { new DnsResourceRecord(question.Name, DnsResourceRecordType.TXT, question.Class, 60, new DnsTXTRecordData("source=blocked-zone; domain=" + blockedDomain)) }; return new DnsDatagram(request.Identifier, true, DnsOpcode.StandardQuery, false, false, request.RecursionDesired, true, false, false, DnsResponseCode.NoError, request.Question, answer) { Tag = DnsServerResponseType.Blocked }; } else { - IReadOnlyCollection aRecords; - IReadOnlyCollection aaaaRecords; + IReadOnlyCollection aRecords; + IReadOnlyCollection aaaaRecords; switch (_blockingType) { @@ -1832,7 +1832,7 @@ namespace DnsServerCore.Dns { List rrList = new List(aRecords.Count); - foreach (DnsARecord record in aRecords) + foreach (DnsARecordData record in aRecords) rrList.Add(new DnsResourceRecord(question.Name, DnsResourceRecordType.A, question.Class, 60, record)); answer = rrList; @@ -1843,7 +1843,7 @@ namespace DnsServerCore.Dns { List rrList = new List(aaaaRecords.Count); - foreach (DnsAAAARecord record in aaaaRecords) + foreach (DnsAAAARecordData record in aaaaRecords) rrList.Add(new DnsResourceRecord(question.Name, DnsResourceRecordType.AAAA, question.Class, 60, record)); answer = rrList; @@ -1911,7 +1911,7 @@ namespace DnsServerCore.Dns if (record.Type != DnsResourceRecordType.CNAME) break; //no further CNAME records exists - DnsDatagram newRequest = new DnsDatagram(0, false, DnsOpcode.StandardQuery, false, false, true, false, false, false, DnsResponseCode.NoError, new DnsQuestionRecord[] { new DnsQuestionRecord((record.RDATA as DnsCNAMERecord).Domain, request.Question[0].Type, request.Question[0].Class) }); + DnsDatagram newRequest = new DnsDatagram(0, false, DnsOpcode.StandardQuery, false, false, true, false, false, false, DnsResponseCode.NoError, new DnsQuestionRecord[] { new DnsQuestionRecord((record.RDATA as DnsCNAMERecordData).Domain, request.Question[0].Type, request.Question[0].Class) }); //check allowed zone inAllowedZone = (_allowedZoneManager.TotalZonesAllowed > 0) && (_allowedZoneManager.Query(newRequest) is not null); @@ -2056,7 +2056,7 @@ namespace DnsServerCore.Dns if (conditionalForwarder.Type != DnsResourceRecordType.FWD) continue; - DnsForwarderRecord forwarder = conditionalForwarder.RDATA as DnsForwarderRecord; + DnsForwarderRecordData forwarder = conditionalForwarder.RDATA as DnsForwarderRecordData; if (forwarder.Forwarder.Equals("this-server", StringComparison.OrdinalIgnoreCase)) continue; @@ -2076,7 +2076,7 @@ namespace DnsServerCore.Dns if (conditionalForwarders.Count == 1) { DnsResourceRecord conditionalForwarder = conditionalForwarders[0]; - response = await ConditionalForwarderResolveAsync(question, dnsCache, conditionalForwarder.RDATA as DnsForwarderRecord, conditionalForwarder.Name); + response = await ConditionalForwarderResolveAsync(question, dnsCache, conditionalForwarder.RDATA as DnsForwarderRecordData, conditionalForwarder.Name); } else { @@ -2090,7 +2090,7 @@ namespace DnsServerCore.Dns if (conditionalForwarder.Type != DnsResourceRecordType.FWD) continue; - DnsForwarderRecord forwarder = conditionalForwarder.RDATA as DnsForwarderRecord; + DnsForwarderRecordData forwarder = conditionalForwarder.RDATA as DnsForwarderRecordData; if (forwarder.Forwarder.Equals("this-server", StringComparison.OrdinalIgnoreCase)) continue; @@ -2212,7 +2212,7 @@ namespace DnsServerCore.Dns { foreach (DnsResourceRecord conditionalForwarder in conditionalForwarders) { - NameServerAddress nameServer = (conditionalForwarder.RDATA as DnsForwarderRecord).NameServer; + NameServerAddress nameServer = (conditionalForwarder.RDATA as DnsForwarderRecordData).NameServer; if (strForwarders is null) strForwarders = nameServer.ToString(); @@ -2297,7 +2297,7 @@ namespace DnsServerCore.Dns } } - private Task ConditionalForwarderResolveAsync(DnsQuestionRecord question, IDnsCache dnsCache, DnsForwarderRecord forwarder, string conditionalForwardingZoneCut, CancellationToken cancellationToken = default) + private Task ConditionalForwarderResolveAsync(DnsQuestionRecord question, IDnsCache dnsCache, DnsForwarderRecordData forwarder, string conditionalForwardingZoneCut, CancellationToken cancellationToken = default) { NetProxy proxy = forwarder.Proxy; if (proxy is null) @@ -2576,7 +2576,7 @@ namespace DnsServerCore.Dns return null; //too many hops so ignore question //follow CNAME chain to inspect TTL further - question = new DnsQuestionRecord((lastRR.RDATA as DnsCNAMERecord).Domain, question.Type, question.Class); + question = new DnsQuestionRecord((lastRR.RDATA as DnsCNAMERecordData).Domain, question.Type, question.Class); } } @@ -2638,7 +2638,7 @@ namespace DnsServerCore.Dns DnsResourceRecord lastRR = response.GetLastAnswerRecord(); if ((lastRR.Type == DnsResourceRecordType.CNAME) && (eligibleQuerySample.Type != DnsResourceRecordType.CNAME)) { - eligibleQuerySample = new DnsQuestionRecord((lastRR.RDATA as DnsCNAMERecord).Domain, eligibleQuerySample.Type, eligibleQuerySample.Class); + eligibleQuerySample = new DnsQuestionRecord((lastRR.RDATA as DnsCNAMERecordData).Domain, eligibleQuerySample.Type, eligibleQuerySample.Class); reQueryAuthZone = true; } } @@ -2655,7 +2655,7 @@ namespace DnsServerCore.Dns case DnsResourceRecordType.FWD: //zone is conditional forwarder refreshQuery = GetCacheRefreshNeededQuery(eligibleQuerySample, cacheRefreshTrigger); - if ((response.Authority.Count == 1) && (firstAuthority.RDATA as DnsForwarderRecord).Forwarder.Equals("this-server", StringComparison.OrdinalIgnoreCase)) + if ((response.Authority.Count == 1) && (firstAuthority.RDATA as DnsForwarderRecordData).Forwarder.Equals("this-server", StringComparison.OrdinalIgnoreCase)) { //do conditional forwarding via "this-server" } @@ -3690,25 +3690,25 @@ namespace DnsServerCore.Dns set { _blockingType = value; } } - public IReadOnlyCollection CustomBlockingARecords + public IReadOnlyCollection CustomBlockingARecords { get { return _customBlockingARecords; } set { if (value is null) - value = Array.Empty(); + value = Array.Empty(); _customBlockingARecords = value; } } - public IReadOnlyCollection CustomBlockingAAAARecords + public IReadOnlyCollection CustomBlockingAAAARecords { get { return _customBlockingAAAARecords; } set { if (value is null) - value = Array.Empty(); + value = Array.Empty(); _customBlockingAAAARecords = value; } diff --git a/DnsServerCore/Dns/Dnssec/DnssecPrivateKey.cs b/DnsServerCore/Dns/Dnssec/DnssecPrivateKey.cs index 8581f504..f6b71c1e 100644 --- a/DnsServerCore/Dns/Dnssec/DnssecPrivateKey.cs +++ b/DnsServerCore/Dns/Dnssec/DnssecPrivateKey.cs @@ -134,7 +134,7 @@ namespace DnsServerCore.Dns.Dnssec DateTime _stateChangedOn; bool _isRetiring; - DnsDNSKEYRecord _dnsKey; + DnsDNSKEYRecordData _dnsKey; #endregion @@ -245,7 +245,7 @@ namespace DnsServerCore.Dns.Dnssec if (_state == DnssecPrivateKeyState.Revoked) flags |= DnsDnsKeyFlag.Revoke; - _dnsKey = new DnsDNSKEYRecord(flags, 3, _algorithm, publicKey); + _dnsKey = new DnsDNSKEYRecordData(flags, 3, _algorithm, publicKey); } protected abstract byte[] SignHash(byte[] hash); @@ -261,14 +261,14 @@ namespace DnsServerCore.Dns.Dnssec internal DnsResourceRecord SignRRSet(string signersName, IReadOnlyList records, uint signatureInceptionOffset, uint signatureValidityPeriod) { DnsResourceRecord firstRecord = records[0]; - DnsRRSIGRecord unsignedRRSigRecord = new DnsRRSIGRecord(firstRecord.Type, _algorithm, DnsRRSIGRecord.GetLabelCount(firstRecord.Name), firstRecord.OriginalTtlValue, Convert.ToUInt32((DateTime.UtcNow.AddSeconds(signatureValidityPeriod) - DateTime.UnixEpoch).TotalSeconds % uint.MaxValue), Convert.ToUInt32((DateTime.UtcNow.AddSeconds(-signatureInceptionOffset) - DateTime.UnixEpoch).TotalSeconds % uint.MaxValue), DnsKey.ComputedKeyTag, signersName, null); + DnsRRSIGRecordData unsignedRRSigRecord = new DnsRRSIGRecordData(firstRecord.Type, _algorithm, DnsRRSIGRecordData.GetLabelCount(firstRecord.Name), firstRecord.OriginalTtlValue, Convert.ToUInt32((DateTime.UtcNow.AddSeconds(signatureValidityPeriod) - DateTime.UnixEpoch).TotalSeconds % uint.MaxValue), Convert.ToUInt32((DateTime.UtcNow.AddSeconds(-signatureInceptionOffset) - DateTime.UnixEpoch).TotalSeconds % uint.MaxValue), DnsKey.ComputedKeyTag, signersName, null); - if (!DnsRRSIGRecord.TryGetRRSetHash(unsignedRRSigRecord, records, out byte[] hash, out EDnsExtendedDnsErrorCode extendedDnsErrorCode)) + if (!DnsRRSIGRecordData.TryGetRRSetHash(unsignedRRSigRecord, records, out byte[] hash, out EDnsExtendedDnsErrorCode extendedDnsErrorCode)) throw new DnsServerException("Failed to sign record set: " + extendedDnsErrorCode.ToString()); byte[] signature = SignHash(hash); - DnsRRSIGRecord signedRRSigRecord = new DnsRRSIGRecord(unsignedRRSigRecord.TypeCovered, unsignedRRSigRecord.Algorithm, unsignedRRSigRecord.Labels, unsignedRRSigRecord.OriginalTtl, unsignedRRSigRecord.SignatureExpirationValue, unsignedRRSigRecord.SignatureInceptionValue, unsignedRRSigRecord.KeyTag, unsignedRRSigRecord.SignersName, signature); + DnsRRSIGRecordData signedRRSigRecord = new DnsRRSIGRecordData(unsignedRRSigRecord.TypeCovered, unsignedRRSigRecord.Algorithm, unsignedRRSigRecord.Labels, unsignedRRSigRecord.OriginalTtl, unsignedRRSigRecord.SignatureExpirationValue, unsignedRRSigRecord.SignatureInceptionValue, unsignedRRSigRecord.KeyTag, unsignedRRSigRecord.SignersName, signature); return new DnsResourceRecord(firstRecord.Name, DnsResourceRecordType.RRSIG, firstRecord.Class, firstRecord.OriginalTtlValue, signedRRSigRecord); } @@ -323,7 +323,7 @@ namespace DnsServerCore.Dns.Dnssec public bool IsRetiring { get { return _isRetiring; } } - public DnsDNSKEYRecord DnsKey + public DnsDNSKEYRecordData DnsKey { get { return _dnsKey; } } public ushort KeyTag diff --git a/DnsServerCore/Dns/Dnssec/DnssecRsaPrivateKey.cs b/DnsServerCore/Dns/Dnssec/DnssecRsaPrivateKey.cs index e06c357c..da4f5e01 100644 --- a/DnsServerCore/Dns/Dnssec/DnssecRsaPrivateKey.cs +++ b/DnsServerCore/Dns/Dnssec/DnssecRsaPrivateKey.cs @@ -43,14 +43,14 @@ namespace DnsServerCore.Dns.Dnssec _keySize = keySize; _rsaPrivateKey = rsaPrivateKey; - _hashAlgorithm = DnsRRSIGRecord.GetHashAlgorithmName(algorithm); + _hashAlgorithm = DnsRRSIGRecordData.GetHashAlgorithmName(algorithm); InitDnsKey(); } internal DnssecRsaPrivateKey(DnssecAlgorithm algorithm, BinaryReader bR) : base(algorithm, bR) { - _hashAlgorithm = DnsRRSIGRecord.GetHashAlgorithmName(algorithm); + _hashAlgorithm = DnsRRSIGRecordData.GetHashAlgorithmName(algorithm); InitDnsKey(); } diff --git a/DnsServerCore/Dns/ResourceRecords/DnsResourceRecordExtension.cs b/DnsServerCore/Dns/ResourceRecords/DnsResourceRecordExtension.cs index c96ae158..aa8c87e8 100644 --- a/DnsServerCore/Dns/ResourceRecords/DnsResourceRecordExtension.cs +++ b/DnsServerCore/Dns/ResourceRecords/DnsResourceRecordExtension.cs @@ -53,7 +53,7 @@ namespace DnsServerCore.Dns.ResourceRecords public static void SetGlueRecords(this DnsResourceRecord record, IReadOnlyList glueAddresses) { - if (record.RDATA is not DnsNSRecord nsRecord) + if (record.RDATA is not DnsNSRecordData nsRecord) throw new InvalidOperationException(); string domain = nsRecord.NameServer; @@ -65,11 +65,11 @@ namespace DnsServerCore.Dns.ResourceRecords switch (glueAddresses[i].AddressFamily) { case AddressFamily.InterNetwork: - glueRecords[i] = new DnsResourceRecord(domain, DnsResourceRecordType.A, DnsClass.IN, record.TtlValue, new DnsARecord(glueAddresses[i])); + glueRecords[i] = new DnsResourceRecord(domain, DnsResourceRecordType.A, DnsClass.IN, record.TtlValue, new DnsARecordData(glueAddresses[i])); break; case AddressFamily.InterNetworkV6: - glueRecords[i] = new DnsResourceRecord(domain, DnsResourceRecordType.AAAA, DnsClass.IN, record.TtlValue, new DnsAAAARecord(glueAddresses[i])); + glueRecords[i] = new DnsResourceRecord(domain, DnsResourceRecordType.AAAA, DnsClass.IN, record.TtlValue, new DnsAAAARecordData(glueAddresses[i])); break; } } @@ -79,7 +79,7 @@ namespace DnsServerCore.Dns.ResourceRecords public static void SyncGlueRecords(this DnsResourceRecord record, IReadOnlyList allGlueRecords) { - if (record.RDATA is not DnsNSRecord nsRecord) + if (record.RDATA is not DnsNSRecordData nsRecord) throw new InvalidOperationException(); string domain = nsRecord.NameServer; @@ -107,7 +107,7 @@ namespace DnsServerCore.Dns.ResourceRecords public static void SyncGlueRecords(this DnsResourceRecord record, IReadOnlyCollection deletedGlueRecords, IReadOnlyCollection addedGlueRecords) { - if (record.RDATA is not DnsNSRecord nsRecord) + if (record.RDATA is not DnsNSRecordData nsRecord) throw new InvalidOperationException(); bool updated = false; diff --git a/DnsServerCore/Dns/ResourceRecords/DnsResourceRecordInfo.cs b/DnsServerCore/Dns/ResourceRecords/DnsResourceRecordInfo.cs index c894ca74..c70087bc 100644 --- a/DnsServerCore/Dns/ResourceRecords/DnsResourceRecordInfo.cs +++ b/DnsServerCore/Dns/ResourceRecords/DnsResourceRecordInfo.cs @@ -83,11 +83,11 @@ namespace DnsServerCore.Dns.ResourceRecords switch (glueRecord.Type) { case DnsResourceRecordType.A: - address = (glueRecord.RDATA as DnsARecord).Address; + address = (glueRecord.RDATA as DnsARecordData).Address; break; case DnsResourceRecordType.AAAA: - address = (glueRecord.RDATA as DnsAAAARecord).Address; + address = (glueRecord.RDATA as DnsAAAARecordData).Address; break; default: diff --git a/DnsServerCore/Dns/Trees/AuthZoneTree.cs b/DnsServerCore/Dns/Trees/AuthZoneTree.cs index 52e4f136..e3f761f7 100644 --- a/DnsServerCore/Dns/Trees/AuthZoneTree.cs +++ b/DnsServerCore/Dns/Trees/AuthZoneTree.cs @@ -60,7 +60,7 @@ namespace DnsServerCore.Dns.Trees } else { - int x = DnsNSECRecord.CanonicalComparison(currentValue.Key, key); + int x = DnsNSECRecordData.CanonicalComparison(currentValue.Key, key); if (x == 0) { //current node value matches the key @@ -233,7 +233,7 @@ namespace DnsServerCore.Dns.Trees } else { - int x = DnsNSECRecord.CanonicalComparison(currentValue.Key, key); + int x = DnsNSECRecordData.CanonicalComparison(currentValue.Key, key); if (x == 0) { //current node value matches the key @@ -774,10 +774,10 @@ namespace DnsServerCore.Dns.Trees { //add wildcard proof to prove that a wildcard expansion was not possible DnsResourceRecord nsecRecord = nsecRecords[0]; - DnsNSECRecord nsec = nsecRecord.RDATA as DnsNSECRecord; - string wildcardName = DnsNSECRecord.GetWildcardFor(nsecRecord.Name, nsec.NextDomainName); + DnsNSECRecordData nsec = nsecRecord.RDATA as DnsNSECRecordData; + string wildcardName = DnsNSECRecordData.GetWildcardFor(nsecRecord.Name, nsec.NextDomainName); - if (!DnsNSECRecord.IsDomainCovered(nsecRecord.Name, nsec.NextDomainName, wildcardName)) + if (!DnsNSECRecordData.IsDomainCovered(nsecRecord.Name, nsec.NextDomainName, wildcardName)) AddProofOfCoverFor(wildcardName); } @@ -831,8 +831,8 @@ namespace DnsServerCore.Dns.Trees proofOfCoverRecords = nextNSec3Records; DnsResourceRecord previousNSec3Record = nextNSec3Records[0]; - string nextHashedOwnerNameString = (previousNSec3Record.RDATA as DnsNSEC3Record).NextHashedOwnerName + "." + zoneName; - if (DnsNSECRecord.CanonicalComparison(previousNSec3Record.Name, nextHashedOwnerNameString) >= 0) + string nextHashedOwnerNameString = (previousNSec3Record.RDATA as DnsNSEC3RecordData).NextHashedOwnerName + "." + zoneName; + if (DnsNSECRecordData.CanonicalComparison(previousNSec3Record.Name, nextHashedOwnerNameString) >= 0) break; //found last NSEC3 //jump to next hashed owner @@ -889,14 +889,14 @@ namespace DnsServerCore.Dns.Trees if (nsec3ParamRecords.Count == 0) throw new InvalidOperationException("Zone does not have NSEC3 deployed."); - DnsNSEC3PARAMRecord nsec3Param = nsec3ParamRecords[0].RDATA as DnsNSEC3PARAMRecord; + DnsNSEC3PARAMRecordData nsec3Param = nsec3ParamRecords[0].RDATA as DnsNSEC3PARAMRecordData; //find correct closest encloser string hashedNextCloserName; while (true) { - string nextCloserName = DnsNSEC3Record.GetNextCloserName(domain, closestEncloser); + string nextCloserName = DnsNSEC3RecordData.GetNextCloserName(domain, closestEncloser); hashedNextCloserName = nsec3Param.ComputeHashedOwnerNameBase32HexString(nextCloserName) + "." + closestAuthority.Name; AuthZone nsec3Zone = GetAuthZone(closestAuthority.Name, hashedNextCloserName); @@ -934,17 +934,17 @@ namespace DnsServerCore.Dns.Trees nsec3Records.AddRange(closestEncloserProofRecords); DnsResourceRecord closestEncloserProofRecord = closestEncloserProofRecords[0]; - DnsNSEC3Record closestEncloserProof = closestEncloserProofRecord.RDATA as DnsNSEC3Record; + DnsNSEC3RecordData closestEncloserProof = closestEncloserProofRecord.RDATA as DnsNSEC3RecordData; //add proof of cover for the next closer name - if (!DnsNSECRecord.IsDomainCovered(closestEncloserProofRecord.Name, closestEncloserProof.NextHashedOwnerName + "." + closestAuthority.Name, hashedNextCloserName)) + if (!DnsNSECRecordData.IsDomainCovered(closestEncloserProofRecord.Name, closestEncloserProof.NextHashedOwnerName + "." + closestAuthority.Name, hashedNextCloserName)) AddProofOfCoverFor(hashedNextCloserName, closestAuthority.Name); //add proof of cover to prove that a wildcard expansion was not possible string wildcardDomain = closestEncloser.Length > 0 ? "*." + closestEncloser : "*"; string hashedWildcardDomainName = nsec3Param.ComputeHashedOwnerNameBase32HexString(wildcardDomain) + "." + closestAuthority.Name; - if (!DnsNSECRecord.IsDomainCovered(closestEncloserProofRecord.Name, closestEncloserProof.NextHashedOwnerName + "." + closestAuthority.Name, hashedWildcardDomainName)) + if (!DnsNSECRecordData.IsDomainCovered(closestEncloserProofRecord.Name, closestEncloserProof.NextHashedOwnerName + "." + closestAuthority.Name, hashedWildcardDomainName)) AddProofOfCoverFor(hashedWildcardDomainName, closestAuthority.Name); } @@ -966,7 +966,7 @@ namespace DnsServerCore.Dns.Trees if (nsec3ParamRecords.Count == 0) throw new InvalidOperationException("Zone does not have NSEC3 deployed."); - DnsNSEC3PARAMRecord nsec3Param = nsec3ParamRecords[0].RDATA as DnsNSEC3PARAMRecord; + DnsNSEC3PARAMRecordData nsec3Param = nsec3ParamRecords[0].RDATA as DnsNSEC3PARAMRecordData; string hashedOwnerName = nsec3Param.ComputeHashedOwnerNameBase32HexString(zone.Name) + "." + apexZone.Name; AuthZone nsec3Zone = GetAuthZone(apexZone.Name, hashedOwnerName); diff --git a/DnsServerCore/Dns/ZoneManagers/AllowedZoneManager.cs b/DnsServerCore/Dns/ZoneManagers/AllowedZoneManager.cs index 3fb400fe..1b20ee0c 100644 --- a/DnsServerCore/Dns/ZoneManagers/AllowedZoneManager.cs +++ b/DnsServerCore/Dns/ZoneManagers/AllowedZoneManager.cs @@ -36,8 +36,8 @@ namespace DnsServerCore.Dns.ZoneManagers readonly AuthZoneManager _zoneManager; - DnsSOARecord _soaRecord; - DnsNSRecord _nsRecord; + DnsSOARecordData _soaRecord; + DnsNSRecordData _nsRecord; #endregion @@ -58,8 +58,8 @@ namespace DnsServerCore.Dns.ZoneManagers private void UpdateServerDomain(string serverDomain) { - _soaRecord = new DnsSOARecord(serverDomain, "hostadmin." + serverDomain, 1, 900, 300, 604800, 60); - _nsRecord = new DnsNSRecord(serverDomain); + _soaRecord = new DnsSOARecordData(serverDomain, "hostadmin." + serverDomain, 1, 900, 300, 604800, 60); + _nsRecord = new DnsNSRecordData(serverDomain); _zoneManager.ServerDomain = serverDomain; } diff --git a/DnsServerCore/Dns/ZoneManagers/AuthZoneManager.cs b/DnsServerCore/Dns/ZoneManagers/AuthZoneManager.cs index be1900ca..d9939763 100644 --- a/DnsServerCore/Dns/ZoneManagers/AuthZoneManager.cs +++ b/DnsServerCore/Dns/ZoneManagers/AuthZoneManager.cs @@ -101,7 +101,7 @@ namespace DnsServerCore.Dns.ZoneManagers continue; DnsResourceRecord record = zone.GetRecords(DnsResourceRecordType.SOA)[0]; - DnsSOARecord soa = record.RDATA as DnsSOARecord; + DnsSOARecordData soa = record.RDATA as DnsSOARecordData; if (soa.PrimaryNameServer.Equals(_serverDomain, StringComparison.OrdinalIgnoreCase)) { @@ -109,16 +109,16 @@ namespace DnsServerCore.Dns.ZoneManagers if (responsiblePerson.EndsWith(_serverDomain)) responsiblePerson = responsiblePerson.Replace(_serverDomain, serverDomain); - SetRecords(zone.Name, record.Name, record.Type, record.TtlValue, new DnsResourceRecordData[] { new DnsSOARecord(serverDomain, responsiblePerson, soa.Serial, soa.Refresh, soa.Retry, soa.Expire, soa.Minimum) }); + SetRecords(zone.Name, record.Name, record.Type, record.TtlValue, new DnsResourceRecordData[] { new DnsSOARecordData(serverDomain, responsiblePerson, soa.Serial, soa.Refresh, soa.Retry, soa.Expire, soa.Minimum) }); //update NS records IReadOnlyList nsResourceRecords = zone.GetRecords(DnsResourceRecordType.NS); foreach (DnsResourceRecord nsResourceRecord in nsResourceRecords) { - if ((nsResourceRecord.RDATA as DnsNSRecord).NameServer.Equals(_serverDomain, StringComparison.OrdinalIgnoreCase)) + if ((nsResourceRecord.RDATA as DnsNSRecordData).NameServer.Equals(_serverDomain, StringComparison.OrdinalIgnoreCase)) { - UpdateRecord(zone.Name, nsResourceRecord, new DnsResourceRecord(nsResourceRecord.Name, nsResourceRecord.Type, nsResourceRecord.Class, nsResourceRecord.TtlValue, new DnsNSRecord(serverDomain)) { Tag = nsResourceRecord.Tag }); + UpdateRecord(zone.Name, nsResourceRecord, new DnsResourceRecord(nsResourceRecord.Name, nsResourceRecord.Type, nsResourceRecord.Class, nsResourceRecord.TtlValue, new DnsNSRecordData(serverDomain)) { Tag = nsResourceRecord.Tag }); break; } } @@ -258,7 +258,7 @@ namespace DnsServerCore.Dns.ZoneManagers do { - if (!_root.TryGet((lastCNAME.RDATA as DnsCNAMERecord).Domain, out AuthZoneNode zoneNode)) + if (!_root.TryGet((lastCNAME.RDATA as DnsCNAMERecordData).Domain, out AuthZoneNode zoneNode)) break; IReadOnlyList records = zoneNode.QueryRecords(question.Type, dnssecOk); @@ -281,11 +281,11 @@ namespace DnsServerCore.Dns.ZoneManagers { DnsResourceRecord dnameRR = answer[0]; - string result = (dnameRR.RDATA as DnsDNAMERecord).Substitute(question.Name, dnameRR.Name); + string result = (dnameRR.RDATA as DnsDNAMERecordData).Substitute(question.Name, dnameRR.Name); if (DnsClient.IsDomainNameValid(result)) { - DnsResourceRecord cnameRR = new DnsResourceRecord(question.Name, DnsResourceRecordType.CNAME, question.Class, dnameRR.TtlValue, new DnsCNAMERecord(result)); + DnsResourceRecord cnameRR = new DnsResourceRecord(question.Name, DnsResourceRecordType.CNAME, question.Class, dnameRR.TtlValue, new DnsCNAMERecordData(result)); List list = new List(5); @@ -320,16 +320,16 @@ namespace DnsServerCore.Dns.ZoneManagers } else { - ResolveAdditionalRecords((refRecord.RDATA as DnsNSRecord).NameServer, dnssecOk, additionalRecords); + ResolveAdditionalRecords((refRecord.RDATA as DnsNSRecordData).NameServer, dnssecOk, additionalRecords); } break; case DnsResourceRecordType.MX: - ResolveAdditionalRecords((refRecord.RDATA as DnsMXRecord).Exchange, dnssecOk, additionalRecords); + ResolveAdditionalRecords((refRecord.RDATA as DnsMXRecordData).Exchange, dnssecOk, additionalRecords); break; case DnsResourceRecordType.SRV: - ResolveAdditionalRecords((refRecord.RDATA as DnsSRVRecord).Target, dnssecOk, additionalRecords); + ResolveAdditionalRecords((refRecord.RDATA as DnsSRVRecordData).Target, dnssecOk, additionalRecords); break; } } @@ -444,7 +444,7 @@ namespace DnsServerCore.Dns.ZoneManagers //read and apply difference sequences int index = 1; int count = xfrRecords.Count - 1; - DnsSOARecord currentSoa = (DnsSOARecord)currentSoaRecord.RDATA; + DnsSOARecordData currentSoa = (DnsSOARecordData)currentSoaRecord.RDATA; while (index < count) { @@ -582,13 +582,13 @@ namespace DnsServerCore.Dns.ZoneManagers } //check sequence soa serial - DnsSOARecord deletedSoa = deletedSoaRecord.RDATA as DnsSOARecord; + DnsSOARecordData deletedSoa = deletedSoaRecord.RDATA as DnsSOARecordData; if (currentSoa.Serial != deletedSoa.Serial) throw new InvalidOperationException("Current SOA serial does not match with the IXFR difference sequence deleted SOA."); //check next difference sequence - currentSoa = addedSoaRecord.RDATA as DnsSOARecord; + currentSoa = addedSoaRecord.RDATA as DnsSOARecordData; } //create condensed records @@ -653,8 +653,8 @@ namespace DnsServerCore.Dns.ZoneManagers { { CreatePrimaryZone("localhost", _dnsServer.ServerDomain, true); - SetRecords("localhost", "localhost", DnsResourceRecordType.A, 3600, new DnsResourceRecordData[] { new DnsARecord(IPAddress.Loopback) }); - SetRecords("localhost", "localhost", DnsResourceRecordType.AAAA, 3600, new DnsResourceRecordData[] { new DnsAAAARecord(IPAddress.IPv6Loopback) }); + SetRecords("localhost", "localhost", DnsResourceRecordType.A, 3600, new DnsResourceRecordData[] { new DnsARecordData(IPAddress.Loopback) }); + SetRecords("localhost", "localhost", DnsResourceRecordType.AAAA, 3600, new DnsResourceRecordData[] { new DnsAAAARecordData(IPAddress.IPv6Loopback) }); } { @@ -673,14 +673,14 @@ namespace DnsServerCore.Dns.ZoneManagers string ptrZoneName = "127.in-addr.arpa"; CreatePrimaryZone(ptrZoneName, _dnsServer.ServerDomain, true); - SetRecords(ptrZoneName, "1.0.0.127.in-addr.arpa", DnsResourceRecordType.PTR, 3600, new DnsResourceRecordData[] { new DnsPTRRecord("localhost") }); + SetRecords(ptrZoneName, "1.0.0.127.in-addr.arpa", DnsResourceRecordType.PTR, 3600, new DnsResourceRecordData[] { new DnsPTRRecordData("localhost") }); } { string ptrZoneName = new DnsQuestionRecord(IPAddress.IPv6Loopback, DnsClass.IN).Name; CreatePrimaryZone(ptrZoneName, _dnsServer.ServerDomain, true); - SetRecords(ptrZoneName, ptrZoneName, DnsResourceRecordType.PTR, 3600, new DnsResourceRecordData[] { new DnsPTRRecord("localhost") }); + SetRecords(ptrZoneName, ptrZoneName, DnsResourceRecordType.PTR, 3600, new DnsResourceRecordData[] { new DnsPTRRecordData("localhost") }); } } @@ -709,7 +709,7 @@ namespace DnsServerCore.Dns.ZoneManagers } } - internal AuthZoneInfo CreateSpecialPrimaryZone(string zoneName, DnsSOARecord soaRecord, DnsNSRecord ns) + internal AuthZoneInfo CreateSpecialPrimaryZone(string zoneName, DnsSOARecordData soaRecord, DnsNSRecordData ns) { PrimaryZone apexZone = new PrimaryZone(_dnsServer, zoneName, soaRecord, ns); @@ -1005,9 +1005,9 @@ namespace DnsServerCore.Dns.ZoneManagers throw new InvalidOperationException("Zone must be a primary or secondary zone."); DnsResourceRecord currentSoaRecord = soaRecords[0]; - uint clientSerial = (clientSoaRecord.RDATA as DnsSOARecord).Serial; + uint clientSerial = (clientSoaRecord.RDATA as DnsSOARecordData).Serial; - if (clientSerial == (currentSoaRecord.RDATA as DnsSOARecord).Serial) + if (clientSerial == (currentSoaRecord.RDATA as DnsSOARecordData).Serial) { //zone not modified return new DnsResourceRecord[] { currentSoaRecord }; @@ -1020,7 +1020,7 @@ namespace DnsServerCore.Dns.ZoneManagers while (index < zoneHistory.Count) { //check difference sequence - if ((zoneHistory[index].RDATA as DnsSOARecord).Serial == clientSerial) + if ((zoneHistory[index].RDATA as DnsSOARecordData).Serial == clientSerial) break; //found history for client's serial //skip to next difference sequence @@ -1173,7 +1173,7 @@ namespace DnsServerCore.Dns.ZoneManagers //process IXFR response DnsResourceRecord currentSoaRecord = soaRecords[0]; - DnsSOARecord currentSoa = currentSoaRecord.RDATA as DnsSOARecord; + DnsSOARecordData currentSoa = currentSoaRecord.RDATA as DnsSOARecordData; IReadOnlyList condensedXfrRecords = CondenseIncrementalZoneTransferRecords(zoneName, currentSoaRecord, xfrRecords); @@ -1287,7 +1287,7 @@ namespace DnsServerCore.Dns.ZoneManagers } //check sequence soa serial - DnsSOARecord deletedSoa = deletedSoaRecord.RDATA as DnsSOARecord; + DnsSOARecordData deletedSoa = deletedSoaRecord.RDATA as DnsSOARecordData; if (currentSoa.Serial != deletedSoa.Serial) throw new InvalidOperationException("Current SOA serial does not match with the IXFR difference sequence deleted SOA."); @@ -1334,7 +1334,7 @@ namespace DnsServerCore.Dns.ZoneManagers } //check next difference sequence - currentSoa = addedSoaRecord.RDATA as DnsSOARecord; + currentSoa = addedSoaRecord.RDATA as DnsSOARecordData; deletedRecords.Clear(); deletedGlueRecords.Clear(); @@ -1894,11 +1894,11 @@ namespace DnsServerCore.Dns.ZoneManagers foreach (DnsResourceRecord dnsKeyRecord in dnsKeyRecords) { - DnsDNSKEYRecord dnsKey = dnsKeyRecord.RDATA as DnsDNSKEYRecord; + DnsDNSKEYRecordData dnsKey = dnsKeyRecord.RDATA as DnsDNSKEYRecordData; if (dnsKey.Flags.HasFlag(DnsDnsKeyFlag.SecureEntryPoint) && !dnsKey.Flags.HasFlag(DnsDnsKeyFlag.Revoke)) { - DnsDSRecord dsRecord = dnsKey.CreateDS(dnsKeyRecord.Name, DnssecDigestType.SHA256); + DnsDSRecordData dsRecord = dnsKey.CreateDS(dnsKeyRecord.Name, DnssecDigestType.SHA256); dnsClient.AddTrustAnchor(zoneInfo.Name, dsRecord); } } @@ -1934,7 +1934,7 @@ namespace DnsServerCore.Dns.ZoneManagers //make zone info AuthZoneType zoneType; - if (_dnsServer.ServerDomain.Equals((soaRecord.RDATA as DnsSOARecord).PrimaryNameServer, StringComparison.OrdinalIgnoreCase)) + if (_dnsServer.ServerDomain.Equals((soaRecord.RDATA as DnsSOARecordData).PrimaryNameServer, StringComparison.OrdinalIgnoreCase)) zoneType = AuthZoneType.Primary; else zoneType = AuthZoneType.Stub; @@ -1988,7 +1988,7 @@ namespace DnsServerCore.Dns.ZoneManagers //make zone info AuthZoneType zoneType; - if (_dnsServer.ServerDomain.Equals((soaRecord.RDATA as DnsSOARecord).PrimaryNameServer, StringComparison.OrdinalIgnoreCase)) + if (_dnsServer.ServerDomain.Equals((soaRecord.RDATA as DnsSOARecordData).PrimaryNameServer, StringComparison.OrdinalIgnoreCase)) zoneType = AuthZoneType.Primary; else zoneType = AuthZoneType.Stub; diff --git a/DnsServerCore/Dns/ZoneManagers/BlockListZoneManager.cs b/DnsServerCore/Dns/ZoneManagers/BlockListZoneManager.cs index 2bdbeb03..8ca2e608 100644 --- a/DnsServerCore/Dns/ZoneManagers/BlockListZoneManager.cs +++ b/DnsServerCore/Dns/ZoneManagers/BlockListZoneManager.cs @@ -42,11 +42,11 @@ namespace DnsServerCore.Dns.ZoneManagers readonly List _blockListUrls = new List(); IReadOnlyDictionary> _blockListZone = new Dictionary>(); - DnsSOARecord _soaRecord; - DnsNSRecord _nsRecord; + DnsSOARecordData _soaRecord; + DnsNSRecordData _nsRecord; - readonly IReadOnlyCollection _aRecords = new DnsARecord[] { new DnsARecord(IPAddress.Any) }; - readonly IReadOnlyCollection _aaaaRecords = new DnsAAAARecord[] { new DnsAAAARecord(IPAddress.IPv6Any) }; + readonly IReadOnlyCollection _aRecords = new DnsARecordData[] { new DnsARecordData(IPAddress.Any) }; + readonly IReadOnlyCollection _aaaaRecords = new DnsAAAARecordData[] { new DnsAAAARecordData(IPAddress.IPv6Any) }; #endregion @@ -70,8 +70,8 @@ namespace DnsServerCore.Dns.ZoneManagers private void UpdateServerDomain(string serverDomain) { - _soaRecord = new DnsSOARecord(serverDomain, "hostadmin." + serverDomain, 1, 14400, 3600, 604800, 60); - _nsRecord = new DnsNSRecord(serverDomain); + _soaRecord = new DnsSOARecordData(serverDomain, "hostadmin." + serverDomain, 1, 14400, 3600, 604800, 60); + _nsRecord = new DnsNSRecordData(serverDomain); } private string GetBlockListFilePath(Uri blockListUrl) @@ -416,14 +416,14 @@ namespace DnsServerCore.Dns.ZoneManagers DnsResourceRecord[] answer = new DnsResourceRecord[blockLists.Count]; for (int i = 0; i < answer.Length; i++) - answer[i] = new DnsResourceRecord(question.Name, DnsResourceRecordType.TXT, question.Class, 60, new DnsTXTRecord("source=block-list-zone; blockListUrl=" + blockLists[i].AbsoluteUri + "; domain=" + blockedDomain)); + answer[i] = new DnsResourceRecord(question.Name, DnsResourceRecordType.TXT, question.Class, 60, new DnsTXTRecordData("source=block-list-zone; blockListUrl=" + blockLists[i].AbsoluteUri + "; domain=" + blockedDomain)); return new DnsDatagram(request.Identifier, true, DnsOpcode.StandardQuery, false, false, request.RecursionDesired, true, false, false, DnsResponseCode.NoError, request.Question, answer); } else { - IReadOnlyCollection aRecords; - IReadOnlyCollection aaaaRecords; + IReadOnlyCollection aRecords; + IReadOnlyCollection aaaaRecords; switch (_dnsServer.BlockingType) { @@ -457,7 +457,7 @@ namespace DnsServerCore.Dns.ZoneManagers { List rrList = new List(aRecords.Count); - foreach (DnsARecord record in aRecords) + foreach (DnsARecordData record in aRecords) rrList.Add(new DnsResourceRecord(question.Name, DnsResourceRecordType.A, question.Class, 60, record)); answer = rrList; @@ -468,7 +468,7 @@ namespace DnsServerCore.Dns.ZoneManagers { List rrList = new List(aaaaRecords.Count); - foreach (DnsAAAARecord record in aaaaRecords) + foreach (DnsAAAARecordData record in aaaaRecords) rrList.Add(new DnsResourceRecord(question.Name, DnsResourceRecordType.AAAA, question.Class, 60, record)); answer = rrList; diff --git a/DnsServerCore/Dns/ZoneManagers/BlockedZoneManager.cs b/DnsServerCore/Dns/ZoneManagers/BlockedZoneManager.cs index 9356876b..6c887f4b 100644 --- a/DnsServerCore/Dns/ZoneManagers/BlockedZoneManager.cs +++ b/DnsServerCore/Dns/ZoneManagers/BlockedZoneManager.cs @@ -36,8 +36,8 @@ namespace DnsServerCore.Dns.ZoneManagers readonly AuthZoneManager _zoneManager; - DnsSOARecord _soaRecord; - DnsNSRecord _nsRecord; + DnsSOARecordData _soaRecord; + DnsNSRecordData _nsRecord; #endregion @@ -58,8 +58,8 @@ namespace DnsServerCore.Dns.ZoneManagers private void UpdateServerDomain(string serverDomain) { - _soaRecord = new DnsSOARecord(serverDomain, "hostadmin." + serverDomain, 1, 900, 300, 604800, 60); - _nsRecord = new DnsNSRecord(serverDomain); + _soaRecord = new DnsSOARecordData(serverDomain, "hostadmin." + serverDomain, 1, 900, 300, 604800, 60); + _nsRecord = new DnsNSRecordData(serverDomain); _zoneManager.ServerDomain = serverDomain; } @@ -198,7 +198,7 @@ namespace DnsServerCore.Dns.ZoneManagers #region properties - internal DnsSOARecord DnsSOARecord + internal DnsSOARecordData DnsSOARecord { get { return _soaRecord; } } public string ServerDomain diff --git a/DnsServerCore/Dns/ZoneManagers/CacheZoneManager.cs b/DnsServerCore/Dns/ZoneManagers/CacheZoneManager.cs index 94c60af9..967b82f1 100644 --- a/DnsServerCore/Dns/ZoneManagers/CacheZoneManager.cs +++ b/DnsServerCore/Dns/ZoneManagers/CacheZoneManager.cs @@ -163,7 +163,7 @@ namespace DnsServerCore.Dns.ZoneManagers do { - if (!_root.TryGet((lastCNAME.RDATA as DnsCNAMERecord).Domain, out CacheZone cacheZone)) + if (!_root.TryGet((lastCNAME.RDATA as DnsCNAMERecordData).Domain, out CacheZone cacheZone)) break; IReadOnlyList records = cacheZone.QueryRecords(question.Type, serveStale, true); @@ -186,11 +186,11 @@ namespace DnsServerCore.Dns.ZoneManagers { DnsResourceRecord dnameRR = answer[0]; - string result = (dnameRR.RDATA as DnsDNAMERecord).Substitute(question.Name, dnameRR.Name); + string result = (dnameRR.RDATA as DnsDNAMERecordData).Substitute(question.Name, dnameRR.Name); if (DnsClient.IsDomainNameValid(result)) { - DnsResourceRecord cnameRR = new DnsResourceRecord(question.Name, DnsResourceRecordType.CNAME, question.Class, dnameRR.TtlValue, new DnsCNAMERecord(result)); + DnsResourceRecord cnameRR = new DnsResourceRecord(question.Name, DnsResourceRecordType.CNAME, question.Class, dnameRR.TtlValue, new DnsCNAMERecordData(result)); List list = new List(5) { @@ -219,21 +219,21 @@ namespace DnsServerCore.Dns.ZoneManagers switch (refRecord.Type) { case DnsResourceRecordType.NS: - DnsNSRecord nsRecord = refRecord.RDATA as DnsNSRecord; + DnsNSRecordData nsRecord = refRecord.RDATA as DnsNSRecordData; if (nsRecord is not null) ResolveAdditionalRecords(refRecord, nsRecord.NameServer, serveStale, additionalRecords); break; case DnsResourceRecordType.MX: - DnsMXRecord mxRecord = refRecord.RDATA as DnsMXRecord; + DnsMXRecordData mxRecord = refRecord.RDATA as DnsMXRecordData; if (mxRecord is not null) ResolveAdditionalRecords(refRecord, mxRecord.Exchange, serveStale, additionalRecords); break; case DnsResourceRecordType.SRV: - DnsSRVRecord srvRecord = refRecord.RDATA as DnsSRVRecord; + DnsSRVRecordData srvRecord = refRecord.RDATA as DnsSRVRecordData; if (srvRecord is not null) ResolveAdditionalRecords(refRecord, srvRecord.Target, serveStale, additionalRecords); @@ -455,7 +455,7 @@ namespace DnsServerCore.Dns.ZoneManagers foreach (DnsResourceRecord rrsigRecord in rrsigRecords) { - if (!DnsRRSIGRecord.IsWildcard(rrsigRecord)) + if (!DnsRRSIGRecordData.IsWildcard(rrsigRecord)) continue; //add NSEC/NSEC3 for the wildcard proof diff --git a/DnsServerCore/Dns/Zones/ApexZone.cs b/DnsServerCore/Dns/Zones/ApexZone.cs index f0b266c4..6c6a3646 100644 --- a/DnsServerCore/Dns/Zones/ApexZone.cs +++ b/DnsServerCore/Dns/Zones/ApexZone.cs @@ -75,7 +75,7 @@ namespace DnsServerCore.Dns.Zones protected void CleanupHistory(List history) { - DnsSOARecord soa = _entries[DnsResourceRecordType.SOA][0].RDATA as DnsSOARecord; + DnsSOARecordData soa = _entries[DnsResourceRecordType.SOA][0].RDATA as DnsSOARecordData; DateTime expiry = DateTime.UtcNow.AddSeconds(-soa.Expire); int index = 0; @@ -156,7 +156,7 @@ namespace DnsServerCore.Dns.Zones { case DnsResourceRecordType.NS: { - string nsDomain = (nsRecord.RDATA as DnsNSRecord).NameServer; + string nsDomain = (nsRecord.RDATA as DnsNSRecordData).NameServer; IReadOnlyList glueRecords = nsRecord.GetGlueRecords(); if (glueRecords.Count > 0) @@ -166,12 +166,12 @@ namespace DnsServerCore.Dns.Zones switch (glueRecord.Type) { case DnsResourceRecordType.A: - outNameServers.Add(new NameServerAddress(nsDomain, (glueRecord.RDATA as DnsARecord).Address)); + outNameServers.Add(new NameServerAddress(nsDomain, (glueRecord.RDATA as DnsARecordData).Address)); break; case DnsResourceRecordType.AAAA: if (dnsServer.PreferIPv6) - outNameServers.Add(new NameServerAddress(nsDomain, (glueRecord.RDATA as DnsAAAARecord).Address)); + outNameServers.Add(new NameServerAddress(nsDomain, (glueRecord.RDATA as DnsAAAARecordData).Address)); break; } @@ -224,7 +224,7 @@ namespace DnsServerCore.Dns.Zones return resolvedNameServers; } - string primaryNameServer = (soaRecord.RDATA as DnsSOARecord).PrimaryNameServer; + string primaryNameServer = (soaRecord.RDATA as DnsSOARecordData).PrimaryNameServer; IReadOnlyList nsRecords = GetRecords(DnsResourceRecordType.NS); //stub zone has no authority so cant use QueryRecords List nameServers = new List(nsRecords.Count * 2); @@ -234,7 +234,7 @@ namespace DnsServerCore.Dns.Zones if (nsRecord.IsDisabled()) continue; - if (primaryNameServer.Equals((nsRecord.RDATA as DnsNSRecord).NameServer, StringComparison.OrdinalIgnoreCase)) + if (primaryNameServer.Equals((nsRecord.RDATA as DnsNSRecordData).NameServer, StringComparison.OrdinalIgnoreCase)) { //found primary NS await ResolveNameServerAddressesAsync(dnsServer, nsRecord, nameServers); @@ -250,7 +250,7 @@ namespace DnsServerCore.Dns.Zones public async Task> GetSecondaryNameServerAddressesAsync(DnsServer dnsServer) { - string primaryNameServer = (_entries[DnsResourceRecordType.SOA][0].RDATA as DnsSOARecord).PrimaryNameServer; + string primaryNameServer = (_entries[DnsResourceRecordType.SOA][0].RDATA as DnsSOARecordData).PrimaryNameServer; IReadOnlyList nsRecords = GetRecords(DnsResourceRecordType.NS); //stub zone has no authority so cant use QueryRecords List nameServers = new List(nsRecords.Count * 2); @@ -260,7 +260,7 @@ namespace DnsServerCore.Dns.Zones if (nsRecord.IsDisabled()) continue; - if (primaryNameServer.Equals((nsRecord.RDATA as DnsNSRecord).NameServer, StringComparison.OrdinalIgnoreCase)) + if (primaryNameServer.Equals((nsRecord.RDATA as DnsNSRecordData).NameServer, StringComparison.OrdinalIgnoreCase)) continue; //skip primary name server await ResolveNameServerAddressesAsync(dnsServer, nsRecord, nameServers); diff --git a/DnsServerCore/Dns/Zones/AuthZone.cs b/DnsServerCore/Dns/Zones/AuthZone.cs index df37d188..253feedc 100644 --- a/DnsServerCore/Dns/Zones/AuthZone.cs +++ b/DnsServerCore/Dns/Zones/AuthZone.cs @@ -111,7 +111,7 @@ namespace DnsServerCore.Dns.Zones foreach (DnsResourceRecord rrsigRecord in rrsigRecords) { - if ((rrsigRecord.RDATA as DnsRRSIGRecord).TypeCovered == type) + if ((rrsigRecord.RDATA as DnsRRSIGRecordData).TypeCovered == type) newRecords.Add(rrsigRecord); } @@ -252,11 +252,11 @@ namespace DnsServerCore.Dns.Zones foreach (DnsResourceRecord existingRecord in existingRecords) { bool found = false; - DnsRRSIGRecord existingRRSig = existingRecord.RDATA as DnsRRSIGRecord; + DnsRRSIGRecordData existingRRSig = existingRecord.RDATA as DnsRRSIGRecordData; foreach (DnsResourceRecord newRRSigRecord in newRRSigRecords) { - DnsRRSIGRecord newRRSig = newRRSigRecord.RDATA as DnsRRSIGRecord; + DnsRRSIGRecordData newRRSig = newRRSigRecord.RDATA as DnsRRSIGRecordData; if ((newRRSig.TypeCovered == existingRRSig.TypeCovered) && (newRRSig.KeyTag == existingRRSig.KeyTag)) { @@ -340,7 +340,7 @@ namespace DnsServerCore.Dns.Zones foreach (DnsResourceRecord rrsigRecord in entry.Value) { - DnsRRSIGRecord rrsig = rrsigRecord.RDATA as DnsRRSIGRecord; + DnsRRSIGRecordData rrsig = rrsigRecord.RDATA as DnsRRSIGRecordData; if (rrsig.TypeCovered == DnsResourceRecordType.NSEC) recordsToRemove.Add(rrsigRecord); } @@ -378,7 +378,7 @@ namespace DnsServerCore.Dns.Zones foreach (DnsResourceRecord rrsigRecord in entry.Value) { - DnsRRSIGRecord rrsig = rrsigRecord.RDATA as DnsRRSIGRecord; + DnsRRSIGRecordData rrsig = rrsigRecord.RDATA as DnsRRSIGRecordData; switch (rrsig.TypeCovered) { case DnsResourceRecordType.NSEC3: @@ -433,7 +433,7 @@ namespace DnsServerCore.Dns.Zones foreach (DnsResourceRecord rrsigRecord in rrsigRecords) { - DnsRRSIGRecord rrsig = rrsigRecord.RDATA as DnsRRSIGRecord; + DnsRRSIGRecordData rrsig = rrsigRecord.RDATA as DnsRRSIGRecordData; uint signatureValidityPeriod = rrsig.SignatureExpirationValue - rrsig.SignatureInceptionValue; uint refreshPeriod = signatureValidityPeriod / 3; @@ -473,7 +473,7 @@ namespace DnsServerCore.Dns.Zones types.Sort(); - DnsNSECRecord newNSecRecord = new DnsNSECRecord(nextDomainName, types); + DnsNSECRecordData newNSecRecord = new DnsNSECRecordData(nextDomainName, types); if (!_entries.TryGetValue(DnsResourceRecordType.NSEC, out IReadOnlyList existingRecords) || !existingRecords[0].RDATA.Equals(newNSecRecord)) return new DnsResourceRecord[] { new DnsResourceRecord(_name, DnsResourceRecordType.NSEC, DnsClass.IN, ttl, newNSecRecord) }; @@ -516,7 +516,7 @@ namespace DnsServerCore.Dns.Zones types.Sort(); - DnsNSEC3Record newNSec3 = new DnsNSEC3Record(DnssecNSEC3HashAlgorithm.SHA1, DnssecNSEC3Flags.None, iterations, salt, nextHashedOwnerName, types); + DnsNSEC3RecordData newNSec3 = new DnsNSEC3RecordData(DnssecNSEC3HashAlgorithm.SHA1, DnssecNSEC3Flags.None, iterations, salt, nextHashedOwnerName, types); return new DnsResourceRecord[] { new DnsResourceRecord(hashedOwnerName, DnsResourceRecordType.NSEC3, DnsClass.IN, ttl, newNSec3) }; } @@ -554,7 +554,7 @@ namespace DnsServerCore.Dns.Zones types.Sort(); - DnsNSEC3Record newNSec3Record = new DnsNSEC3Record(DnssecNSEC3HashAlgorithm.SHA1, DnssecNSEC3Flags.None, iterations, salt, Array.Empty(), types); + DnsNSEC3RecordData newNSec3Record = new DnsNSEC3RecordData(DnssecNSEC3HashAlgorithm.SHA1, DnssecNSEC3Flags.None, iterations, salt, Array.Empty(), types); return new DnsResourceRecord(newNSec3Record.ComputeHashedOwnerName(_name) + "." + zoneName, DnsResourceRecordType.NSEC3, DnsClass.IN, ttl, newNSec3Record); } diff --git a/DnsServerCore/Dns/Zones/CacheZone.cs b/DnsServerCore/Dns/Zones/CacheZone.cs index 9ab56569..d1d04e72 100644 --- a/DnsServerCore/Dns/Zones/CacheZone.cs +++ b/DnsServerCore/Dns/Zones/CacheZone.cs @@ -102,7 +102,7 @@ namespace DnsServerCore.Dns.Zones if (_entries.TryGetValue(DnsResourceRecordType.CNAME, out IReadOnlyList existingCNAMERecords)) { - if ((existingCNAMERecords.Count > 0) && (existingCNAMERecords[0].RDATA is DnsCNAMERecord) && existingCNAMERecords[0].IsStale) + if ((existingCNAMERecords.Count > 0) && (existingCNAMERecords[0].RDATA is DnsCNAMERecordData) && existingCNAMERecords[0].IsStale) { //delete CNAME entry only when it contains stale DnsCNAMERecord RDATA and not special cache records _entries.TryRemove(DnsResourceRecordType.CNAME, out _); @@ -146,7 +146,7 @@ namespace DnsServerCore.Dns.Zones IReadOnlyList rrset = ValidateRRSet(type, existingCNAMERecords, serveStale, skipSpecialCacheRecord); if (rrset.Count > 0) { - if ((type == DnsResourceRecordType.CNAME) || (rrset[0].RDATA is DnsCNAMERecord)) + if ((type == DnsResourceRecordType.CNAME) || (rrset[0].RDATA is DnsCNAMERecordData)) return rrset; } } @@ -168,7 +168,7 @@ namespace DnsServerCore.Dns.Zones IReadOnlyList rrset = ValidateRRSet(type, existingCNAMERecords, serveStale, skipSpecialCacheRecord); if (rrset.Count > 0) { - if ((type == DnsResourceRecordType.CNAME) || (rrset[0].RDATA is DnsCNAMERecord)) + if ((type == DnsResourceRecordType.CNAME) || (rrset[0].RDATA is DnsCNAMERecordData)) return rrset; } } @@ -192,7 +192,7 @@ namespace DnsServerCore.Dns.Zones if (record.IsStale) continue; - if (record.RDATA is DnsNSRecord) + if (record.RDATA is DnsNSRecordData) return true; } diff --git a/DnsServerCore/Dns/Zones/ForwarderZone.cs b/DnsServerCore/Dns/Zones/ForwarderZone.cs index 0e0d1b3e..19f2f5f6 100644 --- a/DnsServerCore/Dns/Zones/ForwarderZone.cs +++ b/DnsServerCore/Dns/Zones/ForwarderZone.cs @@ -39,7 +39,7 @@ namespace DnsServerCore.Dns.Zones _zoneTransfer = AuthZoneTransfer.Deny; _notify = AuthZoneNotify.None; - DnsResourceRecord fwdRecord = new DnsResourceRecord(name, DnsResourceRecordType.FWD, DnsClass.IN, 0, new DnsForwarderRecord(forwarderProtocol, forwarder, dnssecValidation, proxyType, proxyAddress, proxyPort, proxyUsername, proxyPassword)); + DnsResourceRecord fwdRecord = new DnsResourceRecord(name, DnsResourceRecordType.FWD, DnsClass.IN, 0, new DnsForwarderRecordData(forwarderProtocol, forwarder, dnssecValidation, proxyType, proxyAddress, proxyPort, proxyUsername, proxyPassword)); _entries[DnsResourceRecordType.FWD] = new DnsResourceRecord[] { fwdRecord }; } diff --git a/DnsServerCore/Dns/Zones/PrimaryZone.cs b/DnsServerCore/Dns/Zones/PrimaryZone.cs index 0c7cb116..22b2268d 100644 --- a/DnsServerCore/Dns/Zones/PrimaryZone.cs +++ b/DnsServerCore/Dns/Zones/PrimaryZone.cs @@ -115,13 +115,13 @@ namespace DnsServerCore.Dns.Zones _notifyList = new List(); } - DnsSOARecord soa = new DnsSOARecord(primaryNameServer, _name.Length == 0 ? "hostadmin" : "hostadmin." + _name, 1, 900, 300, 604800, 900); + DnsSOARecordData soa = new DnsSOARecordData(primaryNameServer, _name.Length == 0 ? "hostadmin" : "hostadmin." + _name, 1, 900, 300, 604800, 900); _entries[DnsResourceRecordType.SOA] = new DnsResourceRecord[] { new DnsResourceRecord(_name, DnsResourceRecordType.SOA, DnsClass.IN, soa.Minimum, soa) }; - _entries[DnsResourceRecordType.NS] = new DnsResourceRecord[] { new DnsResourceRecord(_name, DnsResourceRecordType.NS, DnsClass.IN, 3600, new DnsNSRecord(soa.PrimaryNameServer)) }; + _entries[DnsResourceRecordType.NS] = new DnsResourceRecord[] { new DnsResourceRecord(_name, DnsResourceRecordType.NS, DnsClass.IN, 3600, new DnsNSRecordData(soa.PrimaryNameServer)) }; } - internal PrimaryZone(DnsServer dnsServer, string name, DnsSOARecord soa, DnsNSRecord ns) + internal PrimaryZone(DnsServer dnsServer, string name, DnsSOARecordData soa, DnsNSRecordData ns) : base(name) { _dnsServer = dnsServer; @@ -986,7 +986,7 @@ namespace DnsServerCore.Dns.Zones List deletedRecords = new List(); List partialNSec3Records = new List(zones.Count); - int apexLabelCount = DnsRRSIGRecord.GetLabelCount(_name); + int apexLabelCount = DnsRRSIGRecordData.GetLabelCount(_name); uint ttl = GetZoneSoaMinimum(); @@ -999,7 +999,7 @@ namespace DnsServerCore.Dns.Zones { partialNSec3Records.Add(zone.GetPartialNSec3Record(_name, ttl, iterations, salt)); - int zoneLabelCount = DnsRRSIGRecord.GetLabelCount(zone.Name); + int zoneLabelCount = DnsRRSIGRecordData.GetLabelCount(zone.Name); if ((zoneLabelCount - apexLabelCount) > 1) { //empty non-terminal (ENT) may exists @@ -1040,8 +1040,8 @@ namespace DnsServerCore.Dns.Zones if (partialNSec3Record.Name.Equals(nextPartialNSec3Record.Name, StringComparison.OrdinalIgnoreCase)) { //found duplicate; merge current nsec3 into next nsec3 - DnsNSEC3Record nsec3 = partialNSec3Record.RDATA as DnsNSEC3Record; - DnsNSEC3Record nextNSec3 = nextPartialNSec3Record.RDATA as DnsNSEC3Record; + DnsNSEC3RecordData nsec3 = partialNSec3Record.RDATA as DnsNSEC3RecordData; + DnsNSEC3RecordData nextNSec3 = nextPartialNSec3Record.RDATA as DnsNSEC3RecordData; List uniqueTypes = new List(nsec3.Types.Count + nextNSec3.Types.Count); uniqueTypes.AddRange(nsec3.Types); @@ -1055,7 +1055,7 @@ namespace DnsServerCore.Dns.Zones uniqueTypes.Sort(); //update the next nsec3 record and continue - DnsNSEC3Record mergedPartialNSec3 = new DnsNSEC3Record(DnssecNSEC3HashAlgorithm.SHA1, DnssecNSEC3Flags.None, iterations, salt, Array.Empty(), uniqueTypes); + DnsNSEC3RecordData mergedPartialNSec3 = new DnsNSEC3RecordData(DnssecNSEC3HashAlgorithm.SHA1, DnssecNSEC3Flags.None, iterations, salt, Array.Empty(), uniqueTypes); partialNSec3Records[i + 1] = new DnsResourceRecord(partialNSec3Record.Name, DnsResourceRecordType.NSEC3, DnsClass.IN, ttl, mergedPartialNSec3); continue; } @@ -1068,10 +1068,10 @@ namespace DnsServerCore.Dns.Zones //add NSEC3 record with next hashed owner name { - DnsNSEC3Record partialNSec3 = partialNSec3Record.RDATA as DnsNSEC3Record; - byte[] nextHashedOwnerName = DnsNSEC3Record.GetHashedOwnerNameFrom(nextPartialNSec3Record.Name); + DnsNSEC3RecordData partialNSec3 = partialNSec3Record.RDATA as DnsNSEC3RecordData; + byte[] nextHashedOwnerName = DnsNSEC3RecordData.GetHashedOwnerNameFrom(nextPartialNSec3Record.Name); - DnsNSEC3Record updatedNSec3 = new DnsNSEC3Record(DnssecNSEC3HashAlgorithm.SHA1, DnssecNSEC3Flags.None, iterations, salt, nextHashedOwnerName, partialNSec3.Types); + DnsNSEC3RecordData updatedNSec3 = new DnsNSEC3RecordData(DnssecNSEC3HashAlgorithm.SHA1, DnssecNSEC3Flags.None, iterations, salt, nextHashedOwnerName, partialNSec3.Types); uniqueNSec3Records.Add(new DnsResourceRecord(partialNSec3Record.Name, DnsResourceRecordType.NSEC3, DnsClass.IN, ttl, updatedNSec3)); } } @@ -1101,7 +1101,7 @@ namespace DnsServerCore.Dns.Zones //insert and sign NSEC3PARAM record { - DnsNSEC3PARAMRecord newNSec3Param = new DnsNSEC3PARAMRecord(DnssecNSEC3HashAlgorithm.SHA1, DnssecNSEC3Flags.None, iterations, salt); + DnsNSEC3PARAMRecordData newNSec3Param = new DnsNSEC3PARAMRecordData(DnssecNSEC3HashAlgorithm.SHA1, DnssecNSEC3Flags.None, iterations, salt); DnsResourceRecord[] newNSec3ParamRecords = new DnsResourceRecord[] { new DnsResourceRecord(_name, DnsResourceRecordType.NSEC3PARAM, DnsClass.IN, ttl, newNSec3Param) }; if (!TrySetRecords(DnsResourceRecordType.NSEC3PARAM, newNSec3ParamRecords, out IReadOnlyList deletedNSec3ParamRecords)) @@ -1493,7 +1493,7 @@ namespace DnsServerCore.Dns.Zones foreach (DnsResourceRecord rrsigRecord in rrsigRecords) { - DnsRRSIGRecord rrsig = rrsigRecord.RDATA as DnsRRSIGRecord; + DnsRRSIGRecordData rrsig = rrsigRecord.RDATA as DnsRRSIGRecordData; foreach (DnssecPrivateKey privateKey in privateKeys) { @@ -1589,7 +1589,7 @@ namespace DnsServerCore.Dns.Zones foreach (DnsResourceRecord rrsigRecord in rrsigRecords) { - DnsRRSIGRecord rrsig = rrsigRecord.RDATA as DnsRRSIGRecord; + DnsRRSIGRecordData rrsig = rrsigRecord.RDATA as DnsRRSIGRecordData; if (rrsig.TypeCovered != DnsResourceRecordType.DNSKEY) continue; @@ -1686,7 +1686,7 @@ namespace DnsServerCore.Dns.Zones foreach (DnsResourceRecord rrsigRecord in rrsigRecords) { - DnsRRSIGRecord rrsig = rrsigRecord.RDATA as DnsRRSIGRecord; + DnsRRSIGRecordData rrsig = rrsigRecord.RDATA as DnsRRSIGRecordData; if (rrsig.TypeCovered != DnsResourceRecordType.DNSKEY) continue; @@ -1734,11 +1734,11 @@ namespace DnsServerCore.Dns.Zones if (_name.Length == 0) return privateKeys; //zone is root - IReadOnlyList dsRecords = DnsClient.ParseResponseDS(await _dnsServer.DirectQueryAsync(new DnsQuestionRecord(_name, DnsResourceRecordType.DS, DnsClass.IN))); + IReadOnlyList dsRecords = DnsClient.ParseResponseDS(await _dnsServer.DirectQueryAsync(new DnsQuestionRecord(_name, DnsResourceRecordType.DS, DnsClass.IN))); List activePrivateKeys = new List(dsRecords.Count); - foreach (DnsDSRecord dsRecord in dsRecords) + foreach (DnsDSRecordData dsRecord in dsRecords) { foreach (DnssecPrivateKey privateKey in privateKeys) { @@ -1878,7 +1878,7 @@ namespace DnsServerCore.Dns.Zones foreach (DnsResourceRecord existingRRSigRecord in existingRRSigRecords) { - DnsRRSIGRecord rrsig = existingRRSigRecord.RDATA as DnsRRSIGRecord; + DnsRRSIGRecordData rrsig = existingRRSigRecord.RDATA as DnsRRSIGRecordData; if (rrsig.TypeCovered == type) recordsToDelete.Add(existingRRSigRecord); } @@ -1896,8 +1896,8 @@ namespace DnsServerCore.Dns.Zones { UpdateNSec3RRSetFor(zone); - int apexLabelCount = DnsRRSIGRecord.GetLabelCount(_name); - int zoneLabelCount = DnsRRSIGRecord.GetLabelCount(zone.Name); + int apexLabelCount = DnsRRSIGRecordData.GetLabelCount(_name); + int zoneLabelCount = DnsRRSIGRecordData.GetLabelCount(zone.Name); if ((zoneLabelCount - apexLabelCount) > 1) { @@ -1930,7 +1930,7 @@ namespace DnsServerCore.Dns.Zones if (newNSecRecords.Count > 0) { DnsResourceRecord newNSecRecord = newNSecRecords[0]; - DnsNSECRecord newNSec = newNSecRecord.RDATA as DnsNSECRecord; + DnsNSECRecordData newNSec = newNSecRecord.RDATA as DnsNSECRecordData; if (newNSec.Types.Count == 2) { //only NSEC and RRSIG exists so remove NSEC @@ -2062,7 +2062,7 @@ namespace DnsServerCore.Dns.Zones throw new InvalidOperationException(); DnsResourceRecord nsec3ParamRecord = nsec3ParamRecords[0]; - DnsNSEC3PARAMRecord nsec3Param = nsec3ParamRecord.RDATA as DnsNSEC3PARAMRecord; + DnsNSEC3PARAMRecordData nsec3Param = nsec3ParamRecord.RDATA as DnsNSEC3PARAMRecordData; string hashedOwnerName = nsec3Param.ComputeHashedOwnerNameBase32HexString(zone.Name) + "." + _name; byte[] nextHashedOwnerName = null; @@ -2079,7 +2079,7 @@ namespace DnsServerCore.Dns.Zones IReadOnlyList nextNSec3Records = nextZone.GetRecords(DnsResourceRecordType.NSEC3); if (nextNSec3Records.Count > 0) { - nextHashedOwnerName = DnsNSEC3Record.GetHashedOwnerNameFrom(nextNSec3Records[0].Name); + nextHashedOwnerName = DnsNSEC3RecordData.GetHashedOwnerNameFrom(nextNSec3Records[0].Name); break; } @@ -2105,11 +2105,11 @@ namespace DnsServerCore.Dns.Zones } if (previousNSec3Record is not null) - nextHashedOwnerName = DnsNSEC3Record.GetHashedOwnerNameFrom(previousNSec3Record.Name); + nextHashedOwnerName = DnsNSEC3RecordData.GetHashedOwnerNameFrom(previousNSec3Record.Name); } if (nextHashedOwnerName is null) - nextHashedOwnerName = DnsNSEC3Record.GetHashedOwnerNameFrom(hashedOwnerName); //only 1 NSEC3 record in zone + nextHashedOwnerName = DnsNSEC3RecordData.GetHashedOwnerNameFrom(hashedOwnerName); //only 1 NSEC3 record in zone IReadOnlyList newNSec3Records = zone.CreateNSec3RRSet(hashedOwnerName, nextHashedOwnerName, ttl, nsec3Param.Iterations, nsec3Param.SaltValue); @@ -2132,7 +2132,7 @@ namespace DnsServerCore.Dns.Zones IReadOnlyList newPreviousNSecRecords; if (wasRemoved) - newPreviousNSecRecords = previousNsecZone.GetUpdatedNSecRRSet((currentNSecRecord.RDATA as DnsNSECRecord).NextDomainName, ttl); + newPreviousNSecRecords = previousNsecZone.GetUpdatedNSecRRSet((currentNSecRecord.RDATA as DnsNSECRecordData).NextDomainName, ttl); else newPreviousNSecRecords = previousNsecZone.GetUpdatedNSecRRSet(currentNSecRecord.Name, ttl); @@ -2162,7 +2162,7 @@ namespace DnsServerCore.Dns.Zones private void RelinkPreviousNSec3RRSet(DnsResourceRecord currentNSec3Record, uint ttl, bool wasRemoved) { - DnsNSEC3Record currentNSec3 = currentNSec3Record.RDATA as DnsNSEC3Record; + DnsNSEC3RecordData currentNSec3 = currentNSec3Record.RDATA as DnsNSEC3RecordData; //find the previous NSEC3 and update it DnsResourceRecord previousNSec3Record = null; @@ -2205,8 +2205,8 @@ namespace DnsServerCore.Dns.Zones previousNSec3Record = nextNSec3Records[0]; previousNSec3Zone = nextNSec3Zone; - string nextHashedOwnerNameString = (previousNSec3Record.RDATA as DnsNSEC3Record).NextHashedOwnerName + "." + _name; - if (DnsNSECRecord.CanonicalComparison(previousNSec3Record.Name, nextHashedOwnerNameString) >= 0) + string nextHashedOwnerNameString = (previousNSec3Record.RDATA as DnsNSEC3RecordData).NextHashedOwnerName + "." + _name; + if (DnsNSECRecordData.CanonicalComparison(previousNSec3Record.Name, nextHashedOwnerNameString) >= 0) break; //found last NSEC3 //jump to next hashed owner @@ -2222,13 +2222,13 @@ namespace DnsServerCore.Dns.Zones if (previousNSec3Record is null) throw new InvalidOperationException(); - DnsNSEC3Record previousNSec3 = previousNSec3Record.RDATA as DnsNSEC3Record; - DnsNSEC3Record newPreviousNSec3; + DnsNSEC3RecordData previousNSec3 = previousNSec3Record.RDATA as DnsNSEC3RecordData; + DnsNSEC3RecordData newPreviousNSec3; if (wasRemoved) - newPreviousNSec3 = new DnsNSEC3Record(DnssecNSEC3HashAlgorithm.SHA1, DnssecNSEC3Flags.None, previousNSec3.Iterations, previousNSec3.SaltValue, currentNSec3.NextHashedOwnerNameValue, previousNSec3.Types); + newPreviousNSec3 = new DnsNSEC3RecordData(DnssecNSEC3HashAlgorithm.SHA1, DnssecNSEC3Flags.None, previousNSec3.Iterations, previousNSec3.SaltValue, currentNSec3.NextHashedOwnerNameValue, previousNSec3.Types); else - newPreviousNSec3 = new DnsNSEC3Record(DnssecNSEC3HashAlgorithm.SHA1, DnssecNSEC3Flags.None, previousNSec3.Iterations, previousNSec3.SaltValue, DnsNSEC3Record.GetHashedOwnerNameFrom(currentNSec3Record.Name), previousNSec3.Types); + newPreviousNSec3 = new DnsNSEC3RecordData(DnssecNSEC3HashAlgorithm.SHA1, DnssecNSEC3Flags.None, previousNSec3.Iterations, previousNSec3.SaltValue, DnsNSEC3RecordData.GetHashedOwnerNameFrom(currentNSec3Record.Name), previousNSec3.Types); DnsResourceRecord[] newPreviousNSec3Records = new DnsResourceRecord[] { new DnsResourceRecord(previousNSec3Record.Name, DnsResourceRecordType.NSEC3, DnsClass.IN, ttl, newPreviousNSec3) }; @@ -2256,18 +2256,18 @@ namespace DnsServerCore.Dns.Zones private uint GetSignatureValidityPeriod() { //SOA EXPIRE + 3 days - return (_entries[DnsResourceRecordType.SOA][0].RDATA as DnsSOARecord).Expire + (3 * 24 * 60 * 60); + return (_entries[DnsResourceRecordType.SOA][0].RDATA as DnsSOARecordData).Expire + (3 * 24 * 60 * 60); } private uint GetZoneSoaMinimum() { DnsResourceRecord soaRecord = _entries[DnsResourceRecordType.SOA][0]; - return Math.Min((soaRecord.RDATA as DnsSOARecord).Minimum, soaRecord.OriginalTtlValue); + return Math.Min((soaRecord.RDATA as DnsSOARecordData).Minimum, soaRecord.OriginalTtlValue); } internal uint GetZoneSoaExpire() { - return (_entries[DnsResourceRecordType.SOA][0].RDATA as DnsSOARecord).Expire; + return (_entries[DnsResourceRecordType.SOA][0].RDATA as DnsSOARecordData).Expire; } public uint GetDnsKeyTtl() @@ -2330,7 +2330,7 @@ namespace DnsServerCore.Dns.Zones DnsResourceRecord oldSoaRecord = _entries[DnsResourceRecordType.SOA][0]; DnsResourceRecord newSoaRecord; { - DnsSOARecord soa = oldSoaRecord.RDATA as DnsSOARecord; + DnsSOARecordData soa = oldSoaRecord.RDATA as DnsSOARecordData; uint serial = soa.Serial; if (serial < uint.MaxValue) @@ -2338,7 +2338,7 @@ namespace DnsServerCore.Dns.Zones else serial = 1; - newSoaRecord = new DnsResourceRecord(oldSoaRecord.Name, oldSoaRecord.Type, oldSoaRecord.Class, oldSoaRecord.TtlValue, new DnsSOARecord(soa.PrimaryNameServer, soa.ResponsiblePerson, serial, soa.Refresh, soa.Retry, soa.Expire, soa.Minimum)) { Tag = oldSoaRecord.Tag }; + newSoaRecord = new DnsResourceRecord(oldSoaRecord.Name, oldSoaRecord.Type, oldSoaRecord.Class, oldSoaRecord.TtlValue, new DnsSOARecordData(soa.PrimaryNameServer, soa.ResponsiblePerson, serial, soa.Refresh, soa.Retry, soa.Expire, soa.Minimum)) { Tag = oldSoaRecord.Tag }; oldSoaRecord.Tag = null; //remove RR info from old SOA to allow creating new RR info for it during SetDeletedOn() } @@ -2448,7 +2448,7 @@ namespace DnsServerCore.Dns.Zones throw new InvalidOperationException("Invalid SOA record."); DnsResourceRecord soaRecord = records[0]; - DnsSOARecord soa = soaRecord.RDATA as DnsSOARecord; + DnsSOARecordData soa = soaRecord.RDATA as DnsSOARecordData; if (soaRecord.OriginalTtlValue > soa.Expire) throw new DnsServerException("Failed to set records: TTL cannot be greater than SOA EXPIRE."); diff --git a/DnsServerCore/Dns/Zones/SecondaryZone.cs b/DnsServerCore/Dns/Zones/SecondaryZone.cs index 826f8eed..0d9172a2 100644 --- a/DnsServerCore/Dns/Zones/SecondaryZone.cs +++ b/DnsServerCore/Dns/Zones/SecondaryZone.cs @@ -151,9 +151,9 @@ namespace DnsServerCore.Dns.Zones if ((soaResponse.Answer.Count == 0) || (soaResponse.Answer[0].Type != DnsResourceRecordType.SOA)) throw new DnsServerException("DNS Server failed to find SOA record for: " + name); - DnsSOARecord receivedSoa = soaResponse.Answer[0].RDATA as DnsSOARecord; + DnsSOARecordData receivedSoa = soaResponse.Answer[0].RDATA as DnsSOARecordData; - DnsSOARecord soa = new DnsSOARecord(receivedSoa.PrimaryNameServer, receivedSoa.ResponsiblePerson, 0u, receivedSoa.Refresh, receivedSoa.Retry, receivedSoa.Expire, receivedSoa.Minimum); + DnsSOARecordData soa = new DnsSOARecordData(receivedSoa.PrimaryNameServer, receivedSoa.ResponsiblePerson, 0u, receivedSoa.Refresh, receivedSoa.Retry, receivedSoa.Expire, receivedSoa.Minimum); DnsResourceRecord[] soaRR = new DnsResourceRecord[] { new DnsResourceRecord(secondaryZone._name, DnsResourceRecordType.SOA, DnsClass.IN, soa.Refresh, soa) }; if (!string.IsNullOrEmpty(primaryNameServerAddresses)) @@ -320,7 +320,7 @@ namespace DnsServerCore.Dns.Zones IReadOnlyList primaryNameServers = await GetPrimaryNameServerAddressesAsync(_dnsServer); DnsResourceRecord currentSoaRecord = _entries[DnsResourceRecordType.SOA][0]; - DnsSOARecord currentSoa = currentSoaRecord.RDATA as DnsSOARecord; + DnsSOARecordData currentSoa = currentSoaRecord.RDATA as DnsSOARecordData; if (primaryNameServers.Count == 0) { @@ -351,7 +351,7 @@ namespace DnsServerCore.Dns.Zones if (await RefreshZoneAsync(primaryNameServers, recordInfo.ZoneTransferProtocol, key)) { //zone refreshed; set timer for refresh - DnsSOARecord latestSoa = _entries[DnsResourceRecordType.SOA][0].RDATA as DnsSOARecord; + DnsSOARecordData latestSoa = _entries[DnsResourceRecordType.SOA][0].RDATA as DnsSOARecordData; ResetRefreshTimer(latestSoa.Refresh * 1000); _expiry = DateTime.UtcNow.AddSeconds(latestSoa.Expire); @@ -362,7 +362,7 @@ namespace DnsServerCore.Dns.Zones } //no response from any of the name servers; set timer for retry - DnsSOARecord soa = _entries[DnsResourceRecordType.SOA][0].RDATA as DnsSOARecord; + DnsSOARecordData soa = _entries[DnsResourceRecordType.SOA][0].RDATA as DnsSOARecordData; ResetRefreshTimer(soa.Retry * 1000); } catch (Exception ex) @@ -372,7 +372,7 @@ namespace DnsServerCore.Dns.Zones log.Write(ex); //set timer for retry - DnsSOARecord soa = _entries[DnsResourceRecordType.SOA][0].RDATA as DnsSOARecord; + DnsSOARecordData soa = _entries[DnsResourceRecordType.SOA][0].RDATA as DnsSOARecordData; ResetRefreshTimer(soa.Retry * 1000); } finally @@ -401,7 +401,7 @@ namespace DnsServerCore.Dns.Zones } DnsResourceRecord currentSoaRecord = _entries[DnsResourceRecordType.SOA][0]; - DnsSOARecord currentSoa = currentSoaRecord.RDATA as DnsSOARecord; + DnsSOARecordData currentSoa = currentSoaRecord.RDATA as DnsSOARecordData; if (!_resync) { @@ -440,7 +440,7 @@ namespace DnsServerCore.Dns.Zones } DnsResourceRecord receivedSoaRecord = soaResponse.Answer[0]; - DnsSOARecord receivedSoa = receivedSoaRecord.RDATA as DnsSOARecord; + DnsSOARecordData receivedSoa = receivedSoaRecord.RDATA as DnsSOARecordData; //compare using sequence space arithmetic if (!currentSoa.IsZoneUpdateAvailable(receivedSoa)) @@ -544,7 +544,7 @@ namespace DnsServerCore.Dns.Zones return false; } - if (!_name.Equals(xfrResponse.Answer[0].Name, StringComparison.OrdinalIgnoreCase) || (xfrResponse.Answer[0].Type != DnsResourceRecordType.SOA) || (xfrResponse.Answer[0].RDATA is not DnsSOARecord xfrSoa)) + if (!_name.Equals(xfrResponse.Answer[0].Name, StringComparison.OrdinalIgnoreCase) || (xfrResponse.Answer[0].Type != DnsResourceRecordType.SOA) || (xfrResponse.Answer[0].RDATA is not DnsSOARecordData xfrSoa)) { LogManager log = _dnsServer.LogManager; if (log != null) diff --git a/DnsServerCore/Dns/Zones/StubZone.cs b/DnsServerCore/Dns/Zones/StubZone.cs index cfa7778f..159e91b0 100644 --- a/DnsServerCore/Dns/Zones/StubZone.cs +++ b/DnsServerCore/Dns/Zones/StubZone.cs @@ -106,9 +106,9 @@ namespace DnsServerCore.Dns.Zones if ((soaResponse.Answer.Count == 0) || (soaResponse.Answer[0].Type != DnsResourceRecordType.SOA)) throw new DnsServerException("DNS Server failed to find SOA record for: " + name); - DnsSOARecord receivedSoa = soaResponse.Answer[0].RDATA as DnsSOARecord; + DnsSOARecordData receivedSoa = soaResponse.Answer[0].RDATA as DnsSOARecordData; - DnsSOARecord soa = new DnsSOARecord(receivedSoa.PrimaryNameServer, receivedSoa.ResponsiblePerson, 0u, receivedSoa.Refresh, receivedSoa.Retry, receivedSoa.Expire, receivedSoa.Minimum); + DnsSOARecordData soa = new DnsSOARecordData(receivedSoa.PrimaryNameServer, receivedSoa.ResponsiblePerson, 0u, receivedSoa.Refresh, receivedSoa.Retry, receivedSoa.Expire, receivedSoa.Minimum); DnsResourceRecord[] soaRR = new DnsResourceRecord[] { new DnsResourceRecord(stubZone._name, DnsResourceRecordType.SOA, DnsClass.IN, soa.Refresh, soa) }; if (!string.IsNullOrEmpty(primaryNameServerAddresses)) @@ -171,7 +171,7 @@ namespace DnsServerCore.Dns.Zones log.Write("DNS Server could not find name server IP addresses for stub zone: " + (_name == "" ? "" : _name)); //set timer for retry - DnsSOARecord soa1 = _entries[DnsResourceRecordType.SOA][0].RDATA as DnsSOARecord; + DnsSOARecordData soa1 = _entries[DnsResourceRecordType.SOA][0].RDATA as DnsSOARecordData; ResetRefreshTimer(soa1.Retry * 1000); return; } @@ -180,7 +180,7 @@ namespace DnsServerCore.Dns.Zones if (await RefreshZoneAsync(nameServers)) { //zone refreshed; set timer for refresh - DnsSOARecord latestSoa = _entries[DnsResourceRecordType.SOA][0].RDATA as DnsSOARecord; + DnsSOARecordData latestSoa = _entries[DnsResourceRecordType.SOA][0].RDATA as DnsSOARecordData; ResetRefreshTimer(latestSoa.Refresh * 1000); _expiry = DateTime.UtcNow.AddSeconds(latestSoa.Expire); @@ -191,7 +191,7 @@ namespace DnsServerCore.Dns.Zones } //no response from any of the name servers; set timer for retry - DnsSOARecord soa = _entries[DnsResourceRecordType.SOA][0].RDATA as DnsSOARecord; + DnsSOARecordData soa = _entries[DnsResourceRecordType.SOA][0].RDATA as DnsSOARecordData; ResetRefreshTimer(soa.Retry * 1000); } catch (Exception ex) @@ -201,7 +201,7 @@ namespace DnsServerCore.Dns.Zones log.Write(ex); //set timer for retry - DnsSOARecord soa = _entries[DnsResourceRecordType.SOA][0].RDATA as DnsSOARecord; + DnsSOARecordData soa = _entries[DnsResourceRecordType.SOA][0].RDATA as DnsSOARecordData; ResetRefreshTimer(soa.Retry * 1000); } finally @@ -261,8 +261,8 @@ namespace DnsServerCore.Dns.Zones DnsResourceRecord currentSoaRecord = _entries[DnsResourceRecordType.SOA][0]; DnsResourceRecord receivedSoaRecord = soaResponse.Answer[0]; - DnsSOARecord currentSoa = currentSoaRecord.RDATA as DnsSOARecord; - DnsSOARecord receivedSoa = receivedSoaRecord.RDATA as DnsSOARecord; + DnsSOARecordData currentSoa = currentSoaRecord.RDATA as DnsSOARecordData; + DnsSOARecordData receivedSoa = receivedSoaRecord.RDATA as DnsSOARecordData; //compare using sequence space arithmetic if (!_resync && !currentSoa.IsZoneUpdateAvailable(receivedSoa)) diff --git a/DnsServerCore/DnsWebService.cs b/DnsServerCore/DnsWebService.cs index c2784f99..0281b8e3 100644 --- a/DnsServerCore/DnsWebService.cs +++ b/DnsServerCore/DnsWebService.cs @@ -1496,10 +1496,10 @@ namespace DnsServerCore jsonWriter.WritePropertyName("customBlockingAddresses"); jsonWriter.WriteStartArray(); - foreach (DnsARecord record in _dnsServer.CustomBlockingARecords) + foreach (DnsARecordData record in _dnsServer.CustomBlockingARecords) jsonWriter.WriteValue(record.Address.ToString()); - foreach (DnsAAAARecord record in _dnsServer.CustomBlockingAAAARecords) + foreach (DnsAAAARecordData record in _dnsServer.CustomBlockingAAAARecords) jsonWriter.WriteValue(record.Address.ToString()); jsonWriter.WriteEndArray(); @@ -2029,8 +2029,8 @@ namespace DnsServerCore { string[] strAddresses = strCustomBlockingAddresses.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); - List dnsARecords = new List(); - List dnsAAAARecords = new List(); + List dnsARecords = new List(); + List dnsAAAARecords = new List(); foreach (string strAddress in strAddresses) { @@ -2039,11 +2039,11 @@ namespace DnsServerCore switch (customAddress.AddressFamily) { case AddressFamily.InterNetwork: - dnsARecords.Add(new DnsARecord(customAddress)); + dnsARecords.Add(new DnsARecordData(customAddress)); break; case AddressFamily.InterNetworkV6: - dnsAAAARecords.Add(new DnsAAAARecord(customAddress)); + dnsAAAARecords.Add(new DnsAAAARecordData(customAddress)); break; } } @@ -3643,8 +3643,8 @@ namespace DnsServerCore int count = bR.ReadByte(); if (count > 0) { - List dnsARecords = new List(); - List dnsAAAARecords = new List(); + List dnsARecords = new List(); + List dnsAAAARecords = new List(); for (int i = 0; i < count; i++) { @@ -3653,11 +3653,11 @@ namespace DnsServerCore switch (customAddress.AddressFamily) { case AddressFamily.InterNetwork: - dnsARecords.Add(new DnsARecord(customAddress)); + dnsARecords.Add(new DnsARecordData(customAddress)); break; case AddressFamily.InterNetworkV6: - dnsAAAARecords.Add(new DnsAAAARecord(customAddress)); + dnsAAAARecords.Add(new DnsAAAARecordData(customAddress)); break; } } @@ -4141,10 +4141,10 @@ namespace DnsServerCore { bW.Write(Convert.ToByte(_dnsServer.CustomBlockingARecords.Count + _dnsServer.CustomBlockingAAAARecords.Count)); - foreach (DnsARecord record in _dnsServer.CustomBlockingARecords) + foreach (DnsARecordData record in _dnsServer.CustomBlockingARecords) record.Address.WriteTo(bW); - foreach (DnsAAAARecord record in _dnsServer.CustomBlockingAAAARecords) + foreach (DnsAAAARecordData record in _dnsServer.CustomBlockingAAAARecords) record.Address.WriteTo(bW); } diff --git a/DnsServerCore/WebServiceZonesApi.cs b/DnsServerCore/WebServiceZonesApi.cs index a66336ac..c540826d 100644 --- a/DnsServerCore/WebServiceZonesApi.cs +++ b/DnsServerCore/WebServiceZonesApi.cs @@ -403,7 +403,7 @@ namespace DnsServerCore if (zoneInfo.DnssecStatus == AuthZoneDnssecStatus.SignedWithNSEC3) { IReadOnlyList nsec3ParamRecords = zoneInfo.GetRecords(DnsResourceRecordType.NSEC3PARAM); - DnsNSEC3PARAMRecord nsec3Param = nsec3ParamRecords[0].RDATA as DnsNSEC3PARAMRecord; + DnsNSEC3PARAMRecordData nsec3Param = nsec3ParamRecords[0].RDATA as DnsNSEC3PARAMRecordData; jsonWriter.WritePropertyName("nsec3Iterations"); jsonWriter.WriteValue(nsec3Param.Iterations); @@ -1084,16 +1084,16 @@ namespace DnsServerCore if (reverseZoneInfo.Type != AuthZoneType.Primary) throw new DnsServerException("Reverse zone '" + reverseZoneInfo.Name + "' is not a primary zone."); - _dnsWebService.DnsServer.AuthZoneManager.SetRecords(reverseZoneInfo.Name, ptrDomain, DnsResourceRecordType.PTR, ttl, new DnsPTRRecord[] { new DnsPTRRecord(domain) }); + _dnsWebService.DnsServer.AuthZoneManager.SetRecords(reverseZoneInfo.Name, ptrDomain, DnsResourceRecordType.PTR, ttl, new DnsPTRRecordData[] { new DnsPTRRecordData(domain) }); _dnsWebService.DnsServer.AuthZoneManager.SaveZoneFile(reverseZoneInfo.Name); } DnsResourceRecord newRecord; if (type == DnsResourceRecordType.A) - newRecord = new DnsResourceRecord(domain, type, DnsClass.IN, ttl, new DnsARecord(ipAddress)); + newRecord = new DnsResourceRecord(domain, type, DnsClass.IN, ttl, new DnsARecordData(ipAddress)); else - newRecord = new DnsResourceRecord(domain, type, DnsClass.IN, ttl, new DnsAAAARecord(ipAddress)); + newRecord = new DnsResourceRecord(domain, type, DnsClass.IN, ttl, new DnsAAAARecordData(ipAddress)); if (!string.IsNullOrEmpty(comments)) newRecord.SetComments(comments); @@ -1120,7 +1120,7 @@ namespace DnsServerCore if (string.IsNullOrEmpty(glueAddresses)) glueAddresses = null; - DnsResourceRecord newRecord = new DnsResourceRecord(domain, type, DnsClass.IN, ttl, new DnsNSRecord(nameServer.TrimEnd('.'))); + DnsResourceRecord newRecord = new DnsResourceRecord(domain, type, DnsClass.IN, ttl, new DnsNSRecordData(nameServer.TrimEnd('.'))); if (glueAddresses != null) newRecord.SetGlueRecords(glueAddresses); @@ -1153,7 +1153,7 @@ namespace DnsServerCore cname = value; } - DnsResourceRecord newRecord = new DnsResourceRecord(domain, type, DnsClass.IN, ttl, new DnsCNAMERecord(cname.TrimEnd('.'))); + DnsResourceRecord newRecord = new DnsResourceRecord(domain, type, DnsClass.IN, ttl, new DnsCNAMERecordData(cname.TrimEnd('.'))); if (!string.IsNullOrEmpty(comments)) newRecord.SetComments(comments); @@ -1173,7 +1173,7 @@ namespace DnsServerCore ptrName = value; } - DnsResourceRecord newRecord = new DnsResourceRecord(domain, type, DnsClass.IN, ttl, new DnsPTRRecord(ptrName.TrimEnd('.'))); + DnsResourceRecord newRecord = new DnsResourceRecord(domain, type, DnsClass.IN, ttl, new DnsPTRRecordData(ptrName.TrimEnd('.'))); if (!string.IsNullOrEmpty(comments)) newRecord.SetComments(comments); @@ -1200,7 +1200,7 @@ namespace DnsServerCore if (string.IsNullOrEmpty(preference)) throw new DnsWebServiceException("Parameter 'preference' missing."); - DnsResourceRecord newRecord = new DnsResourceRecord(domain, type, DnsClass.IN, ttl, new DnsMXRecord(ushort.Parse(preference), exchange.TrimEnd('.'))); + DnsResourceRecord newRecord = new DnsResourceRecord(domain, type, DnsClass.IN, ttl, new DnsMXRecordData(ushort.Parse(preference), exchange.TrimEnd('.'))); if (!string.IsNullOrEmpty(comments)) newRecord.SetComments(comments); @@ -1223,7 +1223,7 @@ namespace DnsServerCore text = value; } - DnsResourceRecord newRecord = new DnsResourceRecord(domain, type, DnsClass.IN, ttl, new DnsTXTRecord(text)); + DnsResourceRecord newRecord = new DnsResourceRecord(domain, type, DnsClass.IN, ttl, new DnsTXTRecordData(text)); if (!string.IsNullOrEmpty(comments)) newRecord.SetComments(comments); @@ -1258,7 +1258,7 @@ namespace DnsServerCore target = value; } - DnsResourceRecord newRecord = new DnsResourceRecord(domain, type, DnsClass.IN, ttl, new DnsSRVRecord(ushort.Parse(priority), ushort.Parse(weight), ushort.Parse(port), target.TrimEnd('.'))); + DnsResourceRecord newRecord = new DnsResourceRecord(domain, type, DnsClass.IN, ttl, new DnsSRVRecordData(ushort.Parse(priority), ushort.Parse(weight), ushort.Parse(port), target.TrimEnd('.'))); if (!string.IsNullOrEmpty(comments)) newRecord.SetComments(comments); @@ -1288,7 +1288,7 @@ namespace DnsServerCore dname = value; } - DnsResourceRecord newRecord = new DnsResourceRecord(domain, type, DnsClass.IN, ttl, new DnsDNAMERecord(dname.TrimEnd('.'))); + DnsResourceRecord newRecord = new DnsResourceRecord(domain, type, DnsClass.IN, ttl, new DnsDNAMERecordData(dname.TrimEnd('.'))); if (!string.IsNullOrEmpty(comments)) newRecord.SetComments(comments); @@ -1320,7 +1320,7 @@ namespace DnsServerCore digest = value; } - DnsResourceRecord newRecord = new DnsResourceRecord(domain, type, DnsClass.IN, ttl, new DnsDSRecord(ushort.Parse(strKeyTag), Enum.Parse(strAlgorithm), Enum.Parse(strDigestType), Convert.FromHexString(digest))); + DnsResourceRecord newRecord = new DnsResourceRecord(domain, type, DnsClass.IN, ttl, new DnsDSRecordData(ushort.Parse(strKeyTag), Enum.Parse(strAlgorithm), Enum.Parse(strDigestType), Convert.FromHexString(digest))); if (!string.IsNullOrEmpty(comments)) newRecord.SetComments(comments); @@ -1345,7 +1345,7 @@ namespace DnsServerCore if (string.IsNullOrEmpty(value)) throw new DnsWebServiceException("Parameter 'value' missing."); - DnsResourceRecord newRecord = new DnsResourceRecord(domain, type, DnsClass.IN, ttl, new DnsCAARecord(byte.Parse(flags), tag, value)); + DnsResourceRecord newRecord = new DnsResourceRecord(domain, type, DnsClass.IN, ttl, new DnsCAARecordData(byte.Parse(flags), tag, value)); if (!string.IsNullOrEmpty(comments)) newRecord.SetComments(comments); @@ -1368,7 +1368,7 @@ namespace DnsServerCore aname = value; } - DnsResourceRecord newRecord = new DnsResourceRecord(domain, type, DnsClass.IN, ttl, new DnsANAMERecord(aname.TrimEnd('.'))); + DnsResourceRecord newRecord = new DnsResourceRecord(domain, type, DnsClass.IN, ttl, new DnsANAMERecordData(aname.TrimEnd('.'))); if (!string.IsNullOrEmpty(comments)) newRecord.SetComments(comments); @@ -1429,7 +1429,7 @@ namespace DnsServerCore } } - DnsResourceRecord newRecord = new DnsResourceRecord(domain, type, DnsClass.IN, 0, new DnsForwarderRecord(protocol, forwarder, dnssecValidation, proxyType, proxyAddress, proxyPort, proxyUsername, proxyPassword)); + DnsResourceRecord newRecord = new DnsResourceRecord(domain, type, DnsClass.IN, 0, new DnsForwarderRecordData(protocol, forwarder, dnssecValidation, proxyType, proxyAddress, proxyPort, proxyUsername, proxyPassword)); if (!string.IsNullOrEmpty(comments)) newRecord.SetComments(comments); @@ -1467,7 +1467,7 @@ namespace DnsServerCore throw new DnsWebServiceException("Record already exists. Use overwrite option if you wish to overwrite existing records."); } - DnsResourceRecord newRecord = new DnsResourceRecord(domain, type, DnsClass.IN, ttl, new DnsApplicationRecord(appName, classPath, recordData)); + DnsResourceRecord newRecord = new DnsResourceRecord(domain, type, DnsClass.IN, ttl, new DnsApplicationRecordData(appName, classPath, recordData)); if (!string.IsNullOrEmpty(comments)) newRecord.SetComments(comments); @@ -1610,7 +1610,7 @@ namespace DnsServerCore { case DnsResourceRecordType.A: { - if (record.RDATA is DnsARecord rdata) + if (record.RDATA is DnsARecordData rdata) { jsonWriter.WritePropertyName("ipAddress"); jsonWriter.WriteValue(rdata.IPAddress); @@ -1628,7 +1628,7 @@ namespace DnsServerCore case DnsResourceRecordType.NS: { - if (record.RDATA is DnsNSRecord rdata) + if (record.RDATA is DnsNSRecordData rdata) { jsonWriter.WritePropertyName("nameServer"); jsonWriter.WriteValue(rdata.NameServer.Length == 0 ? "." : rdata.NameServer); @@ -1646,7 +1646,7 @@ namespace DnsServerCore case DnsResourceRecordType.CNAME: { - if (record.RDATA is DnsCNAMERecord rdata) + if (record.RDATA is DnsCNAMERecordData rdata) { jsonWriter.WritePropertyName("cname"); jsonWriter.WriteValue(rdata.Domain.Length == 0 ? "." : rdata.Domain); @@ -1664,7 +1664,7 @@ namespace DnsServerCore case DnsResourceRecordType.SOA: { - if (record.RDATA is DnsSOARecord rdata) + if (record.RDATA is DnsSOARecordData rdata) { jsonWriter.WritePropertyName("primaryNameServer"); jsonWriter.WriteValue(rdata.PrimaryNameServer); @@ -1732,7 +1732,7 @@ namespace DnsServerCore case DnsResourceRecordType.PTR: { - if (record.RDATA is DnsPTRRecord rdata) + if (record.RDATA is DnsPTRRecordData rdata) { jsonWriter.WritePropertyName("ptrName"); jsonWriter.WriteValue(rdata.Domain.Length == 0 ? "." : rdata.Domain); @@ -1750,7 +1750,7 @@ namespace DnsServerCore case DnsResourceRecordType.MX: { - if (record.RDATA is DnsMXRecord rdata) + if (record.RDATA is DnsMXRecordData rdata) { jsonWriter.WritePropertyName("preference"); jsonWriter.WriteValue(rdata.Preference); @@ -1772,7 +1772,7 @@ namespace DnsServerCore case DnsResourceRecordType.TXT: { - if (record.RDATA is DnsTXTRecord rdata) + if (record.RDATA is DnsTXTRecordData rdata) { jsonWriter.WritePropertyName("text"); jsonWriter.WriteValue(rdata.Text); @@ -1790,7 +1790,7 @@ namespace DnsServerCore case DnsResourceRecordType.AAAA: { - if (record.RDATA is DnsAAAARecord rdata) + if (record.RDATA is DnsAAAARecordData rdata) { jsonWriter.WritePropertyName("ipAddress"); jsonWriter.WriteValue(rdata.IPAddress); @@ -1808,7 +1808,7 @@ namespace DnsServerCore case DnsResourceRecordType.SRV: { - if (record.RDATA is DnsSRVRecord rdata) + if (record.RDATA is DnsSRVRecordData rdata) { jsonWriter.WritePropertyName("priority"); jsonWriter.WriteValue(rdata.Priority); @@ -1835,7 +1835,7 @@ namespace DnsServerCore case DnsResourceRecordType.DNAME: { - if (record.RDATA is DnsDNAMERecord rdata) + if (record.RDATA is DnsDNAMERecordData rdata) { jsonWriter.WritePropertyName("dname"); jsonWriter.WriteValue(rdata.Domain.Length == 0 ? "." : rdata.Domain); @@ -1853,7 +1853,7 @@ namespace DnsServerCore case DnsResourceRecordType.DS: { - if (record.RDATA is DnsDSRecord rdata) + if (record.RDATA is DnsDSRecordData rdata) { jsonWriter.WritePropertyName("keyTag"); jsonWriter.WriteValue(rdata.KeyTag); @@ -1880,7 +1880,7 @@ namespace DnsServerCore case DnsResourceRecordType.RRSIG: { - if (record.RDATA is DnsRRSIGRecord rdata) + if (record.RDATA is DnsRRSIGRecordData rdata) { jsonWriter.WritePropertyName("typeCovered"); jsonWriter.WriteValue(rdata.TypeCovered.ToString()); @@ -1922,7 +1922,7 @@ namespace DnsServerCore case DnsResourceRecordType.NSEC: { - if (record.RDATA is DnsNSECRecord rdata) + if (record.RDATA is DnsNSECRecordData rdata) { jsonWriter.WritePropertyName("nextDomainName"); jsonWriter.WriteValue(rdata.NextDomainName); @@ -1948,7 +1948,7 @@ namespace DnsServerCore case DnsResourceRecordType.DNSKEY: { - if (record.RDATA is DnsDNSKEYRecord rdata) + if (record.RDATA is DnsDNSKEYRecordData rdata) { jsonWriter.WritePropertyName("flags"); jsonWriter.WriteValue(rdata.Flags.ToString()); @@ -2038,7 +2038,7 @@ namespace DnsServerCore case DnsResourceRecordType.NSEC3: { - if (record.RDATA is DnsNSEC3Record rdata) + if (record.RDATA is DnsNSEC3RecordData rdata) { jsonWriter.WritePropertyName("hashAlgorithm"); jsonWriter.WriteValue(rdata.HashAlgorithm.ToString()); @@ -2076,7 +2076,7 @@ namespace DnsServerCore case DnsResourceRecordType.NSEC3PARAM: { - if (record.RDATA is DnsNSEC3PARAMRecord rdata) + if (record.RDATA is DnsNSEC3PARAMRecordData rdata) { jsonWriter.WritePropertyName("hashAlgorithm"); jsonWriter.WriteValue(rdata.HashAlgorithm.ToString()); @@ -2103,7 +2103,7 @@ namespace DnsServerCore case DnsResourceRecordType.CAA: { - if (record.RDATA is DnsCAARecord rdata) + if (record.RDATA is DnsCAARecordData rdata) { jsonWriter.WritePropertyName("flags"); jsonWriter.WriteValue(rdata.Flags); @@ -2127,7 +2127,7 @@ namespace DnsServerCore case DnsResourceRecordType.ANAME: { - if (record.RDATA is DnsANAMERecord rdata) + if (record.RDATA is DnsANAMERecordData rdata) { jsonWriter.WritePropertyName("aname"); jsonWriter.WriteValue(rdata.Domain.Length == 0 ? "." : rdata.Domain); @@ -2145,7 +2145,7 @@ namespace DnsServerCore case DnsResourceRecordType.FWD: { - if (record.RDATA is DnsForwarderRecord rdata) + if (record.RDATA is DnsForwarderRecordData rdata) { jsonWriter.WritePropertyName("protocol"); jsonWriter.WriteValue(rdata.Protocol.ToString()); @@ -2179,7 +2179,7 @@ namespace DnsServerCore case DnsResourceRecordType.APP: { - if (record.RDATA is DnsApplicationRecord rdata) + if (record.RDATA is DnsApplicationRecordData rdata) { jsonWriter.WritePropertyName("appName"); jsonWriter.WriteValue(rdata.AppName); @@ -2195,7 +2195,7 @@ namespace DnsServerCore default: { - if (record.RDATA is DnsUnknownRecord) + if (record.RDATA is DnsUnknownRecordData) { jsonWriter.WritePropertyName("value"); @@ -2315,9 +2315,9 @@ namespace DnsServerCore IPAddress ipAddress = IPAddress.Parse(strIPAddress); if (type == DnsResourceRecordType.A) - _dnsWebService.DnsServer.AuthZoneManager.DeleteRecord(zoneName, domain, type, new DnsARecord(ipAddress)); + _dnsWebService.DnsServer.AuthZoneManager.DeleteRecord(zoneName, domain, type, new DnsARecordData(ipAddress)); else - _dnsWebService.DnsServer.AuthZoneManager.DeleteRecord(zoneName, domain, type, new DnsAAAARecord(ipAddress)); + _dnsWebService.DnsServer.AuthZoneManager.DeleteRecord(zoneName, domain, type, new DnsAAAARecordData(ipAddress)); string ptrDomain = Zone.GetReverseZone(ipAddress, type == DnsResourceRecordType.A ? 32 : 128); AuthZoneInfo reverseZoneInfo = _dnsWebService.DnsServer.AuthZoneManager.FindAuthZoneInfo(ptrDomain); @@ -2328,7 +2328,7 @@ namespace DnsServerCore { foreach (DnsResourceRecord ptrRecord in ptrRecords) { - if ((ptrRecord.RDATA as DnsPTRRecord).Domain.Equals(domain, StringComparison.OrdinalIgnoreCase)) + if ((ptrRecord.RDATA as DnsPTRRecordData).Domain.Equals(domain, StringComparison.OrdinalIgnoreCase)) { //delete PTR record and save reverse zone _dnsWebService.DnsServer.AuthZoneManager.DeleteRecord(reverseZoneInfo.Name, ptrDomain, DnsResourceRecordType.PTR, ptrRecord.RDATA); @@ -2352,7 +2352,7 @@ namespace DnsServerCore nameServer = value; } - _dnsWebService.DnsServer.AuthZoneManager.DeleteRecord(zoneName, domain, type, new DnsNSRecord(nameServer)); + _dnsWebService.DnsServer.AuthZoneManager.DeleteRecord(zoneName, domain, type, new DnsNSRecordData(nameServer)); } break; @@ -2371,7 +2371,7 @@ namespace DnsServerCore ptrName = value; } - _dnsWebService.DnsServer.AuthZoneManager.DeleteRecord(zoneName, domain, type, new DnsPTRRecord(ptrName)); + _dnsWebService.DnsServer.AuthZoneManager.DeleteRecord(zoneName, domain, type, new DnsPTRRecordData(ptrName)); } break; @@ -2386,7 +2386,7 @@ namespace DnsServerCore exchange = value; } - _dnsWebService.DnsServer.AuthZoneManager.DeleteRecord(zoneName, domain, type, new DnsMXRecord(0, exchange)); + _dnsWebService.DnsServer.AuthZoneManager.DeleteRecord(zoneName, domain, type, new DnsMXRecordData(0, exchange)); } break; @@ -2401,7 +2401,7 @@ namespace DnsServerCore text = value; } - _dnsWebService.DnsServer.AuthZoneManager.DeleteRecord(zoneName, domain, type, new DnsTXTRecord(text)); + _dnsWebService.DnsServer.AuthZoneManager.DeleteRecord(zoneName, domain, type, new DnsTXTRecordData(text)); } break; @@ -2420,7 +2420,7 @@ namespace DnsServerCore target = value; } - _dnsWebService.DnsServer.AuthZoneManager.DeleteRecord(zoneName, domain, type, new DnsSRVRecord(0, 0, ushort.Parse(port), target)); + _dnsWebService.DnsServer.AuthZoneManager.DeleteRecord(zoneName, domain, type, new DnsSRVRecordData(0, 0, ushort.Parse(port), target)); } break; @@ -2451,7 +2451,7 @@ namespace DnsServerCore digest = value; } - _dnsWebService.DnsServer.AuthZoneManager.DeleteRecord(zoneName, domain, type, new DnsDSRecord(ushort.Parse(strKeyTag), Enum.Parse(strAlgorithm), Enum.Parse(strDigestType), Convert.FromHexString(digest))); + _dnsWebService.DnsServer.AuthZoneManager.DeleteRecord(zoneName, domain, type, new DnsDSRecordData(ushort.Parse(strKeyTag), Enum.Parse(strAlgorithm), Enum.Parse(strDigestType), Convert.FromHexString(digest))); } break; @@ -2468,7 +2468,7 @@ namespace DnsServerCore if (string.IsNullOrEmpty(value)) throw new DnsWebServiceException("Parameter 'value' missing."); - _dnsWebService.DnsServer.AuthZoneManager.DeleteRecord(zoneName, domain, type, new DnsCAARecord(byte.Parse(flags), tag, value)); + _dnsWebService.DnsServer.AuthZoneManager.DeleteRecord(zoneName, domain, type, new DnsCAARecordData(byte.Parse(flags), tag, value)); } break; @@ -2483,7 +2483,7 @@ namespace DnsServerCore aname = value; } - _dnsWebService.DnsServer.AuthZoneManager.DeleteRecord(zoneName, domain, type, new DnsANAMERecord(aname)); + _dnsWebService.DnsServer.AuthZoneManager.DeleteRecord(zoneName, domain, type, new DnsANAMERecordData(aname)); } break; @@ -2502,7 +2502,7 @@ namespace DnsServerCore forwarder = value; } - _dnsWebService.DnsServer.AuthZoneManager.DeleteRecord(zoneName, domain, type, new DnsForwarderRecord(Enum.Parse(strProtocol, true), forwarder)); + _dnsWebService.DnsServer.AuthZoneManager.DeleteRecord(zoneName, domain, type, new DnsForwarderRecordData(Enum.Parse(strProtocol, true), forwarder)); } break; @@ -2638,7 +2638,7 @@ namespace DnsServerCore } //add new PTR record and save reverse zone - _dnsWebService.DnsServer.AuthZoneManager.SetRecords(reverseZoneInfo.Name, ptrDomain, DnsResourceRecordType.PTR, ttl, new DnsPTRRecord[] { new DnsPTRRecord(domain) }); + _dnsWebService.DnsServer.AuthZoneManager.SetRecords(reverseZoneInfo.Name, ptrDomain, DnsResourceRecordType.PTR, ttl, new DnsPTRRecordData[] { new DnsPTRRecordData(domain) }); _dnsWebService.DnsServer.AuthZoneManager.SaveZoneFile(reverseZoneInfo.Name); } @@ -2647,13 +2647,13 @@ namespace DnsServerCore if (type == DnsResourceRecordType.A) { - oldRecord = new DnsResourceRecord(domain, type, DnsClass.IN, 0, new DnsARecord(oldIpAddress)); - newRecord = new DnsResourceRecord(newDomain, type, DnsClass.IN, ttl, new DnsARecord(newIpAddress)); + oldRecord = new DnsResourceRecord(domain, type, DnsClass.IN, 0, new DnsARecordData(oldIpAddress)); + newRecord = new DnsResourceRecord(newDomain, type, DnsClass.IN, ttl, new DnsARecordData(newIpAddress)); } else { - oldRecord = new DnsResourceRecord(domain, type, DnsClass.IN, 0, new DnsAAAARecord(oldIpAddress)); - newRecord = new DnsResourceRecord(newDomain, type, DnsClass.IN, ttl, new DnsAAAARecord(newIpAddress)); + oldRecord = new DnsResourceRecord(domain, type, DnsClass.IN, 0, new DnsAAAARecordData(oldIpAddress)); + newRecord = new DnsResourceRecord(newDomain, type, DnsClass.IN, ttl, new DnsAAAARecordData(newIpAddress)); } if (disable) @@ -2686,8 +2686,8 @@ namespace DnsServerCore newNameServer = newValue; } - DnsResourceRecord oldRecord = new DnsResourceRecord(domain, type, DnsClass.IN, 0, new DnsNSRecord(nameServer.TrimEnd('.'))); - DnsResourceRecord newRecord = new DnsResourceRecord(newDomain, type, DnsClass.IN, ttl, new DnsNSRecord(newNameServer.TrimEnd('.'))); + DnsResourceRecord oldRecord = new DnsResourceRecord(domain, type, DnsClass.IN, 0, new DnsNSRecordData(nameServer.TrimEnd('.'))); + DnsResourceRecord newRecord = new DnsResourceRecord(newDomain, type, DnsClass.IN, ttl, new DnsNSRecordData(newNameServer.TrimEnd('.'))); if (disable) newRecord.Disable(); @@ -2714,8 +2714,8 @@ namespace DnsServerCore cname = value; } - DnsResourceRecord oldRecord = new DnsResourceRecord(domain, type, DnsClass.IN, 0, new DnsCNAMERecord(cname.TrimEnd('.'))); - DnsResourceRecord newRecord = new DnsResourceRecord(newDomain, type, DnsClass.IN, ttl, new DnsCNAMERecord(cname.TrimEnd('.'))); + DnsResourceRecord oldRecord = new DnsResourceRecord(domain, type, DnsClass.IN, 0, new DnsCNAMERecordData(cname.TrimEnd('.'))); + DnsResourceRecord newRecord = new DnsResourceRecord(newDomain, type, DnsClass.IN, ttl, new DnsCNAMERecordData(cname.TrimEnd('.'))); if (disable) newRecord.Disable(); @@ -2757,7 +2757,7 @@ namespace DnsServerCore if (string.IsNullOrEmpty(minimum)) throw new DnsWebServiceException("Parameter 'minimum' missing."); - DnsResourceRecord newSoaRecord = new DnsResourceRecord(domain, type, DnsClass.IN, ttl, new DnsSOARecord(primaryNameServer, responsiblePerson, uint.Parse(serial), uint.Parse(refresh), uint.Parse(retry), uint.Parse(expire), uint.Parse(minimum))); + DnsResourceRecord newSoaRecord = new DnsResourceRecord(domain, type, DnsClass.IN, ttl, new DnsSOARecordData(primaryNameServer, responsiblePerson, uint.Parse(serial), uint.Parse(refresh), uint.Parse(retry), uint.Parse(expire), uint.Parse(minimum))); switch (zoneInfo.Type) { @@ -2812,8 +2812,8 @@ namespace DnsServerCore newPtrName = newValue; } - DnsResourceRecord oldRecord = new DnsResourceRecord(domain, type, DnsClass.IN, 0, new DnsPTRRecord(ptrName.TrimEnd('.'))); - DnsResourceRecord newRecord = new DnsResourceRecord(newDomain, type, DnsClass.IN, ttl, new DnsPTRRecord(newPtrName.TrimEnd('.'))); + DnsResourceRecord oldRecord = new DnsResourceRecord(domain, type, DnsClass.IN, 0, new DnsPTRRecordData(ptrName.TrimEnd('.'))); + DnsResourceRecord newRecord = new DnsResourceRecord(newDomain, type, DnsClass.IN, ttl, new DnsPTRRecordData(newPtrName.TrimEnd('.'))); if (disable) newRecord.Disable(); @@ -2849,8 +2849,8 @@ namespace DnsServerCore newExchange = newValue; } - DnsResourceRecord oldRecord = new DnsResourceRecord(domain, type, DnsClass.IN, 0, new DnsMXRecord(0, exchange.TrimEnd('.'))); - DnsResourceRecord newRecord = new DnsResourceRecord(newDomain, type, DnsClass.IN, ttl, new DnsMXRecord(ushort.Parse(preference), newExchange.TrimEnd('.'))); + DnsResourceRecord oldRecord = new DnsResourceRecord(domain, type, DnsClass.IN, 0, new DnsMXRecordData(0, exchange.TrimEnd('.'))); + DnsResourceRecord newRecord = new DnsResourceRecord(newDomain, type, DnsClass.IN, ttl, new DnsMXRecordData(ushort.Parse(preference), newExchange.TrimEnd('.'))); if (disable) newRecord.Disable(); @@ -2882,8 +2882,8 @@ namespace DnsServerCore newText = newValue; } - DnsResourceRecord oldRecord = new DnsResourceRecord(domain, type, DnsClass.IN, 0, new DnsTXTRecord(text)); - DnsResourceRecord newRecord = new DnsResourceRecord(newDomain, type, DnsClass.IN, ttl, new DnsTXTRecord(newText)); + DnsResourceRecord oldRecord = new DnsResourceRecord(domain, type, DnsClass.IN, 0, new DnsTXTRecordData(text)); + DnsResourceRecord newRecord = new DnsResourceRecord(newDomain, type, DnsClass.IN, ttl, new DnsTXTRecordData(newText)); if (disable) newRecord.Disable(); @@ -2931,8 +2931,8 @@ namespace DnsServerCore newTarget = newValue; } - DnsResourceRecord oldRecord = new DnsResourceRecord(domain, type, DnsClass.IN, 0, new DnsSRVRecord(0, 0, ushort.Parse(port), target.TrimEnd('.'))); - DnsResourceRecord newRecord = new DnsResourceRecord(newDomain, type, DnsClass.IN, ttl, new DnsSRVRecord(ushort.Parse(priority), ushort.Parse(weight), ushort.Parse(newPort), newTarget.TrimEnd('.'))); + DnsResourceRecord oldRecord = new DnsResourceRecord(domain, type, DnsClass.IN, 0, new DnsSRVRecordData(0, 0, ushort.Parse(port), target.TrimEnd('.'))); + DnsResourceRecord newRecord = new DnsResourceRecord(newDomain, type, DnsClass.IN, ttl, new DnsSRVRecordData(ushort.Parse(priority), ushort.Parse(weight), ushort.Parse(newPort), newTarget.TrimEnd('.'))); if (disable) newRecord.Disable(); @@ -2955,8 +2955,8 @@ namespace DnsServerCore dname = value; } - DnsResourceRecord oldRecord = new DnsResourceRecord(domain, type, DnsClass.IN, 0, new DnsDNAMERecord(dname.TrimEnd('.'))); - DnsResourceRecord newRecord = new DnsResourceRecord(newDomain, type, DnsClass.IN, ttl, new DnsDNAMERecord(dname.TrimEnd('.'))); + DnsResourceRecord oldRecord = new DnsResourceRecord(domain, type, DnsClass.IN, 0, new DnsDNAMERecordData(dname.TrimEnd('.'))); + DnsResourceRecord newRecord = new DnsResourceRecord(newDomain, type, DnsClass.IN, ttl, new DnsDNAMERecordData(dname.TrimEnd('.'))); if (disable) newRecord.Disable(); @@ -3012,8 +3012,8 @@ namespace DnsServerCore newDigest = newValue; } - DnsResourceRecord oldRecord = new DnsResourceRecord(domain, type, DnsClass.IN, 0, new DnsDSRecord(ushort.Parse(strKeyTag), Enum.Parse(strAlgorithm), Enum.Parse(strDigestType), Convert.FromHexString(digest))); - DnsResourceRecord newRecord = new DnsResourceRecord(newDomain, type, DnsClass.IN, ttl, new DnsDSRecord(ushort.Parse(strNewKeyTag), Enum.Parse(strNewAlgorithm), Enum.Parse(strNewDigestType), Convert.FromHexString(newDigest))); + DnsResourceRecord oldRecord = new DnsResourceRecord(domain, type, DnsClass.IN, 0, new DnsDSRecordData(ushort.Parse(strKeyTag), Enum.Parse(strAlgorithm), Enum.Parse(strDigestType), Convert.FromHexString(digest))); + DnsResourceRecord newRecord = new DnsResourceRecord(newDomain, type, DnsClass.IN, ttl, new DnsDSRecordData(ushort.Parse(strNewKeyTag), Enum.Parse(strNewAlgorithm), Enum.Parse(strNewDigestType), Convert.FromHexString(newDigest))); if (disable) newRecord.Disable(); @@ -3049,8 +3049,8 @@ namespace DnsServerCore if (string.IsNullOrEmpty(newValue)) newValue = value; - DnsResourceRecord oldRecord = new DnsResourceRecord(domain, type, DnsClass.IN, 0, new DnsCAARecord(byte.Parse(flags), tag, value)); - DnsResourceRecord newRecord = new DnsResourceRecord(newDomain, type, DnsClass.IN, ttl, new DnsCAARecord(byte.Parse(newFlags), newTag, newValue)); + DnsResourceRecord oldRecord = new DnsResourceRecord(domain, type, DnsClass.IN, 0, new DnsCAARecordData(byte.Parse(flags), tag, value)); + DnsResourceRecord newRecord = new DnsResourceRecord(newDomain, type, DnsClass.IN, ttl, new DnsCAARecordData(byte.Parse(newFlags), newTag, newValue)); if (disable) newRecord.Disable(); @@ -3082,8 +3082,8 @@ namespace DnsServerCore newAName = newValue; } - DnsResourceRecord oldRecord = new DnsResourceRecord(domain, type, DnsClass.IN, 0, new DnsANAMERecord(aname.TrimEnd('.'))); - DnsResourceRecord newRecord = new DnsResourceRecord(newDomain, type, DnsClass.IN, ttl, new DnsANAMERecord(newAName.TrimEnd('.'))); + DnsResourceRecord oldRecord = new DnsResourceRecord(domain, type, DnsClass.IN, 0, new DnsANAMERecordData(aname.TrimEnd('.'))); + DnsResourceRecord newRecord = new DnsResourceRecord(newDomain, type, DnsClass.IN, ttl, new DnsANAMERecordData(newAName.TrimEnd('.'))); if (disable) newRecord.Disable(); @@ -3158,8 +3158,8 @@ namespace DnsServerCore } } - DnsResourceRecord oldRecord = new DnsResourceRecord(domain, type, DnsClass.IN, 0, new DnsForwarderRecord(protocol, forwarder)); - DnsResourceRecord newRecord = new DnsResourceRecord(domain, type, DnsClass.IN, 0, new DnsForwarderRecord(newProtocol, newForwarder, dnssecValidation, proxyType, proxyAddress, proxyPort, proxyUsername, proxyPassword)); + DnsResourceRecord oldRecord = new DnsResourceRecord(domain, type, DnsClass.IN, 0, new DnsForwarderRecordData(protocol, forwarder)); + DnsResourceRecord newRecord = new DnsResourceRecord(domain, type, DnsClass.IN, 0, new DnsForwarderRecordData(newProtocol, newForwarder, dnssecValidation, proxyType, proxyAddress, proxyPort, proxyUsername, proxyPassword)); if (disable) newRecord.Disable(); @@ -3190,8 +3190,8 @@ namespace DnsServerCore if (string.IsNullOrEmpty(recordData)) recordData = ""; - DnsResourceRecord oldRecord = new DnsResourceRecord(domain, type, DnsClass.IN, 0, new DnsApplicationRecord(appName, classPath, recordData)); - DnsResourceRecord newRecord = new DnsResourceRecord(newDomain, type, DnsClass.IN, ttl, new DnsApplicationRecord(appName, classPath, recordData)); + DnsResourceRecord oldRecord = new DnsResourceRecord(domain, type, DnsClass.IN, 0, new DnsApplicationRecordData(appName, classPath, recordData)); + DnsResourceRecord newRecord = new DnsResourceRecord(newDomain, type, DnsClass.IN, ttl, new DnsApplicationRecordData(appName, classPath, recordData)); if (disable) newRecord.Disable();