resolver.go 672 B

12345678910111213141516171819202122232425262728293031323334
  1. package nettools
  2. import "net"
  3. func lookupIP(host string, ipv4, ipv6 bool) (net.IP, error) {
  4. ip, err := net.LookupIP(host)
  5. if err != nil {
  6. return nil, err
  7. }
  8. for _, i := range ip {
  9. if (ipv4 && isIPv4(i)) || (ipv6 && isIPv6(i)) {
  10. return i, nil
  11. }
  12. }
  13. return nil, &net.DNSError{
  14. Name: host,
  15. Err: "not found",
  16. IsNotFound: true,
  17. }
  18. }
  19. func LookupIPv4(host string) (net.IP, error) {
  20. return lookupIP(host, true, false)
  21. }
  22. func LookupIPv6(host string) (net.IP, error) {
  23. return lookupIP(host, false, true)
  24. }
  25. func LookupIP(host string) (net.IP, error) {
  26. return lookupIP(host, true, true)
  27. }
  28. var LookupFunc func(string) (net.IP, error) = LookupIP