mirror of
https://github.com/nezhahq/nezha.git
synced 2025-01-23 05:08:13 -05:00
e8b8e59bd7
* feat: add network monitor hitory * fix: revert proto change and add indexStore * fix: update monitor delete unuse monitor history * fix: delete unuse monitor type --------- Co-authored-by: LvGJ <lvgj1998@gmail.com>
89 lines
2.1 KiB
Go
89 lines
2.1 KiB
Go
package controller
|
||
|
||
import (
|
||
"strconv"
|
||
"strings"
|
||
|
||
"github.com/gin-gonic/gin"
|
||
|
||
"github.com/naiba/nezha/pkg/mygin"
|
||
"github.com/naiba/nezha/service/singleton"
|
||
)
|
||
|
||
type apiV1 struct {
|
||
r gin.IRouter
|
||
}
|
||
|
||
func (v *apiV1) serve() {
|
||
r := v.r.Group("")
|
||
// API
|
||
r.Use(mygin.Authorize(mygin.AuthorizeOption{
|
||
Member: true,
|
||
IsPage: false,
|
||
AllowAPI: true,
|
||
Msg: "访问此接口需要认证",
|
||
Btn: "点此登录",
|
||
Redirect: "/login",
|
||
}))
|
||
r.GET("/server/list", v.serverList)
|
||
r.GET("/server/details", v.serverDetails)
|
||
mr := v.r.Group("monitor")
|
||
mr.GET("/:id", v.monitorHistoriesById)
|
||
}
|
||
|
||
// serverList 获取服务器列表 不传入Query参数则获取全部
|
||
// header: Authorization: Token
|
||
// query: tag (服务器分组)
|
||
func (v *apiV1) serverList(c *gin.Context) {
|
||
tag := c.Query("tag")
|
||
if tag != "" {
|
||
c.JSON(200, singleton.ServerAPI.GetListByTag(tag))
|
||
return
|
||
}
|
||
c.JSON(200, singleton.ServerAPI.GetAllList())
|
||
}
|
||
|
||
// serverDetails 获取服务器信息 不传入Query参数则获取全部
|
||
// header: Authorization: Token
|
||
// query: id (服务器ID,逗号分隔,优先级高于tag查询)
|
||
// query: tag (服务器分组)
|
||
func (v *apiV1) serverDetails(c *gin.Context) {
|
||
var idList []uint64
|
||
idListStr := strings.Split(c.Query("id"), ",")
|
||
if c.Query("id") != "" {
|
||
idList = make([]uint64, len(idListStr))
|
||
for i, v := range idListStr {
|
||
id, _ := strconv.ParseUint(v, 10, 64)
|
||
idList[i] = id
|
||
}
|
||
}
|
||
tag := c.Query("tag")
|
||
if tag != "" {
|
||
c.JSON(200, singleton.ServerAPI.GetStatusByTag(tag))
|
||
return
|
||
}
|
||
if len(idList) != 0 {
|
||
c.JSON(200, singleton.ServerAPI.GetStatusByIDList(idList))
|
||
return
|
||
}
|
||
c.JSON(200, singleton.ServerAPI.GetAllStatus())
|
||
}
|
||
|
||
func (v *apiV1) monitorHistoriesById(c *gin.Context) {
|
||
idStr := c.Param("id")
|
||
id, err := strconv.ParseUint(idStr, 10, 64)
|
||
if err != nil {
|
||
c.AbortWithStatusJSON(400, gin.H{"code": 400, "message": "id参数错误"})
|
||
return
|
||
}
|
||
server, ok := singleton.ServerList[id]
|
||
if !ok {
|
||
c.AbortWithStatusJSON(404, gin.H{
|
||
"code": 404,
|
||
"message": "id不存在",
|
||
})
|
||
return
|
||
}
|
||
c.JSON(200, singleton.MonitorAPI.GetMonitorHistories(map[string]any{"server_id": server.ID}))
|
||
}
|