From 6bfe044cfa55aba44c23bd81db6687490a757bab Mon Sep 17 00:00:00 2001 From: forever8938 <44494377+forever8938@users.noreply.github.com> Date: Sat, 2 Nov 2019 15:49:29 +0800 Subject: [PATCH] Support external domain file for dns hosts --- infra/conf/dns.go | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/infra/conf/dns.go b/infra/conf/dns.go index c852a6793..29477ed44 100644 --- a/infra/conf/dns.go +++ b/infra/conf/dns.go @@ -178,6 +178,24 @@ func (c *DnsConfig) Build() (*dns.Config, error) { mapping.Domain = domain[5:] mappings = append(mappings, mapping) + } else if strings.HasPrefix(domain, "ext:") { + kv := strings.Split(domain[4:], ":") + if len(kv) != 2 { + return nil, newError("invalid external resource: ", domain) + } + filename := kv[0] + country := kv[1] + domains, err := loadGeositeWithAttr(filename, country) + if err != nil { + return nil, newError("failed to load domains: ", country, " from ", filename).Base(err) + } + for _, d := range domains { + mapping := getHostMapping(addr) + mapping.Type = typeMap[d.Type] + mapping.Domain = d.Value + + mappings = append(mappings, mapping) + } } else { mapping := getHostMapping(addr) mapping.Type = dns.DomainMatchingType_Full