Files
go_process_manager/route/route.go
liuzhihang1 831ea9889f 初次提交
2024-06-26 20:45:23 +08:00

112 lines
3.4 KiB
Go

package route
import (
"io"
"msm/api"
"msm/config"
"msm/consts/permission"
"msm/consts/role"
"msm/log"
"msm/route/middle"
"net/http"
"github.com/gin-contrib/pprof"
"github.com/gin-gonic/gin"
)
func Route() {
r := gin.Default()
gin.DefaultWriter = io.Discard
gin.SetMode(gin.DebugMode)
routePathInit(r)
staticInit(r)
pprofInit(r)
r.Run(config.CF.Listen)
}
func staticInit(r *gin.Engine) {
r.NoRoute(func(c *gin.Context) {
c.HTML(http.StatusOK, "index.html", gin.H{})
})
r.Static("/js", "templates/js")
r.Static("/css", "templates/css")
r.Static("/media", "templates/media")
r.Static("/fonts", "templates/fonts")
r.LoadHTMLFiles("templates/index.html")
}
func pprofInit(r *gin.Engine) {
if config.CF.PprofEnable {
pprof.Register(r)
log.Logger.Info("启用 pprof")
}
}
func routePathInit(r *gin.Engine) {
apiGroup := r.Group("/api")
apiGroup.Use(middle.CheckToken())
apiGroup.Use(middle.PanicMiddle())
{
apiGroup.GET("/ws", middle.OprPermission(permission.TERMINAL_OPERATION), api.WsApi.WebsocketHandle)
processGroup := apiGroup.Group("/process")
{
processGroup.DELETE("", middle.OprPermission(permission.STOP_OPERATION), api.ProcApi.KillProcess)
processGroup.GET("", api.ProcApi.GetProcessList)
processGroup.PUT("", middle.OprPermission(permission.START_OPERATION), api.ProcApi.StartProcess)
processGroup.GET("/control", middle.RolePermission(role.ADMIN), api.ProcApi.ProcessControl)
proConfigGroup := processGroup.Group("/config")
{
proConfigGroup.POST("", middle.RolePermission(role.ROOT), api.ProcApi.CreateNewProcess)
proConfigGroup.DELETE("", middle.RolePermission(role.ROOT), api.ProcApi.DeleteNewProcess)
proConfigGroup.PUT("", middle.RolePermission(role.ROOT), api.ProcApi.UpdateProcessConfig)
proConfigGroup.GET("", middle.RolePermission(role.ADMIN), api.ProcApi.GetProcessConfig)
}
}
userGroup := apiGroup.Group("/user")
{
userGroup.POST("/login", api.UserApi.LoginHandler)
userGroup.POST("", middle.RolePermission(role.ROOT), api.UserApi.CreateUser)
userGroup.PUT("/password", middle.RolePermission(role.USER), api.UserApi.ChangePassword)
userGroup.DELETE("", middle.RolePermission(role.ROOT), api.UserApi.DeleteUser)
userGroup.GET("", middle.RolePermission(role.ROOT), api.UserApi.GetUserList)
}
pushGroup := apiGroup.Group("/push").Use(middle.RolePermission(role.ADMIN))
{
pushGroup.GET("/list", api.PushApi.GetPushList)
pushGroup.GET("", api.PushApi.GetPushById)
pushGroup.POST("", api.PushApi.AddPushConfig)
pushGroup.PUT("", api.PushApi.UpdatePushConfig)
pushGroup.DELETE("", api.PushApi.DeletePushConfig)
}
fileGroup := apiGroup.Group("/file").Use(middle.RolePermission(role.ADMIN))
{
fileGroup.GET("/list", api.FileApi.FilePathHandler)
fileGroup.PUT("", api.FileApi.FileWriteHandler)
fileGroup.GET("", api.FileApi.FileReadHandler)
}
permissionGroup := apiGroup.Group("/permission").Use(middle.RolePermission(role.ROOT))
{
permissionGroup.GET("/list", api.PermissionApi.GetPermissionList)
permissionGroup.PUT("", api.PermissionApi.EditPermssion)
}
logGroup := apiGroup.Group("/log").Use(middle.RolePermission(role.ADMIN))
{
logGroup.POST("", api.LogApi.GetLog)
}
configGroup := apiGroup.Group("/config").Use(middle.RolePermission(role.ROOT))
{
configGroup.GET("", api.ConfigApi.GetSystemConfiguration)
configGroup.PUT("", api.ConfigApi.SetSystemConfiguration)
configGroup.PUT("/es", api.ConfigApi.EsConfigReload)
}
}
}