232 lines
6.2 KiB
Go
232 lines
6.2 KiB
Go
|
package http
|
||
|
|
||
|
import (
|
||
|
"net/http"
|
||
|
|
||
|
"go-common/app/admin/main/aegis/conf"
|
||
|
"go-common/app/admin/main/aegis/model"
|
||
|
"go-common/app/admin/main/aegis/service"
|
||
|
"go-common/library/log"
|
||
|
bm "go-common/library/net/http/blademaster"
|
||
|
"go-common/library/net/http/blademaster/middleware/permit"
|
||
|
"go-common/library/net/http/blademaster/middleware/verify"
|
||
|
)
|
||
|
|
||
|
var (
|
||
|
srv *service.Service
|
||
|
vfy *verify.Verify
|
||
|
authSvr *permit.Permit
|
||
|
)
|
||
|
|
||
|
// Init init
|
||
|
func Init(c *conf.Config, s *service.Service) {
|
||
|
srv = s
|
||
|
vfy = verify.New(c.Verify)
|
||
|
authSvr = permit.New(c.Auth)
|
||
|
engine := bm.DefaultServer(c.BM)
|
||
|
route(engine)
|
||
|
if err := engine.Start(); err != nil {
|
||
|
log.Error("bm Start error(%v)", err)
|
||
|
panic(err)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func route(e *bm.Engine) {
|
||
|
e.Ping(ping)
|
||
|
e.GET("/x/admin/aegis/debug/cache", perm(""), cache)
|
||
|
gb := e.Group("/x/admin/aegis/business", perm(""), preHandlerUser())
|
||
|
{
|
||
|
gb.GET("/view", checkBizAdmin(), getBusiness)
|
||
|
gb.GET("/list", checkBizAdmin(), getBusinessList)
|
||
|
gb.GET("/enable", checkBizBID(), getBusinessEnable)
|
||
|
gb.POST("/add", authSvr.Permit("AEGIS_REGISTER"), addBusiness)
|
||
|
gb.POST("/update", checkBizAdmin(), updateBusiness)
|
||
|
gb.POST("/set", checkBizAdmin(), setBusinessState)
|
||
|
|
||
|
gb.GET("config/list", listBizCFGs)
|
||
|
gb.GET("config/reserve", reserveCFG)
|
||
|
gb.POST("config/add", addBizCFG)
|
||
|
gb.POST("config/update", updateBizCFG)
|
||
|
}
|
||
|
|
||
|
gt := e.Group("/x/admin/aegis/task", perm(""), preHandlerUser(), checkTaskRole())
|
||
|
{
|
||
|
gt.POST("/delay", taskDelay)
|
||
|
gt.POST("/release", taskRelease)
|
||
|
|
||
|
gt.POST("/consumer/on", consumerOn)
|
||
|
gt.POST("/consumer/off", consumerOff)
|
||
|
gt.POST("/consumer/kickout", kickOut)
|
||
|
|
||
|
gt.GET("/undostat", taskUnDo)
|
||
|
gt.GET("/stat", taskStat)
|
||
|
}
|
||
|
|
||
|
gtc := e.Group("/x/admin/aegis/task/config", perm(""), preHandlerUser(), checkBizID())
|
||
|
{
|
||
|
gtc.GET("/maxweight", maxWeight)
|
||
|
gtc.GET("/list", configList)
|
||
|
gtc.POST("/delete", configDelete)
|
||
|
gtc.POST("/add", configAdd)
|
||
|
gtc.POST("/edit", configEdit)
|
||
|
gtc.POST("/set", configSet)
|
||
|
gtc.GET("/weightlog", weightlog)
|
||
|
}
|
||
|
|
||
|
engineTask := e.Group("/x/admin/aegis/engine", perm(""), preHandlerUser(), checkTaskRole())
|
||
|
{
|
||
|
// 任务列表操作
|
||
|
engineTask.GET("/task/next", checkon(), next)
|
||
|
engineTask.GET("/task/info", infoByTask)
|
||
|
engineTask.GET("/task/list", listByTask)
|
||
|
}
|
||
|
engineRsc := e.Group("/x/admin/aegis/engine", perm(""), preHandlerUser())
|
||
|
{
|
||
|
engineRsc.POST("/submit", checkBizBID(), submit)
|
||
|
// 任务列表下面的flow列表
|
||
|
engineRsc.GET("/task/listbizflow", checkAccessTask(), listBizFlow)
|
||
|
|
||
|
// 资源列表操作
|
||
|
engineRsc.GET("/resource/info", checkBizBID(), infoByResource)
|
||
|
engineRsc.GET("/resource/list", checkBizBID(), listByResource)
|
||
|
engineRsc.POST("/resource/batchsubmit", checkBizLeader(), batchSubmit)
|
||
|
//跳流程
|
||
|
engineRsc.GET("/resource/listforjump", checkBizBID(), listforjump)
|
||
|
engineRsc.POST("/resource/jump", checkBizBID(), jump)
|
||
|
|
||
|
// 封禁相关
|
||
|
engineRsc.POST("/forbid/img/upload", upload)
|
||
|
|
||
|
//信息追踪
|
||
|
engineRsc.GET("/track", checkBizBID(), track)
|
||
|
//操作日志
|
||
|
engineRsc.GET("/auditlog", checkBizBID(), auditLog)
|
||
|
engineRsc.GET("/auditlog/csv", checkBizBID(), auditLogCSV)
|
||
|
//权限查询
|
||
|
engineRsc.GET("/auth", auth)
|
||
|
//手动取消, 运营人员权限
|
||
|
engineRsc.GET("/cancel", checkBizOper(), cancelByOper)
|
||
|
}
|
||
|
|
||
|
gn := e.Group("/x/admin/aegis/net", perm(""), checkBizID())
|
||
|
{
|
||
|
gn.GET("", listNet)
|
||
|
gn.GET("/svg", svg)
|
||
|
gn.GET("/nets", getNetByBusiness)
|
||
|
gn.GET("/show", showNet)
|
||
|
gn.POST("/add", addNet)
|
||
|
gn.POST("/update", updateNet)
|
||
|
gn.POST("/switch", switchNet)
|
||
|
|
||
|
gto := gn.Group("/token")
|
||
|
{
|
||
|
gto.GET("", listToken)
|
||
|
gto.GET("/groups", tokenGroupByType)
|
||
|
gto.GET("/config", configToken)
|
||
|
gto.GET("/show", showToken)
|
||
|
gto.POST("/add", addToken)
|
||
|
}
|
||
|
|
||
|
gf := gn.Group("/flow")
|
||
|
{
|
||
|
gf.GET("", listFlow)
|
||
|
gf.GET("/flows", getFlowByNet)
|
||
|
gf.GET("/show", showFlow)
|
||
|
gf.POST("/add", addFlow)
|
||
|
gf.POST("/update", updateFlow)
|
||
|
gf.POST("/switch", switchFlow)
|
||
|
}
|
||
|
|
||
|
gtr := gn.Group("/transition")
|
||
|
{
|
||
|
gtr.GET("", listTransition)
|
||
|
gtr.GET("/trans", getTranByNet)
|
||
|
gtr.GET("/show", showTransition)
|
||
|
gtr.POST("/add", addTransition)
|
||
|
gtr.POST("/update", updateTransition)
|
||
|
gtr.POST("/switch", switchTransition)
|
||
|
}
|
||
|
|
||
|
gd := gn.Group("/direction")
|
||
|
{
|
||
|
gd.GET("", listDirection)
|
||
|
gd.GET("/show", showDirection)
|
||
|
gd.POST("/add", addDirection)
|
||
|
gd.POST("/update", updateDirection)
|
||
|
gd.POST("/switch", switchDirection)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
rt := e.Group("/x/admin/aegis/report", perm(""), preHandlerUser(), checkBizLeader())
|
||
|
{
|
||
|
rt.GET("/task/flow", taskflow)
|
||
|
rt.GET("/task/flow/csv", taskflowCSV)
|
||
|
rt.GET("/task/submit", taskSubmit)
|
||
|
rt.GET("/task/submit/csv", taskSubmitCSV)
|
||
|
rt.GET("/business/flows", getBizFlow)
|
||
|
}
|
||
|
e.GET("/x/admin/aegis/net/token/byname", perm(""), checkBizBIDBiz(), tokenByName)
|
||
|
|
||
|
e.GET("/x/admin/aegis/task/role", perm(""), preHandlerUser(), role)
|
||
|
e.POST("/x/admin/aegis/task/role/flush", roleFlush)
|
||
|
e.GET("/x/admin/aegis/task/consumer/watch", consumerWatcher)
|
||
|
|
||
|
e.POST("/x/internal/aegis/add", gray(), add)
|
||
|
e.POST("/x/internal/aegis/cancel", cancel)
|
||
|
e.POST("/x/internal/aegis/update", update)
|
||
|
|
||
|
//监控平台
|
||
|
gm := e.Group("/x/admin/aegis/monitor", perm(""))
|
||
|
{
|
||
|
gm.GET("/rule/result", perm("MONITOR_RULE_READ"), monitorRuleResult) //查看监控规则结果
|
||
|
gm.POST("/rule/update", perm("MONITOR_RULE_EDIT"), monitorRuleUpdate) //修改监控规则
|
||
|
}
|
||
|
inter := e.Group("/x/internal/aegis", vfy.Verify)
|
||
|
{
|
||
|
inter.GET("/monitor/result/oids", monitorResultOids) //获取满足监控时间的对象id
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func ping(c *bm.Context) {
|
||
|
if err := srv.Ping(c); err != nil {
|
||
|
log.Error("ping error(%v)", err)
|
||
|
c.AbortWithStatus(http.StatusServiceUnavailable)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func uid(c *bm.Context) int64 {
|
||
|
if v, exist := c.Get("uid"); exist {
|
||
|
return v.(int64)
|
||
|
}
|
||
|
return 0
|
||
|
}
|
||
|
|
||
|
func uname(c *bm.Context) string {
|
||
|
if v, exist := c.Get("username"); exist {
|
||
|
return v.(string)
|
||
|
}
|
||
|
return ""
|
||
|
}
|
||
|
|
||
|
func perm(per string) bm.HandlerFunc {
|
||
|
if srv.Debug() == "local" {
|
||
|
return func(ctx *bm.Context) {}
|
||
|
}
|
||
|
return authSvr.Permit(per)
|
||
|
}
|
||
|
|
||
|
func gray() bm.HandlerFunc {
|
||
|
return func(ctx *bm.Context) {
|
||
|
opt := &model.AddOption{}
|
||
|
ctx.Bind(opt)
|
||
|
|
||
|
if !srv.Gray(opt) {
|
||
|
log.Info("opt(%+v) not hit gray", opt)
|
||
|
ctx.JSON(nil, nil)
|
||
|
ctx.Abort()
|
||
|
return
|
||
|
}
|
||
|
log.Info("opt(%+v) hit gray", opt)
|
||
|
}
|
||
|
}
|