62 lines
1.1 KiB
Go
62 lines
1.1 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"net"
|
|
"strings"
|
|
)
|
|
|
|
type (
|
|
ipList []net.IP
|
|
stringList []string
|
|
)
|
|
|
|
// return list of IPs as comma separated list
|
|
func (il *ipList) String() string {
|
|
var res string
|
|
list := ([]net.IP)(*il)
|
|
for i := range list {
|
|
if i > 0 {
|
|
res += ", "
|
|
}
|
|
res += list[i].String()
|
|
}
|
|
return res
|
|
}
|
|
|
|
// receive multiple ip lists as comma separated strings
|
|
func (il *ipList) Set(value string) error {
|
|
if len(value) == 0 {
|
|
return nil
|
|
}
|
|
var ip net.IP
|
|
|
|
parts := strings.Split(value, ",")
|
|
for i := range parts {
|
|
ip = net.ParseIP(strings.Trim(parts[i], " \t"))
|
|
if ip == nil {
|
|
// TODO encapsulate error in meaningfull error
|
|
return fmt.Errorf("not a valid IP")
|
|
}
|
|
*il = append(*il, ip)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// return string list as a comma separated list
|
|
func (al *stringList) String() string {
|
|
return strings.Join(([]string)(*al), ", ")
|
|
}
|
|
|
|
// receive multiple string lists as comma separated strings
|
|
func (al *stringList) Set(value string) error {
|
|
if len(value) == 0 {
|
|
return nil
|
|
}
|
|
parts := strings.Split(value, ",")
|
|
for i := range parts {
|
|
*al = append(*al, strings.Trim(parts[i], " \t"))
|
|
}
|
|
return nil
|
|
}
|