mirror of
https://github.com/ehang-io/nps.git
synced 2025-07-02 04:00:42 +00:00
36 lines
660 B
Go
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)
|
|
}
|