package app func transportAppendDNSRule(rawDNS map[string]any, rule map[string]any) { if rawDNS == nil || len(rule) == 0 { return } rawRules, _ := rawDNS["rules"].([]any) for _, it := range rawRules { existing, ok := it.(map[string]any) if !ok || existing == nil { continue } if mapsEqual(existing, rule) { return } } rawRules = append(rawRules, rule) rawDNS["rules"] = rawRules } func mapsEqual(a, b map[string]any) bool { if len(a) != len(b) { return false } for k, av := range a { bv, ok := b[k] if !ok { return false } if asString(av) != asString(bv) { return false } } return true }