| 1234567891011121314151617181920212223242526272829303132333435363738 | // +build jsonpackage dnsimport (	"encoding/json"	"errors"	"net"	v2net "github.com/v2ray/v2ray-core/common/net")func (this *Config) UnmarshalJSON(data []byte) error {	type JsonConfig struct {		Servers []v2net.AddressJson          `json:"servers"`		Hosts   map[string]v2net.AddressJson `json:"hosts"`	}	jsonConfig := new(JsonConfig)	if err := json.Unmarshal(data, jsonConfig); err != nil {		return err	}	this.NameServers = make([]v2net.Destination, len(jsonConfig.Servers))	for idx, server := range jsonConfig.Servers {		this.NameServers[idx] = v2net.UDPDestination(server.Address, v2net.Port(53))	}	if jsonConfig.Hosts != nil {		this.Hosts = make(map[string]net.IP)		for domain, ip := range jsonConfig.Hosts {			if ip.Address.Family().IsDomain() {				return errors.New(ip.Address.String() + " is not an IP.")			}			this.Hosts[domain] = ip.Address.IP()		}	}	return nil}
 |