You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
231 lines
6.2 KiB
231 lines
6.2 KiB
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) |
|
} |
|
}
|
|
|