From 58c3af71f870c392991cd19d64ebb8f9a077b053 Mon Sep 17 00:00:00 2001 From: Shreyas Zare Date: Sat, 23 Apr 2022 18:03:17 +0530 Subject: [PATCH] WebServiceZonesApi: Updated WriteRecordsAsJson() to removed SHA1 computed digests for DNSKEY and add lastUsedOn value. Updated enum parsing to ignore case. --- DnsServerCore/WebServiceZonesApi.cs | 29 ++++++++++------------------- 1 file changed, 10 insertions(+), 19 deletions(-) diff --git a/DnsServerCore/WebServiceZonesApi.cs b/DnsServerCore/WebServiceZonesApi.cs index 3a5dd344..454b76a1 100644 --- a/DnsServerCore/WebServiceZonesApi.cs +++ b/DnsServerCore/WebServiceZonesApi.cs @@ -1059,7 +1059,7 @@ namespace DnsServerCore if (string.IsNullOrEmpty(strType)) throw new DnsWebServiceException("Parameter 'type' missing."); - DnsResourceRecordType type = (DnsResourceRecordType)Enum.Parse(typeof(DnsResourceRecordType), strType); + DnsResourceRecordType type = Enum.Parse(strType, true); string value = request.QueryString["value"]; @@ -1367,7 +1367,7 @@ namespace DnsServerCore digest = value; } - DnsResourceRecord newRecord = new DnsResourceRecord(domain, type, DnsClass.IN, ttl, new DnsDSRecordData(ushort.Parse(strKeyTag), Enum.Parse(strAlgorithm), Enum.Parse(strDigestType), Convert.FromHexString(digest))); + DnsResourceRecord newRecord = new DnsResourceRecord(domain, type, DnsClass.IN, ttl, new DnsDSRecordData(ushort.Parse(strKeyTag), Enum.Parse(strAlgorithm, true), Enum.Parse(strDigestType, true), Convert.FromHexString(digest))); if (!string.IsNullOrEmpty(comments)) newRecord.SetComments(comments); @@ -2032,18 +2032,6 @@ namespace DnsServerCore jsonWriter.WritePropertyName("computedDigests"); jsonWriter.WriteStartArray(); - { - jsonWriter.WriteStartObject(); - - jsonWriter.WritePropertyName("digestType"); - jsonWriter.WriteValue("SHA1"); - - jsonWriter.WritePropertyName("digest"); - jsonWriter.WriteValue(rdata.CreateDS(record.Name, DnssecDigestType.SHA1).Digest); - - jsonWriter.WriteEndObject(); - } - { jsonWriter.WriteStartObject(); @@ -2310,6 +2298,9 @@ namespace DnsServerCore jsonWriter.WritePropertyName("dnssecStatus"); jsonWriter.WriteValue(record.DnssecStatus.ToString()); + jsonWriter.WritePropertyName("lastUsedOn"); + jsonWriter.WriteValue(recordInfo.LastUsedOn); + jsonWriter.WriteEndObject(); } } @@ -2344,7 +2335,7 @@ namespace DnsServerCore if (string.IsNullOrEmpty(strType)) throw new DnsWebServiceException("Parameter 'type' missing."); - DnsResourceRecordType type = (DnsResourceRecordType)Enum.Parse(typeof(DnsResourceRecordType), strType); + DnsResourceRecordType type = Enum.Parse(strType, true); string value = request.QueryString["value"]; @@ -2501,7 +2492,7 @@ namespace DnsServerCore digest = value; } - _dnsWebService.DnsServer.AuthZoneManager.DeleteRecord(zoneName, domain, type, new DnsDSRecordData(ushort.Parse(strKeyTag), Enum.Parse(strAlgorithm), Enum.Parse(strDigestType), Convert.FromHexString(digest))); + _dnsWebService.DnsServer.AuthZoneManager.DeleteRecord(zoneName, domain, type, new DnsDSRecordData(ushort.Parse(strKeyTag), Enum.Parse(strAlgorithm, true), Enum.Parse(strDigestType, true), Convert.FromHexString(digest))); } break; @@ -2575,7 +2566,7 @@ namespace DnsServerCore if (string.IsNullOrEmpty(strType)) throw new DnsWebServiceException("Parameter 'type' missing."); - DnsResourceRecordType type = (DnsResourceRecordType)Enum.Parse(typeof(DnsResourceRecordType), strType); + DnsResourceRecordType type = Enum.Parse(strType, true); string domain = request.QueryString["domain"]; if (string.IsNullOrEmpty(domain)) @@ -3065,8 +3056,8 @@ namespace DnsServerCore newDigest = newValue; } - DnsResourceRecord oldRecord = new DnsResourceRecord(domain, type, DnsClass.IN, 0, new DnsDSRecordData(ushort.Parse(strKeyTag), Enum.Parse(strAlgorithm), Enum.Parse(strDigestType), Convert.FromHexString(digest))); - DnsResourceRecord newRecord = new DnsResourceRecord(newDomain, type, DnsClass.IN, ttl, new DnsDSRecordData(ushort.Parse(strNewKeyTag), Enum.Parse(strNewAlgorithm), Enum.Parse(strNewDigestType), Convert.FromHexString(newDigest))); + DnsResourceRecord oldRecord = new DnsResourceRecord(domain, type, DnsClass.IN, 0, new DnsDSRecordData(ushort.Parse(strKeyTag), Enum.Parse(strAlgorithm, true), Enum.Parse(strDigestType, true), Convert.FromHexString(digest))); + DnsResourceRecord newRecord = new DnsResourceRecord(newDomain, type, DnsClass.IN, ttl, new DnsDSRecordData(ushort.Parse(strNewKeyTag), Enum.Parse(strNewAlgorithm, true), Enum.Parse(strNewDigestType, true), Convert.FromHexString(newDigest))); if (disable) newRecord.Disable();