This commit is contained in:
Zeev Diukman 2024-09-10 13:38:02 +00:00
parent 96ba425ae9
commit c796300e9b

View file

@ -9,16 +9,16 @@ import (
"strings" "strings"
"time" "time"
"github.com/miekg/dns" miekgDNS "github.com/miekg/dns"
"github.com/spf13/viper" "github.com/spf13/viper"
"github.com/zeevdiukman/z/helper" "github.com/zeevdiukman/z/helper"
) )
type ResponseWriter = dns.ResponseWriter type ResponseWriter = miekgDNS.ResponseWriter
type Msg = dns.Msg type Msg = miekgDNS.Msg
type HandlerFunc = dns.HandlerFunc type HandlerFunc = miekgDNS.HandlerFunc
// func(dns.ResponseWriter, *dns.Msg) // func(miekgDNS.ResponseWriter, *miekgDNS.Msg)
type DNS struct { type DNS struct {
Config Config Config Config
Server Server Server Server
@ -32,11 +32,11 @@ type Config struct {
} }
type Server struct { type Server struct {
*dns.Server *miekgDNS.Server
} }
type Mux struct { type Mux struct {
*dns.ServeMux *miekgDNS.ServeMux
} }
type Records struct { type Records struct {
@ -75,14 +75,14 @@ func (a *DNS) ConfigInit(filePath string) {
} }
func (a *DNS) ServerInit() { func (a *DNS) ServerInit() {
port := a.Config.GetInt("port") port := a.Config.GetInt("port")
a.Server.Server = &dns.Server{ a.Server.Server = &miekgDNS.Server{
Addr: ":" + strconv.Itoa(port), Addr: ":" + strconv.Itoa(port),
Net: a.Config.GetString("network"), Net: a.Config.GetString("network"),
Handler: nil, Handler: nil,
} }
} }
func (a *DNS) MuxInit() { func (a *DNS) MuxInit() {
a.Mux.ServeMux = dns.NewServeMux() a.Mux.ServeMux = miekgDNS.NewServeMux()
} }
func NewResolver(DNSserverAddr string) *Resolver { func NewResolver(DNSserverAddr string) *Resolver {
@ -97,8 +97,8 @@ func NewResolver(DNSserverAddr string) *Resolver {
} }
} }
func (a *DNS) Handler(f func(a *DNS, w dns.ResponseWriter, r *dns.Msg)) dns.HandlerFunc { func (a *DNS) Handler(f func(a *DNS, w miekgDNS.ResponseWriter, r *miekgDNS.Msg)) miekgDNS.HandlerFunc {
return func(w dns.ResponseWriter, r *dns.Msg) { return func(w miekgDNS.ResponseWriter, r *miekgDNS.Msg) {
f(a, w, r) f(a, w, r)
} }
} }
@ -117,9 +117,9 @@ func (r *Resolver) Lookup(lookupAddr string, DNSserverAddr string) string {
return resp[0] return resp[0]
} }
func (a *DNS) HandleTypeA(w dns.ResponseWriter, r *dns.Msg) { func (a *DNS) HandleTypeA(w miekgDNS.ResponseWriter, r *miekgDNS.Msg) {
t := time.Now() t := time.Now()
msg := &dns.Msg{} msg := &miekgDNS.Msg{}
msg.SetReply(r) msg.SetReply(r)
q := r.Question[0] q := r.Question[0]
domainName := helper.FtoD(q.Name) domainName := helper.FtoD(q.Name)
@ -143,19 +143,19 @@ func (a *DNS) HandleTypeA(w dns.ResponseWriter, r *dns.Msg) {
} }
} }
RR_Header := dns.RR_Header{ RR_Header := miekgDNS.RR_Header{
Name: dns.Fqdn(domainName), Name: miekgDNS.Fqdn(domainName),
Rrtype: dns.TypeA, Rrtype: miekgDNS.TypeA,
Class: dns.ClassINET, Class: miekgDNS.ClassINET,
Ttl: 3600, Ttl: 3600,
} }
answer_typeA := &dns.A{ answer_typeA := &miekgDNS.A{
Hdr: RR_Header, Hdr: RR_Header,
A: net.ParseIP(ip).To4(), A: net.ParseIP(ip).To4(),
} }
msg.Authoritative = true msg.Authoritative = true
msg.RecursionDesired = false msg.RecursionDesired = false
msg.SetRcode(r, dns.RcodeSuccess) msg.SetRcode(r, miekgDNS.RcodeSuccess)
msg.Answer = append(msg.Answer, answer_typeA) msg.Answer = append(msg.Answer, answer_typeA)
tt := time.Since(t) tt := time.Since(t)
helper.P(tt, " => ", domainName) helper.P(tt, " => ", domainName)