go-acme / lego

Let's Encrypt/ACME client and library written in Go
https://go-acme.github.io/lego/
MIT License
7.91k stars 1.02k forks source link

feat: improve errors and logs related to DNS call #2109

Closed ldez closed 7 months ago

ldez commented 7 months ago

I improved errors and logs related to DNS calls: better information related to the context (FQDN, zone, NS, DNS message, ...)

Also, with the new error type, every error returned by sendDNSQuery (and dnsQuery) will contain the questions (ex: example.com. IN SOA), so it will be far easier to diagnose DNS call problems.

Otherwise, when we iterate nameservers to do DNS calls if the latest call returns an error then we report all the errors of the previous calls instead of only the latest error.

Also, I added the FDQN inside the error message of FindZoneByFqdn, FindZoneByFqdnCustom, and FindPrimaryNsByFqdnCustom, so we can remove that from the error handling of the callers.

The log message:

Checking DNS record propagation using [1.1.1.1:53 8.8.8.8:53 9.9.9.9:53]

is now:

Checking DNS record propagation. [nameservers=1.1.1.1:53 8.8.8.8:53 9.9.9.9:53]

The previous message was not exactly wrong but it could be misinterpreted. Now the nameservers are just a piece of context information.

Fixes #2097