Files
pika/internal/handler/tamper_handler.go
T
2026-08-12 18:59:29 +08:00

89 lines
2.4 KiB
Go

package handler
import (
"github.com/go-orz/orz"
"github.com/labstack/echo/v5"
"github.com/pika-monitor/pika/internal/models"
"github.com/pika-monitor/pika/internal/service"
"go.uber.org/zap"
)
type TamperHandler struct {
logger *zap.Logger
tamperService *service.TamperService
}
func NewTamperHandler(logger *zap.Logger, tamperService *service.TamperService) *TamperHandler {
return &TamperHandler{
logger: logger,
tamperService: tamperService,
}
}
// UpdateConfig 更新探针的防篡改配置
// POST /api/agents/:id/tamper/config
func (h *TamperHandler) UpdateConfig(c *echo.Context) error {
agentID := c.Param("id")
var req models.TamperProtectConfigData
if err := c.Bind(&req); err != nil {
return err
}
err := h.tamperService.UpdateConfig(c.Request().Context(), agentID, &req)
if err != nil {
h.logger.Error("更新防篡改配置失败", zap.Error(err), zap.String("agentId", agentID))
return orz.NewError(500, "更新配置失败")
}
return orz.Ok(c, orz.Map{})
}
// GetConfig 获取探针的防篡改配置
// GET /api/agents/:id/tamper/config
func (h *TamperHandler) GetConfig(c *echo.Context) error {
agentID := c.Param("id")
config, err := h.tamperService.GetConfigByAgentID(c.Request().Context(), agentID)
if err != nil {
h.logger.Error("获取防篡改配置失败", zap.Error(err), zap.String("agentId", agentID))
return orz.NewError(500, "获取配置失败")
}
return orz.Ok(c, config)
}
// ListEvents 获取探针的防篡改事件
// GET /api/agents/:id/tamper/events
func (h *TamperHandler) ListEvents(c *echo.Context) error {
agentID := c.Param("id")
// 获取分页参数
pageReq := orz.GetPageRequest(c, "createdAt")
builder := orz.NewPageBuilder(h.tamperService.TamperEventRepo.Repository).
PageRequest(pageReq).
Equal("agentId", agentID).
Equal("path", c.QueryParam("path")).
Equal("operation", c.QueryParam("operation")).
Contains("details", c.QueryParam("details"))
ctx := c.Request().Context()
page, err := builder.Execute(ctx)
if err != nil {
return err
}
return orz.Ok(c, page)
}
func (h *TamperHandler) DeleteEvents(c *echo.Context) error {
agentID := c.Param("id")
err := h.tamperService.DeleteEventsByAgentID(c.Request().Context(), agentID)
if err != nil {
h.logger.Error("删除防篡改事件失败", zap.Error(err), zap.String("agentId", agentID))
return orz.NewError(500, "删除事件失败")
}
return orz.Ok(c, orz.Map{})
}