| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 | package jsonimport (	"encoding/json"	"net"	v2net "github.com/v2ray/v2ray-core/common/net")type Host struct {	domain string	ip     net.IP}func NewIPHost(ip net.IP) *Host {	return &Host{		ip: ip,	}}func NewDomainHost(domain string) *Host {	return &Host{		domain: domain,	}}func (this *Host) UnmarshalJSON(data []byte) error {	var rawStr string	if err := json.Unmarshal(data, &rawStr); err != nil {		return err	}	ip := net.ParseIP(rawStr)	if ip != nil {		this.ip = ip	} else {		this.domain = rawStr	}	return nil}func (this *Host) IsIP() bool {	return this.ip != nil}func (this *Host) IsDomain() bool {	return !this.IsIP()}func (this *Host) IP() net.IP {	return this.ip}func (this *Host) Domain() string {	return this.domain}func (this *Host) Address() v2net.Address {	if this.IsIP() {		return v2net.IPAddress(this.IP())	} else {		return v2net.DomainAddress(this.Domain())	}}
 |