From 1901c414b7506d061d51ff945d9611d3d97a2869 Mon Sep 17 00:00:00 2001 From: Thomas Schneider <thomas@fsmpi.rwth-aachen.de> Date: Sat, 2 Jul 2022 14:49:38 +0200 Subject: [PATCH] Present(): Search existing record and only create if none exists --- main.go | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/main.go b/main.go index ae97728..15f4208 100644 --- a/main.go +++ b/main.go @@ -39,14 +39,30 @@ func (s *solver) Present(ch *whapi.ChallengeRequest) error { txt := fmt.Sprintf(`%s IN TXT "%s"`, ch.ResolvedFQDN, ch.Key) - record, err := client.CreateRecord(txt) + search := ch.ResolvedFQDN + " *" + records, err := client.ListRecords(nil, &search) + if err != nil { + klog.Error(err) + return err + } + + var record rwthdns.Record + + if len(records) == 0 { + record, err = client.CreateRecord(txt) + } else if len(records) == 1 { + record, err = client.UpdateRecord(records[0].Id, txt) + } else { + err = fmt.Errorf("More than one search result for %s", ch.ResolvedFQDN) + } - klog.V(2).Infof("record %+v", record) if err != nil { klog.Error(err) return err } + klog.V(2).Infof("record %+v", record) + zone, err := client.DeployZone(record.ZoneId) klog.V(2).Infof("deployed zone %+v", zone) if err != nil { -- GitLab