refactor: DoH use fragment setting params

This commit is contained in:
Skyxim
2022-07-21 14:03:49 +08:00
parent b0fd50453a
commit 3e424dea7b
6 changed files with 86 additions and 109 deletions

View File

@ -354,6 +354,7 @@ type NameServer struct {
Addr string
Interface *atomic.String
ProxyAdapter string
Params map[string]string
}
type FallbackFilter struct {
@ -365,7 +366,6 @@ type FallbackFilter struct {
}
type Config struct {
PreferH3 bool
Main, Fallback []NameServer
Default []NameServer
ProxyServer []NameServer
@ -379,29 +379,29 @@ type Config struct {
func NewResolver(config Config) *Resolver {
defaultResolver := &Resolver{
main: transform(config.Default, nil, config.PreferH3),
main: transform(config.Default, nil),
lruCache: cache.NewLRUCache[string, *D.Msg](cache.WithSize[string, *D.Msg](4096), cache.WithStale[string, *D.Msg](true)),
}
r := &Resolver{
ipv6: config.IPv6,
main: transform(config.Main, defaultResolver, config.PreferH3),
main: transform(config.Main, defaultResolver),
lruCache: cache.NewLRUCache[string, *D.Msg](cache.WithSize[string, *D.Msg](4096), cache.WithStale[string, *D.Msg](true)),
hosts: config.Hosts,
}
if len(config.Fallback) != 0 {
r.fallback = transform(config.Fallback, defaultResolver, config.PreferH3)
r.fallback = transform(config.Fallback, defaultResolver)
}
if len(config.ProxyServer) != 0 {
r.proxyServer = transform(config.ProxyServer, defaultResolver, config.PreferH3)
r.proxyServer = transform(config.ProxyServer, defaultResolver)
}
if len(config.Policy) != 0 {
r.policy = trie.New[*Policy]()
for domain, nameserver := range config.Policy {
_ = r.policy.Insert(domain, NewPolicy(transform([]NameServer{nameserver}, defaultResolver, config.PreferH3)))
_ = r.policy.Insert(domain, NewPolicy(transform([]NameServer{nameserver}, defaultResolver)))
}
}