mirror of
https://hubproxy.babadafafafafa.cn/https://github.com/1Panel-dev/1Panel.git
synced 2026-09-21 00:24:12 +08:00
356 lines
9.0 KiB
Go
356 lines
9.0 KiB
Go
package v2
|
|
|
|
import (
|
|
"errors"
|
|
"net/url"
|
|
"strings"
|
|
|
|
"github.com/1Panel-dev/1Panel/agent/app/api/v2/helper"
|
|
"github.com/1Panel-dev/1Panel/agent/app/dto"
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
const defaultAuditUser = "system"
|
|
|
|
// @Tags Alert
|
|
// @Summary Page alert
|
|
// @Accept json
|
|
// @Param request body dto.AlertSearch true "request"
|
|
// @Success 200
|
|
// @Security ApiKeyAuth
|
|
// @Security Timestamp
|
|
// @Router /alert/search [post]
|
|
func (b *BaseApi) PageAlert(c *gin.Context) {
|
|
var req dto.AlertSearch
|
|
if err := helper.CheckBindAndValidate(&req, c); err != nil {
|
|
return
|
|
}
|
|
total, alerts, err := alertService.PageAlert(req)
|
|
if err != nil {
|
|
helper.InternalServer(c, err)
|
|
return
|
|
}
|
|
helper.SuccessWithData(c, dto.PageResult{
|
|
Total: total,
|
|
Items: alerts,
|
|
})
|
|
}
|
|
|
|
func (b *BaseApi) GetAlerts(c *gin.Context) {
|
|
alerts, err := alertService.GetAlerts()
|
|
if err != nil {
|
|
helper.InternalServer(c, err)
|
|
return
|
|
}
|
|
helper.SuccessWithData(c, alerts)
|
|
}
|
|
|
|
// @Tags Alert
|
|
// @Summary Create alert
|
|
// @Accept json
|
|
// @Param request body dto.AlertCreate true "request"
|
|
// @Success 200
|
|
// @Security ApiKeyAuth
|
|
// @Security Timestamp
|
|
// @Router /alert [post]
|
|
// @x-panel-log {"bodyKeys":["title"],"paramKeys":[],"BeforeFunctions":[],"formatZH":"创建告警任务 [title]","formatEN":"create alert [title]"}
|
|
func (b *BaseApi) CreateAlert(c *gin.Context) {
|
|
var req dto.AlertCreate
|
|
if err := helper.CheckBindAndValidate(&req, c); err != nil {
|
|
return
|
|
}
|
|
err := alertService.CreateAlert(req, loadAuditUser(c))
|
|
if err != nil {
|
|
helper.InternalServer(c, err)
|
|
return
|
|
}
|
|
helper.Success(c)
|
|
}
|
|
|
|
// @Tags Alert
|
|
// @Summary Delete alert
|
|
// @Accept json
|
|
// @Param request body dto.DeleteRequest true "request"
|
|
// @Success 200
|
|
// @Security ApiKeyAuth
|
|
// @Security Timestamp
|
|
// @Router /alert/del [post]
|
|
// @x-panel-log {"bodyKeys":["id"],"paramKeys":[],"BeforeFunctions":[],"formatZH":"删除告警任务 [id]","formatEN":"delete alert [id]"}
|
|
func (b *BaseApi) DeleteAlert(c *gin.Context) {
|
|
var req dto.DeleteRequest
|
|
if err := helper.CheckBindAndValidate(&req, c); err != nil {
|
|
return
|
|
}
|
|
err := alertService.DeleteAlert(req.ID)
|
|
if err != nil {
|
|
helper.InternalServer(c, err)
|
|
return
|
|
}
|
|
helper.Success(c)
|
|
}
|
|
|
|
// @Tags Alert
|
|
// @Summary Update alert
|
|
// @Accept json
|
|
// @Param request body dto.AlertUpdate true "request"
|
|
// @Success 200
|
|
// @Security ApiKeyAuth
|
|
// @Security Timestamp
|
|
// @Router /alert/update [post]
|
|
// @x-panel-log {"bodyKeys":["title"],"paramKeys":[],"BeforeFunctions":[],"formatZH":"更新告警任务 [title]","formatEN":"update alert [title]"}
|
|
func (b *BaseApi) UpdateAlert(c *gin.Context) {
|
|
var req dto.AlertUpdate
|
|
if err := helper.CheckBindAndValidate(&req, c); err != nil {
|
|
return
|
|
}
|
|
if err := alertService.UpdateAlert(req, loadAuditUser(c)); err != nil {
|
|
helper.InternalServer(c, err)
|
|
return
|
|
}
|
|
helper.Success(c)
|
|
}
|
|
|
|
func (b *BaseApi) GetAlert(c *gin.Context) {
|
|
id, err := helper.GetParamID(c)
|
|
if err != nil {
|
|
helper.BadRequest(c, errors.New("no such id in request param"))
|
|
return
|
|
}
|
|
alert, err := alertService.GetAlert(id)
|
|
if err != nil {
|
|
helper.InternalServer(c, err)
|
|
return
|
|
}
|
|
helper.SuccessWithData(c, alert)
|
|
}
|
|
|
|
// @Tags Alert
|
|
// @Summary Update alert status
|
|
// @Accept json
|
|
// @Param request body dto.AlertUpdateStatus true "request"
|
|
// @Success 200
|
|
// @Security ApiKeyAuth
|
|
// @Security Timestamp
|
|
// @Router /alert/status [post]
|
|
// @x-panel-log {"bodyKeys":["id","status"],"paramKeys":[],"BeforeFunctions":[],"formatZH":"更新告警任务 [id] 状态 [status]","formatEN":"update alert [id] status [status]"}
|
|
func (b *BaseApi) UpdateAlertStatus(c *gin.Context) {
|
|
var req dto.AlertUpdateStatus
|
|
if err := helper.CheckBindAndValidate(&req, c); err != nil {
|
|
return
|
|
}
|
|
|
|
if err := alertService.UpdateStatus(req.ID, req.Status); err != nil {
|
|
helper.InternalServer(c, err)
|
|
return
|
|
}
|
|
helper.Success(c)
|
|
}
|
|
|
|
// @Tags Alert
|
|
// @Summary Get disks
|
|
// @Success 200
|
|
// @Security ApiKeyAuth
|
|
// @Security Timestamp
|
|
// @Router /alert/disks/list [get]
|
|
func (b *BaseApi) GetDisks(c *gin.Context) {
|
|
alerts, err := alertService.GetDisks()
|
|
if err != nil {
|
|
helper.InternalServer(c, err)
|
|
return
|
|
}
|
|
helper.SuccessWithData(c, alerts)
|
|
}
|
|
|
|
// @Tags Alert
|
|
// @Summary Page alert logs
|
|
// @Accept json
|
|
// @Param request body dto.AlertLogSearch true "request"
|
|
// @Success 200
|
|
// @Security ApiKeyAuth
|
|
// @Security Timestamp
|
|
// @Router /alert/logs/search [post]
|
|
func (b *BaseApi) PageAlertLogs(c *gin.Context) {
|
|
var req dto.AlertLogSearch
|
|
if err := helper.CheckBindAndValidate(&req, c); err != nil {
|
|
return
|
|
}
|
|
total, alertLogs, err := alertService.PageAlertLogs(req)
|
|
if err != nil {
|
|
helper.InternalServer(c, err)
|
|
return
|
|
}
|
|
helper.SuccessWithData(c, dto.PageResult{
|
|
Total: total,
|
|
Items: alertLogs,
|
|
})
|
|
}
|
|
|
|
// @Tags Alert
|
|
// @Summary Clean alert logs
|
|
// @Success 200
|
|
// @Security ApiKeyAuth
|
|
// @Security Timestamp
|
|
// @Router /alert/logs/clean [post]
|
|
// @x-panel-log {"bodyKeys":[],"paramKeys":[],"BeforeFunctions":[],"formatZH":"清空告警日志","formatEN":"clean alert logs"}
|
|
func (b *BaseApi) CleanAlertLogs(c *gin.Context) {
|
|
if err := alertService.CleanAlertLogs(); err != nil {
|
|
helper.InternalServer(c, err)
|
|
return
|
|
}
|
|
helper.Success(c)
|
|
}
|
|
|
|
// @Tags Alert
|
|
// @Summary Get clams
|
|
// @Success 200
|
|
// @Security ApiKeyAuth
|
|
// @Security Timestamp
|
|
// @Router /alert/clams/list [get]
|
|
func (b *BaseApi) GetClams(c *gin.Context) {
|
|
clams, err := alertService.GetClams()
|
|
if err != nil {
|
|
helper.InternalServer(c, err)
|
|
return
|
|
}
|
|
helper.SuccessWithData(c, clams)
|
|
}
|
|
|
|
// @Tags Alert
|
|
// @Summary Get cron jobs
|
|
// @Accept json
|
|
// @Param request body dto.CronJobReq true "request"
|
|
// @Success 200
|
|
// @Security ApiKeyAuth
|
|
// @Security Timestamp
|
|
// @Router /alert/cronjob/list [post]
|
|
func (b *BaseApi) GetCronJobs(c *gin.Context) {
|
|
var req dto.CronJobReq
|
|
if err := helper.CheckBindAndValidate(&req, c); err != nil {
|
|
return
|
|
}
|
|
cronJobs, err := alertService.GetCronJobs(req)
|
|
if err != nil {
|
|
helper.InternalServer(c, err)
|
|
return
|
|
}
|
|
helper.SuccessWithData(c, cronJobs)
|
|
}
|
|
|
|
// @Tags Alert
|
|
// @Summary Get alert config
|
|
// @Success 200
|
|
// @Security ApiKeyAuth
|
|
// @Security Timestamp
|
|
// @Router /alert/config/info [post]
|
|
func (b *BaseApi) GetAlertConfig(c *gin.Context) {
|
|
var req dto.AlertConfigQuery
|
|
if err := helper.CheckBindAndValidate(&req, c); err != nil {
|
|
return
|
|
}
|
|
config, err := alertService.GetAlertConfig(req)
|
|
if err != nil {
|
|
helper.InternalServer(c, err)
|
|
return
|
|
}
|
|
helper.SuccessWithData(c, config)
|
|
}
|
|
|
|
// @Tags Alert
|
|
// @Summary Page alert config
|
|
// @Accept json
|
|
// @Param request body dto.AlertConfigPageReq true "request"
|
|
// @Success 200
|
|
// @Security ApiKeyAuth
|
|
// @Security Timestamp
|
|
// @Router /alert/config/search [post]
|
|
func (b *BaseApi) PageAlertConfig(c *gin.Context) {
|
|
var req dto.AlertConfigPageReq
|
|
if err := helper.CheckBindAndValidate(&req, c); err != nil {
|
|
return
|
|
}
|
|
total, configs, err := alertService.PageAlertConfig(req, helper.IsDemoRequest(c))
|
|
if err != nil {
|
|
helper.InternalServer(c, err)
|
|
return
|
|
}
|
|
helper.SuccessWithData(c, dto.PageResult{
|
|
Total: total,
|
|
Items: configs,
|
|
})
|
|
}
|
|
|
|
// @Tags Alert
|
|
// @Summary Update alert config
|
|
// @Accept json
|
|
// @Param request body dto.AlertConfigUpdate true "request"
|
|
// @Success 200
|
|
// @Security ApiKeyAuth
|
|
// @Security Timestamp
|
|
// @Router /alert/config/update [post]
|
|
// @x-panel-log {"bodyKeys":["id","displayName"],"paramKeys":[],"BeforeFunctions":[],"formatZH":"更新告警配置 [id][displayName]","formatEN":"update alert config [id][displayName]"}
|
|
func (b *BaseApi) UpdateAlertConfig(c *gin.Context) {
|
|
var req dto.AlertConfigUpdate
|
|
if err := helper.CheckBindAndValidate(&req, c); err != nil {
|
|
return
|
|
}
|
|
if err := alertService.UpdateAlertConfig(req, loadAuditUser(c)); err != nil {
|
|
helper.InternalServer(c, err)
|
|
return
|
|
}
|
|
helper.Success(c)
|
|
}
|
|
|
|
func loadAuditUser(c *gin.Context) string {
|
|
userName := strings.TrimSpace(c.GetHeader("X-Panel-User"))
|
|
if userName == "" {
|
|
return defaultAuditUser
|
|
}
|
|
if decoded, err := url.QueryUnescape(userName); err == nil {
|
|
return decoded
|
|
}
|
|
return userName
|
|
}
|
|
|
|
// @Tags Alert
|
|
// @Summary Delete alert config
|
|
// @Accept json
|
|
// @Param request body dto.DeleteRequest true "request"
|
|
// @Success 200
|
|
// @Security ApiKeyAuth
|
|
// @Security Timestamp
|
|
// @Router /alert/config/del [post]
|
|
// @x-panel-log {"bodyKeys":["id"],"paramKeys":[],"BeforeFunctions":[],"formatZH":"删除告警配置 [id]","formatEN":"delete alert config [id]"}
|
|
func (b *BaseApi) DeleteAlertConfig(c *gin.Context) {
|
|
var req dto.DeleteRequest
|
|
if err := helper.CheckBindAndValidate(&req, c); err != nil {
|
|
return
|
|
}
|
|
err := alertService.DeleteAlertConfig(req.ID)
|
|
if err != nil {
|
|
helper.InternalServer(c, err)
|
|
return
|
|
}
|
|
helper.Success(c)
|
|
}
|
|
|
|
// @Tags Alert
|
|
// @Summary Test alert config
|
|
// @Accept json
|
|
// @Param request body dto.AlertConfigTest true "request"
|
|
// @Success 200
|
|
// @Security ApiKeyAuth
|
|
// @Security Timestamp
|
|
// @Router /alert/config/test [post]
|
|
func (b *BaseApi) TestAlertConfig(c *gin.Context) {
|
|
var req dto.AlertConfigTest
|
|
if err := helper.CheckBindAndValidate(&req, c); err != nil {
|
|
return
|
|
}
|
|
flag, err := alertService.TestAlertConfig(req)
|
|
if err != nil {
|
|
helper.InternalServer(c, err)
|
|
return
|
|
}
|
|
helper.SuccessWithData(c, flag)
|
|
}
|