Refactor: MainResolver

This commit is contained in:
yaling888
2022-03-28 00:44:13 +08:00
parent 9bab2c504e
commit 4502776513
8 changed files with 128 additions and 75 deletions

View File

@ -41,6 +41,7 @@ type Resolver struct {
group singleflight.Group
lruCache *cache.LruCache
policy *trie.DomainTrie
proxyServer []dnsClient
}
// ResolveIP request with TypeA and TypeAAAA, priority return TypeA
@ -301,6 +302,11 @@ func (r *Resolver) asyncExchange(ctx context.Context, client []dnsClient, msg *D
return ch
}
// HasProxyServer has proxy server dns client
func (r *Resolver) HasProxyServer() bool {
return len(r.main) > 0
}
type NameServer struct {
Net string
Addr string
@ -319,6 +325,7 @@ type FallbackFilter struct {
type Config struct {
Main, Fallback []NameServer
Default []NameServer
ProxyServer []NameServer
IPv6 bool
EnhancedMode C.DNSMode
FallbackFilter FallbackFilter
@ -344,6 +351,10 @@ func NewResolver(config Config) *Resolver {
r.fallback = transform(config.Fallback, defaultResolver)
}
if len(config.ProxyServer) != 0 {
r.proxyServer = transform(config.ProxyServer, defaultResolver)
}
if len(config.Policy) != 0 {
r.policy = trie.New()
for domain, nameserver := range config.Policy {
@ -377,10 +388,10 @@ func NewResolver(config Config) *Resolver {
return r
}
func NewMainResolver(old *Resolver) *Resolver {
func NewProxyServerHostResolver(old *Resolver) *Resolver {
r := &Resolver{
ipv6: old.ipv6,
main: old.main,
main: old.proxyServer,
lruCache: old.lruCache,
hosts: old.hosts,
policy: old.policy,