fix(dns): retry configurable resolvers
Все проверки выполнены успешно
CI / test (push) Successful in 2m32s
Docker / Build and publish worker image (push) Successful in 20m9s
Все проверки выполнены успешно
CI / test (push) Successful in 2m32s
Docker / Build and publish worker image (push) Successful in 20m9s
Treat resolver transport failures as inconclusive checks so they do not open outage alerts.
Этот коммит содержится в:
@@ -1,6 +1,9 @@
|
||||
package cdns
|
||||
|
||||
import (
|
||||
"net"
|
||||
"os"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/miekg/dns"
|
||||
@@ -33,7 +36,27 @@ var (
|
||||
|
||||
func init() {
|
||||
conf = &dns.ClientConfig{
|
||||
Servers: []string{"8.8.8.8", "1.1.1.1", "77.88.8.8"},
|
||||
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
|
||||
}
|
||||
|
||||
Ссылка в новой задаче
Block a user