183 lines
3.7 KiB
Go
183 lines
3.7 KiB
Go
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())
|
|
}
|
|
}
|