diff --git a/src/pdns-dhcp/PowerDns/PowerDnsHandler.cs b/src/pdns-dhcp/PowerDns/PowerDnsHandler.cs index 953630e..d6661b7 100644 --- a/src/pdns-dhcp/PowerDns/PowerDnsHandler.cs +++ b/src/pdns-dhcp/PowerDns/PowerDnsHandler.cs @@ -2,6 +2,7 @@ using System.Buffers; using System.Text.Json; using Microsoft.AspNetCore.Connections; +using Microsoft.Extensions.Logging; using Microsoft.Toolkit.HighPerformance; using Microsoft.Toolkit.HighPerformance.Buffers; @@ -11,10 +12,12 @@ namespace pdns_dhcp.PowerDns; public class PowerDnsHandler : ConnectionHandler { + private readonly ILogger _logger; private readonly DnsRepository _repository; - - public PowerDnsHandler(DnsRepository repository) + + public PowerDnsHandler(DnsRepository repository, ILogger logger) { + _logger = logger; _repository = repository; } @@ -100,20 +103,25 @@ public class PowerDnsHandler : ConnectionHandler { return method switch { - InitializeMethod init => HandleInitializeMethod(init), - LookupMethod lookup => HandleLookupMethod(lookup), + InitializeMethod { Parameters: { } init } => HandleInitialize(init), + LookupMethod { Parameters: { } lookup } => HandleLookup(lookup), _ => ValueTask.FromResult(new BoolReply(false)) }; } - private ValueTask HandleInitializeMethod(InitializeMethod method) + private ValueTask HandleInitialize(InitializeMethodParameters method) { return ValueTask.FromResult(BoolReply.True); } - private ValueTask HandleLookupMethod(LookupMethod method) + private ValueTask HandleLookup(LookupMethodParameters method) { - return ValueTask.FromResult(BoolReply.False); + switch (method.Qtype.ToLowerInvariant()) + { + default: + _logger.LogWarning("Unhandled QType {QType}", method.Qtype); + return ValueTask.FromResult(BoolReply.False); + } } } diff --git a/src/pdns-dhcp/PowerDns/Replies.cs b/src/pdns-dhcp/PowerDns/Replies.cs index c1ea16a..b170c9b 100644 --- a/src/pdns-dhcp/PowerDns/Replies.cs +++ b/src/pdns-dhcp/PowerDns/Replies.cs @@ -1,4 +1,3 @@ -using System.Text.Json; using System.Text.Json.Serialization; namespace pdns_dhcp.PowerDns;