diff --git a/infra/conf/fakedns.go b/infra/conf/fakedns.go index 3d097f7fd..ab6aaa0be 100644 --- a/infra/conf/fakedns.go +++ b/infra/conf/fakedns.go @@ -6,12 +6,26 @@ import ( "github.com/v2fly/v2ray-core/v4/app/dns/fakedns" ) -type FakeDNSConfig struct { +type FakeDNSPoolElementConfig struct { IPPool string `json:"ipPool"` LruSize int64 `json:"poolSize"` } +type FakeDNSConfig struct { + IPPool string `json:"ipPool"` + LruSize int64 `json:"poolSize"` + Pools *[]FakeDNSPoolElementConfig `json:"pools,omitempty"` +} + func (f FakeDNSConfig) Build() (proto.Message, error) { + if f.Pools != nil { + fakeDNSPool := &fakedns.FakeDnsPoolMulti{} + for _, v := range *f.Pools { + fakeDNSPool.Pools = append(fakeDNSPool.Pools, &fakedns.FakeDnsPool{IpPool: v.IPPool, LruSize: v.LruSize}) + } + return fakeDNSPool, nil + } + return &fakedns.FakeDnsPool{ IpPool: f.IPPool, LruSize: f.LruSize,