52 lines
1.2 KiB
Go
52 lines
1.2 KiB
Go
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")
|
|
}
|