1
0
Fork 0

Adding simple resolver interface

logger
Armon Dadgar 2014-01-23 11:14:06 -08:00
parent 6dd53a5bda
commit 7223243430
2 changed files with 35 additions and 0 deletions

17
resolver.go Normal file
View File

@ -0,0 +1,17 @@
package socks5
import (
"net"
)
// NameResolver is used to implement custom name resolution
type NameResolver interface {
Resolve(name string) (*net.IPAddr, error)
}
// DNSResolver uses the system DNS to resolve host names
type DNSResolver struct{}
func (d DNSResolver) Resolve(name string) (*net.IPAddr, error) {
return net.ResolveIPAddr("ip", name)
}

18
resolver_test.go Normal file
View File

@ -0,0 +1,18 @@
package socks5
import (
"testing"
)
func TestDNSResolver(t *testing.T) {
d := DNSResolver{}
addr, err := d.Resolve("localhost")
if err != nil {
t.Fatalf("err: %v", err)
}
if !addr.IP.IsLoopback() {
t.Fatalf("expected loopback")
}
}