go-socks5/resolver.go

24 lines
556 B
Go
Raw Normal View History

2014-01-23 19:14:06 +00:00
package socks5
import (
2020-04-19 09:08:22 +00:00
"context"
2014-01-23 19:14:06 +00:00
"net"
)
// NameResolver is used to implement custom name resolution
type NameResolver interface {
Resolve(ctx context.Context, name string) (context.Context, net.IP, error)
2014-01-23 19:14:06 +00:00
}
// DNSResolver uses the system DNS to resolve host names
type DNSResolver struct{}
2020-04-22 02:15:40 +00:00
// Resolve implement interface NameResolver
func (d DNSResolver) Resolve(ctx context.Context, name string) (context.Context, net.IP, error) {
2014-01-23 21:07:13 +00:00
addr, err := net.ResolveIPAddr("ip", name)
if err != nil {
return ctx, nil, err
2014-01-23 21:07:13 +00:00
}
return ctx, addr.IP, err
2014-01-23 19:14:06 +00:00
}