2025-07-24 00:00:26 +08:00
|
|
|
package middlewares
|
|
|
|
|
|
|
|
import (
|
2025-07-24 16:10:47 +08:00
|
|
|
"github.com/OpenListTeam/OpenList/v4/internal/conf"
|
2025-07-24 00:00:26 +08:00
|
|
|
"github.com/gin-gonic/gin"
|
|
|
|
log "github.com/sirupsen/logrus"
|
|
|
|
)
|
|
|
|
|
2025-07-24 16:10:47 +08:00
|
|
|
// UnifiedFilteredLogger returns a filtered logger using global configuration
|
|
|
|
// serverType: "http" for main HTTP server, "s3" for S3 server
|
|
|
|
func UnifiedFilteredLogger(serverType string) gin.HandlerFunc {
|
|
|
|
config := conf.Conf.Log.Filter
|
2025-07-24 00:00:26 +08:00
|
|
|
|
2025-07-24 16:10:47 +08:00
|
|
|
if !config.EnableFiltering {
|
|
|
|
// Return standard Gin logger if filtering is disabled
|
|
|
|
return gin.LoggerWithWriter(log.StandardLogger().Out)
|
2025-07-24 00:00:26 +08:00
|
|
|
}
|
|
|
|
|
2025-07-24 16:10:47 +08:00
|
|
|
loggerConfig := FilteredLoggerConfig{
|
2025-07-24 00:00:26 +08:00
|
|
|
Output: log.StandardLogger().Out,
|
|
|
|
}
|
|
|
|
|
|
|
|
// Add health check paths
|
2025-07-24 16:10:47 +08:00
|
|
|
if config.FilterHealthChecks {
|
|
|
|
loggerConfig.SkipPaths = append(loggerConfig.SkipPaths, "/ping")
|
2025-07-24 00:00:26 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
// Add HEAD method filtering
|
2025-07-24 16:10:47 +08:00
|
|
|
if config.FilterHEADRequests {
|
|
|
|
loggerConfig.SkipMethods = append(loggerConfig.SkipMethods, "HEAD")
|
2025-07-24 00:00:26 +08:00
|
|
|
}
|
|
|
|
|
2025-07-24 16:10:47 +08:00
|
|
|
// Add WebDAV filtering only for HTTP server (not for S3)
|
|
|
|
if config.FilterWebDAV && serverType == "http" {
|
|
|
|
loggerConfig.SkipPathPrefixes = append(loggerConfig.SkipPathPrefixes, "/dav/")
|
|
|
|
loggerConfig.SkipMethods = append(loggerConfig.SkipMethods, "PROPFIND")
|
2025-07-24 00:00:26 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
// Add custom configurations
|
2025-07-24 16:10:47 +08:00
|
|
|
loggerConfig.SkipPaths = append(loggerConfig.SkipPaths, config.CustomSkipPaths...)
|
|
|
|
loggerConfig.SkipMethods = append(loggerConfig.SkipMethods, config.CustomSkipMethods...)
|
|
|
|
loggerConfig.SkipPathPrefixes = append(loggerConfig.SkipPathPrefixes, config.CustomSkipPrefixes...)
|
2025-07-24 00:00:26 +08:00
|
|
|
|
2025-07-24 16:10:47 +08:00
|
|
|
return FilteredLoggerWithConfig(loggerConfig)
|
2025-07-24 00:00:26 +08:00
|
|
|
}
|
|
|
|
|
2025-07-24 16:10:47 +08:00
|
|
|
// HTTPFilteredLogger returns a filtered logger for the main HTTP server
|
|
|
|
func HTTPFilteredLogger() gin.HandlerFunc {
|
|
|
|
return UnifiedFilteredLogger("http")
|
|
|
|
}
|
|
|
|
|
|
|
|
// S3FilteredLogger returns a filtered logger for the S3 server
|
|
|
|
func S3FilteredLogger() gin.HandlerFunc {
|
|
|
|
return UnifiedFilteredLogger("s3")
|
2025-07-24 00:00:26 +08:00
|
|
|
}
|