Browse Source

feat(admin): 增加后端地址 HTTPS 识别

- 在 BackendInfo 结构中添加 IsHttps 字段
- 根据 isHttps 值决定是否添加 https:// 前缀
-移除了未使用的 backendInfo 结构
- 简化了后端列表处理逻辑,仅保留数组格式的处理
fusu 3 ngày trước cách đây
mục cha
commit
a84f6350d3
1 tập tin đã thay đổi với 14 bổ sung59 xóa
  1. 14 59
      internal/service/admin/waflogdataclean.go

+ 14 - 59
internal/service/admin/waflogdataclean.go

@@ -28,6 +28,7 @@ type wafLogDataCleanService struct {
 type BackendInfo struct {
 	Addr       string `json:"addr,omitempty"`       // 后端地址
 	CustomHost string `json:"customHost,omitempty"` // 自定义Host头
+	IsHttps    int    `json:"isHttps,omitempty"`    // 是否为HTTPS
 }
 
 // CleanedExtraData 使用动态结构存储解析后的数据
@@ -58,12 +59,6 @@ type CleanedExtraData struct {
 	RawData map[string]interface{} `json:"rawData,omitempty"`
 }
 
-// backendInfo 用于解析 "web" 类型中 backendList JSON 字符串的内部结构
-type backendInfo struct {
-	Addr       string `json:"addr"`
-	CustomHost string `json:"customHost"`
-}
-
 
 
 
@@ -178,11 +173,7 @@ func (s *wafLogDataCleanService) extractBackendListWithGjson(jsonStr, apiName st
 		switch {
 		case backendResult.IsArray():
 			s.processArrayBackends(backendResult, result)
-		case backendResult.IsObject():
-			s.processObjectBackends(backendResult, result)
-		default:
-			// 字符串类型,可能是JSON字符串或单个地址
-			s.processStringBackends(backendResult.String(), result)
+
 		}
 		
 		// 找到有效数据就退出
@@ -198,21 +189,30 @@ func (s *wafLogDataCleanService) processArrayBackends(backendResult gjson.Result
 		if value.IsObject() {
 			// 创建BackendInfo结构
 			backend := BackendInfo{}
-			
+
+			isHttps := gjson.Get(value.Raw, "isHttps").Int()
+
 			// 尝试提取地址字段
 			addr := s.getFirstValidPath(value.Raw, []string{"addr", "address", "host", "server", "endpoint", "url"})
+
+			if isHttps == 1 {
+				addr = "https://" + addr
+			}else {
+				addr = "http://" + addr
+			}
+
 			if addr != "" {
 				backend.Addr = addr
 				result.AddrBackendList = append(result.AddrBackendList, addr)
 			}
-			
+
 			// 提取customHost
 			if customHost := gjson.Get(value.Raw, "customHost").String(); customHost != "" {
 				backend.CustomHost = customHost
 				result.CustomHostList = append(result.CustomHostList, customHost)
 				result.CustomHost = append(result.CustomHost, customHost)
 			}
-			
+
 			// 只有当有有效数据时才添加到BackendList
 			if backend.Addr != "" || backend.CustomHost != "" {
 				result.BackendList = append(result.BackendList, backend)
@@ -228,51 +228,6 @@ func (s *wafLogDataCleanService) processArrayBackends(backendResult gjson.Result
 	})
 }
 
-// processObjectBackends 处理对象格式的后端列表
-func (s *wafLogDataCleanService) processObjectBackends(backendResult gjson.Result, result *CleanedExtraData) {
-	// 创建BackendInfo结构
-	backend := BackendInfo{}
-	
-	addr := s.getFirstValidPath(backendResult.Raw, []string{"addr", "address", "host", "server", "endpoint", "url"})
-	if addr != "" {
-		backend.Addr = addr
-		result.AddrBackendList = append(result.AddrBackendList, addr)
-	}
-	
-	if customHost := gjson.Get(backendResult.Raw, "customHost").String(); customHost != "" {
-		backend.CustomHost = customHost
-		result.CustomHostList = append(result.CustomHostList, customHost)
-		result.CustomHost = append(result.CustomHost, customHost)
-	}
-	
-	// 只有当有有效数据时才添加到BackendList
-	if backend.Addr != "" || backend.CustomHost != "" {
-		result.BackendList = append(result.BackendList, backend)
-	}
-}
-
-// processStringBackends 处理字符串格式的后端列表
-func (s *wafLogDataCleanService) processStringBackends(backendStr string, result *CleanedExtraData) {
-	if backendStr == "" {
-		return
-	}
-	
-	// 尝试作为JSON解析
-	if gjson.Valid(backendStr) {
-		parsed := gjson.Parse(backendStr)
-		if parsed.IsArray() {
-			s.processArrayBackends(parsed, result)
-			return
-		} else if parsed.IsObject() {
-			s.processObjectBackends(parsed, result)
-			return
-		}
-	}
-	
-	// 作为单个地址处理
-	result.AddrBackendList = append(result.AddrBackendList, backendStr)
-	result.BackendList = append(result.BackendList, BackendInfo{Addr: backendStr})
-}
 
 // extractDynamicFields 提取所有动态字段到DynamicFields中
 func (s *wafLogDataCleanService) extractDynamicFields(jsonStr string, result *CleanedExtraData) {