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 }