diff options
author | Mike Crute <mike@crute.us> | 2022-12-24 08:36:42 -0800 |
---|---|---|
committer | Mike Crute <mike@crute.us> | 2022-12-24 08:36:42 -0800 |
commit | d2d1be152822d4006855d1b692785c6d7f3d6d5d (patch) | |
tree | 46a8fd7c3ca1ccba238203dfe0af2770903b309a | |
parent | c18aef9f0aa2d9ed7238a0f1ce0a7d82c5800389 (diff) | |
download | go_ddns_manager-d2d1be152822d4006855d1b692785c6d7f3d6d5d.tar.bz2 go_ddns_manager-d2d1be152822d4006855d1b692785c6d7f3d6d5d.tar.xz go_ddns_manager-d2d1be152822d4006855d1b692785c6d7f3d6d5d.zip |
Fixes for ACMEv2
-rw-r--r-- | Makefile | 4 | ||||
-rw-r--r-- | dns/client.go | 4 | ||||
-rw-r--r-- | main.go | 4 | ||||
-rw-r--r-- | web/controllers/acmev2.go | 9 |
4 files changed, 15 insertions, 6 deletions
@@ -3,6 +3,10 @@ dns-service: | |||
3 | go generate ./... | 3 | go generate ./... |
4 | CGO_ENABLED=0 go build -o $@ $< | 4 | CGO_ENABLED=0 go build -o $@ $< |
5 | 5 | ||
6 | dns-service-linux: | ||
7 | go generate ./... | ||
8 | GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o $@ $< | ||
9 | |||
6 | .PHONY: clean | 10 | .PHONY: clean |
7 | clean: | 11 | clean: |
8 | rm -f dns-service | 12 | 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) { | |||
149 | 149 | ||
150 | // TODO: Copied from the letsencrypt service, merge this into existing functions | 150 | // TODO: Copied from the letsencrypt service, merge this into existing functions |
151 | func (c *DNSClient) sendReadQuery(ctx context.Context, fqdn string, rtype uint16, nameserver string) (*dns.Msg, error) { | 151 | func (c *DNSClient) sendReadQuery(ctx context.Context, fqdn string, rtype uint16, nameserver string) (*dns.Msg, error) { |
152 | udp := &dns.Client{Net: "udp"} | 152 | udp := &dns.Client{Net: "udp", Timeout: time.Minute} |
153 | tcp := &dns.Client{Net: "tcp"} | 153 | tcp := &dns.Client{Net: "tcp", Timeout: time.Minute} |
154 | 154 | ||
155 | m := &dns.Msg{} | 155 | m := &dns.Msg{} |
156 | m.SetQuestion(fqdn, rtype) | 156 | m.SetQuestion(fqdn, rtype) |
@@ -75,8 +75,8 @@ func prepareServer(c interface{}, router *gin.Engine) error { | |||
75 | acme2 := router.Group("/acmev2") | 75 | acme2 := router.Group("/acmev2") |
76 | acme2.Use(middleware.AcmeAuthMiddleware) | 76 | acme2.Use(middleware.AcmeAuthMiddleware) |
77 | { | 77 | { |
78 | acme2.POST("/:domain/:challenge", controllers.CreateAcmeChallengeV2) | 78 | acme2.POST("", controllers.CreateAcmeChallengeV2) |
79 | acme2.DELETE("/:domain/:challenge", controllers.DeleteAcmeChallengeV2) | 79 | acme2.DELETE("", controllers.DeleteAcmeChallengeV2) |
80 | } | 80 | } |
81 | 81 | ||
82 | manage := router.Group("/manage") | 82 | 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) { | |||
42 | return | 42 | return |
43 | } | 43 | } |
44 | 44 | ||
45 | testFor := fmt.Sprintf("_acme-challenge.%s.%s", prefix, zone.Name) | ||
46 | if prefix == "" { | ||
47 | testFor = fmt.Sprintf("_acme-challenge.%s", zone.Name) | ||
48 | } | ||
49 | |||
45 | if err := cfg.DNSClient.WaitForDNSPropagation( | 50 | if err := cfg.DNSClient.WaitForDNSPropagation( |
46 | c.Request.Context(), | 51 | c.Request.Context(), |
47 | fmt.Sprintf("_acme-challenge.%s.", prefix), | 52 | testFor, |
48 | ch.Challenge, | 53 | ch.Challenge, |
49 | ); err != nil { | 54 | ); err != nil { |
50 | jsonError(c, http.StatusInternalServerError, fmt.Errorf("Error polling for DNS propagation: %w", err)) | 55 | jsonError(c, http.StatusInternalServerError, fmt.Errorf("Error polling for DNS propagation: %w", err)) |
51 | return | 56 | return |
52 | } | 57 | } |
53 | 58 | ||
54 | c.JSON(http.StatusCreated, "") | 59 | c.String(http.StatusCreated, "") |
55 | } | 60 | } |
56 | 61 | ||
57 | func DeleteAcmeChallengeV2(c *gin.Context) { | 62 | func DeleteAcmeChallengeV2(c *gin.Context) { |