admin_backend/controller/server.go
2025-03-05 15:40:49 +08:00

126 lines
2.4 KiB
Go

package controller
import (
"backend/Type"
"backend/common"
"backend/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 ServerList(c *gin.Context) {
Server := model.Server{}
c.BindJSON(&Server)
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
}
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
}
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
}
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.AppStruct, server *model.ServerInfo) {
err := model.PortMap(App.WsHost, fmt.Sprintf("%d", server.ServerId+App.WsPort))
if err != nil {
feishu.SendNoticeMsg(App.AppName, server.ServerName, err.Error())
}
}