Parcourir la source

refactor(waf): 重构网关 IP 分配逻辑

-移除冗余的 JSON 编码操作
- 使用 WafLogService 替代 LogService 记录操作日志
- 优化代码结构,提高可维护性
fusu il y a 5 jours
Parent
commit
48508213d2

+ 3 - 3
cmd/server/wire/wire_gen.go

@@ -76,7 +76,9 @@ func NewWire(viperViper *viper.Viper, logger *log.Logger) (*app.App, func(), err
 	gatewayipRepository := waf.NewGatewayipRepository(repositoryRepository)
 	logRepository := repository.NewLogRepository(repositoryRepository)
 	logService := service.NewLogService(serviceService, logRepository)
-	gatewayipService := waf2.NewGatewayipService(serviceService, gatewayipRepository, hostService, logService)
+	wafLogRepository := admin.NewWafLogRepository(repositoryRepository)
+	wafLogService := admin2.NewWafLogService(serviceService, wafLogRepository, globalLimitRepository, rabbitMQ)
+	gatewayipService := waf2.NewGatewayipService(serviceService, gatewayipRepository, hostService, logService, wafLogService)
 	requestService := service.NewRequestService(serviceService)
 	cdnRepository := flexCdn.NewCdnRepository(repositoryRepository)
 	cdnService := flexCdn2.NewCdnService(serviceService, viperViper, requestService, cdnRepository)
@@ -91,8 +93,6 @@ func NewWire(viperViper *viper.Viper, logger *log.Logger) (*app.App, func(), err
 	ccIpListService := waf2.NewCcIpListService(serviceService, ccIpListRepository, cdnService, webForwardingRepository)
 	ccService := waf2.NewCcService(serviceService, ccRepository, webForwardingRepository, cdnService, ccIpListService)
 	webForwardingService := waf2.NewWebForwardingService(serviceService, requiredService, webForwardingRepository, crawlerService, parserService, wafFormatterService, aoDunService, rabbitMQ, gatewayipService, globalLimitRepository, cdnService, proxyService, sslCertService, websocketService, ccService, ccIpListService)
-	wafLogRepository := admin.NewWafLogRepository(repositoryRepository)
-	wafLogService := admin2.NewWafLogService(serviceService, wafLogRepository, globalLimitRepository, rabbitMQ)
 	webForwardingHandler := waf3.NewWebForwardingHandler(handlerHandler, webForwardingService, wafLogService)
 	tcpforwardingService := waf2.NewTcpforwardingService(serviceService, tcpforwardingRepository, parserService, requiredService, crawlerService, globalLimitRepository, hostRepository, wafFormatterService, cdnService, proxyService)
 	tcpforwardingHandler := waf3.NewTcpforwardingHandler(handlerHandler, tcpforwardingService, wafLogService)

+ 3 - 3
cmd/task/wire/wire_gen.go

@@ -72,7 +72,9 @@ func NewWire(viperViper *viper.Viper, logger *log.Logger) (*app.App, func(), err
 	gatewayipRepository := waf.NewGatewayipRepository(repositoryRepository)
 	logRepository := repository.NewLogRepository(repositoryRepository)
 	logService := service.NewLogService(serviceService, logRepository)
-	gatewayipService := waf2.NewGatewayipService(serviceService, gatewayipRepository, hostService, logService)
+	wafLogRepository := admin.NewWafLogRepository(repositoryRepository)
+	wafLogService := admin2.NewWafLogService(serviceService, wafLogRepository, globalLimitRepository, rabbitMQ)
+	gatewayipService := waf2.NewGatewayipService(serviceService, gatewayipRepository, hostService, logService, wafLogService)
 	wafFormatterService := waf2.NewWafFormatterService(serviceService, globalLimitRepository, hostRepository, requiredService, parserService, tcpforwardingRepository, udpForWardingRepository, webForwardingRepository, rabbitMQ, hostService, gatewayipRepository, gatewayipService, cdnService, cdnRepository)
 	proxyRepository := flexCdn.NewProxyRepository(repositoryRepository)
 	proxyService := flexCdn2.NewProxyService(serviceService, proxyRepository, cdnService)
@@ -93,8 +95,6 @@ func NewWire(viperViper *viper.Viper, logger *log.Logger) (*app.App, func(), err
 	jobJob := job.NewJob(transaction, logger, sidSid, rabbitMQ)
 	userJob := job.NewUserJob(jobJob, userRepository)
 	whitelistJob := job.NewWhitelistJob(jobJob, aoDunService, wafFormatterService)
-	wafLogRepository := admin.NewWafLogRepository(repositoryRepository)
-	wafLogService := admin2.NewWafLogService(serviceService, wafLogRepository, globalLimitRepository, rabbitMQ)
 	wafLogJob := job.NewWafLogJob(jobJob, wafLogService)
 	jobServer := server.NewJobServer(logger, userJob, whitelistJob, wafLogJob)
 	appApp := newApp(taskServer, jobServer)

+ 8 - 6
internal/service/admin/waflog.go

@@ -49,29 +49,29 @@ var ApiDescriptionMap = map[string]string{
 	"/webForward/get": "获取web详情",
 	"/webForward/getList" : "获取web列表",
 	"/webForward/add" : "添加web",
-	"/webForward/update" : "更新web",
+	"/webForward/edit" : "修改web",
 	"/webForward/delete" : "删除web",
 
 	"/tcpForward/add" : "添加tcp",
-	"/tcpForward/update" : "更新tcp",
+	"/tcpForward/edit" : "修改tcp",
 	"/tcpForward/delete" : "删除tcp",
 	"/tcpForward/getList" : "获取tcp列表",
 	"/tcpForward/get" : "获取tcp详情",
 
 	"/udpForward/add" : "添加udp",
-	"/udpForward/update" : "更新udp",
+	"/udpForward/edit" : "修改udp",
 	"/udpForward/delete" : "删除udp",
 	"/udpForward/getList" : "获取udp列表",
 	"/udpForward/get" : "获取udp详情",
 
 	"/globalLimit/add" : "添加实例",
-	"/globalLimit/edit" : "编辑实例",
+	"/globalLimit/edit" : "修改实例",
 	"/globalLimit/delete" : "删除实例",
 
 	"/allowAndDeny/get" : "获取黑白名单详情",
 	"/allowAndDeny/getList" : "获取黑白名单列表",
 	"/allowAndDeny/add" : "添加黑白名单",
-	"/allowAndDeny/edit" : "编辑黑白名单",
+	"/allowAndDeny/edit" : "修改黑白名单",
 	"/allowAndDeny/delete" : "删除黑白名单",
 
 	"/cc/getList" : "获取CC列表",
@@ -79,9 +79,11 @@ var ApiDescriptionMap = map[string]string{
 
 	"/ccIpList/getList" : "获取CC白名单列表",
 	"/ccIpList/add" : "添加CC白名单",
-	"/ccIpList/edit" : "编辑CC白名单",
+	"/ccIpList/edit" : "修改CC白名单",
 	"/ccIpList/delete" : "删除CC白名单",
 
+	"分配网关组" : "分配网关组",
+
 }
 func (s *wafLogService) getFirstPathSegment(path string) (segment []string, ok bool) {
 	// 1. 为了统一处理,先去掉路径最前面的 "/"

+ 11 - 21
internal/service/api/waf/gatewayip.go

@@ -2,13 +2,13 @@ package waf
 
 import (
 	"context"
-	"encoding/json"
 	"fmt"
 	v1 "github.com/go-nunu/nunu-layout-advanced/api/v1"
+	adminApi "github.com/go-nunu/nunu-layout-advanced/api/v1/admin"
 	"github.com/go-nunu/nunu-layout-advanced/internal/model"
 	"github.com/go-nunu/nunu-layout-advanced/internal/repository/api/waf"
 	"github.com/go-nunu/nunu-layout-advanced/internal/service"
-	"strconv"
+	"github.com/go-nunu/nunu-layout-advanced/internal/service/admin"
 )
 
 type GatewayipService interface {
@@ -22,12 +22,14 @@ func NewGatewayipService(
     gatewayipRepository waf.GatewayipRepository,
 	host service.HostService,
 	log service.LogService,
+	wafLogService admin.WafLogService,
 ) GatewayipService {
 	return &gatewayipService{
 		Service:        service,
 		gatewayipRepository: gatewayipRepository,
 		host : host,
 		log : log,
+		wafLogService : wafLogService,
 	}
 }
 
@@ -36,6 +38,7 @@ type gatewayipService struct {
 	gatewayipRepository waf.GatewayipRepository
 	host                service.HostService
 	log                 service.LogService
+	wafLogService       admin.WafLogService
 }
 
 func (s *gatewayipService) GetGatewayip(ctx context.Context, id int64) (*model.Gatewayip, error) {
@@ -63,26 +66,13 @@ func (s *gatewayipService) AddIpWhereHostIdNull(ctx context.Context, hostId int6
 		return  err
 	}
 
-	ipsJson, err := json.Marshal(ips)
-	if err != nil {
-		return err
-	}
-
-
-	configJson, err := json.Marshal(config)
-	if err != nil {
-		return err
-	}
 
-
-	if err = s.log.AddLog(ctx, &model.Log{
-		Uid: uid,
-		Api: "AddIpWhereHostIdNull,分配网关组IP",
-		Message: string(configJson) + "," + "hostId:" + strconv.FormatInt(hostId, 10),
-		ExtraData: ipsJson,
-	}); err != nil {
-		return err
-	}
+	go s.wafLogService.PublishIpWafLogTask(ctx,adminApi.WafLog{
+		Uid:       int(uid),
+		Api:       "分配网关组", // 复制 Path
+		HostId: int(hostId),
+		ExtraData: ips,
+	})
 
 	return nil
 }