36 lines
619 B
Go
36 lines
619 B
Go
package acmedns
|
|
|
|
import (
|
|
"encoding/json"
|
|
"net"
|
|
)
|
|
|
|
// cidrslice is a list of allowed cidr ranges
|
|
type Cidrslice []string
|
|
|
|
func (c *Cidrslice) JSON() string {
|
|
ret, _ := json.Marshal(c.ValidEntries())
|
|
return string(ret)
|
|
}
|
|
|
|
func (c *Cidrslice) IsValid() error {
|
|
for _, v := range *c {
|
|
_, _, err := net.ParseCIDR(sanitizeIPv6addr(v))
|
|
if err != nil {
|
|
return err
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (c *Cidrslice) ValidEntries() []string {
|
|
valid := []string{}
|
|
for _, v := range *c {
|
|
_, _, err := net.ParseCIDR(sanitizeIPv6addr(v))
|
|
if err == nil {
|
|
valid = append(valid, sanitizeIPv6addr(v))
|
|
}
|
|
}
|
|
return valid
|
|
}
|