diff --git a/resolver.go b/resolver.go index f8f886e..366fe8e 100644 --- a/resolver.go +++ b/resolver.go @@ -21,73 +21,6 @@ const ( DNS_CACHE_SIZE_LIMIT = 1024 ) -func NewResolver(address string, timeout time.Duration) (*Resolver, error) { - opts := upstream.Options{Timeout: timeout} - u, err := upstream.AddressToUpstream(address, opts) - if err != nil { - return nil, err - } - return &Resolver{upstream: u}, nil -} - -func (r *Resolver) ResolveA(domain string) []string { - res := make([]string, 0) - if len(domain) == 0 { - return res - } - domain = absDomain(domain) - - req := dns.Msg{} - req.Id = dns.Id() - req.RecursionDesired = true - req.Question = []dns.Question{ - {Name: domain, Qtype: dns.TypeA, Qclass: dns.ClassINET}, - } - reply, err := r.upstream.Exchange(&req) - if err != nil { - return res - } - for _, rr := range reply.Answer { - if a, ok := rr.(*dns.A); ok { - res = append(res, a.A.String()) - } - } - return res -} - -func (r *Resolver) ResolveAAAA(domain string) []string { - res := make([]string, 0) - if len(domain) == 0 { - return res - } - domain = absDomain(domain) - - req := dns.Msg{} - req.Id = dns.Id() - req.RecursionDesired = true - req.Question = []dns.Question{ - {Name: domain, Qtype: dns.TypeAAAA, Qclass: dns.ClassINET}, - } - reply, err := r.upstream.Exchange(&req) - if err != nil { - return res - } - for _, rr := range reply.Answer { - if a, ok := rr.(*dns.AAAA); ok { - res = append(res, a.AAAA.String()) - } - } - return res -} - -func (r *Resolver) Resolve(domain string) []string { - res := r.ResolveA(domain) - if len(res) == 0 { - res = r.ResolveAAAA(domain) - } - return res -} - type ResolvingDialer struct { next ContextDialer upstream upstream.Upstream