nps/core/handler/dns.go
2022-01-23 17:30:38 +08:00

36 lines
660 B
Go

package handler
import (
"ehang.io/nps/lib/enet"
"ehang.io/nps/lib/logger"
"github.com/miekg/dns"
"go.uber.org/zap"
)
type DnsHandler struct {
DefaultHandler
}
func (dh *DnsHandler) GetName() string {
return "dns"
}
func (dh *DnsHandler) GetZhName() string {
return "dns协议"
}
func (dh *DnsHandler) HandlePacketConn(pc enet.PacketConn) (bool, error) {
b, _, err := pc.FirstPacket()
if err != nil {
logger.Warn("firstPacket error", zap.Error(err))
return false, nil
}
m := new(dns.Msg)
err = m.Unpack(b)
if err != nil {
logger.Debug("parse dns request error", zap.Error(err))
return false, nil
}
return dh.processPacketConn(pc)
}