diff --git a/DnsServerCore/Dns/DnsServer.cs b/DnsServerCore/Dns/DnsServer.cs index 511b1b31..c618a6cc 100644 --- a/DnsServerCore/Dns/DnsServer.cs +++ b/DnsServerCore/Dns/DnsServer.cs @@ -1055,8 +1055,8 @@ namespace DnsServerCore.Dns if (lastResponse.Header.RCODE == DnsResponseCode.Refused) { rcode = DnsResponseCode.NoError; - authority = new DnsResourceRecord[] { }; - additional = new DnsResourceRecord[] { }; + authority = Array.Empty(); + additional = Array.Empty(); } else { @@ -1072,9 +1072,9 @@ namespace DnsServerCore.Dns if ((lastResponse.Authority.Length > 0) && (lastResponse.Authority[0].Type == DnsResourceRecordType.SOA)) authority = lastResponse.Authority; else - authority = new DnsResourceRecord[] { }; + authority = Array.Empty(); - additional = new DnsResourceRecord[] { }; + additional = Array.Empty(); } } @@ -1116,12 +1116,12 @@ namespace DnsServerCore.Dns { case DnsResourceRecordType.A: answer = new DnsResourceRecord[] { new DnsResourceRecord(blockedResponse.Question[0].Name, DnsResourceRecordType.A, blockedResponse.Question[0].Class, 60, new DnsARecord(IPAddress.Any)) }; - authority = new DnsResourceRecord[] { }; + authority = Array.Empty(); break; case DnsResourceRecordType.AAAA: answer = new DnsResourceRecord[] { new DnsResourceRecord(blockedResponse.Question[0].Name, DnsResourceRecordType.AAAA, blockedResponse.Question[0].Class, 60, new DnsAAAARecord(IPAddress.IPv6Any)) }; - authority = new DnsResourceRecord[] { }; + authority = Array.Empty(); break; default: @@ -1199,12 +1199,12 @@ namespace DnsServerCore.Dns if ((lastResponse.Authority.Length > 0) && (lastResponse.Authority[0].Type == DnsResourceRecordType.SOA)) authority = lastResponse.Authority; else - authority = new DnsResourceRecord[] { }; + authority = Array.Empty(); if ((response.Additional.Length > 0) && (request.Question[0].Type == DnsResourceRecordType.MX)) additional = response.Additional; else - additional = new DnsResourceRecord[] { }; + additional = Array.Empty(); return new DnsDatagram(new DnsHeader(request.Header.Identifier, true, DnsOpcode.StandardQuery, false, false, true, true, false, false, lastResponse.Header.RCODE, 1, (ushort)responseAnswer.Count, (ushort)authority.Length, (ushort)additional.Length), request.Question, responseAnswer.ToArray(), authority, additional) { Tag = response.Tag }; } @@ -1213,12 +1213,12 @@ namespace DnsServerCore.Dns if ((response.Authority.Length > 0) && (response.Authority[0].Type == DnsResourceRecordType.SOA)) authority = response.Authority; else - authority = new DnsResourceRecord[] { }; + authority = Array.Empty(); if ((response.Additional.Length > 0) && (request.Question[0].Type == DnsResourceRecordType.MX)) additional = response.Additional; else - additional = new DnsResourceRecord[] { }; + additional = Array.Empty(); return new DnsDatagram(new DnsHeader(request.Header.Identifier, true, DnsOpcode.StandardQuery, false, false, true, true, false, false, response.Header.RCODE, 1, (ushort)response.Answer.Length, (ushort)authority.Length, (ushort)additional.Length), request.Question, response.Answer, authority, additional) { Tag = response.Tag }; } diff --git a/DnsServerCore/Dns/StatsManager.cs b/DnsServerCore/Dns/StatsManager.cs index 5ba5289a..551e85a7 100644 --- a/DnsServerCore/Dns/StatsManager.cs +++ b/DnsServerCore/Dns/StatsManager.cs @@ -1,6 +1,6 @@ /* Technitium DNS Server -Copyright (C) 2019 Shreyas Zare (shreyas@technitium.com) +Copyright (C) 2020 Shreyas Zare (shreyas@technitium.com) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -199,7 +199,7 @@ namespace DnsServerCore.Dns } foreach (DateTime key in _keysToRemove) - _hourlyStatsCache.TryRemove(key, out HourlyStats hourlyStats); + _hourlyStatsCache.TryRemove(key, out _); } //remove old data from daily stats cache @@ -216,16 +216,15 @@ namespace DnsServerCore.Dns } foreach (DateTime key in _keysToRemove) - _dailyStatsCache.TryRemove(key, out StatCounter dailyStats); + _dailyStatsCache.TryRemove(key, out _); } } private HourlyStats LoadHourlyStats(DateTime dateTime) { - HourlyStats hourlyStats; DateTime hourlyDateTime = new DateTime(dateTime.Year, dateTime.Month, dateTime.Day, dateTime.Hour, 0, 0, 0, DateTimeKind.Utc); - if (!_hourlyStatsCache.TryGetValue(hourlyDateTime, out hourlyStats)) + if (!_hourlyStatsCache.TryGetValue(hourlyDateTime, out HourlyStats hourlyStats)) { string hourlyStatsFile = Path.Combine(_statsFolder, dateTime.ToString("yyyyMMddHH") + ".stat"); @@ -261,10 +260,9 @@ namespace DnsServerCore.Dns private StatCounter LoadDailyStats(DateTime dateTime) { - StatCounter dailyStats; DateTime dailyDateTime = new DateTime(dateTime.Year, dateTime.Month, dateTime.Day, 0, 0, 0, 0, DateTimeKind.Utc); - if (!_dailyStatsCache.TryGetValue(dailyDateTime, out dailyStats)) + if (!_dailyStatsCache.TryGetValue(dailyDateTime, out StatCounter dailyStats)) { string dailyStatsFile = Path.Combine(_statsFolder, dateTime.ToString("yyyyMMdd") + ".dstat"); diff --git a/DnsServerCore/Dns/Zone.cs b/DnsServerCore/Dns/Zone.cs index 9aa0a1d9..088ab808 100644 --- a/DnsServerCore/Dns/Zone.cs +++ b/DnsServerCore/Dns/Zone.cs @@ -107,7 +107,7 @@ namespace DnsServerCore.Dns DnsClient.IsDomainNameValid(domainName, true); if (string.IsNullOrEmpty(domainName)) - return new string[] { }; + return Array.Empty(); string[] path = domainName.ToLower().Split('.'); Array.Reverse(path); @@ -747,7 +747,7 @@ namespace DnsServerCore.Dns DnsResourceRecord[] closestAuthority = closestZone.QueryClosestAuthority(rootZone._serverDomain); if (closestAuthority == null) - return new DnsDatagram(new DnsHeader(request.Header.Identifier, true, DnsOpcode.StandardQuery, false, false, request.Header.RecursionDesired, false, false, false, DnsResponseCode.Refused, 1, 0, 0, 0), request.Question, new DnsResourceRecord[] { }, new DnsResourceRecord[] { }, new DnsResourceRecord[] { }); + return new DnsDatagram(new DnsHeader(request.Header.Identifier, true, DnsOpcode.StandardQuery, false, false, request.Header.RecursionDesired, false, false, false, DnsResponseCode.Refused, 1, 0, 0, 0), request.Question, Array.Empty(), Array.Empty(), Array.Empty()); if (closestAuthority[0].Type == DnsResourceRecordType.SOA) { @@ -759,7 +759,7 @@ namespace DnsServerCore.Dns if (answerRecords == null) { //record type not found - return new DnsDatagram(new DnsHeader(request.Header.Identifier, true, DnsOpcode.StandardQuery, true, false, request.Header.RecursionDesired, false, false, false, DnsResponseCode.NoError, 1, 0, (ushort)closestAuthority.Length, 0), request.Question, new DnsResourceRecord[] { }, closestAuthority, new DnsResourceRecord[] { }); + return new DnsDatagram(new DnsHeader(request.Header.Identifier, true, DnsOpcode.StandardQuery, true, false, request.Header.RecursionDesired, false, false, false, DnsResponseCode.NoError, 1, 0, (ushort)closestAuthority.Length, 0), request.Question, Array.Empty(), closestAuthority, Array.Empty()); } else { @@ -784,13 +784,13 @@ namespace DnsServerCore.Dns { case DnsResourceRecordType.NS: case DnsResourceRecordType.MX: - closestAuthoritativeNameServers = new DnsResourceRecord[] { }; + closestAuthoritativeNameServers = Array.Empty(); additional = QueryGlueRecords(rootZone, answerRecords, false); break; case DnsResourceRecordType.ANY: - closestAuthoritativeNameServers = new DnsResourceRecord[] { }; - additional = new DnsResourceRecord[] { }; + closestAuthoritativeNameServers = Array.Empty(); + additional = Array.Empty(); break; default: @@ -798,8 +798,8 @@ namespace DnsServerCore.Dns if (closestAuthoritativeNameServers == null) { - closestAuthoritativeNameServers = new DnsResourceRecord[] { }; - additional = new DnsResourceRecord[] { }; + closestAuthoritativeNameServers = Array.Empty(); + additional = Array.Empty(); } else { @@ -815,7 +815,7 @@ namespace DnsServerCore.Dns else { //zone doesnt exists - return new DnsDatagram(new DnsHeader(request.Header.Identifier, true, DnsOpcode.StandardQuery, true, false, request.Header.RecursionDesired, false, false, false, DnsResponseCode.NameError, 1, 0, (ushort)closestAuthority.Length, 0), request.Question, new DnsResourceRecord[] { }, closestAuthority, new DnsResourceRecord[] { }); + return new DnsDatagram(new DnsHeader(request.Header.Identifier, true, DnsOpcode.StandardQuery, true, false, request.Header.RecursionDesired, false, false, false, DnsResponseCode.NameError, 1, 0, (ushort)closestAuthority.Length, 0), request.Question, Array.Empty(), closestAuthority, Array.Empty()); } } else @@ -823,7 +823,7 @@ namespace DnsServerCore.Dns //zone is delegated DnsResourceRecord[] additional = QueryGlueRecords(rootZone, closestAuthority, false); - return new DnsDatagram(new DnsHeader(request.Header.Identifier, true, DnsOpcode.StandardQuery, false, false, request.Header.RecursionDesired, false, false, false, DnsResponseCode.NoError, 1, 0, (ushort)closestAuthority.Length, (ushort)additional.Length), request.Question, new DnsResourceRecord[] { }, closestAuthority, additional); + return new DnsDatagram(new DnsHeader(request.Header.Identifier, true, DnsOpcode.StandardQuery, false, false, request.Header.RecursionDesired, false, false, false, DnsResponseCode.NoError, 1, 0, (ushort)closestAuthority.Length, (ushort)additional.Length), request.Question, Array.Empty(), closestAuthority, additional); } } @@ -845,11 +845,11 @@ namespace DnsServerCore.Dns DnsResourceRecord authority = (answerRecords[0].RDATA as DnsCache.DnsEmptyRecord).Authority; if (authority == null) - responseAuthority = new DnsResourceRecord[] { }; + responseAuthority = Array.Empty(); else responseAuthority = new DnsResourceRecord[] { authority }; - return new DnsDatagram(new DnsHeader(request.Header.Identifier, true, DnsOpcode.StandardQuery, false, false, request.Header.RecursionDesired, true, false, false, DnsResponseCode.NoError, 1, 0, 1, 0), request.Question, new DnsResourceRecord[] { }, responseAuthority, new DnsResourceRecord[] { }); + return new DnsDatagram(new DnsHeader(request.Header.Identifier, true, DnsOpcode.StandardQuery, false, false, request.Header.RecursionDesired, true, false, false, DnsResponseCode.NoError, 1, 0, 1, 0), request.Question, Array.Empty(), responseAuthority, Array.Empty()); } if (answerRecords[0].RDATA is DnsCache.DnsNXRecord) @@ -858,21 +858,21 @@ namespace DnsServerCore.Dns DnsResourceRecord authority = (answerRecords[0].RDATA as DnsCache.DnsNXRecord).Authority; if (authority == null) - responseAuthority = new DnsResourceRecord[] { }; + responseAuthority = Array.Empty(); else responseAuthority = new DnsResourceRecord[] { authority }; - return new DnsDatagram(new DnsHeader(request.Header.Identifier, true, DnsOpcode.StandardQuery, false, false, request.Header.RecursionDesired, true, false, false, DnsResponseCode.NameError, 1, 0, 1, 0), request.Question, new DnsResourceRecord[] { }, responseAuthority, new DnsResourceRecord[] { }); + return new DnsDatagram(new DnsHeader(request.Header.Identifier, true, DnsOpcode.StandardQuery, false, false, request.Header.RecursionDesired, true, false, false, DnsResponseCode.NameError, 1, 0, 1, 0), request.Question, Array.Empty(), responseAuthority, Array.Empty()); } if (answerRecords[0].RDATA is DnsCache.DnsANYRecord) { DnsCache.DnsANYRecord anyRR = answerRecords[0].RDATA as DnsCache.DnsANYRecord; - return new DnsDatagram(new DnsHeader(request.Header.Identifier, true, DnsOpcode.StandardQuery, false, false, request.Header.RecursionDesired, true, false, false, DnsResponseCode.NoError, 1, (ushort)anyRR.Records.Length, 0, 0), request.Question, anyRR.Records, new DnsResourceRecord[] { }, new DnsResourceRecord[] { }); + return new DnsDatagram(new DnsHeader(request.Header.Identifier, true, DnsOpcode.StandardQuery, false, false, request.Header.RecursionDesired, true, false, false, DnsResponseCode.NoError, 1, (ushort)anyRR.Records.Length, 0, 0), request.Question, anyRR.Records, Array.Empty(), Array.Empty()); } if (answerRecords[0].RDATA is DnsCache.DnsFailureRecord) - return new DnsDatagram(new DnsHeader(request.Header.Identifier, true, DnsOpcode.StandardQuery, false, false, request.Header.RecursionDesired, true, false, false, (answerRecords[0].RDATA as DnsCache.DnsFailureRecord).RCODE, 1, 0, 0, 0), request.Question, new DnsResourceRecord[] { }, new DnsResourceRecord[] { }, new DnsResourceRecord[] { }); + return new DnsDatagram(new DnsHeader(request.Header.Identifier, true, DnsOpcode.StandardQuery, false, false, request.Header.RecursionDesired, true, false, false, (answerRecords[0].RDATA as DnsCache.DnsFailureRecord).RCODE, 1, 0, 0, 0), request.Question, Array.Empty(), Array.Empty(), Array.Empty()); DnsResourceRecord[] additional; @@ -884,11 +884,11 @@ namespace DnsServerCore.Dns break; default: - additional = new DnsResourceRecord[] { }; + additional = Array.Empty(); break; } - return new DnsDatagram(new DnsHeader(request.Header.Identifier, true, DnsOpcode.StandardQuery, false, false, request.Header.RecursionDesired, true, false, false, DnsResponseCode.NoError, 1, (ushort)answerRecords.Length, 0, (ushort)additional.Length), request.Question, answerRecords, new DnsResourceRecord[] { }, additional); + return new DnsDatagram(new DnsHeader(request.Header.Identifier, true, DnsOpcode.StandardQuery, false, false, request.Header.RecursionDesired, true, false, false, DnsResponseCode.NoError, 1, (ushort)answerRecords.Length, 0, (ushort)additional.Length), request.Question, answerRecords, Array.Empty(), additional); } } @@ -900,12 +900,12 @@ namespace DnsServerCore.Dns DnsResourceRecord[] additional = QueryGlueRecords(rootZone, nameServers, serveStale); if (additional.Length > 0) - return new DnsDatagram(new DnsHeader(request.Header.Identifier, true, DnsOpcode.StandardQuery, false, false, request.Header.RecursionDesired, true, false, false, DnsResponseCode.NoError, 1, 0, (ushort)nameServers.Length, (ushort)additional.Length), request.Question, new DnsResourceRecord[] { }, nameServers, additional); + return new DnsDatagram(new DnsHeader(request.Header.Identifier, true, DnsOpcode.StandardQuery, false, false, request.Header.RecursionDesired, true, false, false, DnsResponseCode.NoError, 1, 0, (ushort)nameServers.Length, (ushort)additional.Length), request.Question, Array.Empty(), nameServers, additional); closestZone = closestZone._parentZone; } - return new DnsDatagram(new DnsHeader(request.Header.Identifier, true, DnsOpcode.StandardQuery, false, false, request.Header.RecursionDesired, true, false, false, DnsResponseCode.Refused, 1, 0, 0, 0), request.Question, new DnsResourceRecord[] { }, new DnsResourceRecord[] { }, new DnsResourceRecord[] { }); + return new DnsDatagram(new DnsHeader(request.Header.Identifier, true, DnsOpcode.StandardQuery, false, false, request.Header.RecursionDesired, true, false, false, DnsResponseCode.Refused, 1, 0, 0, 0), request.Question, Array.Empty(), Array.Empty(), Array.Empty()); } #endregion @@ -969,12 +969,12 @@ namespace DnsServerCore.Dns DnsResourceRecord[] additional = QueryGlueRecords(this, nameServers, serveStale); if (additional.Length > 0) - return new DnsDatagram(new DnsHeader(request.Header.Identifier, true, DnsOpcode.StandardQuery, false, false, request.Header.RecursionDesired, true, false, false, DnsResponseCode.NoError, 1, 0, (ushort)nameServers.Length, (ushort)additional.Length), request.Question, new DnsResourceRecord[] { }, nameServers, additional); + return new DnsDatagram(new DnsHeader(request.Header.Identifier, true, DnsOpcode.StandardQuery, false, false, request.Header.RecursionDesired, true, false, false, DnsResponseCode.NoError, 1, 0, (ushort)nameServers.Length, (ushort)additional.Length), request.Question, Array.Empty(), nameServers, additional); closestZone = closestZone._parentZone; } - return new DnsDatagram(new DnsHeader(request.Header.Identifier, true, DnsOpcode.StandardQuery, false, false, request.Header.RecursionDesired, true, false, false, DnsResponseCode.Refused, 1, 0, 0, 0), request.Question, new DnsResourceRecord[] { }, new DnsResourceRecord[] { }, new DnsResourceRecord[] { }); + return new DnsDatagram(new DnsHeader(request.Header.Identifier, true, DnsOpcode.StandardQuery, false, false, request.Header.RecursionDesired, true, false, false, DnsResponseCode.Refused, 1, 0, 0, 0), request.Question, Array.Empty(), Array.Empty(), Array.Empty()); } internal void RemoveExpiredCachedRecords() @@ -1109,7 +1109,7 @@ namespace DnsServerCore.Dns { Zone currentZone = GetZone(this, domain, false); if (currentZone == null) - return new ZoneInfo[] { }; //no zone for given domain + return Array.Empty(); //no zone for given domain List zones = new List(); currentZone.ListAuthoritativeZones(zones); diff --git a/DnsServerCore/WebService.cs b/DnsServerCore/WebService.cs index dc11c234..fd926f08 100644 --- a/DnsServerCore/WebService.cs +++ b/DnsServerCore/WebService.cs @@ -1,6 +1,6 @@ /* Technitium DNS Server -Copyright (C) 2019 Shreyas Zare (shreyas@technitium.com) +Copyright (C) 2020 Shreyas Zare (shreyas@technitium.com) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -1823,7 +1823,7 @@ namespace DnsServerCore if (direction == "up") { - if (domain == "") + if (domain.Length == 0) break; int i = domain.IndexOf('.'); @@ -1832,7 +1832,7 @@ namespace DnsServerCore else domain = domain.Substring(i + 1); } - else if (domain == "") + else if (domain.Length == 0) { domain = subZones[0]; } @@ -1850,7 +1850,7 @@ namespace DnsServerCore jsonWriter.WritePropertyName("zones"); jsonWriter.WriteStartArray(); - if (domain != "") + if (domain.Length != 0) domain = "." + domain; foreach (string subZone in subZones) @@ -1896,7 +1896,7 @@ namespace DnsServerCore if (direction == "up") { - if (domain == "") + if (domain.Length == 0) break; int i = domain.IndexOf('.'); @@ -1905,7 +1905,7 @@ namespace DnsServerCore else domain = domain.Substring(i + 1); } - else if (domain == "") + else if (domain.Length == 0) { domain = subZones[0]; } @@ -1923,7 +1923,7 @@ namespace DnsServerCore jsonWriter.WritePropertyName("zones"); jsonWriter.WriteStartArray(); - if (domain != "") + if (domain.Length != 0) domain = "." + domain; foreach (string subZone in subZones) @@ -2045,7 +2045,7 @@ namespace DnsServerCore if (direction == "up") { - if (domain == "") + if (domain.Length == 0) break; int i = domain.IndexOf('.'); @@ -2054,7 +2054,7 @@ namespace DnsServerCore else domain = domain.Substring(i + 1); } - else if (domain == "") + else if (domain.Length == 0) { domain = subZones[0]; } @@ -2072,7 +2072,7 @@ namespace DnsServerCore jsonWriter.WritePropertyName("zones"); jsonWriter.WriteStartArray(); - if (domain != "") + if (domain.Length != 0) domain = "." + domain; foreach (string subZone in subZones) @@ -3438,7 +3438,7 @@ namespace DnsServerCore string strDomainName = request.QueryString["domainName"]; if (strDomainName != null) - scope.DomainName = strDomainName == "" ? null : strDomainName; + scope.DomainName = strDomainName.Length == 0 ? null : strDomainName; string strDnsTtl = request.QueryString["dnsTtl"]; if (!string.IsNullOrEmpty(strDnsTtl)) @@ -3446,7 +3446,7 @@ namespace DnsServerCore string strRouterAddress = request.QueryString["routerAddress"]; if (strRouterAddress != null) - scope.RouterAddress = strRouterAddress == "" ? null : IPAddress.Parse(strRouterAddress); + scope.RouterAddress = strRouterAddress.Length == 0 ? null : IPAddress.Parse(strRouterAddress); string strUseThisDnsServer = request.QueryString["useThisDnsServer"]; if (!string.IsNullOrEmpty(strUseThisDnsServer)) @@ -3457,7 +3457,7 @@ namespace DnsServerCore string strDnsServers = request.QueryString["dnsServers"]; if (strDnsServers != null) { - if (strDnsServers == "") + if (strDnsServers.Length == 0) { scope.DnsServers = null; } @@ -3477,7 +3477,7 @@ namespace DnsServerCore string strWinsServers = request.QueryString["winsServers"]; if (strWinsServers != null) { - if (strWinsServers == "") + if (strWinsServers.Length == 0) { scope.WinsServers = null; } @@ -3496,7 +3496,7 @@ namespace DnsServerCore string strNtpServers = request.QueryString["ntpServers"]; if (strNtpServers != null) { - if (strNtpServers == "") + if (strNtpServers.Length == 0) { scope.NtpServers = null; } @@ -3515,7 +3515,7 @@ namespace DnsServerCore string strStaticRoutes = request.QueryString["staticRoutes"]; if (strStaticRoutes != null) { - if (strStaticRoutes == "") + if (strStaticRoutes.Length == 0) { scope.StaticRoutes = null; } @@ -3538,7 +3538,7 @@ namespace DnsServerCore string strExclusions = request.QueryString["exclusions"]; if (strExclusions != null) { - if (strExclusions == "") + if (strExclusions.Length == 0) { scope.Exclusions = null; } @@ -3561,7 +3561,7 @@ namespace DnsServerCore string strReservedLeases = request.QueryString["reservedLeases"]; if (strReservedLeases != null) { - if (strReservedLeases == "") + if (strReservedLeases.Length == 0) { scope.ReservedLeases = null; } @@ -4213,7 +4213,7 @@ namespace DnsServerCore private static string PopWord(ref string line) { - if (line == "") + if (line.Length == 0) return line; line = line.TrimStart(' ', '\t'); @@ -4494,7 +4494,7 @@ namespace DnsServerCore _tlsCertificatePath = bR.ReadShortString(); _tlsCertificatePassword = bR.ReadShortString(); - if (_tlsCertificatePath == "") + if (_tlsCertificatePath.Length == 0) _tlsCertificatePath = null; if (_tlsCertificatePath != null)