mirror of
https://github.com/shtorm-7/sing-box-extended.git
synced 2026-09-28 18:46:43 +00:00
Fix tailscale preferred MagicDNS domain matching
This commit is contained in:
@@ -98,6 +98,7 @@ type Endpoint struct {
|
||||
routerCfg *router.Config
|
||||
dnsCfg *tsDNS.Config
|
||||
routeDomains common.TypedValue[map[string]bool]
|
||||
routeSuffixes common.TypedValue[[]string]
|
||||
searchDomains atomic.Bool
|
||||
routePrefixes atomic.Pointer[netipx.IPSet]
|
||||
|
||||
@@ -790,6 +791,11 @@ func (t *Endpoint) PreferredDomain(domain string) bool {
|
||||
if routeDomains[domain] {
|
||||
return true
|
||||
}
|
||||
for _, suffix := range t.routeSuffixes.Load() {
|
||||
if mDNS.IsSubDomain(suffix, domain) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return !strings.Contains(domain, ".") && t.searchDomains.Load()
|
||||
}
|
||||
|
||||
@@ -828,13 +834,18 @@ func (t *Endpoint) onReconfig(cfg *wgcfg.Config, routerCfg *router.Config, dnsCf
|
||||
t.dnsCfg = dnsCfg
|
||||
|
||||
routeDomains := make(map[string]bool)
|
||||
for fqdn := range dnsCfg.Routes {
|
||||
for fqdn := range dnsCfg.Hosts {
|
||||
routeDomains[fqdn.WithoutTrailingDot()] = true
|
||||
}
|
||||
for _, fqdn := range dnsCfg.SearchDomains {
|
||||
routeDomains[fqdn.WithoutTrailingDot()] = true
|
||||
}
|
||||
routeSuffixes := make([]string, 0, len(dnsCfg.Routes))
|
||||
for fqdn := range dnsCfg.Routes {
|
||||
routeSuffixes = append(routeSuffixes, fqdn.WithoutTrailingDot())
|
||||
}
|
||||
t.routeDomains.Store(routeDomains)
|
||||
t.routeSuffixes.Store(routeSuffixes)
|
||||
t.searchDomains.Store(len(dnsCfg.SearchDomains) > 0)
|
||||
|
||||
var builder netipx.IPSetBuilder
|
||||
|
||||
Reference in New Issue
Block a user