Feature: custom dns ipv4/ipv6 dual stack

This commit is contained in:
Dreamacro
2019-06-29 00:58:59 +08:00
parent bc3fc0c840
commit 57fdd223f1
11 changed files with 94 additions and 39 deletions

32
dns/iputil.go Normal file
View File

@ -0,0 +1,32 @@
package dns
import (
"errors"
"net"
)
var (
errIPNotFound = errors.New("ip not found")
)
// ResolveIP with a host, return ip
func ResolveIP(host string) (net.IP, error) {
if DefaultResolver != nil {
if DefaultResolver.ipv6 {
return DefaultResolver.ResolveIP(host)
}
return DefaultResolver.ResolveIPv4(host)
}
ip := net.ParseIP(host)
if ip != nil {
return ip, nil
}
ipAddr, err := net.ResolveIPAddr("ip", host)
if err != nil {
return nil, err
}
return ipAddr.IP, nil
}