|
|
|
@ -1,16 +1,12 @@
|
|
|
|
|
package localdns
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"context"
|
|
|
|
|
|
|
|
|
|
"v2ray.com/core/common/net"
|
|
|
|
|
"v2ray.com/core/features/dns"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// Client is an implementation of dns.Client, which queries localhost for DNS.
|
|
|
|
|
type Client struct {
|
|
|
|
|
resolver net.Resolver
|
|
|
|
|
}
|
|
|
|
|
type Client struct{}
|
|
|
|
|
|
|
|
|
|
// Type implements common.HasType.
|
|
|
|
|
func (*Client) Type() interface{} {
|
|
|
|
@ -24,16 +20,8 @@ func (*Client) Start() error { return nil }
|
|
|
|
|
func (*Client) Close() error { return nil }
|
|
|
|
|
|
|
|
|
|
// LookupIP implements Client.
|
|
|
|
|
func (c *Client) LookupIP(host string) ([]net.IP, error) {
|
|
|
|
|
ipAddr, err := c.resolver.LookupIPAddr(context.Background(), host)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
ips := make([]net.IP, 0, len(ipAddr))
|
|
|
|
|
for _, addr := range ipAddr {
|
|
|
|
|
ips = append(ips, addr.IP)
|
|
|
|
|
}
|
|
|
|
|
return ips, nil
|
|
|
|
|
func (*Client) LookupIP(host string) ([]net.IP, error) {
|
|
|
|
|
return net.LookupIP(host)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// LookupIPv4 implements IPv4Lookup.
|
|
|
|
@ -70,9 +58,5 @@ func (c *Client) LookupIPv6(host string) ([]net.IP, error) {
|
|
|
|
|
|
|
|
|
|
// New create a new dns.Client that queries localhost for DNS.
|
|
|
|
|
func New() *Client {
|
|
|
|
|
return &Client{
|
|
|
|
|
resolver: net.Resolver{
|
|
|
|
|
PreferGo: true,
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
return &Client{}
|
|
|
|
|
}
|
|
|
|
|