major code refactoring done.

This commit is contained in:
Shreyas Zare
2022-03-06 17:24:41 +05:30
parent b8f0b3453f
commit fa417216f3
34 changed files with 344 additions and 344 deletions

View File

@@ -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 + "'.");
}
}

View File

@@ -111,8 +111,8 @@ namespace DnsServerCore.Dns
readonly ResolverDnsCache _dnsCache;
readonly IReadOnlyCollection<DnsARecord> _aRecords = new DnsARecord[] { new DnsARecord(IPAddress.Any) };
readonly IReadOnlyCollection<DnsAAAARecord> _aaaaRecords = new DnsAAAARecord[] { new DnsAAAARecord(IPAddress.IPv6Any) };
readonly IReadOnlyCollection<DnsARecordData> _aRecords = new DnsARecordData[] { new DnsARecordData(IPAddress.Any) };
readonly IReadOnlyCollection<DnsAAAARecordData> _aaaaRecords = new DnsAAAARecordData[] { new DnsAAAARecordData(IPAddress.IPv6Any) };
DnsServerRecursion _recursion;
IReadOnlyCollection<NetworkAddress> _recursionDeniedNetworks;
@@ -145,8 +145,8 @@ namespace DnsServerCore.Dns
bool _enableBlocking = true;
bool _allowTxtBlockingReport = true;
DnsServerBlockingType _blockingType = DnsServerBlockingType.AnyAddress;
IReadOnlyCollection<DnsARecord> _customBlockingARecords = Array.Empty<DnsARecord>();
IReadOnlyCollection<DnsAAAARecord> _customBlockingAAAARecords = Array.Empty<DnsAAAARecord>();
IReadOnlyCollection<DnsARecordData> _customBlockingARecords = Array.Empty<DnsARecordData>();
IReadOnlyCollection<DnsAAAARecordData> _customBlockingAAAARecords = Array.Empty<DnsAAAARecordData>();
LogManager _queryLog;
readonly StatsManager _stats;
@@ -1183,7 +1183,7 @@ namespace DnsServerCore.Dns
{
IReadOnlyList<DnsResourceRecord> 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<DnsDatagram> 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<IReadOnlyList<DnsResourceRecord>> 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<DnsResourceRecord> answer = new DnsResourceRecord[] { new DnsResourceRecord(question.Name, DnsResourceRecordType.TXT, question.Class, 60, new DnsTXTRecord("source=blocked-zone; domain=" + blockedDomain)) };
IReadOnlyList<DnsResourceRecord> 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<DnsARecord> aRecords;
IReadOnlyCollection<DnsAAAARecord> aaaaRecords;
IReadOnlyCollection<DnsARecordData> aRecords;
IReadOnlyCollection<DnsAAAARecordData> aaaaRecords;
switch (_blockingType)
{
@@ -1832,7 +1832,7 @@ namespace DnsServerCore.Dns
{
List<DnsResourceRecord> rrList = new List<DnsResourceRecord>(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<DnsResourceRecord> rrList = new List<DnsResourceRecord>(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<DnsDatagram> ConditionalForwarderResolveAsync(DnsQuestionRecord question, IDnsCache dnsCache, DnsForwarderRecord forwarder, string conditionalForwardingZoneCut, CancellationToken cancellationToken = default)
private Task<DnsDatagram> 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<DnsARecord> CustomBlockingARecords
public IReadOnlyCollection<DnsARecordData> CustomBlockingARecords
{
get { return _customBlockingARecords; }
set
{
if (value is null)
value = Array.Empty<DnsARecord>();
value = Array.Empty<DnsARecordData>();
_customBlockingARecords = value;
}
}
public IReadOnlyCollection<DnsAAAARecord> CustomBlockingAAAARecords
public IReadOnlyCollection<DnsAAAARecordData> CustomBlockingAAAARecords
{
get { return _customBlockingAAAARecords; }
set
{
if (value is null)
value = Array.Empty<DnsAAAARecord>();
value = Array.Empty<DnsAAAARecordData>();
_customBlockingAAAARecords = value;
}

View File

@@ -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<DnsResourceRecord> 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

View File

@@ -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();
}

View File

@@ -53,7 +53,7 @@ namespace DnsServerCore.Dns.ResourceRecords
public static void SetGlueRecords(this DnsResourceRecord record, IReadOnlyList<IPAddress> 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<DnsResourceRecord> 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<DnsResourceRecord> deletedGlueRecords, IReadOnlyCollection<DnsResourceRecord> addedGlueRecords)
{
if (record.RDATA is not DnsNSRecord nsRecord)
if (record.RDATA is not DnsNSRecordData nsRecord)
throw new InvalidOperationException();
bool updated = false;

View File

@@ -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:

View File

@@ -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);

View File

@@ -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;
}

View File

@@ -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<DnsResourceRecord> 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<DnsResourceRecord> 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<DnsResourceRecord> list = new List<DnsResourceRecord>(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<DnsResourceRecord> 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;

View File

@@ -42,11 +42,11 @@ namespace DnsServerCore.Dns.ZoneManagers
readonly List<Uri> _blockListUrls = new List<Uri>();
IReadOnlyDictionary<string, List<Uri>> _blockListZone = new Dictionary<string, List<Uri>>();
DnsSOARecord _soaRecord;
DnsNSRecord _nsRecord;
DnsSOARecordData _soaRecord;
DnsNSRecordData _nsRecord;
readonly IReadOnlyCollection<DnsARecord> _aRecords = new DnsARecord[] { new DnsARecord(IPAddress.Any) };
readonly IReadOnlyCollection<DnsAAAARecord> _aaaaRecords = new DnsAAAARecord[] { new DnsAAAARecord(IPAddress.IPv6Any) };
readonly IReadOnlyCollection<DnsARecordData> _aRecords = new DnsARecordData[] { new DnsARecordData(IPAddress.Any) };
readonly IReadOnlyCollection<DnsAAAARecordData> _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<DnsARecord> aRecords;
IReadOnlyCollection<DnsAAAARecord> aaaaRecords;
IReadOnlyCollection<DnsARecordData> aRecords;
IReadOnlyCollection<DnsAAAARecordData> aaaaRecords;
switch (_dnsServer.BlockingType)
{
@@ -457,7 +457,7 @@ namespace DnsServerCore.Dns.ZoneManagers
{
List<DnsResourceRecord> rrList = new List<DnsResourceRecord>(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<DnsResourceRecord> rrList = new List<DnsResourceRecord>(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;

View File

@@ -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

View File

@@ -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<DnsResourceRecord> 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<DnsResourceRecord> list = new List<DnsResourceRecord>(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

View File

@@ -75,7 +75,7 @@ namespace DnsServerCore.Dns.Zones
protected void CleanupHistory(List<DnsResourceRecord> 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<DnsResourceRecord> 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<DnsResourceRecord> nsRecords = GetRecords(DnsResourceRecordType.NS); //stub zone has no authority so cant use QueryRecords
List<NameServerAddress> nameServers = new List<NameServerAddress>(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<IReadOnlyList<NameServerAddress>> GetSecondaryNameServerAddressesAsync(DnsServer dnsServer)
{
string primaryNameServer = (_entries[DnsResourceRecordType.SOA][0].RDATA as DnsSOARecord).PrimaryNameServer;
string primaryNameServer = (_entries[DnsResourceRecordType.SOA][0].RDATA as DnsSOARecordData).PrimaryNameServer;
IReadOnlyList<DnsResourceRecord> nsRecords = GetRecords(DnsResourceRecordType.NS); //stub zone has no authority so cant use QueryRecords
List<NameServerAddress> nameServers = new List<NameServerAddress>(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);

View File

@@ -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<DnsResourceRecord> 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<byte>(), types);
DnsNSEC3RecordData newNSec3Record = new DnsNSEC3RecordData(DnssecNSEC3HashAlgorithm.SHA1, DnssecNSEC3Flags.None, iterations, salt, Array.Empty<byte>(), types);
return new DnsResourceRecord(newNSec3Record.ComputeHashedOwnerName(_name) + "." + zoneName, DnsResourceRecordType.NSEC3, DnsClass.IN, ttl, newNSec3Record);
}

View File

@@ -102,7 +102,7 @@ namespace DnsServerCore.Dns.Zones
if (_entries.TryGetValue(DnsResourceRecordType.CNAME, out IReadOnlyList<DnsResourceRecord> 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<DnsResourceRecord> 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<DnsResourceRecord> 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;
}

View File

@@ -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 };
}

View File

@@ -115,13 +115,13 @@ namespace DnsServerCore.Dns.Zones
_notifyList = new List<NameServerAddress>();
}
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<DnsResourceRecord> deletedRecords = new List<DnsResourceRecord>();
List<DnsResourceRecord> partialNSec3Records = new List<DnsResourceRecord>(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<DnsResourceRecordType> uniqueTypes = new List<DnsResourceRecordType>(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<byte>(), uniqueTypes);
DnsNSEC3RecordData mergedPartialNSec3 = new DnsNSEC3RecordData(DnssecNSEC3HashAlgorithm.SHA1, DnssecNSEC3Flags.None, iterations, salt, Array.Empty<byte>(), 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<DnsResourceRecord> 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<DnsDSRecord> dsRecords = DnsClient.ParseResponseDS(await _dnsServer.DirectQueryAsync(new DnsQuestionRecord(_name, DnsResourceRecordType.DS, DnsClass.IN)));
IReadOnlyList<DnsDSRecordData> dsRecords = DnsClient.ParseResponseDS(await _dnsServer.DirectQueryAsync(new DnsQuestionRecord(_name, DnsResourceRecordType.DS, DnsClass.IN)));
List<DnssecPrivateKey> activePrivateKeys = new List<DnssecPrivateKey>(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<DnsResourceRecord> 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<DnsResourceRecord> newNSec3Records = zone.CreateNSec3RRSet(hashedOwnerName, nextHashedOwnerName, ttl, nsec3Param.Iterations, nsec3Param.SaltValue);
@@ -2132,7 +2132,7 @@ namespace DnsServerCore.Dns.Zones
IReadOnlyList<DnsResourceRecord> 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.");

View File

@@ -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<NameServerAddress> 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)

View File

@@ -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 == "" ? "<root>" : _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))

View File

@@ -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<DnsARecord> dnsARecords = new List<DnsARecord>();
List<DnsAAAARecord> dnsAAAARecords = new List<DnsAAAARecord>();
List<DnsARecordData> dnsARecords = new List<DnsARecordData>();
List<DnsAAAARecordData> dnsAAAARecords = new List<DnsAAAARecordData>();
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<DnsARecord> dnsARecords = new List<DnsARecord>();
List<DnsAAAARecord> dnsAAAARecords = new List<DnsAAAARecord>();
List<DnsARecordData> dnsARecords = new List<DnsARecordData>();
List<DnsAAAARecordData> dnsAAAARecords = new List<DnsAAAARecordData>();
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);
}

View File

@@ -403,7 +403,7 @@ namespace DnsServerCore
if (zoneInfo.DnssecStatus == AuthZoneDnssecStatus.SignedWithNSEC3)
{
IReadOnlyList<DnsResourceRecord> 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<DnssecAlgorithm>(strAlgorithm), Enum.Parse<DnssecDigestType>(strDigestType), Convert.FromHexString(digest)));
DnsResourceRecord newRecord = new DnsResourceRecord(domain, type, DnsClass.IN, ttl, new DnsDSRecordData(ushort.Parse(strKeyTag), Enum.Parse<DnssecAlgorithm>(strAlgorithm), Enum.Parse<DnssecDigestType>(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<DnssecAlgorithm>(strAlgorithm), Enum.Parse<DnssecDigestType>(strDigestType), Convert.FromHexString(digest)));
_dnsWebService.DnsServer.AuthZoneManager.DeleteRecord(zoneName, domain, type, new DnsDSRecordData(ushort.Parse(strKeyTag), Enum.Parse<DnssecAlgorithm>(strAlgorithm), Enum.Parse<DnssecDigestType>(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<DnsTransportProtocol>(strProtocol, true), forwarder));
_dnsWebService.DnsServer.AuthZoneManager.DeleteRecord(zoneName, domain, type, new DnsForwarderRecordData(Enum.Parse<DnsTransportProtocol>(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<DnssecAlgorithm>(strAlgorithm), Enum.Parse<DnssecDigestType>(strDigestType), Convert.FromHexString(digest)));
DnsResourceRecord newRecord = new DnsResourceRecord(newDomain, type, DnsClass.IN, ttl, new DnsDSRecord(ushort.Parse(strNewKeyTag), Enum.Parse<DnssecAlgorithm>(strNewAlgorithm), Enum.Parse<DnssecDigestType>(strNewDigestType), Convert.FromHexString(newDigest)));
DnsResourceRecord oldRecord = new DnsResourceRecord(domain, type, DnsClass.IN, 0, new DnsDSRecordData(ushort.Parse(strKeyTag), Enum.Parse<DnssecAlgorithm>(strAlgorithm), Enum.Parse<DnssecDigestType>(strDigestType), Convert.FromHexString(digest)));
DnsResourceRecord newRecord = new DnsResourceRecord(newDomain, type, DnsClass.IN, ttl, new DnsDSRecordData(ushort.Parse(strNewKeyTag), Enum.Parse<DnssecAlgorithm>(strNewAlgorithm), Enum.Parse<DnssecDigestType>(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();