Skip to content

Commit f0cff6a

Browse files
author
dushixiang
committed
SSH 登录事件增加 IP 白名单
1 parent 7965cd3 commit f0cff6a

File tree

4 files changed

+17
-20
lines changed

4 files changed

+17
-20
lines changed

internal/handler/ssh_login_handler.go

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"context"
55
"net/http"
66

7+
"github.com/dushixiang/pika/internal/models"
78
"github.com/dushixiang/pika/internal/service"
89
"github.com/go-orz/orz"
910
"github.com/labstack/echo/v4"
@@ -50,15 +51,12 @@ func (h *SSHLoginHandler) GetConfig(c echo.Context) error {
5051
func (h *SSHLoginHandler) UpdateConfig(c echo.Context) error {
5152
agentID := c.Param("id")
5253

53-
var req struct {
54-
Enabled bool `json:"enabled"`
55-
}
56-
54+
var req models.SSHLoginConfigData
5755
if err := c.Bind(&req); err != nil {
5856
return err
5957
}
6058

61-
err := h.service.UpdateConfig(c.Request().Context(), agentID, req.Enabled)
59+
err := h.service.UpdateConfig(c.Request().Context(), agentID, &req)
6260
if err != nil {
6361
h.logger.Error("更新SSH登录监控配置失败", zap.Error(err))
6462
return c.JSON(http.StatusInternalServerError, map[string]string{

internal/handler/tamper_handler.go

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"context"
55
"net/http"
66

7+
"github.com/dushixiang/pika/internal/models"
78
"github.com/dushixiang/pika/internal/service"
89
"github.com/go-orz/orz"
910
"github.com/labstack/echo/v4"
@@ -27,16 +28,13 @@ func NewTamperHandler(logger *zap.Logger, tamperService *service.TamperService)
2728
func (h *TamperHandler) UpdateConfig(c echo.Context) error {
2829
agentID := c.Param("id")
2930

30-
var req struct {
31-
Enabled bool `json:"enabled"`
32-
Paths []string `json:"paths"`
33-
}
31+
var req models.TamperProtectConfigData
3432

3533
if err := c.Bind(&req); err != nil {
3634
return err
3735
}
3836

39-
err := h.tamperService.UpdateConfig(c.Request().Context(), agentID, req.Enabled, req.Paths)
37+
err := h.tamperService.UpdateConfig(c.Request().Context(), agentID, &req)
4038
if err != nil {
4139
h.logger.Error("更新防篡改配置失败", zap.Error(err), zap.String("agentId", agentID))
4240
return c.JSON(http.StatusInternalServerError, map[string]interface{}{

internal/service/ssh_login_service.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,10 +53,11 @@ func (s *SSHLoginService) GetConfig(ctx context.Context, agentID string) (*model
5353

5454
// UpdateConfig 更新配置并下发到 Agent
5555
// 返回: config - 配置对象, error - 错误信息
56-
func (s *SSHLoginService) UpdateConfig(ctx context.Context, agentID string, enabled bool) error {
56+
func (s *SSHLoginService) UpdateConfig(ctx context.Context, agentID string, req *models.SSHLoginConfigData) error {
5757
// 保存配置到数据库
5858
config := models.SSHLoginConfigData{
59-
Enabled: enabled,
59+
Enabled: req.Enabled,
60+
IPWhitelist: req.IPWhitelist,
6061
ApplyStatus: "pending",
6162
}
6263

@@ -70,7 +71,7 @@ func (s *SSHLoginService) UpdateConfig(ctx context.Context, agentID string, enab
7071

7172
// 下发配置到 Agent
7273
go func() {
73-
if err := s.sendConfigToAgent(agentID, enabled); err != nil {
74+
if err := s.sendConfigToAgent(agentID, config.Enabled); err != nil {
7475
s.logger.Error("下发SSH登录监控配置到 Agent 失败", zap.String("agentId", agentID), zap.Error(err))
7576
}
7677
}()

internal/service/tamper_service.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ func (s *TamperService) UpdateConfigByAgentID(ctx context.Context, agentID strin
5454
}
5555

5656
// UpdateConfig 更新探针的防篡改配置
57-
func (s *TamperService) UpdateConfig(ctx context.Context, agentID string, enabled bool, paths []string) error {
57+
func (s *TamperService) UpdateConfig(ctx context.Context, agentID string, req *models.TamperProtectConfigData) error {
5858
// 查找现有配置
5959
config, err := s.GetConfigByAgentID(ctx, agentID)
6060
if err != nil {
@@ -72,25 +72,25 @@ func (s *TamperService) UpdateConfig(ctx context.Context, agentID string, enable
7272
var added, removed []string
7373

7474
// 处理不同的状态转换场景
75-
if !enabled {
75+
if !req.Enabled {
7676
// 场景1: 禁用防篡改功能,需要移除所有旧的路径配置
7777
removed = oldPaths
7878
added = []string{}
7979
// 注意: 不清空 paths,保留配置以便下次启用时使用
8080
} else if !wasEnabled {
8181
// 场景2: 从禁用切换到启用,所有路径都作为新增
8282
// 因为探针端已经移除了所有监控,需要重新添加
83-
added = paths
83+
added = req.Paths
8484
removed = []string{}
8585
} else {
8686
// 场景3: 启用状态下的正常增量更新
87-
added, removed = s.calculatePathDiff(oldPaths, paths)
87+
added, removed = s.calculatePathDiff(oldPaths, req.Paths)
8888
}
8989

9090
// 创建或更新配置
9191
newConfig := &models.TamperProtectConfigData{
92-
Enabled: enabled,
93-
Paths: paths,
92+
Enabled: req.Enabled,
93+
Paths: req.Paths,
9494
ApplyStatus: "pending",
9595
}
9696

@@ -113,7 +113,7 @@ func (s *TamperService) UpdateConfig(ctx context.Context, agentID string, enable
113113
zap.String("agentId", agentID),
114114
zap.Strings("added", added),
115115
zap.Strings("removed", removed),
116-
zap.Int("totalPaths", len(paths)))
116+
zap.Int("totalPaths", len(req.Paths)))
117117
}
118118
}()
119119
return nil

0 commit comments

Comments
 (0)