Explorar el Código

feat(waf): 添加 CC防护 IP 白名单功能- 新增 CcIpListHandler 结构体和相关方法,用于处理 CC 防护 IP白名单操作
- 在 HTTP服务器中添加 CC 防护 IP 白名单的相关路由
- 实现了获取白名单列表、添加、编辑和删除白名单 IP 的功能
- 移除了未使用的 GatewayGroupHandler 和 GateWayGroupIpHandler

fusu hace 2 semanas
padre
commit
9c6c9c50a5
Se han modificado 3 ficheros con 88 adiciones y 10 borrados
  1. 2 7
      cmd/server/wire/wire_gen.go
  2. 81 0
      internal/handler/api/waf/cciplist.go
  3. 5 3
      internal/server/http.go

+ 2 - 7
cmd/server/wire/wire_gen.go

@@ -103,18 +103,13 @@ func NewWire(viperViper *viper.Viper, logger *log.Logger) (*app.App, func(), err
 	adminRepository := admin.NewAdminRepository(repositoryRepository)
 	adminService := admin2.NewAdminService(serviceService, adminRepository)
 	adminHandler := admin3.NewAdminHandler(handlerHandler, adminService)
-	gatewayGroupRepository := repository.NewGatewayGroupRepository(repositoryRepository)
-	gatewayGroupService := service.NewGatewayGroupService(serviceService, gatewayGroupRepository, requiredService, parserService, requestService)
-	gatewayGroupHandler := handler.NewGatewayGroupHandler(handlerHandler, gatewayGroupService)
-	gateWayGroupIpRepository := repository.NewGateWayGroupIpRepository(repositoryRepository)
-	gateWayGroupIpService := service.NewGateWayGroupIpService(serviceService, gateWayGroupIpRepository, gatewayGroupRepository, requestService)
-	gateWayGroupIpHandler := handler.NewGateWayGroupIpHandler(handlerHandler, gateWayGroupIpService)
 	gatewayIpAdminRepository := admin.NewGatewayIpAdminRepository(repositoryRepository)
 	gatewayIpAdminService := admin2.NewGatewayIpAdminService(serviceService, gatewayIpAdminRepository, viperViper, requestService)
 	gatewayIpAdminHandler := admin3.NewGatewayIpAdminHandler(handlerHandler, gatewayIpAdminService)
 	allowAndDenyIpHandler := waf3.NewAllowAndDenyIpHandler(handlerHandler, allowAndDenyIpService)
 	ccHandler := handler.NewCcHandler(handlerHandler, ccService)
-	httpServer := server.NewHTTPServer(logger, viperViper, jwtJWT, syncedEnforcer, limiterLimiter, handlerFunc, userHandler, gameShieldHandler, gameShieldBackendHandler, webForwardingHandler, tcpforwardingHandler, udpForWardingHandler, globalLimitHandler, adminHandler, gatewayGroupHandler, gateWayGroupIpHandler, gatewayIpAdminHandler, allowAndDenyIpHandler, ccHandler, logService)
+	ccIpListHandler := waf3.NewCcIpListHandler(handlerHandler, ccIpListService)
+	httpServer := server.NewHTTPServer(logger, viperViper, jwtJWT, syncedEnforcer, limiterLimiter, handlerFunc, userHandler, gameShieldHandler, gameShieldBackendHandler, webForwardingHandler, tcpforwardingHandler, udpForWardingHandler, globalLimitHandler, adminHandler, gatewayIpAdminHandler, allowAndDenyIpHandler, ccHandler, logService, ccIpListHandler)
 	appApp := newApp(httpServer)
 	return appApp, func() {
 		cleanup()

+ 81 - 0
internal/handler/api/waf/cciplist.go

@@ -0,0 +1,81 @@
+package waf
+
+import (
+	"github.com/gin-gonic/gin"
+	v1 "github.com/go-nunu/nunu-layout-advanced/api/v1"
+	"github.com/go-nunu/nunu-layout-advanced/internal/handler"
+	"github.com/go-nunu/nunu-layout-advanced/internal/service/api/flexCdn"
+	"net/http"
+)
+
+type CcIpListHandler struct {
+	*handler.Handler
+	ccIpListService flexCdn.CcIpListService
+}
+
+func NewCcIpListHandler(
+    handler *handler.Handler,
+    ccIpListService flexCdn.CcIpListService,
+) *CcIpListHandler {
+	return &CcIpListHandler{
+		Handler:      handler,
+		ccIpListService: ccIpListService,
+	}
+}
+
+func (h *CcIpListHandler) GetCcIpList(ctx *gin.Context) {
+	var req v1.GetCcIpList
+	if err := ctx.ShouldBind(&req); err != nil {
+		v1.HandleError(ctx, http.StatusBadRequest, v1.ErrBadRequest, err.Error())
+		return
+	}
+	res, err := h.ccIpListService.GetCcIpList(ctx, req.WebId)
+	if err != nil {
+		v1.HandleError(ctx, http.StatusInternalServerError, err, err.Error())
+		return
+	}
+	v1.HandleSuccess(ctx, res)
+}
+
+func (h *CcIpListHandler) AddCcIpList(ctx *gin.Context) {
+	var req v1.CcIpList
+	if err := ctx.ShouldBind(&req); err != nil {
+		v1.HandleError(ctx, http.StatusBadRequest, v1.ErrBadRequest, err.Error())
+		return
+	}
+	err := h.ccIpListService.AddCcWhiteIp(ctx, req.WebId,req.NewIp)
+	if err != nil {
+		v1.HandleError(ctx, http.StatusInternalServerError, err, err.Error())
+		return
+	}
+	v1.HandleSuccess(ctx, nil)
+
+}
+
+func (h *CcIpListHandler) DelCcIpList(ctx *gin.Context) {
+	var req v1.DelCcIpList
+	if err := ctx.ShouldBind(&req); err != nil {
+		v1.HandleError(ctx, http.StatusBadRequest, v1.ErrBadRequest, err.Error())
+		return
+	}
+	err := h.ccIpListService.DelCcWhiteIp(ctx, req.WebId,req.Ips)
+	if err != nil {
+		v1.HandleError(ctx, http.StatusInternalServerError, err, err.Error())
+		return
+	}
+	v1.HandleSuccess(ctx, nil)
+}
+
+func (h *CcIpListHandler) EditCcIpList(ctx *gin.Context) {
+	var req v1.CcIpList
+	if err := ctx.ShouldBind(&req); err != nil {
+		v1.HandleError(ctx, http.StatusBadRequest, v1.ErrBadRequest, err.Error())
+		return
+	}
+	err := h.ccIpListService.EditCcWhiteIp(ctx, req.WebId,req.OldIp,req.NewIp)
+	if err != nil {
+		v1.HandleError(ctx, http.StatusInternalServerError, err, err.Error())
+		return
+	}
+	v1.HandleSuccess(ctx, nil)
+}

+ 5 - 3
internal/server/http.go

@@ -34,12 +34,11 @@ func NewHTTPServer(
 	udpForwardingHandler *waf.UdpForWardingHandler,
 	globalLimitHandler *waf.GlobalLimitHandler,
 	adminHandler *admin.AdminHandler,
-	gatewayHandler *handler.GatewayGroupHandler,
-	gatewayIpHandler *handler.GateWayGroupIpHandler,
 	gatewayIpAdminHandler *admin.GatewayIpAdminHandler,
 	allowAnddenyHandler *waf.AllowAndDenyIpHandler,
 	ccHandler *handler.CcHandler,
 	logService service.LogService,
+	ccIpListHandler *waf.CcIpListHandler,
 ) *http.Server {
 	gin.SetMode(gin.DebugMode)
 	s := http.NewServer(
@@ -134,7 +133,10 @@ func NewHTTPServer(
 			noAuthRouter.POST("/cc/getList", ipAllowlistMiddleware, ccHandler.GetCcList)
 			noAuthRouter.POST("/cc/editState", ipAllowlistMiddleware, ccHandler.EditCcState)
 
-
+			noAuthRouter.POST("/ccIpList/getList", ipAllowlistMiddleware, ccIpListHandler.GetCcIpList)
+			noAuthRouter.POST("/ccIpList/add", ipAllowlistMiddleware, ccIpListHandler.AddCcIpList)
+			noAuthRouter.POST("/ccIpList/edit", ipAllowlistMiddleware, ccIpListHandler.EditCcIpList)
+			noAuthRouter.POST("/ccIpList/delete", ipAllowlistMiddleware, ccIpListHandler.DelCcIpList)
 
 		}
 		// Non-strict permission routing group