Prechádzať zdrojové kódy

fix(internal): 修复防火墙规则添加和删除及带宽限制相关问题

- 修复了添加和删除防火墙规则时 API调用路径缺失斜线的问题- 增加了对添加防火墙规则成功与否的进一步判断
- 修复了全局限制配置中 Bps 字段的处理逻辑
- 在添加带宽限制时增加了对 Bps 值的转换和使用
fusu 1 týždeň pred
rodič
commit
bc5d1e4157

+ 5 - 2
internal/service/aodun.go

@@ -342,13 +342,16 @@ func (s *aoDunService) AddBandwidthLimit(ctx context.Context, req v1.Bandwidth)
 		"direction": req.Direction,
 		"protocol": req.Protocol,
 	}
-	err := s.sendAuthenticatedRequest(ctx, true, "v1.0/firewall/add_filter_rule", formData, &res)
+	err := s.sendAuthenticatedRequest(ctx, true, "/v1.0/firewall/add_filter_rule", formData, &res)
 	if err != nil {
 		return err
 	}
 	if res.Err != 0 {
 		return fmt.Errorf("API 错误: code %d, msg '%s'", res.Err, res.Msg)
 	}
+	if res.Msg != "操作成功" {
+		return fmt.Errorf("API 错误: code %d, msg '%s'", res.Err, res.Msg)
+	}
 	return nil
 }
 
@@ -358,7 +361,7 @@ func (s *aoDunService) DelBandwidthLimit(ctx context.Context, req v1.Bandwidth)
 	formData := map[string]interface{}{
 		"name": req.Name,
 	}
-	err := s.sendAuthenticatedRequest(ctx, true, "v1.0/firewall/delete_filter_rule", formData, &res)
+	err := s.sendAuthenticatedRequest(ctx, true, "/v1.0/firewall/delete_filter_rule", formData, &res)
 	if err != nil {
 		return err
 	}

+ 6 - 6
internal/service/api/waf/globallimit.go

@@ -165,12 +165,6 @@ func (s *globalLimitService) GlobalLimitRequire(ctx context.Context, req v1.Glob
 		return v1.GlobalLimitRequireResponse{}, fmt.Errorf("获取配置限制失败: %w", err)
 	}
 
-	bpsInt, err := strconv.Atoi(configCount.Bps)
-	if err != nil {
-		return v1.GlobalLimitRequireResponse{}, err
-	}
-	resultFloat := float64(bpsInt) / 2.0 / 8.0
-	res.Bps = strconv.FormatFloat( resultFloat, 'f', -1, 64) + "M"
 
 	res.MaxBytesMonth = configCount.MaxBytesMonth
 	res.Operator = configCount.Operator
@@ -179,6 +173,7 @@ func (s *globalLimitService) GlobalLimitRequire(ctx context.Context, req v1.Glob
 	res.ConfigMaxProtection = configCount.ConfigMaxProtection
 	res.IsBanUdp = configCount.IsBanUdp
 	res.HostId = req.HostId
+	res.Bps = configCount.Bps
 
 	domain, err := s.hostRep.GetDomainById(ctx, req.HostId)
 	if err != nil {
@@ -285,6 +280,10 @@ func (s *globalLimitService) AddGlobalLimit(ctx context.Context, req v1.GlobalLi
 	if err != nil {
 		return err
 	}
+	bpsInt, err := strconv.Atoi(require.Bps)
+	if err != nil {
+		return err
+	}
 	var wg sync.WaitGroup
 	wg.Add(len(ip))
 	var errChan = make(chan error, len(ip))
@@ -295,6 +294,7 @@ func (s *globalLimitService) AddGlobalLimit(ctx context.Context, req v1.GlobalLi
 				err := s.bulidAudun.AddBandwidth(ctx, v1.Bandwidth{
 					Name: require.Bps,
 					ServerIPStart: v,
+					SpeedlimitOut: int64(bpsInt),
 				})
 				if err != nil {
 					errChan <- err