mirror of
https://github.com/taigrr/godns
synced 2025-01-18 04:03:25 -08:00
update resolver name
This commit is contained in:
parent
de42aa6073
commit
b1e94fda52
@ -1,4 +1,4 @@
|
|||||||
// Package dns_resolver is a simple dns resolver
|
// Package resolver is a simple dns resolver
|
||||||
// based on miekg/dns
|
// based on miekg/dns
|
||||||
package resolver
|
package resolver
|
||||||
|
|
||||||
@ -13,42 +13,42 @@ import (
|
|||||||
"github.com/miekg/dns"
|
"github.com/miekg/dns"
|
||||||
)
|
)
|
||||||
|
|
||||||
// DnsResolver represents a dns resolver
|
// DNSResolver represents a dns resolver
|
||||||
type DnsResolver struct {
|
type DNSResolver struct {
|
||||||
Servers []string
|
Servers []string
|
||||||
RetryTimes int
|
RetryTimes int
|
||||||
r *rand.Rand
|
r *rand.Rand
|
||||||
}
|
}
|
||||||
|
|
||||||
// New initializes DnsResolver.
|
// New initializes DnsResolver.
|
||||||
func New(servers []string) *DnsResolver {
|
func New(servers []string) *DNSResolver {
|
||||||
for i := range servers {
|
for i := range servers {
|
||||||
servers[i] = net.JoinHostPort(servers[i], "53")
|
servers[i] = net.JoinHostPort(servers[i], "53")
|
||||||
}
|
}
|
||||||
|
|
||||||
return &DnsResolver{servers, len(servers) * 2, rand.New(rand.NewSource(time.Now().UnixNano()))}
|
return &DNSResolver{servers, len(servers) * 2, rand.New(rand.NewSource(time.Now().UnixNano()))}
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewFromResolvConf initializes DnsResolver from resolv.conf like file.
|
// NewFromResolvConf initializes DnsResolver from resolv.conf like file.
|
||||||
func NewFromResolvConf(path string) (*DnsResolver, error) {
|
func NewFromResolvConf(path string) (*DNSResolver, error) {
|
||||||
if _, err := os.Stat(path); os.IsNotExist(err) {
|
if _, err := os.Stat(path); os.IsNotExist(err) {
|
||||||
return &DnsResolver{}, errors.New("no such file or directory: " + path)
|
return &DNSResolver{}, errors.New("no such file or directory: " + path)
|
||||||
}
|
}
|
||||||
config, err := dns.ClientConfigFromFile(path)
|
config, err := dns.ClientConfigFromFile(path)
|
||||||
servers := []string{}
|
servers := []string{}
|
||||||
for _, ipAddress := range config.Servers {
|
for _, ipAddress := range config.Servers {
|
||||||
servers = append(servers, net.JoinHostPort(ipAddress, "53"))
|
servers = append(servers, net.JoinHostPort(ipAddress, "53"))
|
||||||
}
|
}
|
||||||
return &DnsResolver{servers, len(servers) * 2, rand.New(rand.NewSource(time.Now().UnixNano()))}, err
|
return &DNSResolver{servers, len(servers) * 2, rand.New(rand.NewSource(time.Now().UnixNano()))}, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// LookupHost returns IP addresses of provied host.
|
// LookupHost returns IP addresses of provied host.
|
||||||
// In case of timeout retries query RetryTimes times.
|
// In case of timeout retries query RetryTimes times.
|
||||||
func (r *DnsResolver) LookupHost(host string, dnsType uint16) ([]net.IP, error) {
|
func (r *DNSResolver) LookupHost(host string, dnsType uint16) ([]net.IP, error) {
|
||||||
return r.lookupHost(host, dnsType, r.RetryTimes)
|
return r.lookupHost(host, dnsType, r.RetryTimes)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *DnsResolver) lookupHost(host string, dnsType uint16, triesLeft int) ([]net.IP, error) {
|
func (r *DNSResolver) lookupHost(host string, dnsType uint16, triesLeft int) ([]net.IP, error) {
|
||||||
m1 := new(dns.Msg)
|
m1 := new(dns.Msg)
|
||||||
m1.Id = dns.Id()
|
m1.Id = dns.Id()
|
||||||
m1.RecursionDesired = true
|
m1.RecursionDesired = true
|
||||||
|
Loading…
x
Reference in New Issue
Block a user