diff --git a/Apps/NoDataApp/App.cs b/Apps/NoDataApp/App.cs index f634ec77..9607cbb3 100644 --- a/Apps/NoDataApp/App.cs +++ b/Apps/NoDataApp/App.cs @@ -50,17 +50,17 @@ namespace NoData { DnsQuestionRecord question = request.Question[0]; - if (question.Name.Equals(appRecordName, StringComparison.OrdinalIgnoreCase)) - { - using JsonDocument jsonDocument = JsonDocument.Parse(appRecordData); - JsonElement jsonAppRecordData = jsonDocument.RootElement; + if (!question.Name.Equals(appRecordName, StringComparison.OrdinalIgnoreCase) && !appRecordName.StartsWith("*.", StringComparison.OrdinalIgnoreCase)) + return Task.FromResult(null); - foreach (JsonElement jsonBlockedType in jsonAppRecordData.GetProperty("blockedTypes").EnumerateArray()) - { - DnsResourceRecordType blockedType = Enum.Parse(jsonBlockedType.GetString(), true); - if ((blockedType == question.Type) || (blockedType == DnsResourceRecordType.ANY)) - return Task.FromResult(new DnsDatagram(request.Identifier, true, request.OPCODE, false, false, request.RecursionDesired, isRecursionAllowed, false, false, DnsResponseCode.NoError, request.Question)); - } + using JsonDocument jsonDocument = JsonDocument.Parse(appRecordData); + JsonElement jsonAppRecordData = jsonDocument.RootElement; + + foreach (JsonElement jsonBlockedType in jsonAppRecordData.GetProperty("blockedTypes").EnumerateArray()) + { + DnsResourceRecordType blockedType = Enum.Parse(jsonBlockedType.GetString(), true); + if ((blockedType == question.Type) || (blockedType == DnsResourceRecordType.ANY)) + return Task.FromResult(new DnsDatagram(request.Identifier, true, request.OPCODE, false, false, request.RecursionDesired, isRecursionAllowed, false, false, DnsResponseCode.NoError, request.Question)); } return Task.FromResult(null);