32 lines
586 B
Go
32 lines
586 B
Go
package dns
|
|
|
|
import (
|
|
"strings"
|
|
)
|
|
|
|
func UpdateSpf(value, ip4, ip6 string) string {
|
|
items := strings.Split(value, " ")
|
|
data := []string{}
|
|
doneIp4 := false
|
|
doneIp6 := false
|
|
|
|
for _, item := range items {
|
|
elements := strings.Split(item, ":")
|
|
|
|
if len(elements) > 0 {
|
|
if elements[0] == "ip4" && !doneIp4 {
|
|
elements = []string{"ip4", ip4}
|
|
doneIp4 = true
|
|
} else if elements[0] == "ip6" && !doneIp6 {
|
|
elements = []string{"ip6", ip6}
|
|
doneIp6 = true
|
|
}
|
|
|
|
item = strings.Join(elements, ":")
|
|
}
|
|
|
|
data = append(data, item)
|
|
}
|
|
|
|
return strings.Join(data, " ")
|
|
}
|