From d2d1be152822d4006855d1b692785c6d7f3d6d5d Mon Sep 17 00:00:00 2001 From: Mike Crute Date: Sat, 24 Dec 2022 08:36:42 -0800 Subject: Fixes for ACMEv2 --- Makefile | 4 ++++ dns/client.go | 4 ++-- main.go | 4 ++-- web/controllers/acmev2.go | 9 +++++++-- 4 files changed, 15 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index 37c5199..d0f2d5b 100644 --- a/Makefile +++ b/Makefile @@ -3,6 +3,10 @@ dns-service: go generate ./... CGO_ENABLED=0 go build -o $@ $< +dns-service-linux: + go generate ./... + GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o $@ $< + .PHONY: clean clean: rm -f dns-service diff --git a/dns/client.go b/dns/client.go index f39bb4b..1b6b68a 100644 --- a/dns/client.go +++ b/dns/client.go @@ -149,8 +149,8 @@ func (c *DNSClient) SendQuery(t *DNSTransaction) ([]dns.RR, error) { // TODO: Copied from the letsencrypt service, merge this into existing functions func (c *DNSClient) sendReadQuery(ctx context.Context, fqdn string, rtype uint16, nameserver string) (*dns.Msg, error) { - udp := &dns.Client{Net: "udp"} - tcp := &dns.Client{Net: "tcp"} + udp := &dns.Client{Net: "udp", Timeout: time.Minute} + tcp := &dns.Client{Net: "tcp", Timeout: time.Minute} m := &dns.Msg{} m.SetQuestion(fqdn, rtype) diff --git a/main.go b/main.go index 8b6ba10..1998942 100644 --- a/main.go +++ b/main.go @@ -75,8 +75,8 @@ func prepareServer(c interface{}, router *gin.Engine) error { acme2 := router.Group("/acmev2") acme2.Use(middleware.AcmeAuthMiddleware) { - acme2.POST("/:domain/:challenge", controllers.CreateAcmeChallengeV2) - acme2.DELETE("/:domain/:challenge", controllers.DeleteAcmeChallengeV2) + acme2.POST("", controllers.CreateAcmeChallengeV2) + acme2.DELETE("", controllers.DeleteAcmeChallengeV2) } manage := router.Group("/manage") diff --git a/web/controllers/acmev2.go b/web/controllers/acmev2.go index a2fadf5..7ea76af 100644 --- a/web/controllers/acmev2.go +++ b/web/controllers/acmev2.go @@ -42,16 +42,21 @@ func CreateAcmeChallengeV2(c *gin.Context) { return } + testFor := fmt.Sprintf("_acme-challenge.%s.%s", prefix, zone.Name) + if prefix == "" { + testFor = fmt.Sprintf("_acme-challenge.%s", zone.Name) + } + if err := cfg.DNSClient.WaitForDNSPropagation( c.Request.Context(), - fmt.Sprintf("_acme-challenge.%s.", prefix), + testFor, ch.Challenge, ); err != nil { jsonError(c, http.StatusInternalServerError, fmt.Errorf("Error polling for DNS propagation: %w", err)) return } - c.JSON(http.StatusCreated, "") + c.String(http.StatusCreated, "") } func DeleteAcmeChallengeV2(c *gin.Context) { -- cgit v1.2.3