diff options
| -rw-r--r-- | lib/dns/dns.go | 18 | ||||
| -rw-r--r-- | lib/dns/request.go | 14 | ||||
| -rw-r--r-- | lib/dns/server.go | 67 |
3 files changed, 38 insertions, 61 deletions
diff --git a/lib/dns/dns.go b/lib/dns/dns.go index 5e9395d6..8e13200d 100644 --- a/lib/dns/dns.go +++ b/lib/dns/dns.go @@ -66,24 +66,6 @@ var ( clientTimeout = 60 * time.Second ) -type connType byte - -// List of known connection type. -const ( - connTypeUDP connType = 1 << iota - connTypeTCP - connTypeDoH - connTypeDoT -) - -// connTypeNames contains a mapping between connection type and its name. -var connTypeNames = map[connType]string{ - connTypeUDP: "UDP", - connTypeTCP: "TCP", - connTypeDoH: "DoH", - connTypeDoT: "DoT", -} - // OpCode define a custom type for DNS header operation code. type OpCode byte diff --git a/lib/dns/request.go b/lib/dns/request.go index dd1b0925..2b500f81 100644 --- a/lib/dns/request.go +++ b/lib/dns/request.go @@ -10,6 +10,14 @@ import ( "time" ) +// List of connection type for [request.kind]. +const ( + connTypeDoH = `DoH` + connTypeDoT = `DoT` + connTypeTCP = `TCP` + connTypeUDP = `UDP` +) + // request contains UDP address and DNS query message from client. // // If Kind is UDP, Sender and UDPAddr must be non nil. @@ -31,9 +39,9 @@ type request struct { // startAt set the start time the request received by server. startAt time.Time - // Kind define the connection type that this request is belong to, - // e.g. UDP, TCP, or DoH. - kind connType + // kind define the connection type that this request is belong to: + // DOH, DOT, TCP, or UDP. + kind string } // newRequest create and initialize request. diff --git a/lib/dns/server.go b/lib/dns/server.go index 438c36dd..f834a38b 100644 --- a/lib/dns/server.go +++ b/lib/dns/server.go @@ -522,7 +522,7 @@ func (srv *Server) incForwarder() { srv.fwLocker.Unlock() } -func (srv *Server) serveTCPClient(logp string, cl *TCPClient, kind connType) { +func (srv *Server) serveTCPClient(logp string, cl *TCPClient, kind string) { for { var err error var req = newRequest() @@ -594,8 +594,7 @@ func (srv *Server) processRequest() { } if srv.opts.Debug&DebugLevelCache != 0 { - log.Printf(`> %s - - %s - - -`, - connTypeNames[req.kind], req.String()) + log.Printf(`> %s - - %s - - -`, req.kind, req.String()) } an = srv.Caches.query(req.message) @@ -610,8 +609,7 @@ func (srv *Server) processRequest() { default: if srv.opts.Debug&DebugLevelCache != 0 { log.Printf(`* %s - - %s - - -: no active forwarders`, - connTypeNames[req.kind], - req.String()) + req.kind, req.String()) } req.error(RCodeErrServer) } @@ -630,8 +628,7 @@ func (srv *Server) processRequest() { default: if srv.opts.Debug&DebugLevelCache != 0 { log.Printf(`* %s - - %s - - -: answer is expired and no active forwarders`, - connTypeNames[req.kind], - req.String()) + req.kind, req.String()) } req.error(RCodeErrServer) } @@ -644,14 +641,12 @@ func (srv *Server) processRequest() { _, err = req.writer.Write(res.packet) if err != nil { - log.Printf(`! %s - - %s - - -: %s`, - connTypeNames[req.kind], an.String(), err) + log.Printf(`! %s - - %s - - -: %s`, req.kind, an.String(), err) continue } if srv.opts.Debug&DebugLevelCache != 0 { - log.Printf(`< %s - - %s - - -`, - connTypeNames[req.kind], an.String()) + log.Printf(`< %s - - %s - - -`, req.kind, an.String()) } } } @@ -785,9 +780,8 @@ func (srv *Server) dohForwarder(tag, nameserver string) { res, err = forwarder.Query(req.message) if err != nil { log.Printf(`! %s %s %s %s - - -: forward failed %s`, - connTypeNames[req.kind], - tag, nameserver, req.String(), - err) + req.kind, tag, nameserver, + req.String(), err) if !errors.Is(err, errInvalidMessage) { isRunning = false } @@ -801,20 +795,20 @@ func (srv *Server) dohForwarder(tag, nameserver string) { avgElapsed := time.Duration(totalElapsed / totalQuery) if err != nil { log.Printf(`! %s %s %s %s %v %d %v: %s`, - connTypeNames[req.kind], - tag, nameserver, req.String(), + req.kind, tag, nameserver, + req.String(), elapsed, totalQuery, avgElapsed, err) continue } if srv.opts.Debug&DebugLevelCache != 0 { if isInserted { log.Printf(`+ %s %s %s %s %v %d %v`, - connTypeNames[req.kind], + req.kind, tag, nameserver, an.String(), elapsed, totalQuery, avgElapsed) } else { log.Printf(`# %s %s %s %s %v %d %v`, - connTypeNames[req.kind], + req.kind, tag, nameserver, an.String(), elapsed, totalQuery, avgElapsed) } @@ -889,9 +883,8 @@ func (srv *Server) tlsForwarder(tag, nameserver string) { res, err = forwarder.Query(req.message) if err != nil { log.Printf(`! %s %s %s %s - - -: forward failed %s`, - connTypeNames[req.kind], - logp, tag, req.String(), - err) + req.kind, logp, tag, + req.String(), err) if !errors.Is(err, errInvalidMessage) { isRunning = false } @@ -905,8 +898,7 @@ func (srv *Server) tlsForwarder(tag, nameserver string) { avgElapsed := time.Duration(totalElapsed / totalQuery) if err != nil { log.Printf(`! %s %s %s %s %v %d %v: %s`, - connTypeNames[req.kind], - tag, nameserver, + req.kind, tag, nameserver, req.String(), elapsed, totalQuery, avgElapsed, err) continue @@ -914,12 +906,12 @@ func (srv *Server) tlsForwarder(tag, nameserver string) { if srv.opts.Debug&DebugLevelCache != 0 { if isInserted { log.Printf(`+ %s %s %s %s %v %d %v`, - connTypeNames[req.kind], + req.kind, tag, nameserver, an.String(), elapsed, totalQuery, avgElapsed) } else { log.Printf(`# %s %s %s %s %v %d %v`, - connTypeNames[req.kind], + req.kind, tag, nameserver, an.String(), elapsed, totalQuery, avgElapsed) } @@ -986,8 +978,7 @@ func (srv *Server) tcpForwarder(tag, nameserver string) { cl.Close() if err != nil { log.Printf(`! %s %s %s %s - - -: forward failed %s`, - connTypeNames[req.kind], - tag, nameserver, req.String(), err) + req.kind, tag, nameserver, req.String(), err) continue } @@ -998,21 +989,18 @@ func (srv *Server) tcpForwarder(tag, nameserver string) { avgElapsed := time.Duration(totalElapsed / totalQuery) if err != nil { log.Printf(`! %s %s %s %s %v %d %v: %s`, - connTypeNames[req.kind], - tag, nameserver, req.String(), + req.kind, tag, nameserver, req.String(), elapsed, totalQuery, avgElapsed, err) continue } if srv.opts.Debug&DebugLevelCache != 0 { if isInserted { log.Printf(`+ %s %s %s %s %v %d %v`, - connTypeNames[req.kind], - tag, nameserver, an.String(), + req.kind, tag, nameserver, an.String(), elapsed, totalQuery, avgElapsed) } else { log.Printf(`# %s %s %s %s %v %d %v`, - connTypeNames[req.kind], - tag, nameserver, an.String(), + req.kind, tag, nameserver, an.String(), elapsed, totalQuery, avgElapsed) } } @@ -1088,9 +1076,8 @@ func (srv *Server) udpForwarder(tag, nameserver string) { res, err = forwarder.Query(req.message) if err != nil { log.Printf(`! %s %s %s %s - - -: forward failed %s`, - connTypeNames[req.kind], - tag, nameserver, req.String(), - err) + req.kind, tag, nameserver, + req.String(), err) if !errors.Is(err, errInvalidMessage) { isRunning = false } @@ -1104,20 +1091,20 @@ func (srv *Server) udpForwarder(tag, nameserver string) { avgElapsed := time.Duration(totalElapsed / totalQuery) if err != nil { log.Printf(`! %s %s %s %s %v %d %v: %s`, - connTypeNames[req.kind], - tag, nameserver, req.String(), + req.kind, tag, nameserver, + req.String(), elapsed, totalQuery, avgElapsed, err) continue } if srv.opts.Debug&DebugLevelCache != 0 { if isInserted { log.Printf(`+ %s %s %s %s %v %d %v`, - connTypeNames[req.kind], + req.kind, tag, nameserver, an.String(), elapsed, totalQuery, avgElapsed) } else { log.Printf(`# %s %s %s %s %v %d %v`, - connTypeNames[req.kind], + req.kind, tag, nameserver, an.String(), elapsed, totalQuery, avgElapsed) } |
