chore(server): move log middleware to internal/server/middlewares/log
This commit is contained in:
@@ -6,6 +6,7 @@ import (
|
||||
"strings"
|
||||
|
||||
"github.com/qdm12/gluetun/internal/models"
|
||||
"github.com/qdm12/gluetun/internal/server/middlewares/log"
|
||||
)
|
||||
|
||||
func newHandler(ctx context.Context, logger infoWarner, logging bool,
|
||||
@@ -17,7 +18,7 @@ func newHandler(ctx context.Context, logger infoWarner, logging bool,
|
||||
publicIPLooper PublicIPLoop,
|
||||
storage Storage,
|
||||
ipv6Supported bool,
|
||||
) http.Handler {
|
||||
) (httpHandler http.Handler) {
|
||||
handler := &handler{}
|
||||
|
||||
vpn := newVPNHandler(ctx, vpnLooper, storage, ipv6Supported, logger)
|
||||
@@ -29,16 +30,19 @@ func newHandler(ctx context.Context, logger infoWarner, logging bool,
|
||||
handler.v0 = newHandlerV0(ctx, logger, vpnLooper, dnsLooper, updaterLooper)
|
||||
handler.v1 = newHandlerV1(logger, buildInfo, vpn, openvpn, dns, updater, publicip)
|
||||
|
||||
handlerWithLog := withLogMiddleware(handler, logger, logging)
|
||||
handler.setLogEnabled = handlerWithLog.setEnabled
|
||||
|
||||
return handlerWithLog
|
||||
middlewares := []func(http.Handler) http.Handler{
|
||||
log.New(logger, logging),
|
||||
}
|
||||
httpHandler = handler
|
||||
for _, middleware := range middlewares {
|
||||
httpHandler = middleware(httpHandler)
|
||||
}
|
||||
return httpHandler
|
||||
}
|
||||
|
||||
type handler struct {
|
||||
v0 http.Handler
|
||||
v1 http.Handler
|
||||
setLogEnabled func(enabled bool)
|
||||
v0 http.Handler
|
||||
v1 http.Handler
|
||||
}
|
||||
|
||||
func (h *handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
5
internal/server/middlewares/log/interfaces.go
Normal file
5
internal/server/middlewares/log/interfaces.go
Normal file
@@ -0,0 +1,5 @@
|
||||
package log
|
||||
|
||||
type Logger interface {
|
||||
Info(message string)
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package server
|
||||
package log
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
@@ -7,18 +7,21 @@ import (
|
||||
"time"
|
||||
)
|
||||
|
||||
func withLogMiddleware(childHandler http.Handler, logger infoer, enabled bool) *logMiddleware {
|
||||
return &logMiddleware{
|
||||
childHandler: childHandler,
|
||||
logger: logger,
|
||||
timeNow: time.Now,
|
||||
enabled: enabled,
|
||||
func New(logger Logger, enabled bool) (
|
||||
middleware func(http.Handler) http.Handler) {
|
||||
return func(handler http.Handler) http.Handler {
|
||||
return &logMiddleware{
|
||||
childHandler: handler,
|
||||
logger: logger,
|
||||
timeNow: time.Now,
|
||||
enabled: enabled,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
type logMiddleware struct {
|
||||
childHandler http.Handler
|
||||
logger infoer
|
||||
logger Logger
|
||||
timeNow func() time.Time
|
||||
enabled bool
|
||||
enabledMu sync.RWMutex
|
||||
@@ -39,7 +42,7 @@ func (m *logMiddleware) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||
r.RemoteAddr + " in " + duration.String())
|
||||
}
|
||||
|
||||
func (m *logMiddleware) setEnabled(enabled bool) {
|
||||
func (m *logMiddleware) SetEnabled(enabled bool) {
|
||||
m.enabledMu.Lock()
|
||||
defer m.enabledMu.Unlock()
|
||||
m.enabled = enabled
|
||||
Reference in New Issue
Block a user