41 lines
719 B
Go
41 lines
719 B
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"github.com/miekg/dns"
|
||
|
"time"
|
||
|
)
|
||
|
|
||
|
type Resolver struct {
|
||
|
config *dns.ClientConfig
|
||
|
}
|
||
|
|
||
|
func (r *Resolver) Lookup(net string, req *dns.Msg) {
|
||
|
c := &dns.Client{
|
||
|
Net: net,
|
||
|
ReadTimeout: r.Timeout(),
|
||
|
WriteTimeout: r.Timeout(),
|
||
|
}
|
||
|
|
||
|
for _, nameserver := range r.Nameservers() {
|
||
|
r, rtt, _ := c.Exchange(req, nameserver)
|
||
|
fmt.Println(r)
|
||
|
fmt.Println(rtt)
|
||
|
|
||
|
}
|
||
|
// r,rtt,_:c.Exchange(req, a)
|
||
|
|
||
|
}
|
||
|
|
||
|
func (r *Resolver) Nameservers() (ns []string) {
|
||
|
for _, server := range r.config.Servers {
|
||
|
nameserver := server + ":" + r.config.Port
|
||
|
ns = append(ns, nameserver)
|
||
|
}
|
||
|
return
|
||
|
}
|
||
|
|
||
|
func (r *Resolver) Timeout() time.Duration {
|
||
|
return time.Duration(r.config.Timeout) * time.Second
|
||
|
}
|