mirror of
https://gitlab.com/pnx-tools/dns-updater.git
synced 2026-06-16 05:54:56 +02:00
59 lines
965 B
Go
59 lines
965 B
Go
package lookup
|
|
|
|
import (
|
|
"errors"
|
|
"net"
|
|
"net/http"
|
|
|
|
"dnsupdater/ip/resolver/basic_http"
|
|
"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(&basic_http.Service{
|
|
ServiceName: "ifconfig.me",
|
|
Url: "https://ifconfig.me/ip",
|
|
})
|
|
|
|
Provide(&basic_http.Service{
|
|
ServiceName: "ip.me",
|
|
Url: "https://ip.me",
|
|
Headers: http.Header{
|
|
"User-Agent": []string{"curl"},
|
|
},
|
|
})
|
|
|
|
Provide(&basic_http.Service{
|
|
ServiceName: "ipecho",
|
|
Url: "http://ipecho.net/plain",
|
|
})
|
|
}
|