From 1c91ff091fda8acf4544dcdacbdf94c06ce5c9c2 Mon Sep 17 00:00:00 2001 From: Virgil Date: Sat, 4 Apr 2026 03:26:45 +0000 Subject: [PATCH] feat(action): accept PTR-style names in reverse lookup Co-authored-by: Virgil --- action.go | 2 +- service_test.go | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/action.go b/action.go index f1542e0..a3098a2 100644 --- a/action.go +++ b/action.go @@ -291,7 +291,7 @@ func (service *Service) handleResolveAll(ctx context.Context, values map[string] func (service *Service) handleReverseLookup(ctx context.Context, values map[string]any) (any, bool, error) { _ = ctx - ip, err := stringActionValueFromKeys(values, actionArgIP, actionArgAddress) + ip, err := stringActionValueFromKeys(values, actionArgIP, actionArgAddress, actionArgName, actionArgHost, actionArgHostName) if err != nil { return nil, false, err } diff --git a/service_test.go b/service_test.go index 872bfb4..22205c7 100644 --- a/service_test.go +++ b/service_test.go @@ -3560,6 +3560,23 @@ func TestServiceHandleActionReverseHealthServeAndDiscover(t *testing.T) { t.Fatalf("unexpected reverse result: %#v", reverse.Names) } + ptrPayload, ok, err := service.HandleAction(ActionReverse, map[string]any{ + "name": "20.10.10.10.in-addr.arpa.", + }) + if err != nil { + t.Fatalf("unexpected reverse action error for PTR name: %v", err) + } + if !ok { + t.Fatal("expected reverse action to accept PTR-style names") + } + ptr, ok := ptrPayload.(ReverseLookupResult) + if !ok { + t.Fatalf("expected ReverseLookupResult payload for PTR name, got %T", ptrPayload) + } + if len(ptr.Names) != 1 || ptr.Names[0] != "gateway.charon.lthn" { + t.Fatalf("unexpected PTR reverse result: %#v", ptr.Names) + } + healthPayload, ok, err := service.HandleAction(ActionHealth, nil) if err != nil { t.Fatalf("unexpected health action error: %v", err)