Files
elmprodvpn/selective-vpn-api/app/transport_singbox_dns_migration_rules.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
}