Skip to content

Commit 3d17ff2

Browse files
committed
Add logger middleware on DNS server
1 parent f11a499 commit 3d17ff2

File tree

5 files changed

+40
-9
lines changed

5 files changed

+40
-9
lines changed

cmd/server/dns.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ func StartDNSServer(service dns.Service, addr, net string) (*server.Server, chan
1212
dnsServer := server.NewDnsServer(service, addr, net)
1313

1414
go func() {
15-
log.Printf("Starting DNS server on %s (%s)", addr, net)
15+
log.Printf("[DNS] Starting server on %s (%s)", addr, net)
1616
if err := dnsServer.Start(); err != nil {
17-
errChan <- fmt.Errorf("DNS server error: %w", err)
17+
errChan <- fmt.Errorf("[DNS] Server error: %w", err)
1818
}
1919
}()
2020

cmd/server/http.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@ func StartHTTPServer(service dns.Service, addr, token string) (*http.Server, cha
1414
httpServer := http.NewHTTPServer(handler, addr, token)
1515

1616
go func() {
17-
log.Printf("Starting HTTP server on %s", addr)
17+
log.Printf("[HTTP] Starting server on %s", addr)
1818
if err := httpServer.Start(); err != nil {
19-
errChan <- fmt.Errorf("HTTP server error: %w", err)
19+
errChan <- fmt.Errorf("[HTTP] Server error: %w", err)
2020
}
2121
}()
2222

cmd/server/shutdown.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,18 +34,18 @@ func WaitForShutdown(cancel context.CancelFunc, dnsServer *dns.Server, httpServe
3434
go func() {
3535
defer wg.Done()
3636
if err := dnsServer.Shutdown(shutdownCtx); err != nil {
37-
log.Printf("DNS server shutdown error: %v", err)
37+
log.Printf("[DNS] Server shutdown error: %v", err)
3838
} else {
39-
log.Println("DNS server stopped gracefully")
39+
log.Println("[DNS] Server stopped gracefully")
4040
}
4141
}()
4242

4343
go func() {
4444
defer wg.Done()
4545
if err := httpServer.Shutdown(shutdownCtx); err != nil {
46-
log.Printf("HTTP server shutdown error: %v", err)
46+
log.Printf("[HTTP] Server shutdown error: %v", err)
4747
} else {
48-
log.Println("HTTP server stopped gracefully")
48+
log.Println("[HTTP] Server stopped gracefully")
4949
}
5050
}()
5151

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package middleware
2+
3+
import (
4+
"github.com/miekg/dns"
5+
"log"
6+
"net"
7+
"time"
8+
)
9+
10+
func LoggingMiddleware(next dns.HandlerFunc) dns.HandlerFunc {
11+
return func(w dns.ResponseWriter, r *dns.Msg) {
12+
start := time.Now()
13+
14+
next(w, r)
15+
16+
var domain, qType string
17+
if len(r.Question) > 0 {
18+
domain = r.Question[0].Name
19+
qType = dns.TypeToString[r.Question[0].Qtype]
20+
}
21+
22+
duration := time.Since(start)
23+
clientIP, _, _ := net.SplitHostPort(w.RemoteAddr().String())
24+
rCode := dns.RcodeToString[r.Rcode]
25+
26+
log.Printf("[DNS] %s IN %s | %s | %s | %s",
27+
domain, qType, rCode, duration, clientIP,
28+
)
29+
}
30+
}

internal/adapters/dns/server.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package dns
33
import (
44
"context"
55
server "github.com/miekg/dns"
6+
"go-dyndns/internal/adapters/dns/middleware"
67
"go-dyndns/internal/core/dns"
78
)
89

@@ -13,7 +14,7 @@ type Server struct {
1314
func NewDnsServer(service dns.Service, addr, net string) *Server {
1415
handler := NewDnsHandler(service)
1516
dnsServer := &server.Server{Addr: addr, Net: net}
16-
server.HandleFunc(".", handler.HandleDNSRequest)
17+
server.HandleFunc(".", middleware.LoggingMiddleware(handler.HandleDNSRequest))
1718

1819
return &Server{DnsServer: dnsServer}
1920

0 commit comments

Comments
 (0)