浏览代码

refactor(waf): 重构 Web 转发辅助服务

- 将 AidedWebService 接口拆分为多个更具体的接口
- 重命名接口和方法以提高可读性和一致性
- 优化部分代码结构以提高可维护性
fusu 21 小时之前
父节点
当前提交
f45f8ac5c2

+ 32 - 16
internal/service/api/waf/web/aidedweb.go

@@ -14,7 +14,10 @@ import (
 )
 
 // AidedWebService Web转发辅助服务接口
-type AidedWebServiceInterface interface {
+type AidedWebService interface {
+
+
+
 	// 数据准备辅助函数
 	PrepareWafData(ctx context.Context, req *v1.WebForwardingRequest) (common.RequireResponse, v1.Website, error)
 	BuildProxyConfig(ctx context.Context, req *v1.WebForwardingRequest, gatewayIps []string) (v1.TypeJSON, error)
@@ -28,6 +31,19 @@ type AidedWebServiceInterface interface {
 	BuildWebForwardingModel(req *v1.WebForwardingDataRequest, ruleId int, require common.RequireResponse) *model.WebForwarding
 	BuildWebRuleModel(reqData *v1.WebForwardingDataRequest, require common.RequireResponse, localDbId int, cdnOriginIds map[string]int64) *model.WebForwardingRule
 
+
+
+
+	Helper
+	Valid
+	Log
+	Database
+	SSLCert
+	Configure
+	CdnWeb
+	Origin
+	Process
+
 }
 
 func NewAidedWebService(
@@ -42,8 +58,8 @@ func NewAidedWebService(
 	ccIpList waf2.CcIpListService,
 	gatewayIp common.GatewayipService,
 	globalLimitRep waf.GlobalLimitRepository,
-) *AidedWebService {
-	return &AidedWebService{
+) AidedWebService {
+	return &aidedWebService{
 		Service:                 service,
 		webForwardingRepository: webForwardingRepository,
 		wafformatter:            wafformatter,
@@ -58,7 +74,7 @@ func NewAidedWebService(
 	}
 }
 
-type AidedWebService struct {
+type aidedWebService struct {
 	*service.Service
 	webForwardingRepository waf.WebForwardingRepository
 	wafformatter            common.WafFormatterService
@@ -88,7 +104,7 @@ const (
 
 // BuildWebForwardingModel 辅助函数,用于构建通用的 WebForwarding 模型
 // ruleId 是从 WAF 系统获取的 ID
-func (s *AidedWebService) BuildWebForwardingModel(req *v1.WebForwardingDataRequest, ruleId int, require common.RequireResponse) *model.WebForwarding {
+func (s *aidedWebService) BuildWebForwardingModel(req *v1.WebForwardingDataRequest, ruleId int, require common.RequireResponse) *model.WebForwarding {
 	return &model.WebForwarding{
 		HostId:          require.HostId,
 		CdnWebId:        ruleId,
@@ -111,7 +127,7 @@ func (s *AidedWebService) BuildWebForwardingModel(req *v1.WebForwardingDataReque
 }
 
 // BuildWebRuleModel 构建WebForwardingRule模型
-func (s *AidedWebService) BuildWebRuleModel(reqData *v1.WebForwardingDataRequest, require common.RequireResponse, localDbId int, cdnOriginIds map[string]int64) *model.WebForwardingRule {
+func (s *aidedWebService) BuildWebRuleModel(reqData *v1.WebForwardingDataRequest, require common.RequireResponse, localDbId int, cdnOriginIds map[string]int64) *model.WebForwardingRule {
 	return &model.WebForwardingRule{
 		Uid:          require.Uid,
 		HostId:       require.HostId,
@@ -122,7 +138,7 @@ func (s *AidedWebService) BuildWebRuleModel(reqData *v1.WebForwardingDataRequest
 }
 
 // getRequire 获取前置配置
-func (s *AidedWebService) getRequire (ctx context.Context, req *v1.WebForwardingRequest) (common.RequireResponse, error) {
+func (s *aidedWebService) getRequire (ctx context.Context, req *v1.WebForwardingRequest) (common.RequireResponse, error) {
 	// 1. 获取基础配置
 	require, err := s.wafformatter.Require(ctx, v1.GlobalRequire{
 		HostId:  req.HostId,
@@ -142,7 +158,7 @@ func (s *AidedWebService) getRequire (ctx context.Context, req *v1.WebForwarding
 
 // PrepareWafData 准备WAF数据
 // 职责:协调整个流程,负责获取前置配置和组装最终的 formData。
-func (s *AidedWebService) PrepareWafData(ctx context.Context, req *v1.WebForwardingRequest) (common.RequireResponse, v1.Website, error) {
+func (s *aidedWebService) PrepareWafData(ctx context.Context, req *v1.WebForwardingRequest) (common.RequireResponse, v1.Website, error) {
 
 	// 1. 获取前置配置
 	require, err := s.getRequire(ctx, req)
@@ -198,7 +214,7 @@ func (s *AidedWebService) PrepareWafData(ctx context.Context, req *v1.WebForward
 }
 
 
-func (s *AidedWebService) buildSslPolicy(ctx context.Context, data *v1.WebForwardingDataRequest) (v1.SslPolicyRef, error) {
+func (s *aidedWebService) buildSslPolicy(ctx context.Context, data *v1.WebForwardingDataRequest) (v1.SslPolicyRef, error) {
 	// 如果不是 HTTPS,直接返回关闭状态的 SSL 策略
 	if data.IsHttps != isHttps {
 		return v1.SslPolicyRef{
@@ -228,7 +244,7 @@ func (s *AidedWebService) buildSslPolicy(ctx context.Context, data *v1.WebForwar
 
 // BuildProxyConfig 构建代理配置
 // 职责:专门负责处理 HTTP/HTTPS 的差异,并生成对应的 JSON 配置。
-func (s *AidedWebService) BuildProxyConfig(ctx context.Context, req *v1.WebForwardingRequest, gatewayIps []string) (v1.TypeJSON, error) {
+func (s *aidedWebService) BuildProxyConfig(ctx context.Context, req *v1.WebForwardingRequest, gatewayIps []string) (v1.TypeJSON, error) {
 	// 第一步:构建 SSL 策略。所有复杂的 if/else 都被封装在辅助函数中
 	sslPolicy, err := s.buildSslPolicy(ctx, &req.WebForwardingData)
 	if err != nil {
@@ -270,7 +286,7 @@ func (s *AidedWebService) BuildProxyConfig(ctx context.Context, req *v1.WebForwa
 
 
 // BulidFormData 构建表单数据
-func (s *AidedWebService) BulidFormData(ctx context.Context, formData v1.Website) (v1.WebsiteSend, error) {
+func (s *aidedWebService) BulidFormData(ctx context.Context, formData v1.Website) (v1.WebsiteSend, error) {
 	httpJSON, err := json.Marshal(formData.HttpJSON)
 	if err != nil {
 		return v1.WebsiteSend{}, err
@@ -308,7 +324,7 @@ func (s *AidedWebService) BulidFormData(ctx context.Context, formData v1.Website
 
 
 // GetProtocolType 获取协议类型字符串
-func (s *AidedWebService) GetProtocolType(isHttps int) string {
+func (s *aidedWebService) GetProtocolType(isHttps int) string {
 	if s.IsHttpsProtocol(isHttps) {
 		return protocolHttps
 	}
@@ -316,7 +332,7 @@ func (s *AidedWebService) GetProtocolType(isHttps int) string {
 }
 
 // IsHttpsProtocol 判断是否为HTTPS协议
-func (s *AidedWebService) IsHttpsProtocol(httpsFlag int) bool {
+func (s *aidedWebService) IsHttpsProtocol(httpsFlag int) bool {
 	return httpsFlag == isHttps
 }
 
@@ -333,7 +349,7 @@ func (s *AidedWebService) IsHttpsProtocol(httpsFlag int) bool {
 
 
 // updateWebsiteProtocolAndCert 更新网站协议和证书
-func (s *AidedWebService) updateWebsiteProtocolAndCert(ctx context.Context, isHttps int, cdnWebId int64,  formData v1.Website) error {
+func (s *aidedWebService) updateWebsiteProtocolAndCert(ctx context.Context, isHttps int, cdnWebId int64,  formData v1.Website) error {
 
 
 	// 切换协议
@@ -380,7 +396,7 @@ func (s *AidedWebService) updateWebsiteProtocolAndCert(ctx context.Context, isHt
 }
 
 // updateWebsiteDomain 更新网站域名
-func (s *AidedWebService) updateWebsiteDomain(ctx context.Context, domain string, cdnWebId int64) error {
+func (s *aidedWebService) updateWebsiteDomain(ctx context.Context, domain string, cdnWebId int64) error {
 	type serverName struct {
 		Name string `json:"name" form:"name"`
 		Type string `json:"type" form:"type"`
@@ -406,7 +422,7 @@ func (s *AidedWebService) updateWebsiteDomain(ctx context.Context, domain string
 }
 
 // updateWebsiteBasicInfo 更新网站基本信息
-func (s *AidedWebService) updateWebsiteBasicInfo(ctx context.Context, cdnWebId int64, tag string) error {
+func (s *aidedWebService) updateWebsiteBasicInfo(ctx context.Context, cdnWebId int64, tag string) error {
 	// 通过globalLimitRep获取节点ID,这是项目中现有的方法
 	nodeId, err := s.globalLimitRep.GetNodeId(ctx, int(cdnWebId))
 	if err != nil {

+ 9 - 3
internal/service/api/waf/web/cdnweb.go

@@ -7,8 +7,14 @@ import (
 	"github.com/go-nunu/nunu-layout-advanced/internal/model"
 )
 
+type CdnWeb interface {
+	CreateCdnWebsite(ctx context.Context, formData v1.Website) (int64, error)
+	UpdateCdnConfiguration(ctx context.Context, req *v1.WebForwardingRequest, oldData *model.WebForwarding, tag string, formData v1.Website) error
+	DeleteCdnServer(ctx context.Context, cdnWebId int) error
+}
+
 // CreateCdnWebsite 创建CDN网站
-func (s *AidedWebService) CreateCdnWebsite(ctx context.Context, formData v1.Website) (int64, error) {
+func (s *aidedWebService) CreateCdnWebsite(ctx context.Context, formData v1.Website) (int64, error) {
 	formDataSend, err := s.BulidFormData(ctx, formData)
 	if err != nil {
 		return 0, fmt.Errorf("构建表单数据失败: %w", err)
@@ -24,7 +30,7 @@ func (s *AidedWebService) CreateCdnWebsite(ctx context.Context, formData v1.Webs
 
 
 // UpdateCdnConfiguration 更新CDN配置
-func (s *AidedWebService) UpdateCdnConfiguration(ctx context.Context, req *v1.WebForwardingRequest, oldData *model.WebForwarding, tag string, formData v1.Website) error {
+func (s *aidedWebService) UpdateCdnConfiguration(ctx context.Context, req *v1.WebForwardingRequest, oldData *model.WebForwarding, tag string, formData v1.Website) error {
 	// 修改网站端口、协议或证书
 	if oldData.Port != req.WebForwardingData.Port || oldData.IsHttps != req.WebForwardingData.IsHttps ||
 		oldData.HttpsCert != req.WebForwardingData.HttpsCert || oldData.HttpsKey != req.WebForwardingData.HttpsKey {
@@ -53,7 +59,7 @@ func (s *AidedWebService) UpdateCdnConfiguration(ctx context.Context, req *v1.We
 
 
 // DeleteCdnServer 删除CDN服务器
-func (s *AidedWebService) DeleteCdnServer(ctx context.Context, cdnWebId int) error {
+func (s *aidedWebService) DeleteCdnServer(ctx context.Context, cdnWebId int) error {
 	if err := s.cdn.DelServer(ctx, int64(cdnWebId)); err != nil {
 		return fmt.Errorf("删除CDN服务器失败: %w", err)
 	}

+ 11 - 4
internal/service/api/waf/web/configure.go

@@ -6,8 +6,15 @@ import (
 	v1 "github.com/go-nunu/nunu-layout-advanced/api/v1"
 )
 
+type Configure interface {
+	ConfigureWebsocket(ctx context.Context, webId int64) error
+	ConfigureProxyProtocol(ctx context.Context, proxy bool, cdnWebId int64) error
+	ConfigureCCProtection(ctx context.Context, ccConfig v1.CcConfigRequest, webId int64) error
+	ConfigureWafFirewall(ctx context.Context, webId int64, groupId int) error
+}
+
 // ConfigureWebsocket 配置WebSocket
-func (s *AidedWebService) ConfigureWebsocket(ctx context.Context, webId int64) error {
+func (s *aidedWebService) ConfigureWebsocket(ctx context.Context, webId int64) error {
 	websocketId, err := s.websocket.AddWebsocket(ctx)
 	if err != nil {
 		return fmt.Errorf("添加WebSocket失败: %w", err)
@@ -21,7 +28,7 @@ func (s *AidedWebService) ConfigureWebsocket(ctx context.Context, webId int64) e
 }
 
 // ConfigureProxyProtocol 配置代理协议
-func (s *AidedWebService) ConfigureProxyProtocol(ctx context.Context, proxy bool, cdnWebId int64) error {
+func (s *aidedWebService) ConfigureProxyProtocol(ctx context.Context, proxy bool, cdnWebId int64) error {
 	if err := s.proxy.EditProxy(ctx, cdnWebId, v1.ProxyProtocolJSON{
 		IsOn:    proxy,
 		Version: proxyProtocolVersion,
@@ -32,7 +39,7 @@ func (s *AidedWebService) ConfigureProxyProtocol(ctx context.Context, proxy bool
 }
 
 // ConfigureCCProtection 配置CC防护
-func (s *AidedWebService) ConfigureCCProtection(ctx context.Context, ccConfig v1.CcConfigRequest, webId int64) error {
+func (s *aidedWebService) ConfigureCCProtection(ctx context.Context, ccConfig v1.CcConfigRequest, webId int64) error {
 	if err := s.cc.EditCcConfig(ctx, webId, ccConfig); err != nil {
 		return fmt.Errorf("配置CC防护失败: %w", err)
 	}
@@ -40,7 +47,7 @@ func (s *AidedWebService) ConfigureCCProtection(ctx context.Context, ccConfig v1
 }
 
 // ConfigureWafFirewall 配置WAF防火墙
-func (s *AidedWebService) ConfigureWafFirewall(ctx context.Context, webId int64, groupId int) error {
+func (s *aidedWebService) ConfigureWafFirewall(ctx context.Context, webId int64, groupId int) error {
 	if err := s.ccIpList.AddCcIpListPolicy(ctx, webId, int64(groupId)); err != nil {
 		return fmt.Errorf("配置WAF防火墙失败: %w", err)
 	}

+ 9 - 3
internal/service/api/waf/web/database.go

@@ -8,8 +8,14 @@ import (
 	"github.com/go-nunu/nunu-layout-advanced/internal/service/api/waf/common"
 )
 
+
+type Database interface {
+	SaveToDatabase(ctx context.Context, req *v1.WebForwardingRequest, require common.RequireResponse, webId int64, cdnOriginIds map[string]int64) (int, error)
+	UpdateDatabaseRecords(ctx context.Context, req *v1.WebForwardingRequest, require common.RequireResponse, ipData *model.WebForwardingRule) error
+	CleanupDatabaseRecords(ctx context.Context, id int) error
+}
 // SaveToDatabase 保存到数据库
-func (s *AidedWebService) SaveToDatabase(ctx context.Context, req *v1.WebForwardingRequest, require common.RequireResponse, webId int64, cdnOriginIds map[string]int64) (int, error) {
+func (s *aidedWebService) SaveToDatabase(ctx context.Context, req *v1.WebForwardingRequest, require common.RequireResponse, webId int64, cdnOriginIds map[string]int64) (int, error) {
 	webModel := s.BuildWebForwardingModel(&req.WebForwardingData, int(webId), require)
 
 	id, err := s.webForwardingRepository.AddWebForwarding(ctx, webModel)
@@ -26,7 +32,7 @@ func (s *AidedWebService) SaveToDatabase(ctx context.Context, req *v1.WebForward
 }
 
 // UpdateDatabaseRecords 更新数据库记录
-func (s *AidedWebService) UpdateDatabaseRecords(ctx context.Context, req *v1.WebForwardingRequest, require common.RequireResponse, ipData *model.WebForwardingRule) error {
+func (s *aidedWebService) UpdateDatabaseRecords(ctx context.Context, req *v1.WebForwardingRequest, require common.RequireResponse, ipData *model.WebForwardingRule) error {
 	webModel := s.BuildWebForwardingModel(&req.WebForwardingData, req.WebForwardingData.CdnWebId, require)
 	webModel.Id = req.WebForwardingData.Id
 
@@ -43,7 +49,7 @@ func (s *AidedWebService) UpdateDatabaseRecords(ctx context.Context, req *v1.Web
 }
 
 // CleanupDatabaseRecords 清理数据库记录
-func (s *AidedWebService) CleanupDatabaseRecords(ctx context.Context, id int) error {
+func (s *aidedWebService) CleanupDatabaseRecords(ctx context.Context, id int) error {
 	if err := s.webForwardingRepository.DeleteWebForwarding(ctx, int64(id)); err != nil {
 		return fmt.Errorf("删除Web转发记录失败: %w", err)
 	}

+ 9 - 4
internal/service/api/waf/web/helper.go

@@ -5,8 +5,13 @@ import (
 	"net"
 )
 
+type Helper interface {
+	FindDifferenceList(oldList, newList []v1.BackendList) (added, removed []v1.BackendList)
+	WashDifferentIp(newIpList []string, oldIpList []string) (addedDenyIps []string, removedDenyIps []string)
+}
+
 // FindDifferenceList 查找两个列表的差异
-func (s *AidedWebService) FindDifferenceList(oldList, newList []v1.BackendList) (added, removed []v1.BackendList) {
+func (s *aidedWebService) FindDifferenceList(oldList, newList []v1.BackendList) (added, removed []v1.BackendList) {
 	diff := make(map[v1.BackendList]int)
 
 	// 1. 遍历旧列表,为每个元素计数 +1
@@ -35,7 +40,7 @@ func (s *AidedWebService) FindDifferenceList(oldList, newList []v1.BackendList)
 }
 
 // WashDifferentIp 清洗IP差异 - 并发版本
-func (s *AidedWebService) WashDifferentIp(newIpList []string, oldIpList []string) (addedDenyIps []string, removedDenyIps []string) {
+func (s *aidedWebService) WashDifferentIp(newIpList []string, oldIpList []string) (addedDenyIps []string, removedDenyIps []string) {
 	// 并发验证并过滤有效IP
 	oldAllowIps := s.filterValidIpsConcurrently(oldIpList)
 	newAllowIps := s.filterValidIpsConcurrently(newIpList)
@@ -45,7 +50,7 @@ func (s *AidedWebService) WashDifferentIp(newIpList []string, oldIpList []string
 }
 
 // filterValidIpsConcurrently 并发过滤有效IP地址
-func (s *AidedWebService) filterValidIpsConcurrently(ipList []string) []string {
+func (s *aidedWebService) filterValidIpsConcurrently(ipList []string) []string {
 	if len(ipList) == 0 {
 		return nil
 	}
@@ -95,7 +100,7 @@ func (s *AidedWebService) filterValidIpsConcurrently(ipList []string) []string {
 }
 
 // filterValidIpsSequentially 顺序过滤有效IP地址(用于小数据集)
-func (s *AidedWebService) filterValidIpsSequentially(ipList []string) []string {
+func (s *aidedWebService) filterValidIpsSequentially(ipList []string) []string {
 	var validIps []string
 	for _, ip := range ipList {
 		if net.ParseIP(ip) != nil {

+ 5 - 1
internal/service/api/waf/web/log.go

@@ -5,8 +5,12 @@ import (
 	v1 "github.com/go-nunu/nunu-layout-advanced/api/v1"
 )
 
+type Log interface {
+	EditLog(ctx context.Context, webId int64) error
+}
+
 // EditLog 修改日志配置
-func (s *AidedWebService) EditLog(ctx context.Context, webId int64) error {
+func (s *aidedWebService) EditLog(ctx context.Context, webId int64) error {
 	webConfigId, err := s.webForwardingRepository.GetWebConfigId(ctx, webId)
 	if err != nil {
 		return err

+ 9 - 3
internal/service/api/waf/web/origin.go

@@ -7,8 +7,14 @@ import (
 	"github.com/go-nunu/nunu-layout-advanced/internal/model"
 )
 
+type Origin interface {
+	CreateOriginServers(ctx context.Context, req *v1.WebForwardingRequest) (map[string]int64, error)
+	AddOriginsToWebsite(ctx context.Context, req *v1.WebForwardingRequest, webId int64) (map[string]int64, error)
+	UpdateOriginServers(ctx context.Context, req *v1.WebForwardingRequest, oldData *model.WebForwarding, ipData *model.WebForwardingRule) error
+}
+
 // CreateOriginServers 创建源站服务器
-func (s *AidedWebService) CreateOriginServers(ctx context.Context, req *v1.WebForwardingRequest) (map[string]int64, error) {
+func (s *aidedWebService) CreateOriginServers(ctx context.Context, req *v1.WebForwardingRequest) (map[string]int64, error) {
 	cdnOriginIds := make(map[string]int64)
 
 	for _, backend := range req.WebForwardingData.BackendList {
@@ -31,7 +37,7 @@ func (s *AidedWebService) CreateOriginServers(ctx context.Context, req *v1.WebFo
 
 
 // AddOriginsToWebsite 添加源站到网站
-func (s *AidedWebService) AddOriginsToWebsite(ctx context.Context, req *v1.WebForwardingRequest, webId int64) (map[string]int64, error) {
+func (s *aidedWebService) AddOriginsToWebsite(ctx context.Context, req *v1.WebForwardingRequest, webId int64) (map[string]int64, error) {
 	cdnOriginIds, err := s.CreateOriginServers(ctx, req)
 	if err != nil {
 		return nil, fmt.Errorf("创建源站服务器失败: %w", err)
@@ -48,7 +54,7 @@ func (s *AidedWebService) AddOriginsToWebsite(ctx context.Context, req *v1.WebFo
 }
 
 // UpdateOriginServers 更新源站服务器
-func (s *AidedWebService) UpdateOriginServers(ctx context.Context, req *v1.WebForwardingRequest, oldData *model.WebForwarding, ipData *model.WebForwardingRule) error {
+func (s *aidedWebService) UpdateOriginServers(ctx context.Context, req *v1.WebForwardingRequest, oldData *model.WebForwarding, ipData *model.WebForwardingRule) error {
 	addOrigins, delOrigins := s.FindDifferenceList(ipData.BackendList, req.WebForwardingData.BackendList)
 	addedIds := make(map[string]int64)
 

+ 14 - 5
internal/service/api/waf/web/process.go

@@ -9,8 +9,17 @@ import (
 	"net"
 )
 
+type Process interface {
+	ProcessAsyncTasks(ctx context.Context, req *v1.WebForwardingRequest, require common.RequireResponse)
+	ProcessIpWhitelistChanges(ctx context.Context, req *v1.WebForwardingRequest, ipData *model.WebForwardingRule) error
+	ProcessDeleteIpWhitelist(ctx context.Context, id int) error
+	ProcessDomainWhitelistChanges(ctx context.Context, req *v1.WebForwardingRequest, oldData *model.WebForwarding, require common.RequireResponse) error
+	ProcessDeleteDomainWhitelist(ctx context.Context, oldData *model.WebForwarding, uid int) error
+
+}
+
 // ProcessAsyncTasks 处理异步任务
-func (s *AidedWebService) ProcessAsyncTasks(ctx context.Context, req *v1.WebForwardingRequest, require common.RequireResponse) {
+func (s *aidedWebService) ProcessAsyncTasks(ctx context.Context, req *v1.WebForwardingRequest, require common.RequireResponse) {
 	// 域名白名单处理
 	if req.WebForwardingData.Domain != "" {
 		go func() {
@@ -48,7 +57,7 @@ func (s *AidedWebService) ProcessAsyncTasks(ctx context.Context, req *v1.WebForw
 }
 
 // ProcessIpWhitelistChanges 处理IP白名单变更
-func (s *AidedWebService) ProcessIpWhitelistChanges(ctx context.Context, req *v1.WebForwardingRequest, ipData *model.WebForwardingRule) error {
+func (s *aidedWebService) ProcessIpWhitelistChanges(ctx context.Context, req *v1.WebForwardingRequest, ipData *model.WebForwardingRule) error {
 	var oldIps, newIps []string
 
 	// 提取旧IP列表
@@ -94,7 +103,7 @@ func (s *AidedWebService) ProcessIpWhitelistChanges(ctx context.Context, req *v1
 }
 
 // ProcessDeleteIpWhitelist 处理删除IP白名单
-func (s *AidedWebService) ProcessDeleteIpWhitelist(ctx context.Context, id int) error {
+func (s *aidedWebService) ProcessDeleteIpWhitelist(ctx context.Context, id int) error {
 	ipData, err := s.webForwardingRepository.GetWebForwardingIpsByID(ctx, id)
 	if err != nil {
 		return fmt.Errorf("获取IP数据失败: %w", err)
@@ -127,7 +136,7 @@ func (s *AidedWebService) ProcessDeleteIpWhitelist(ctx context.Context, id int)
 }
 
 // ProcessDomainWhitelistChanges 处理域名白名单变更
-func (s *AidedWebService) ProcessDomainWhitelistChanges(ctx context.Context, req *v1.WebForwardingRequest, oldData *model.WebForwarding, require common.RequireResponse) error {
+func (s *aidedWebService) ProcessDomainWhitelistChanges(ctx context.Context, req *v1.WebForwardingRequest, oldData *model.WebForwarding, require common.RequireResponse) error {
 	if oldData.Domain != req.WebForwardingData.Domain {
 		firstIp, err := s.gatewayIp.GetGatewayipByHostIdFirst(ctx, int64(req.HostId), int64(req.Uid))
 		if err != nil {
@@ -167,7 +176,7 @@ func (s *AidedWebService) ProcessDomainWhitelistChanges(ctx context.Context, req
 }
 
 // ProcessDeleteDomainWhitelist 处理删除域名白名单
-func (s *AidedWebService) ProcessDeleteDomainWhitelist(ctx context.Context, oldData *model.WebForwarding, uid int) error {
+func (s *aidedWebService) ProcessDeleteDomainWhitelist(ctx context.Context, oldData *model.WebForwarding, uid int) error {
 	if oldData.Domain != "" {
 		firstIp, err := s.gatewayIp.GetGatewayipByHostIdFirst(ctx, int64(oldData.HostId), int64(uid))
 		if err != nil {

+ 9 - 3
internal/service/api/waf/web/sslcert.go

@@ -7,9 +7,15 @@ import (
 	"github.com/go-nunu/nunu-layout-advanced/internal/model"
 )
 
+type SSLCert interface {
+	ProcessSSLCertificate(ctx context.Context, req *v1.WebForwardingRequest, cdnUid int) error
+	ProcessSSLCertificateUpdate(ctx context.Context, req *v1.WebForwardingRequest, oldData *model.WebForwarding, cdnUid int) error
+	CleanupSSLCertificate(ctx context.Context, oldData *model.WebForwarding) error
+}
+
 
 // ProcessSSLCertificate 处理SSL证书
-func (s *AidedWebService) ProcessSSLCertificate(ctx context.Context, req *v1.WebForwardingRequest, cdnUid int) error {
+func (s *aidedWebService) ProcessSSLCertificate(ctx context.Context, req *v1.WebForwardingRequest, cdnUid int) error {
 	if !s.IsHttpsProtocol(req.WebForwardingData.IsHttps) {
 		return nil // 非HTTPS协议不需要处理SSL证书
 	}
@@ -39,7 +45,7 @@ func (s *AidedWebService) ProcessSSLCertificate(ctx context.Context, req *v1.Web
 }
 
 // ProcessSSLCertificateUpdate 处理SSL证书更新
-func (s *AidedWebService) ProcessSSLCertificateUpdate(ctx context.Context, req *v1.WebForwardingRequest, oldData *model.WebForwarding, cdnUid int) error {
+func (s *aidedWebService) ProcessSSLCertificateUpdate(ctx context.Context, req *v1.WebForwardingRequest, oldData *model.WebForwarding, cdnUid int) error {
 	if !s.IsHttpsProtocol(req.WebForwardingData.IsHttps) {
 		return nil // 非HTTPS协议不需要处理SSL证书
 	}
@@ -72,7 +78,7 @@ func (s *AidedWebService) ProcessSSLCertificateUpdate(ctx context.Context, req *
 }
 
 // CleanupSSLCertificate 清理SSL证书
-func (s *AidedWebService) CleanupSSLCertificate(ctx context.Context, oldData *model.WebForwarding) error {
+func (s *aidedWebService) CleanupSSLCertificate(ctx context.Context, oldData *model.WebForwarding) error {
 	if oldData.SslCertId != 0 {
 		if err := s.cdn.DelSSLCert(ctx, int64(oldData.SslCertId)); err != nil {
 			return fmt.Errorf("删除SSL证书失败: %w", err)

+ 9 - 3
internal/service/api/waf/web/valid.go

@@ -6,9 +6,15 @@ import (
 	v1 "github.com/go-nunu/nunu-layout-advanced/api/v1"
 	"github.com/go-nunu/nunu-layout-advanced/internal/service/api/waf/common"
 )
+type Valid interface {
+	ValidateAddRequest(ctx context.Context, req *v1.WebForwardingRequest, require common.RequireResponse) error
+	ValidateEditRequest(ctx context.Context, req *v1.WebForwardingRequest) error
+	ValidateDeletePermission(oldHostId int, hostId int) error
+}
+
 
 // ValidateAddRequest 验证添加请求
-func (s *AidedWebService) ValidateAddRequest(ctx context.Context, req *v1.WebForwardingRequest, require common.RequireResponse) error {
+func (s *aidedWebService) ValidateAddRequest(ctx context.Context, req *v1.WebForwardingRequest, require common.RequireResponse) error {
 	if err := s.wafformatter.ValidateWafDomainCount(ctx, v1.GlobalRequire{
 		HostId:  req.HostId,
 		Domain:  req.WebForwardingData.Domain,
@@ -32,7 +38,7 @@ func (s *AidedWebService) ValidateAddRequest(ctx context.Context, req *v1.WebFor
 
 
 // ValidateEditRequest 验证编辑请求
-func (s *AidedWebService) ValidateEditRequest(ctx context.Context, req *v1.WebForwardingRequest) error {
+func (s *aidedWebService) ValidateEditRequest(ctx context.Context, req *v1.WebForwardingRequest) error {
 	if err := s.wafformatter.ValidateWafDomainCount(ctx, v1.GlobalRequire{
 		HostId:  req.HostId,
 		Domain:  req.WebForwardingData.Domain,
@@ -52,7 +58,7 @@ func (s *AidedWebService) ValidateEditRequest(ctx context.Context, req *v1.WebFo
 
 
 // ValidateDeletePermission 验证删除权限
-func (s *AidedWebService) ValidateDeletePermission(oldHostId int, hostId int) error {
+func (s *aidedWebService) ValidateDeletePermission(oldHostId int, hostId int) error {
 	if oldHostId != hostId {
 		return fmt.Errorf("用户权限不足")
 	}

+ 2 - 2
internal/service/api/waf/web/webforwarding.go

@@ -40,7 +40,7 @@ func NewWebForwardingService(
 	websocket flexCdn.WebsocketService,
 	cc waf2.CcService,
 	ccIpList waf2.CcIpListService,
-	aidedWeb *AidedWebService,
+	aidedWeb AidedWebService,
 ) WebForwardingService {
 	return &webForwardingService{
 		Service:                 service,
@@ -81,7 +81,7 @@ type webForwardingService struct {
 	websocket flexCdn.WebsocketService
 	cc        waf2.CcService
 	ccIpList  waf2.CcIpListService
-	aidedWeb  *AidedWebService
+	aidedWeb  AidedWebService
 }