1
0
Fork 0
dns-updater/ip/resolver/manager.go
2023-04-28 16:43:49 +02:00

45 lines
725 B
Go

package lookup
import (
"errors"
"net"
"dnsupdater/ip/resolver/ifconfigme"
"dnsupdater/ip/resolver/ipecho"
"dnsupdater/ip/resolver/ipme"
"dnsupdater/ip/resolver/jsonip"
)
var services []Service
func Provide(service Service) {
services = append(services, service)
}
func Get(name string) Service {
for _, service := range services {
if service.Name() == name {
return service
}
}
return nil
}
func Lookup() (net.IP, error) {
for _, service := range services {
ip, err := service.Lookup()
if err != nil {
continue
}
return ip, err
}
return nil, errors.New("failed to get ip")
}
func init() {
Provide(jsonip.New())
Provide(ifconfigme.New())
Provide(ipme.New())
Provide(ipecho.New())
}