2021-09-30 23:03:19 +00:00
|
|
|
package discovery
|
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
|
|
|
"net"
|
|
|
|
)
|
|
|
|
|
2021-11-05 20:09:48 +00:00
|
|
|
// GetResolver returns a *net.Resolver object using a custom nameserver, or
|
|
|
|
// the default system resolver if no nameserver is specified
|
2021-09-30 23:03:19 +00:00
|
|
|
func GetResolver(ctx context.Context, nameserver string) *net.Resolver {
|
|
|
|
if nameserver == "" {
|
|
|
|
return net.DefaultResolver
|
|
|
|
}
|
|
|
|
|
|
|
|
return &net.Resolver{
|
|
|
|
PreferGo: true,
|
|
|
|
Dial: func(ctx context.Context, network, address string) (net.Conn, error) {
|
|
|
|
d := net.Dialer{}
|
|
|
|
return d.DialContext(ctx, network, net.JoinHostPort(nameserver, "53"))
|
|
|
|
},
|
|
|
|
}
|
|
|
|
}
|