Better logging
This commit is contained in:
parent
96a9f4aa91
commit
f1fe01f725
@ -2,6 +2,7 @@ package middleware
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/TicketsBot/GoPanel/config"
|
||||
"github.com/getsentry/sentry-go"
|
||||
"github.com/gin-gonic/gin"
|
||||
"io/ioutil"
|
||||
@ -9,10 +10,14 @@ import (
|
||||
)
|
||||
|
||||
func Logging(ctx *gin.Context) {
|
||||
defer ctx.Next()
|
||||
ctx.Next()
|
||||
|
||||
statusCode := ctx.Writer.Status()
|
||||
|
||||
if !config.Conf.Debug && statusCode >= 200 && statusCode <= 299 {
|
||||
return
|
||||
}
|
||||
|
||||
level := sentry.LevelInfo
|
||||
if statusCode >= 500 {
|
||||
level = sentry.LevelError
|
||||
@ -26,7 +31,7 @@ func Logging(ctx *gin.Context) {
|
||||
"method": ctx.Request.Method,
|
||||
"path": ctx.Request.URL.Path,
|
||||
"guild_id": ctx.Keys["guildid"],
|
||||
"user_id": ctx.Keys["user_id"],
|
||||
"user_id": ctx.Keys["userid"],
|
||||
"body": string(body),
|
||||
},
|
||||
Level: level,
|
||||
|
@ -69,7 +69,7 @@ func CreateRateLimiter(rlType RateLimitType, max int, period time.Duration) gin.
|
||||
|
||||
func writeHeaders(ctx *gin.Context, res *redis_rate.Result) {
|
||||
ctx.Keys["rl_sr"] = res.Remaining
|
||||
fmt.Println(res.Remaining)
|
||||
|
||||
ctx.Header("X-RateLimit-Limit", strconv.Itoa(res.Limit.Rate))
|
||||
ctx.Header("X-RateLimit-Remaining", strconv.Itoa(res.Remaining))
|
||||
ctx.Header("X-RateLimit-Reset-After", strconv.FormatInt(res.ResetAfter.Milliseconds(), 10))
|
||||
|
@ -41,6 +41,7 @@ func StartServer() {
|
||||
|
||||
router.Use(gin.Recovery())
|
||||
router.Use(middleware.MultiReadBody)
|
||||
router.Use(middleware.Logging)
|
||||
router.Use(sentrygin.New(sentrygin.Options{})) // Defaults are ok
|
||||
|
||||
router.Use(rl(middleware.RateLimitTypeIp, 60, time.Minute))
|
||||
@ -49,24 +50,24 @@ func StartServer() {
|
||||
|
||||
router.Use(middleware.Cors(config.Conf))
|
||||
|
||||
router.GET("/webchat", root.WebChatWs, middleware.Logging)
|
||||
router.GET("/webchat", root.WebChatWs)
|
||||
|
||||
router.POST("/callback", middleware.VerifyXTicketsHeader, root.CallbackHandler, middleware.Logging)
|
||||
router.POST("/logout", middleware.VerifyXTicketsHeader, middleware.AuthenticateToken, root.LogoutHandler, middleware.Logging)
|
||||
router.POST("/callback", middleware.VerifyXTicketsHeader, root.CallbackHandler)
|
||||
router.POST("/logout", middleware.VerifyXTicketsHeader, middleware.AuthenticateToken, root.LogoutHandler)
|
||||
|
||||
apiGroup := router.Group("/api", middleware.VerifyXTicketsHeader, middleware.AuthenticateToken)
|
||||
{
|
||||
apiGroup.GET("/session", api.SessionHandler, middleware.Logging)
|
||||
apiGroup.GET("/session", api.SessionHandler)
|
||||
}
|
||||
|
||||
guildAuthApiAdmin := apiGroup.Group("/:id", middleware.AuthenticateGuild(true, permission.Admin))
|
||||
guildAuthApiSupport := apiGroup.Group("/:id", middleware.AuthenticateGuild(true, permission.Support))
|
||||
guildApiNoAuth := apiGroup.Group("/:id", middleware.ParseGuildId)
|
||||
{
|
||||
guildAuthApiSupport.GET("/channels", api.ChannelsHandler, middleware.Logging)
|
||||
guildAuthApiSupport.GET("/premium", api.PremiumHandler, middleware.Logging)
|
||||
guildAuthApiSupport.GET("/user/:user", api.UserHandler, middleware.Logging)
|
||||
guildAuthApiSupport.GET("/roles", api.RolesHandler, middleware.Logging)
|
||||
guildAuthApiSupport.GET("/channels", api.ChannelsHandler)
|
||||
guildAuthApiSupport.GET("/premium", api.PremiumHandler)
|
||||
guildAuthApiSupport.GET("/user/:user", api.UserHandler)
|
||||
guildAuthApiSupport.GET("/roles", api.RolesHandler)
|
||||
guildAuthApiSupport.GET("/members/search",
|
||||
rl(middleware.RateLimitTypeGuild, 5, time.Second),
|
||||
rl(middleware.RateLimitTypeGuild, 10, time.Second*30),
|
||||
@ -75,22 +76,22 @@ func StartServer() {
|
||||
middleware.Logging,
|
||||
)
|
||||
|
||||
guildAuthApiAdmin.GET("/settings", api_settings.GetSettingsHandler, middleware.Logging)
|
||||
guildAuthApiAdmin.POST("/settings", api_settings.UpdateSettingsHandler, middleware.Logging)
|
||||
guildAuthApiAdmin.GET("/settings", api_settings.GetSettingsHandler)
|
||||
guildAuthApiAdmin.POST("/settings", api_settings.UpdateSettingsHandler)
|
||||
|
||||
guildAuthApiSupport.GET("/blacklist", api_blacklist.GetBlacklistHandler, middleware.Logging)
|
||||
guildAuthApiSupport.POST("/blacklist/:user", api_blacklist.AddBlacklistHandler, middleware.Logging)
|
||||
guildAuthApiSupport.DELETE("/blacklist/:user", api_blacklist.RemoveBlacklistHandler, middleware.Logging)
|
||||
guildAuthApiSupport.GET("/blacklist", api_blacklist.GetBlacklistHandler)
|
||||
guildAuthApiSupport.POST("/blacklist/:user", api_blacklist.AddBlacklistHandler)
|
||||
guildAuthApiSupport.DELETE("/blacklist/:user", api_blacklist.RemoveBlacklistHandler)
|
||||
|
||||
guildAuthApiAdmin.GET("/panels", api_panels.ListPanels, middleware.Logging)
|
||||
guildAuthApiAdmin.POST("/panels", api_panels.CreatePanel, middleware.Logging)
|
||||
guildAuthApiAdmin.PATCH("/panels/:panelid", api_panels.UpdatePanel, middleware.Logging)
|
||||
guildAuthApiAdmin.DELETE("/panels/:panelid", api_panels.DeletePanel, middleware.Logging)
|
||||
guildAuthApiAdmin.GET("/panels", api_panels.ListPanels)
|
||||
guildAuthApiAdmin.POST("/panels", api_panels.CreatePanel)
|
||||
guildAuthApiAdmin.PATCH("/panels/:panelid", api_panels.UpdatePanel)
|
||||
guildAuthApiAdmin.DELETE("/panels/:panelid", api_panels.DeletePanel)
|
||||
|
||||
guildAuthApiAdmin.GET("/multipanels", api_panels.MultiPanelList, middleware.Logging)
|
||||
guildAuthApiAdmin.POST("/multipanels", api_panels.MultiPanelCreate, middleware.Logging)
|
||||
guildAuthApiAdmin.PATCH("/multipanels/:panelid", api_panels.MultiPanelUpdate, middleware.Logging)
|
||||
guildAuthApiAdmin.DELETE("/multipanels/:panelid", api_panels.MultiPanelDelete, middleware.Logging)
|
||||
guildAuthApiAdmin.GET("/multipanels", api_panels.MultiPanelList)
|
||||
guildAuthApiAdmin.POST("/multipanels", api_panels.MultiPanelCreate)
|
||||
guildAuthApiAdmin.PATCH("/multipanels/:panelid", api_panels.MultiPanelUpdate)
|
||||
guildAuthApiAdmin.DELETE("/multipanels/:panelid", api_panels.MultiPanelDelete)
|
||||
|
||||
// Should be a GET, but easier to take a body for development purposes
|
||||
guildAuthApiSupport.POST("/transcripts",
|
||||
@ -101,49 +102,49 @@ func StartServer() {
|
||||
)
|
||||
|
||||
// Allow regular users to get their own transcripts, make sure you check perms inside
|
||||
guildApiNoAuth.GET("/transcripts/:ticketId", rl(middleware.RateLimitTypeGuild, 10, 10*time.Second), api_transcripts.GetTranscriptHandler, middleware.Logging)
|
||||
guildApiNoAuth.GET("/transcripts/:ticketId", rl(middleware.RateLimitTypeGuild, 10, 10*time.Second), api_transcripts.GetTranscriptHandler)
|
||||
|
||||
guildAuthApiSupport.GET("/tickets", api_ticket.GetTickets, middleware.Logging)
|
||||
guildAuthApiSupport.GET("/tickets/:ticketId", api_ticket.GetTicket, middleware.Logging)
|
||||
guildAuthApiSupport.POST("/tickets/:ticketId", rl(middleware.RateLimitTypeGuild, 5, time.Second*5), api_ticket.SendMessage, middleware.Logging)
|
||||
guildAuthApiSupport.DELETE("/tickets/:ticketId", api_ticket.CloseTicket, middleware.Logging)
|
||||
guildAuthApiSupport.GET("/tickets", api_ticket.GetTickets)
|
||||
guildAuthApiSupport.GET("/tickets/:ticketId", api_ticket.GetTicket)
|
||||
guildAuthApiSupport.POST("/tickets/:ticketId", rl(middleware.RateLimitTypeGuild, 5, time.Second*5), api_ticket.SendMessage)
|
||||
guildAuthApiSupport.DELETE("/tickets/:ticketId", api_ticket.CloseTicket)
|
||||
|
||||
guildAuthApiSupport.GET("/tags", api_tags.TagsListHandler, middleware.Logging)
|
||||
guildAuthApiSupport.PUT("/tags", api_tags.CreateTag, middleware.Logging)
|
||||
guildAuthApiSupport.DELETE("/tags", api_tags.DeleteTag, middleware.Logging)
|
||||
guildAuthApiSupport.GET("/tags", api_tags.TagsListHandler)
|
||||
guildAuthApiSupport.PUT("/tags", api_tags.CreateTag)
|
||||
guildAuthApiSupport.DELETE("/tags", api_tags.DeleteTag)
|
||||
|
||||
guildAuthApiAdmin.GET("/claimsettings", api_settings.GetClaimSettings, middleware.Logging)
|
||||
guildAuthApiAdmin.POST("/claimsettings", api_settings.PostClaimSettings, middleware.Logging)
|
||||
guildAuthApiAdmin.GET("/claimsettings", api_settings.GetClaimSettings)
|
||||
guildAuthApiAdmin.POST("/claimsettings", api_settings.PostClaimSettings)
|
||||
|
||||
guildAuthApiAdmin.GET("/autoclose", api_autoclose.GetAutoClose, middleware.Logging)
|
||||
guildAuthApiAdmin.POST("/autoclose", api_autoclose.PostAutoClose, middleware.Logging)
|
||||
guildAuthApiAdmin.GET("/autoclose", api_autoclose.GetAutoClose)
|
||||
guildAuthApiAdmin.POST("/autoclose", api_autoclose.PostAutoClose)
|
||||
|
||||
guildAuthApiAdmin.GET("/team", api_team.GetTeams, middleware.Logging)
|
||||
guildAuthApiAdmin.GET("/team/:teamid", rl(middleware.RateLimitTypeUser ,10, time.Second*30), api_team.GetMembers, middleware.Logging)
|
||||
guildAuthApiAdmin.POST("/team", rl(middleware.RateLimitTypeUser, 10, time.Minute), api_team.CreateTeam, middleware.Logging)
|
||||
guildAuthApiAdmin.PUT("/team/:teamid/:snowflake", rl(middleware.RateLimitTypeGuild, 5, time.Second*10), api_team.AddMember, middleware.Logging)
|
||||
guildAuthApiAdmin.DELETE("/team/:teamid", api_team.DeleteTeam, middleware.Logging)
|
||||
guildAuthApiAdmin.DELETE("/team/:teamid/:snowflake", rl(middleware.RateLimitTypeGuild, 30, time.Minute), api_team.RemoveMember, middleware.Logging)
|
||||
guildAuthApiAdmin.GET("/team", api_team.GetTeams)
|
||||
guildAuthApiAdmin.GET("/team/:teamid", rl(middleware.RateLimitTypeUser ,10, time.Second*30), api_team.GetMembers)
|
||||
guildAuthApiAdmin.POST("/team", rl(middleware.RateLimitTypeUser, 10, time.Minute), api_team.CreateTeam)
|
||||
guildAuthApiAdmin.PUT("/team/:teamid/:snowflake", rl(middleware.RateLimitTypeGuild, 5, time.Second*10), api_team.AddMember)
|
||||
guildAuthApiAdmin.DELETE("/team/:teamid", api_team.DeleteTeam)
|
||||
guildAuthApiAdmin.DELETE("/team/:teamid/:snowflake", rl(middleware.RateLimitTypeGuild, 30, time.Minute), api_team.RemoveMember)
|
||||
}
|
||||
|
||||
userGroup := router.Group("/user", middleware.AuthenticateToken)
|
||||
{
|
||||
userGroup.GET("/guilds", api.GetGuilds, middleware.Logging)
|
||||
userGroup.POST("/guilds/reload", api.ReloadGuildsHandler, middleware.Logging)
|
||||
userGroup.GET("/permissionlevel", api.GetPermissionLevel, middleware.Logging)
|
||||
userGroup.GET("/guilds", api.GetGuilds)
|
||||
userGroup.POST("/guilds/reload", api.ReloadGuildsHandler)
|
||||
userGroup.GET("/permissionlevel", api.GetPermissionLevel)
|
||||
|
||||
{
|
||||
whitelabelGroup := userGroup.Group("/whitelabel", middleware.VerifyWhitelabel(true))
|
||||
|
||||
whitelabelGroup.GET("/", api_whitelabel.WhitelabelGet, middleware.Logging)
|
||||
whitelabelGroup.GET("/errors", api_whitelabel.WhitelabelGetErrors, middleware.Logging)
|
||||
whitelabelGroup.GET("/guilds", api_whitelabel.WhitelabelGetGuilds, middleware.Logging)
|
||||
whitelabelGroup.GET("/public-key", api_whitelabel.WhitelabelGetPublicKey, middleware.Logging)
|
||||
whitelabelGroup.POST("/public-key", api_whitelabel.WhitelabelPostPublicKey, middleware.Logging)
|
||||
whitelabelGroup.POST("/create-interactions", api_whitelabel.GetWhitelabelCreateInteractions(), middleware.Logging)
|
||||
whitelabelGroup.GET("/", api_whitelabel.WhitelabelGet)
|
||||
whitelabelGroup.GET("/errors", api_whitelabel.WhitelabelGetErrors)
|
||||
whitelabelGroup.GET("/guilds", api_whitelabel.WhitelabelGetGuilds)
|
||||
whitelabelGroup.GET("/public-key", api_whitelabel.WhitelabelGetPublicKey)
|
||||
whitelabelGroup.POST("/public-key", api_whitelabel.WhitelabelPostPublicKey)
|
||||
whitelabelGroup.POST("/create-interactions", api_whitelabel.GetWhitelabelCreateInteractions())
|
||||
|
||||
whitelabelGroup.POST("/", rl(middleware.RateLimitTypeUser, 10, time.Minute), api_whitelabel.WhitelabelPost, middleware.Logging)
|
||||
whitelabelGroup.POST("/status", rl(middleware.RateLimitTypeUser, 1, time.Second*5), api_whitelabel.WhitelabelStatusPost, middleware.Logging)
|
||||
whitelabelGroup.POST("/", rl(middleware.RateLimitTypeUser, 10, time.Minute), api_whitelabel.WhitelabelPost)
|
||||
whitelabelGroup.POST("/status", rl(middleware.RateLimitTypeUser, 1, time.Second*5), api_whitelabel.WhitelabelStatusPost)
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user