diff --git a/cmd/cli/ad_others.go b/cmd/cli/ad_others.go index 1249033..eb1b506 100644 --- a/cmd/cli/ad_others.go +++ b/cmd/cli/ad_others.go @@ -7,4 +7,4 @@ import ( ) // addExtraSplitDnsRule adds split DNS rule if present. -func addExtraSplitDnsRule(_ *ctrld.ListenerConfig) {} +func addExtraSplitDnsRule(_ *ctrld.Config) {} diff --git a/cmd/cli/ad_windows.go b/cmd/cli/ad_windows.go index 2697475..a3e7917 100644 --- a/cmd/cli/ad_windows.go +++ b/cmd/cli/ad_windows.go @@ -8,10 +8,7 @@ import ( ) // addExtraSplitDnsRule adds split DNS rule for domain if it's part of active directory. -func addExtraSplitDnsRule(lc *ctrld.ListenerConfig) { - if lc.Policy == nil { - lc.Policy = &ctrld.ListenerPolicyConfig{} - } +func addExtraSplitDnsRule(cfg *ctrld.Config) { domain, err := getActiveDirectoryDomain() if err != nil { mainLog.Load().Debug().Msgf("unable to get active directory domain: %v", err) @@ -21,15 +18,20 @@ func addExtraSplitDnsRule(lc *ctrld.ListenerConfig) { mainLog.Load().Debug().Msg("no active directory domain found") return } - domainRule := "*." + strings.TrimPrefix(domain, ".") - for _, rule := range lc.Policy.Rules { - if _, ok := rule[domainRule]; ok { - mainLog.Load().Debug().Msg("domain rule already exist") - return + for n, lc := range cfg.Listener { + if lc.Policy == nil { + lc.Policy = &ctrld.ListenerPolicyConfig{} } + domainRule := "*." + strings.TrimPrefix(domain, ".") + for _, rule := range lc.Policy.Rules { + if _, ok := rule[domainRule]; ok { + mainLog.Load().Debug().Msgf("domain rule already exist for listener.%s", n) + return + } + } + mainLog.Load().Debug().Msgf("adding active directory domain for listener.%s", n) + lc.Policy.Rules = append(lc.Policy.Rules, ctrld.Rule{domainRule: []string{}}) } - mainLog.Load().Debug().Msg("adding active directory domain") - lc.Policy.Rules = append(lc.Policy.Rules, ctrld.Rule{domainRule: []string{}}) } // getActiveDirectoryDomain returns AD domain name of this computer. diff --git a/cmd/cli/cli.go b/cmd/cli/cli.go index e50219e..e9b3dc7 100644 --- a/cmd/cli/cli.go +++ b/cmd/cli/cli.go @@ -1383,6 +1383,7 @@ func run(appCallback *AppCallback, stopCh chan struct{}) { } func writeConfigFile(cfg *ctrld.Config) error { + addExtraSplitDnsRule(cfg) if cfu := v.ConfigFileUsed(); cfu != "" { defaultConfigFile = cfu } else if configPath != "" { diff --git a/cmd/cli/prog.go b/cmd/cli/prog.go index bca8bfb..2a2c59c 100644 --- a/cmd/cli/prog.go +++ b/cmd/cli/prog.go @@ -439,7 +439,6 @@ func (p *prog) run(reload bool, reloadCh chan struct{}) { for listenerNum := range p.cfg.Listener { p.cfg.Listener[listenerNum].Init() - addExtraSplitDnsRule(p.cfg.Listener[listenerNum]) if !reload { go func(listenerNum string) { listenerConfig := p.cfg.Listener[listenerNum]