SpoofDPI/doh/dns.go

42 lines
571 B
Go
Raw Normal View History

2022-01-10 14:41:31 +00:00
package doh
2022-01-10 14:20:23 +00:00
import (
2022-03-11 04:23:15 +00:00
"errors"
2022-01-10 14:20:23 +00:00
"sync"
"github.com/babolivier/go-doh-client"
)
var resolver *doh.Resolver
var once sync.Once
func Init(dns string) {
getInstance().Host = dns
}
2022-01-10 14:41:31 +00:00
func Lookup(domain string) (string, error) {
2022-01-10 14:20:23 +00:00
a, _, err := resolver.LookupA(domain)
if err != nil {
return "", err
}
2022-03-11 04:23:15 +00:00
if len(a) < 1 {
return "", errors.New(" couldn't resolve the domain")
}
2022-01-10 14:20:23 +00:00
ip := a[0].IP4
return ip, nil
}
func getInstance() *doh.Resolver {
once.Do(func() {
resolver = &doh.Resolver{
Host: "",
Class: doh.IN,
}
})
return resolver
}