Add domain strategy for dns outbound

This commit is contained in:
hmol233 2021-05-03 21:45:21 +08:00
parent 2e56fe11e1
commit 4a4e160a54
No known key found for this signature in database
GPG key ID: D617A9DAB0C992D5
6 changed files with 133 additions and 31 deletions

View file

@ -1,15 +1,18 @@
package conf
import (
"strings"
"github.com/golang/protobuf/proto"
"github.com/xtls/xray-core/common/net"
"github.com/xtls/xray-core/proxy/dns"
)
type DNSOutboundConfig struct {
Network Network `json:"network"`
Address *Address `json:"address"`
Port uint16 `json:"port"`
Network Network `json:"network"`
Address *Address `json:"address"`
Port uint16 `json:"port"`
DomainStrategy string `json:"domainStrategy"`
}
func (c *DNSOutboundConfig) Build() (proto.Message, error) {
@ -22,5 +25,12 @@ func (c *DNSOutboundConfig) Build() (proto.Message, error) {
if c.Address != nil {
config.Server.Address = c.Address.Build()
}
config.DomainStrategy = dns.Config_USE_ALL
switch strings.ToLower(c.DomainStrategy) {
case "useip", "use_ip", "use-ip":
config.DomainStrategy = dns.Config_USE_IP
case "fake", "fakedns":
config.DomainStrategy = dns.Config_USE_FAKE
}
return config, nil
}

View file

@ -27,6 +27,7 @@ func TestDnsProxyConfig(t *testing.T) {
Address: net.NewIPOrDomain(net.IPAddress([]byte{8, 8, 8, 8})),
Port: 53,
},
DomainStrategy: dns.Config_USE_ALL,
},
},
})