package api import ( "cafe/config" "net/http" "strings" "time" "github.com/gin-contrib/cors" "github.com/gin-gonic/gin" "github.com/sirupsen/logrus" ) func myLogger() gin.HandlerFunc { return func(c *gin.Context) { if logrus.GetLevel() != logrus.TraceLevel { return } reqUri := c.Request.RequestURI if strings.Contains(reqUri, "/storage") { return } startTime := time.Now() c.Next() endTime := time.Now() latencyTime := endTime.Sub(startTime) logrus.WithFields(logrus.Fields{ "status": http.StatusText(c.Writer.Status()), "latency": latencyTime, "client": c.ClientIP(), "method": c.Request.Method, }).Trace(reqUri) } } func authHeader() gin.HandlerFunc { return func(c *gin.Context) { c.Writer.Header().Set("Remote-Groups", c.Request.Header.Get("Remote-Groups")) c.Writer.Header().Set("Remote-Name", c.Request.Header.Get("Remote-Name")) } } func (a *Api) SetMiddlewares() { a.Router.Use(myLogger()) a.Router.Use(gin.Recovery()) a.Router.Use(cors.Default()) _ = a.Router.SetTrustedProxies(nil) a.Router.MaxMultipartMemory = 8 << 20 // 8 MiB logrus.WithFields(logrus.Fields{ "allowedOrigins": config.Cafe.AllowedHosts, }).Debug("Middlewares set") }