diff --git a/acme/client.go b/acme/client.go index 20f98a9..cc85277 100644 --- a/acme/client.go +++ b/acme/client.go @@ -3,6 +3,7 @@ package acme import ( "context" "os" + "time" "github.com/go-acme/lego/v3/certificate" "github.com/go-acme/lego/v3/challenge/dns01" @@ -42,6 +43,22 @@ func setupChallengeProviders(ctx context.Context, logger log.Logger, client *leg nameServer := os.Getenv("LEGO_TEST_NAMESERVER") isTesting := nameServer != "" err = client.Challenge.SetDNS01Provider(provider, + dns01.WrapPreCheck(func(domain, fqdn, value string, check dns01.PreCheckFunc) (bool, error) { + ok, err := check(fqdn, value) + if !ok || err != nil { + return ok, err + } + + if a.IgnoreDNSPropagation { + // Just wait 1 minute for stuff to settle... + const duration = 60 * time.Second + logger.Info("waiting %v for things to settle", duration) + time.Sleep(duration) + logger.Info("done waiting %v for things to settle", duration) + } + + return true, nil + }), dns01.CondOption(isTesting, dns01.AddRecursiveNameservers([]string{nameServer})), dns01.CondOption(a.IgnoreDNSPropagation || isTesting, dns01.DisableCompletePropagationRequirement())) if err != nil {