pancheri/resolver.go

42 lines
694 B
Go
Raw Normal View History

2023-10-01 20:43:10 +00:00
package pancheri
import (
"github.com/miekg/dns"
"github.com/sirupsen/logrus"
)
type Resolver struct {
client *dns.Client
upstream string
}
func NewResolver(upstream string) *Resolver {
return &Resolver{
client: new(dns.Client),
upstream: upstream,
}
}
func (r *Resolver) Resolve(domain string, qtype uint16) error {
logrus.WithFields(logrus.Fields{
"domain": domain,
"qtype": qtype,
}).Trace("performing upstream resolution")
m := new(dns.Msg)
m.SetQuestion(dns.Fqdn(domain), qtype)
m.RecursionDesired = true
in, _, err := r.client.Exchange(m, r.upstream)
if err != nil {
return err
}
for _, ans := range in.Answer {
logrus.Debug(ans)
}
return nil
}