mirror of
https://github.com/StackExchange/dnscontrol.git
synced 2025-01-11 01:47:53 +08:00
2ee086d41c
* switch to new go-acme imports from xenolf. Fix api changes * update many vault related dependencies
31 lines
1,015 B
Go
31 lines
1,015 B
Go
package acme
|
|
|
|
import (
|
|
"log"
|
|
"time"
|
|
|
|
"github.com/go-acme/lego/challenge/dns01"
|
|
)
|
|
|
|
func (c *certManager) preCheckDNS(domain, fqdn, value string, native dns01.PreCheckFunc) (bool, error) {
|
|
// default record verification in the client library makes sure the authoritative nameservers
|
|
// have the expected records.
|
|
// Sometimes the Let's Encrypt verification fails anyway because records have not propagated the provider's network fully.
|
|
// So we add an additional 60 second sleep just for safety.
|
|
v, err := native(fqdn, value)
|
|
if err != nil {
|
|
return v, err
|
|
}
|
|
if !c.waitedOnce {
|
|
log.Printf("DNS ok. Waiting another 60s to ensure stability.")
|
|
time.Sleep(60 * time.Second)
|
|
c.waitedOnce = true
|
|
}
|
|
log.Printf("DNS records seem to exist. Proceeding to request validation")
|
|
return v, err
|
|
}
|
|
|
|
// Timeout increases the client-side polling check time to five minutes with one second waits in-between.
|
|
func (c *certManager) Timeout() (timeout, interval time.Duration) {
|
|
return 5 * time.Minute, time.Second
|
|
}
|