package controller import ( "backend/Type" "backend/common" "backend/middleware/feishu" "backend/model" "backend/util" "fmt" "log" "time" "github.com/gin-gonic/gin" ) func AppList(c *gin.Context) { Server := model.Server{} AppList, err := Server.AppList() if err != nil { failed(c, err.Error()) return } success(c, AppList) } func NodeList(c *gin.Context) { NodeModel := model.Node{} NodeList, err := NodeModel.NodeList() if err != nil { failed(c, err.Error()) return } success(c, NodeList) } func AddNode(c *gin.Context) { Node := model.Node{} c.BindJSON(&Node) Node.Status = common.NODE_STATUS_ONLINE Node.CreateTime = util.Now() Node.UpdateTime = util.Now() Node.Password, _ = util.Encrypt(Node.Password) err := Node.AddNode() if err != nil { failed(c, err.Error()) return } util.AddAdminLog(c, "添加节点", Node) success(c, nil) } func ServerList(c *gin.Context) { Server := model.Server{} err := c.BindJSON(&Server) if err != nil { failed(c, "参数绑定失败: "+err.Error()) return } ServerList, err := Server.ServerList() if err != nil { failed(c, err.Error()) return } success(c, ServerList) } func AddServer(c *gin.Context) { Server := model.Server{} c.BindJSON(&Server) err := Server.AddServer() if err != nil { failed(c, err.Error()) return } util.AddAdminLog(c, "添加服务器", Server) success(c, nil) } func EditServer(c *gin.Context) { Server := model.Server{} c.BindJSON(&Server) err := Server.EditServer() if err != nil { failed(c, err.Error()) return } util.AddAdminLog(c, "编辑服务器", Server) success(c, nil) } func UpdateApp(c *gin.Context) { Server := model.Server{} c.BindJSON(&Server) msg, err := Server.UpdateApp() if err != nil { failed(c, err.Error()) return } util.AddAdminLog(c, "更新应用", Server) success(c, map[string]string{"msg": msg}) } func UpdateAppReview(c *gin.Context) { Server := model.Server{} c.BindJSON(&Server) msg, err := Server.UpdateAppReview() if err != nil { failed(c, err.Error()) return } util.AddAdminLog(c, "更新Review应用", Server) success(c, map[string]string{"msg": msg}) } func UpdateAppFeishu(c *gin.Context) { Server := model.Server{} c.BindJSON(&Server) go Server.UpdateAppFeishu() success(c, map[string]string{"msg": "have send feishu"}) } func RestartServer(c *gin.Context) { Server := model.Server{} c.BindJSON(&Server) msg, err := Server.RestartServer() if err != nil { failed(c, err.Error()) return } util.AddAdminLog(c, "重启服务器", Server) success(c, map[string]string{"msg": msg}) } func ReloadServer(c *gin.Context) { Server := model.Server{} c.BindJSON(&Server) msg, err := Server.ReloadServer() if err != nil { failed(c, err.Error()) return } success(c, map[string]string{"msg": msg}) } func AppPortNmap() { NMapEnable := common.GetNMap() if !NMapEnable { return } for { Server := model.Server{} AppList, err := Server.AppList() if err != nil { log.Printf("nmap failed to get app list: %v", err) return } for _, app := range AppList { Server.AppId = app.AppId ServerList, err := Server.ServerList() if err != nil { log.Printf("nmap failed to get server list: %v", err) continue } App, err := util.GetAppConfig(app.AppId) if err != nil { log.Printf("nmap failed to get app config: %v", err) continue } for _, server := range ServerList { go AppPortNmap_(App, server) } } time.Sleep(1 * time.Minute) } } func AppPortNmap_(App *Type.App, server *Type.ServerInfo) { err := model.PortMap(App.WsHost, fmt.Sprintf("%d", server.ServerId+App.WsPort)) if err != nil { feishu.SendNoticeMsg(App.AppName, server.ServerName, err.Error()) } }