Parcourir la source

feat(waf): 新增 CDN 日志查询功能

- 新增 CdnLogHandler 和 CdnLogService 用于处理 CDN 日志查询请求
- 在 WebForwardingService 中集成 CDN 日志查询功能
- 更新 HTTP 服务器路由,添加 CDN 日志查询相关接口
-重构部分代码以支持新的 CDN 日志查询功能
fusu il y a 2 semaines
Parent
commit
ca85b5302d

+ 3 - 0
api/v1/cdn/log.go

@@ -8,6 +8,9 @@ type Request struct {
 	HasError	  *bool   `json:"hasError" form:"hasError"`
 	Ip            string `json:"ip" form:"ip"`
 	Domain 	  	  string `json:"domain" form:"domain"`
+	HourFrom      string `json:"hourFrom" form:"hourFrom"`
+	HourTo        string `json:"hourTo" form:"hourTo"`
+	Reverse       bool   `json:"reverse" form:"reverse" default:"true"`
 }
 
 

+ 16 - 0
api/v1/cdnLog.go

@@ -0,0 +1,16 @@
+package v1
+
+type GetCdnLog struct {
+	HostId        int64  `json:"hostId" form:"hostId"`
+	Uid           int64  `json:"uid" form:"uid" validate:"required"`
+	WebId         int64  `json:"webId" form:"webId"`
+	Day           string `json:"day" form:"day"`
+	Size          int64  `json:"size" form:"size"`
+	UserID        int64  `json:"userId" form:"userId"`
+	HasError	  *bool   `json:"hasError" form:"hasError"`
+	Ip            string `json:"ip" form:"ip"`
+	Domain 	  	  string `json:"domain" form:"domain"`
+	HourFrom      string `json:"hourFrom" form:"hourFrom"`
+	HourTo        string `json:"hourTo" form:"hourTo"`
+	Reverse       bool   `json:"reverse" form:"reverse" default:"true"`
+}

+ 4 - 2
cmd/server/wire/wire.go

