package resolveLogs import ( "strings" "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/httpdns/httpdnsutils" ) type IndexAction struct { actionutils.ParentAction } func (this *IndexAction) Init() { this.Nav("httpdns", "resolveLogs", "") } func (this *IndexAction) RunGet(params struct { ClusterId int64 NodeId int64 AppId string Domain string Status string Keyword string }) { httpdnsutils.AddLeftMenu(this.Parent()) if params.ClusterId > 0 { this.Data["clusterId"] = params.ClusterId } else { this.Data["clusterId"] = "" } if params.NodeId > 0 { this.Data["nodeId"] = params.NodeId } else { this.Data["nodeId"] = "" } this.Data["appId"] = params.AppId this.Data["domain"] = params.Domain this.Data["status"] = params.Status this.Data["keyword"] = params.Keyword clusters := []map[string]interface{}{ {"id": int64(1), "name": "gateway-cn-hz"}, {"id": int64(2), "name": "gateway-cn-bj"}, } nodes := []map[string]interface{}{ {"id": int64(101), "clusterId": int64(1), "name": "hz-node-01"}, {"id": int64(102), "clusterId": int64(1), "name": "hz-node-02"}, {"id": int64(201), "clusterId": int64(2), "name": "bj-node-01"}, } this.Data["clusters"] = clusters this.Data["nodes"] = nodes allLogs := []map[string]interface{}{ { "time": "2026-02-23 10:21:51", "clusterId": int64(1), "clusterName": "gateway-cn-hz", "nodeId": int64(101), "nodeName": "hz-node-01", "appName": "\u4e3b\u7ad9\u79fb\u52a8\u4e1a\u52a1", "appId": "ab12xc34s2", "domain": "api.business.com", "query": "A", "clientIp": "203.0.113.25", "os": "Android", "sdkVersion": "2.4.1", "ips": "198.51.100.10,198.51.100.11", "status": "success", "errorCode": "none", "costMs": 37, "pinningMode": "report", "pinningResult": "warn", "sanMode": "strict", "sanResult": "pass", }, { "time": "2026-02-23 10:18:02", "clusterId": int64(2), "clusterName": "gateway-cn-bj", "nodeId": int64(201), "nodeName": "bj-node-01", "appName": "\u652f\u4ed8\u7f51\u5173\u4e1a\u52a1", "appId": "vd8992ksm1", "domain": "payment.business.com", "query": "A", "clientIp": "198.51.100.67", "os": "iOS", "sdkVersion": "2.3.9", "ips": "198.51.100.22", "status": "failed", "errorCode": "40301", "costMs": 52, "pinningMode": "enforce", "pinningResult": "fail", "sanMode": "strict", "sanResult": "fail", }, { "time": "2026-02-23 10:12:44", "clusterId": int64(1), "clusterName": "gateway-cn-hz", "nodeId": int64(102), "nodeName": "hz-node-02", "appName": "\u4e3b\u7ad9\u79fb\u52a8\u4e1a\u52a1", "appId": "ab12xc34s2", "domain": "www.aliyun.com", "query": "A", "clientIp": "106.11.63.180", "os": "Unknown", "sdkVersion": "none", "ips": "3.33.120.190,15.197.120.33", "status": "success", "errorCode": "none", "costMs": 41, "pinningMode": "off", "pinningResult": "na", "sanMode": "report", "sanResult": "warn", }, } status := strings.TrimSpace(strings.ToLower(params.Status)) appID := strings.TrimSpace(strings.ToLower(params.AppId)) domain := strings.TrimSpace(strings.ToLower(params.Domain)) keyword := strings.TrimSpace(strings.ToLower(params.Keyword)) filtered := make([]map[string]interface{}, 0) for _, log := range allLogs { if params.ClusterId > 0 && log["clusterId"].(int64) != params.ClusterId { continue } if params.NodeId > 0 && log["nodeId"].(int64) != params.NodeId { continue } if len(status) > 0 && log["status"].(string) != status { continue } if len(appID) > 0 && !strings.Contains(strings.ToLower(log["appId"].(string)), appID) { continue } if len(domain) > 0 && !strings.Contains(strings.ToLower(log["domain"].(string)), domain) { continue } if len(keyword) > 0 { if !strings.Contains(strings.ToLower(log["appName"].(string)), keyword) && !strings.Contains(strings.ToLower(log["domain"].(string)), keyword) && !strings.Contains(strings.ToLower(log["clientIp"].(string)), keyword) && !strings.Contains(strings.ToLower(log["ips"].(string)), keyword) { continue } } filtered = append(filtered, log) } this.Data["resolveLogs"] = filtered this.Show() }