36 lines
638 B
Go
36 lines
638 B
Go
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
|
|
}
|