Files
worker/checks/cdns/config.go
Gleb Tv 579a14b403
Все проверки выполнены успешно
CI / test (push) Successful in 2m32s
Docker / Build and publish worker image (push) Successful in 20m9s
fix(dns): retry configurable resolvers
Treat resolver transport failures as inconclusive checks so they do not open outage alerts.
2026-07-16 19:30:02 +03:00

63 строки
1.3 KiB
Go

package cdns
import (
"net"
"os"
"strings"
"time"
"github.com/miekg/dns"
)
// DNS check configuration constants.
const (
// Timeout is the DNS query timeout in seconds.
Timeout float64 = float64(1.5)
MaxTrials uint = 3
MaxNameservers uint = 20
MaxAddresses uint = 10
EdnsbufferSize uint16 = 4096
)
var (
conf *dns.ClientConfig
debug = false
maxTrials = 3
v4only = true
v6only = false
bufsize = EdnsbufferSize
timeout = time.Duration(float64(Timeout) * float64(time.Second))
noedns = false
recursion = false
tcp = false
noauthrequired = false
nodnssec = false
)
func init() {
conf = &dns.ClientConfig{
Servers: resolversFromEnv(),
Port: "53",
}
}
func resolversFromEnv() []string {
const defaults = "188.93.17.19,188.93.16.19,82.117.245.122"
resolvers := strings.Split(os.Getenv("RSMON_DNS_RESOLVERS"), ",")
if strings.TrimSpace(os.Getenv("RSMON_DNS_RESOLVERS")) == "" {
resolvers = strings.Split(defaults, ",")
}
valid := make([]string, 0, len(resolvers))
for _, resolver := range resolvers {
resolver = strings.TrimSpace(resolver)
if net.ParseIP(resolver) != nil {
valid = append(valid, resolver)
}
}
if len(valid) == 0 {
return strings.Split(defaults, ",")
}
return valid
}