From f10c6e2479afdd5a284fef4fc001784e31e5bce8 Mon Sep 17 00:00:00 2001 From: Kristoffer Dalby Date: Fri, 16 Aug 2024 14:32:03 +0200 Subject: [PATCH] add warning on failing nameservers Signed-off-by: Kristoffer Dalby --- hscontrol/types/config.go | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/hscontrol/types/config.go b/hscontrol/types/config.go index 0beebea3db..e938768ea2 100644 --- a/hscontrol/types/config.go +++ b/hscontrol/types/config.go @@ -216,8 +216,6 @@ func LoadConfig(path string, isFile bool) error { } } - // viper.ExperimentalBindStruct() - envPrefix := "headscale" viper.SetEnvPrefix(envPrefix) viper.SetEnvKeyReplacer(strings.NewReplacer(".", "_")) @@ -564,18 +562,27 @@ func (d *DNSConfig) GlobalResolvers() []*dnstype.Resolver { var resolvers []*dnstype.Resolver for _, nsStr := range d.Nameservers.Global { + warn := "" if _, err := netip.ParseAddr(nsStr); err == nil { resolvers = append(resolvers, &dnstype.Resolver{ Addr: nsStr, }) continue + } else { + warn = fmt.Sprintf("Invalid global nameserver %q. Parsing error: %s ignoring", nsStr, err) } if _, err := url.Parse(nsStr); err == nil { resolvers = append(resolvers, &dnstype.Resolver{ Addr: nsStr, }) + } else { + warn = fmt.Sprintf("Invalid global nameserver %q. Parsing error: %s ignoring", nsStr, err) + } + + if warn != "" { + log.Warn().Msg(warn) } } @@ -591,18 +598,27 @@ func (d *DNSConfig) SplitResolvers() map[string][]*dnstype.Resolver { for domain, nameservers := range d.Nameservers.Split { var resolvers []*dnstype.Resolver for _, nsStr := range nameservers { + warn := "" if _, err := netip.ParseAddr(nsStr); err == nil { resolvers = append(resolvers, &dnstype.Resolver{ Addr: nsStr, }) continue + } else { + warn = fmt.Sprintf("Invalid split dns nameserver %q. Parsing error: %s ignoring", nsStr, err) } if _, err := url.Parse(nsStr); err == nil { resolvers = append(resolvers, &dnstype.Resolver{ Addr: nsStr, }) + } else { + warn = fmt.Sprintf("Invalid split dns nameserver %q. Parsing error: %s ignoring", nsStr, err) + } + + if warn != "" { + log.Warn().Msg(warn) } } routes[domain] = resolvers