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