@@ -93,10 +93,11 @@ var serviceSet = wire.NewSet(
 	flexCdn.NewProxyService,
 	flexCdn.NewSslCertService,
 	flexCdn.NewWebsocketService,
-	flexCdn.NewCcService,
+	waf.NewCcService,
 	service.NewLogService,
 	waf.NewGatewayipService,
-	flexCdn.NewCcIpListService,
+	waf.NewCcIpListService,
+	waf.NewCdnLogService,
 )
 
 var handlerSet = wire.NewSet(
@@ -120,6 +121,7 @@ var handlerSet = wire.NewSet(
 	wafHandler.NewCcHandler,
 	wafHandler.NewGatewayipHandler,
 	wafHandler.NewCcIpListHandler,
+	wafHandler.NewCdnLogHandler,
 )
 
 

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

@@ -88,8 +88,8 @@ func NewWire(viperViper *viper.Viper, logger *log.Logger) (*app.App, func(), err
 	websocketService := flexCdn2.NewWebsocketService(serviceService, cdnService, webForwardingRepository)
 	ccRepository := flexCdn.NewCcRepository(repositoryRepository)
 	ccIpListRepository := flexCdn.NewCcIpListRepository(repositoryRepository)
-	ccIpListService := flexCdn2.NewCcIpListService(serviceService, ccIpListRepository, cdnService, webForwardingRepository)
-	ccService := flexCdn2.NewCcService(serviceService, ccRepository, webForwardingRepository, cdnService, ccIpListService)
+	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)
 	webForwardingHandler := waf3.NewWebForwardingHandler(handlerHandler, webForwardingService)
 	tcpforwardingService := waf2.NewTcpforwardingService(serviceService, tcpforwardingRepository, parserService, requiredService, crawlerService, globalLimitRepository, hostRepository, wafFormatterService, cdnService, proxyService)
@@ -109,7 +109,9 @@ func NewWire(viperViper *viper.Viper, logger *log.Logger) (*app.App, func(), err
 	allowAndDenyIpHandler := waf3.NewAllowAndDenyIpHandler(handlerHandler, allowAndDenyIpService)
 	ccHandler := waf3.NewCcHandler(handlerHandler, ccService)
 	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)
+	cdnLogService := waf2.NewCdnLogService(serviceService, tcpforwardingRepository, udpForWardingRepository, webForwardingRepository, cdnService, ccIpListService)
+	cdnLogHandler := waf3.NewCdnLogHandler(handlerHandler, cdnLogService)
+	httpServer := server.NewHTTPServer(logger, viperViper, jwtJWT, syncedEnforcer, limiterLimiter, handlerFunc, userHandler, gameShieldHandler, gameShieldBackendHandler, webForwardingHandler, tcpforwardingHandler, udpForWardingHandler, globalLimitHandler, adminHandler, gatewayIpAdminHandler, allowAndDenyIpHandler, ccHandler, logService, ccIpListHandler, cdnLogHandler)
 	appApp := newApp(httpServer)
 	return appApp, func() {
 		cleanup()
@@ -120,9 +122,9 @@ func NewWire(viperViper *viper.Viper, logger *log.Logger) (*app.App, func(), err
 
 var repositorySet = wire.NewSet(repository.NewDB, repository.NewRedis, repository.NewCasbinEnforcer, repository.NewMongoClient, repository.NewMongoDB, repository.NewRabbitMQ, repository.NewRepository, repository.NewTransaction, admin.NewAdminRepository, admin.NewUserRepository, repository.NewGameShieldRepository, repository.NewGameShieldPublicIpRepository, waf.NewWebForwardingRepository, waf.NewTcpforwardingRepository, waf.NewUdpForWardingRepository, repository.NewGameShieldUserIpRepository, repository.NewGameShieldBackendRepository, repository.NewGameShieldSdkIpRepository, repository.NewHostRepository, waf.NewGlobalLimitRepository, repository.NewGatewayGroupRepository, repository.NewGateWayGroupIpRepository, flexCdn.NewCdnRepository, waf.NewAllowAndDenyIpRepository, flexCdn.NewProxyRepository, flexCdn.NewCcRepository, repository.NewExpiredRepository, repository.NewLogRepository, waf.NewGatewayipRepository, admin.NewGatewayIpAdminRepository, flexCdn.NewCcIpListRepository)
 
-var serviceSet = wire.NewSet(service.NewService, admin2.NewUserService, admin2.NewGatewayIpAdminService, admin2.NewAdminService, gameShield.NewGameShieldService, service.NewAoDunService, service.NewGameShieldPublicIpService, service.NewDuedateService, service.NewFormatterService, service.NewParserService, service.NewRequiredService, service.NewCrawlerService, waf2.NewWebForwardingService, waf2.NewTcpforwardingService, waf2.NewUdpForWardingService, service.NewGameShieldUserIpService, gameShield.NewGameShieldBackendService, service.NewGameShieldSdkIpService, service.NewHostService, waf2.NewGlobalLimitService, service.NewGatewayGroupService, waf2.NewWafFormatterService, service.NewGateWayGroupIpService, service.NewRequestService, flexCdn2.NewCdnService, waf2.NewAllowAndDenyIpService, flexCdn2.NewProxyService, flexCdn2.NewSslCertService, flexCdn2.NewWebsocketService, flexCdn2.NewCcService, service.NewLogService, waf2.NewGatewayipService, flexCdn2.NewCcIpListService)
+var serviceSet = wire.NewSet(service.NewService, admin2.NewUserService, admin2.NewGatewayIpAdminService, admin2.NewAdminService, gameShield.NewGameShieldService, service.NewAoDunService, service.NewGameShieldPublicIpService, service.NewDuedateService, service.NewFormatterService, service.NewParserService, service.NewRequiredService, service.NewCrawlerService, waf2.NewWebForwardingService, waf2.NewTcpforwardingService, waf2.NewUdpForWardingService, service.NewGameShieldUserIpService, gameShield.NewGameShieldBackendService, service.NewGameShieldSdkIpService, service.NewHostService, waf2.NewGlobalLimitService, service.NewGatewayGroupService, waf2.NewWafFormatterService, service.NewGateWayGroupIpService, service.NewRequestService, flexCdn2.NewCdnService, waf2.NewAllowAndDenyIpService, flexCdn2.NewProxyService, flexCdn2.NewSslCertService, flexCdn2.NewWebsocketService, waf2.NewCcService, service.NewLogService, waf2.NewGatewayipService, waf2.NewCcIpListService, waf2.NewCdnLogService)
 
-var handlerSet = wire.NewSet(handler.NewHandler, admin3.NewUserHandler, admin3.NewAdminHandler, admin3.NewGatewayIpAdminHandler, handler.NewGameShieldHandler, handler.NewGameShieldPublicIpHandler, waf3.NewWebForwardingHandler, waf3.NewTcpforwardingHandler, waf3.NewUdpForWardingHandler, handler.NewGameShieldUserIpHandler, handler.NewGameShieldBackendHandler, handler.NewGameShieldSdkIpHandler, handler.NewHostHandler, waf3.NewGlobalLimitHandler, handler.NewGatewayGroupHandler, handler.NewGateWayGroupIpHandler, waf3.NewAllowAndDenyIpHandler, waf3.NewCcHandler, waf3.NewGatewayipHandler, waf3.NewCcIpListHandler)
+var handlerSet = wire.NewSet(handler.NewHandler, admin3.NewUserHandler, admin3.NewAdminHandler, admin3.NewGatewayIpAdminHandler, handler.NewGameShieldHandler, handler.NewGameShieldPublicIpHandler, waf3.NewWebForwardingHandler, waf3.NewTcpforwardingHandler, waf3.NewUdpForWardingHandler, handler.NewGameShieldUserIpHandler, handler.NewGameShieldBackendHandler, handler.NewGameShieldSdkIpHandler, handler.NewHostHandler, waf3.NewGlobalLimitHandler, handler.NewGatewayGroupHandler, handler.NewGateWayGroupIpHandler, waf3.NewAllowAndDenyIpHandler, waf3.NewCcHandler, waf3.NewGatewayipHandler, waf3.NewCcIpListHandler, waf3.NewCdnLogHandler)
 
 // 限流器依赖集
 var limiterSet = wire.NewSet(limiter.NewLimiter, middleware.NewRateLimitMiddleware)

+ 2 - 2
cmd/task/wire/wire.go

@@ -94,10 +94,10 @@ var serviceSet = wire.NewSet(
 	flexCdn.NewProxyService,
 	flexCdn.NewSslCertService,
 	flexCdn.NewWebsocketService,
-	flexCdn.NewCcService,
+	waf.NewCcService,
 	waf.NewGatewayipService,
 	service.NewLogService,
-	flexCdn.NewCcIpListService,
+	waf.NewCcIpListService,
 )
 
 // build App

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

@@ -82,8 +82,8 @@ func NewWire(viperViper *viper.Viper, logger *log.Logger) (*app.App, func(), err
 	websocketService := flexCdn2.NewWebsocketService(serviceService, cdnService, webForwardingRepository)
 	ccRepository := flexCdn.NewCcRepository(repositoryRepository)
 	ccIpListRepository := flexCdn.NewCcIpListRepository(repositoryRepository)
-	ccIpListService := flexCdn2.NewCcIpListService(serviceService, ccIpListRepository, cdnService, webForwardingRepository)
-	ccService := flexCdn2.NewCcService(serviceService, ccRepository, webForwardingRepository, cdnService, ccIpListService)
+	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)
 	wafTask := task.NewWafTask(webForwardingRepository, tcpforwardingRepository, udpForWardingRepository, cdnService, hostRepository, globalLimitRepository, expiredRepository, taskTask, gatewayipRepository, tcpforwardingService, udpForWardingService, webForwardingService)
 	taskServer := server.NewTaskServer(logger, userTask, gameShieldTask, wafTask)
@@ -107,7 +107,7 @@ var jobSet = wire.NewSet(job.NewJob, job.NewUserJob, job.NewWhitelistJob)
 
 var serverSet = wire.NewSet(server.NewTaskServer, server.NewJobServer)
 
-var serviceSet = wire.NewSet(service.NewService, service.NewAoDunService, gameShield.NewGameShieldService, service.NewCrawlerService, service.NewGameShieldPublicIpService, service.NewDuedateService, service.NewFormatterService, service.NewParserService, service.NewRequiredService, service.NewHostService, gameShield.NewGameShieldBackendService, service.NewGameShieldSdkIpService, service.NewGameShieldUserIpService, waf2.NewWafFormatterService, flexCdn2.NewCdnService, service.NewRequestService, waf2.NewTcpforwardingService, waf2.NewUdpForWardingService, waf2.NewWebForwardingService, flexCdn2.NewProxyService, flexCdn2.NewSslCertService, flexCdn2.NewWebsocketService, flexCdn2.NewCcService, waf2.NewGatewayipService, service.NewLogService, flexCdn2.NewCcIpListService)
+var serviceSet = wire.NewSet(service.NewService, service.NewAoDunService, gameShield.NewGameShieldService, service.NewCrawlerService, service.NewGameShieldPublicIpService, service.NewDuedateService, service.NewFormatterService, service.NewParserService, service.NewRequiredService, service.NewHostService, gameShield.NewGameShieldBackendService, service.NewGameShieldSdkIpService, service.NewGameShieldUserIpService, waf2.NewWafFormatterService, flexCdn2.NewCdnService, service.NewRequestService, waf2.NewTcpforwardingService, waf2.NewUdpForWardingService, waf2.NewWebForwardingService, flexCdn2.NewProxyService, flexCdn2.NewSslCertService, flexCdn2.NewWebsocketService, waf2.NewCcService, waf2.NewGatewayipService, service.NewLogService, waf2.NewCcIpListService)
 
 // build App
 func newApp(task2 *server.TaskServer,

+ 3 - 3
internal/handler/api/waf/cc.go

@@ -4,18 +4,18 @@ 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"
+	"github.com/go-nunu/nunu-layout-advanced/internal/service/api/waf"
 	"net/http"
 )
 
 type CcHandler struct {
 	*handler.Handler
-	ccService flexCdn.CcService
+	ccService waf.CcService
 }
 
 func NewCcHandler(
     handler *handler.Handler,
-    ccService flexCdn.CcService,
+    ccService waf.CcService,
 ) *CcHandler {
 	return &CcHandler{
 		Handler:      handler,

+ 3 - 3
internal/handler/api/waf/cciplist.go

@@ -4,18 +4,18 @@ 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"
+	"github.com/go-nunu/nunu-layout-advanced/internal/service/api/waf"
 	"net/http"
 )
 
 type CcIpListHandler struct {
 	*handler.Handler
-	ccIpListService flexCdn.CcIpListService
+	ccIpListService waf.CcIpListService
 }
 
 func NewCcIpListHandler(
     handler *handler.Handler,
-    ccIpListService flexCdn.CcIpListService,
+    ccIpListService waf.CcIpListService,
 ) *CcIpListHandler {
 	return &CcIpListHandler{
 		Handler:      handler,

+ 41 - 0
internal/handler/api/waf/cdnlog.go

@@ -0,0 +1,41 @@
+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/waf"
+	"github.com/mcuadros/go-defaults"
+	"net/http"
+)
+
+type CdnLogHandler struct {
+	*handler.Handler
+	cdnLogService waf.CdnLogService
+}
+
+func NewCdnLogHandler(
+    handler *handler.Handler,
+    cdnLogService waf.CdnLogService,
+) *CdnLogHandler {
+	return &CdnLogHandler{
+		Handler:      handler,
+		cdnLogService: cdnLogService,
+	}
+}
+
+func (h *CdnLogHandler) GetCdnLog(ctx *gin.Context) {
+	var req v1.GetCdnLog
+	if err := ctx.ShouldBind(&req); err != nil {
+		v1.HandleError(ctx, http.StatusBadRequest, v1.ErrBadRequest, err.Error())
+		return
+	}
+	defaults.SetDefaults(req)
+	res, err := h.cdnLogService.GetAccessLog(ctx, req)
+	if err != nil {
+		v1.HandleError(ctx, http.StatusInternalServerError, err, err.Error())
+		return
+	}
+	v1.HandleSuccess(ctx, res)
+
+}

+ 3 - 0
internal/server/http.go

@@ -39,6 +39,7 @@ func NewHTTPServer(
 	ccHandler *waf.CcHandler,
 	logService service.LogService,
 	ccIpListHandler *waf.CcIpListHandler,
+	cdnLogHandler *waf.CdnLogHandler,
 ) *http.Server {
 	gin.SetMode(gin.DebugMode)
 	s := http.NewServer(
@@ -139,6 +140,8 @@ func NewHTTPServer(
 			noAuthRouter.POST("/ccIpList/edit", ipAllowlistMiddleware, ccIpListHandler.EditCcIpList)
 			noAuthRouter.POST("/ccIpList/delete", ipAllowlistMiddleware, ccIpListHandler.DelCcIpList)
 
+			noAuthRouter.POST("/cdnLog/getList", ipAllowlistMiddleware, cdnLogHandler.GetCdnLog)
+
 		}
 		// Non-strict permission routing group
 		//noStrictAuthRouter := v1.Group("/").Use(middleware.NoStrictAuth(jwt, logger))

+ 10 - 7
internal/service/api/flexCdn/cdn.go

@@ -74,7 +74,7 @@ type CdnService interface {
 	// 修改IP
 	EditIpItem(ctx context.Context, req v1.AddIpItem) error
 	// 获取访问日志
-	GetAccessLog(ctx context.Context, req cdn.Request) (cdn.Data, error)
+	GetAccessLog(ctx context.Context, req cdn.Request) ([]cdn.Data, error)
 }
 
 func NewCdnService(
@@ -1184,26 +1184,29 @@ func (s *cdnService) EditIpItem(ctx context.Context, req v1.AddIpItem) error {
 }
 
 // 获取访问日志
-func (s *cdnService) GetAccessLog(ctx context.Context, req cdn.Request) (cdn.Data, error) {
+func (s *cdnService) GetAccessLog(ctx context.Context, req cdn.Request) ([]cdn.Data, error) {
 	formData := map[string]interface{}{
 		"serverId": req.ServerID,
-		"size":     50,
+		"size":     req.Size,
 		"day" :     req.Day,
 		"ip":       req.Ip,
 		"domain":   req.Domain,
 		"hasError": &req.HasError,
+		"hourFrom": req.HourFrom,
+		"hourTo":   req.HourTo,
+		"reverse" : req.Reverse,
 	}
 	apiUrl := s.Url + "HTTPAccessLogService/listHTTPAccessLogs"
 	resBody, err := s.sendDataWithTokenRetry(ctx, formData, apiUrl)
 	if err != nil {
-		return cdn.Data{}, err
+		return nil, err
 	}
-	var res v1.GeneralResponse[cdn.Data]
+	var res v1.GeneralResponse[[]cdn.Data]
 	if err := json.Unmarshal(resBody, &res); err != nil {
-		return cdn.Data{}, fmt.Errorf("反序列化响应 JSON 失败 (内容: %s): %w", string(resBody), err)
+		return nil, fmt.Errorf("反序列化响应 JSON 失败 (内容: %s): %w", string(resBody), err)
 	}
 	if res.Code != 200 {
-		return cdn.Data{}, fmt.Errorf("API 错误: code %d, msg '%s'", res.Code, res.Message)
+		return nil, fmt.Errorf("API 错误: code %d, msg '%s'", res.Code, res.Message)
 	}
 	return res.Data, nil
 }

+ 5 - 4
internal/service/api/flexCdn/cc.go → internal/service/api/waf/cc.go

@@ -1,4 +1,4 @@
-package flexCdn
+package waf
 
 import (
 	"context"
@@ -7,6 +7,7 @@ import (
 	flexCdnRep "github.com/go-nunu/nunu-layout-advanced/internal/repository/api/flexCdn"
 	"github.com/go-nunu/nunu-layout-advanced/internal/repository/api/waf"
 	"github.com/go-nunu/nunu-layout-advanced/internal/service"
+	"github.com/go-nunu/nunu-layout-advanced/internal/service/api/flexCdn"
 	"time"
 )
 
@@ -22,7 +23,7 @@ func NewCcService(
     service *service.Service,
     ccRepository flexCdnRep.CcRepository,
 	webForwardingRep waf.WebForwardingRepository,
-	cdn CdnService,
+	cdn flexCdn.CdnService,
 	ccIpList CcIpListService,
 ) CcService {
 	return &ccService{
@@ -38,8 +39,8 @@ type ccService struct {
 	*service.Service
 	ccRepository     flexCdnRep.CcRepository
 	webForwardingRep waf.WebForwardingRepository
-	cdn              CdnService
-	ccIpList          CcIpListService
+	cdn              flexCdn.CdnService
+	ccIpList         CcIpListService
 }
 
 func (s *ccService) GetCcList(ctx context.Context, req v1.CCListRequest) ([]v1.CCListResponse, error) {

+ 6 - 4
internal/service/api/flexCdn/cciplist.go → internal/service/api/waf/cciplist.go

@@ -1,4 +1,4 @@
-package flexCdn
+package waf
 
 import (
 	"context"
@@ -7,6 +7,7 @@ import (
 	"github.com/go-nunu/nunu-layout-advanced/internal/repository/api/flexCdn"
 	"github.com/go-nunu/nunu-layout-advanced/internal/repository/api/waf"
 	"github.com/go-nunu/nunu-layout-advanced/internal/service"
+	flexCdn2 "github.com/go-nunu/nunu-layout-advanced/internal/service/api/flexCdn"
 )
 
 type CcIpListService interface {
@@ -15,12 +16,13 @@ type CcIpListService interface {
 	AddCcWhiteIp(ctx context.Context, webId int64,ip string,comment string) error
 	DelCcWhiteIp(ctx context.Context, webId int64,ips []string) error
 	EditCcWhiteIp(ctx context.Context, webId int64,oldIp string,newIp string,comment string) error
+	GetServerId(ctx context.Context, webId int64) (int64, error)
 
 }
 func NewCcIpListService(
     service *service.Service,
     ccIpListRepository flexCdn.CcIpListRepository,
-	cdn CdnService,
+	cdn flexCdn2.CdnService,
 	webForwardingRep waf.WebForwardingRepository,
 ) CcIpListService {
 	return &ccIpListService{
@@ -34,8 +36,8 @@ func NewCcIpListService(
 type ccIpListService struct {
 	*service.Service
 	ccIpListRepository flexCdn.CcIpListRepository
-	cdn CdnService
-	webForwardingRep waf.WebForwardingRepository
+	cdn                flexCdn2.CdnService
+	webForwardingRep   waf.WebForwardingRepository
 }
 
 func (s *ccIpListService) GetServerId(ctx context.Context, webId int64) (int64, error) {

+ 66 - 0
internal/service/api/waf/cdnlog.go

@@ -0,0 +1,66 @@
+package waf
+
+import (
+	"github.com/gin-gonic/gin"
+	v1 "github.com/go-nunu/nunu-layout-advanced/api/v1"
+	cdnStruct "github.com/go-nunu/nunu-layout-advanced/api/v1/cdn"
+	"github.com/go-nunu/nunu-layout-advanced/internal/repository/api/waf"
+	"github.com/go-nunu/nunu-layout-advanced/internal/service"
+	"github.com/go-nunu/nunu-layout-advanced/internal/service/api/flexCdn"
+)
+
+type CdnLogService interface {
+	GetAccessLog(ctx *gin.Context,req v1.GetCdnLog) ([]cdnStruct.Data, error)
+}
+func NewCdnLogService(
+    service *service.Service,
+	tcpforwardingRep waf.TcpforwardingRepository,
+	udpforwardingRep waf.UdpForWardingRepository,
+	webforwardingRep waf.WebForwardingRepository,
+	cdn flexCdn.CdnService,
+	ccIpList CcIpListService,
+) CdnLogService {
+	return &cdnLogService{
+		Service:        service,
+		tcpforwardingRep: tcpforwardingRep,
+		udpforwardingRep: udpforwardingRep,
+		webforwardingRep: webforwardingRep,
+		cdn: cdn,
+		ccIpList: ccIpList,
+	}
+}
+
+type cdnLogService struct {
+	*service.Service
+	tcpforwardingRep waf.TcpforwardingRepository
+	udpforwardingRep waf.UdpForWardingRepository
+	webforwardingRep waf.WebForwardingRepository
+	cdn flexCdn.CdnService
+	ccIpList CcIpListService
+}
+
+
+func (s *cdnLogService) GetAccessLog(ctx *gin.Context,req v1.GetCdnLog) ([]cdnStruct.Data, error) {
+	serverId, err := s.ccIpList.GetServerId(ctx,req.WebId)
+	if err != nil {
+		return nil, err
+	}
+
+	logData, err := s.cdn.GetAccessLog(ctx,cdnStruct.Request{
+		ServerID: serverId,
+		Day: req.Day,
+		Size: 50,
+		Ip: req.Ip,
+		Domain: req.Domain,
+		HasError: req.HasError,
+		HourFrom: req.HourFrom,
+		HourTo: req.HourTo,
+		Reverse: req.Reverse,
+	})
+
+	if err != nil {
+		return nil, err
+	}
+	return logData, nil
+
+}

+ 5 - 5
internal/service/api/waf/webforwarding.go

@@ -39,8 +39,8 @@ func NewWebForwardingService(
 	proxy flexCdn.ProxyService,
 	sslCert flexCdn.SslCertService,
 	websocket flexCdn.WebsocketService,
-	cc flexCdn.CcService,
-	ccIpList flexCdn.CcIpListService,
+	cc CcService,
+	ccIpList CcIpListService,
 ) WebForwardingService {
 	return &webForwardingService{
 		Service:                 service,
@@ -82,9 +82,9 @@ type webForwardingService struct {
 	globalLimitRep waf.GlobalLimitRepository
 	proxy          flexCdn.ProxyService
 	sslCert        flexCdn.SslCertService
-	websocket      flexCdn.WebsocketService
-	cc             flexCdn.CcService
-	ccIpList       flexCdn.CcIpListService
+	websocket flexCdn.WebsocketService
+	cc        CcService
+	ccIpList  CcIpListService
 }
 
 func (s *webForwardingService) require(ctx context.Context, req v1.GlobalRequire) (v1.GlobalRequire, error) {