From ab15df52582bf3fb9c515769f01a90d27452a009 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Tue, 15 Aug 2023 09:39:13 +0200 Subject: [PATCH] ip/resolver: move services that just parses the ip from a http response to use basic_http service instead. --- ip/resolver/ifconfigme/service.go | 39 ---------------------- ip/resolver/ifconfigme/service_test.go | 31 ----------------- ip/resolver/ipecho/service.go | 35 -------------------- ip/resolver/ipecho/service_test.go | 31 ----------------- ip/resolver/ipme/service.go | 46 -------------------------- ip/resolver/ipme/service_test.go | 33 ------------------ ip/resolver/manager.go | 26 +++++++++++---- 7 files changed, 20 insertions(+), 221 deletions(-) delete mode 100644 ip/resolver/ifconfigme/service.go delete mode 100644 ip/resolver/ifconfigme/service_test.go delete mode 100644 ip/resolver/ipecho/service.go delete mode 100644 ip/resolver/ipecho/service_test.go delete mode 100644 ip/resolver/ipme/service.go delete mode 100644 ip/resolver/ipme/service_test.go diff --git a/ip/resolver/ifconfigme/service.go b/ip/resolver/ifconfigme/service.go deleted file mode 100644 index 679a35e..0000000 --- a/ip/resolver/ifconfigme/service.go +++ /dev/null @@ -1,39 +0,0 @@ -package ifconfigme - -import ( - "io" - "net" - "net/http" - "strings" -) - -type Service struct { - url string -} - -func New() *Service { - return &Service{ - url: "https://ifconfig.me/ip", - } -} - -func (s Service) Name() string { - return "ifconfig.me" -} - -func (s Service) Lookup() (net.IP, error) { - resp, err := http.DefaultClient.Get(s.url) - if err != nil { - return nil, err - } - - body, err := io.ReadAll(resp.Body) - if err != nil { - return nil, err - } - - // Trim spaces and stuff. - ip_str := strings.TrimSpace(string(body)) - - return net.ParseIP(ip_str), err -} diff --git a/ip/resolver/ifconfigme/service_test.go b/ip/resolver/ifconfigme/service_test.go deleted file mode 100644 index 9ebcc12..0000000 --- a/ip/resolver/ifconfigme/service_test.go +++ /dev/null @@ -1,31 +0,0 @@ -package ifconfigme - -import ( - "net" - "net/http" - "net/http/httptest" - "testing" - - "github.com/stretchr/testify/assert" -) - -func TestService_Name(t *testing.T) { - s := Service{} - - assert.Equal(t, "ifconfig.me", s.Name()) -} - -func TestService_Lookup(t *testing.T) { - server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - _, err := w.Write([]byte("113.145.244.129")) - assert.NoError(t, err) - })) - defer server.Close() - - s := Service{url: server.URL} - - ip, err := s.Lookup() - assert.NoError(t, err) - - assert.Equal(t, net.IPv4(113, 145, 244, 129), ip) -} diff --git a/ip/resolver/ipecho/service.go b/ip/resolver/ipecho/service.go deleted file mode 100644 index c08cab8..0000000 --- a/ip/resolver/ipecho/service.go +++ /dev/null @@ -1,35 +0,0 @@ -package ipecho - -import ( - "io" - "net" - "net/http" -) - -type Service struct { - url string -} - -func New() *Service { - return &Service{ - url: "http://ipecho.net/plain", - } -} - -func (s Service) Name() string { - return "ipecho" -} - -func (s Service) Lookup() (net.IP, error) { - resp, err := http.DefaultClient.Get(s.url) - if err != nil { - return nil, err - } - - body, err := io.ReadAll(resp.Body) - if err != nil { - return nil, err - } - - return net.ParseIP(string(body)), nil -} diff --git a/ip/resolver/ipecho/service_test.go b/ip/resolver/ipecho/service_test.go deleted file mode 100644 index 97b2eab..0000000 --- a/ip/resolver/ipecho/service_test.go +++ /dev/null @@ -1,31 +0,0 @@ -package ipecho - -import ( - "net" - "net/http" - "net/http/httptest" - "testing" - - "github.com/stretchr/testify/assert" -) - -func TestService_Name(t *testing.T) { - s := Service{} - - assert.Equal(t, "ipecho", s.Name()) -} - -func TestService_Lookup(t *testing.T) { - server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - _, err := w.Write([]byte("188.242.103.22")) - assert.NoError(t, err) - })) - defer server.Close() - - s := Service{url: server.URL} - - ip, err := s.Lookup() - assert.NoError(t, err) - - assert.Equal(t, net.IPv4(188, 242, 103, 22), ip) -} diff --git a/ip/resolver/ipme/service.go b/ip/resolver/ipme/service.go deleted file mode 100644 index 9b70a0f..0000000 --- a/ip/resolver/ipme/service.go +++ /dev/null @@ -1,46 +0,0 @@ -package ipme - -import ( - "io" - "net" - "net/http" - "strings" -) - -type Service struct { - url string -} - -func New() *Service { - return &Service{ - url: "https://ip.me", - } -} - -func (s Service) Name() string { - return "ip.me" -} - -func (s Service) Lookup() (net.IP, error) { - req, err := http.NewRequest("GET", s.url, nil) - if err != nil { - return nil, err - } - - req.Header.Add("User-Agent", "curl") - - resp, err := http.DefaultClient.Do(req) - if err != nil { - return nil, err - } - - body, err := io.ReadAll(resp.Body) - if err != nil { - return nil, err - } - - // Trim spaces and stuff. - ip_str := strings.TrimSpace(string(body)) - - return net.ParseIP(ip_str), err -} diff --git a/ip/resolver/ipme/service_test.go b/ip/resolver/ipme/service_test.go deleted file mode 100644 index 0b3908c..0000000 --- a/ip/resolver/ipme/service_test.go +++ /dev/null @@ -1,33 +0,0 @@ -package ipme - -import ( - "net" - "net/http" - "net/http/httptest" - "testing" - - "github.com/stretchr/testify/assert" -) - -func TestService_Name(t *testing.T) { - s := Service{} - - assert.Equal(t, "ip.me", s.Name()) -} - -func TestService_Lookup(t *testing.T) { - server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - assert.Equal(t, "curl", r.Header.Get("User-Agent")) - - _, err := w.Write([]byte("255.240.85.2")) - assert.NoError(t, err) - })) - defer server.Close() - - s := Service{url: server.URL} - - ip, err := s.Lookup() - assert.NoError(t, err) - - assert.Equal(t, net.IPv4(255, 240, 85, 2), ip) -} diff --git a/ip/resolver/manager.go b/ip/resolver/manager.go index e6e474f..186b7f7 100644 --- a/ip/resolver/manager.go +++ b/ip/resolver/manager.go @@ -3,10 +3,9 @@ package lookup import ( "errors" "net" + "net/http" - "dnsupdater/ip/resolver/ifconfigme" - "dnsupdater/ip/resolver/ipecho" - "dnsupdater/ip/resolver/ipme" + "dnsupdater/ip/resolver/basic_http" "dnsupdater/ip/resolver/jsonip" ) @@ -39,7 +38,22 @@ func Lookup() (net.IP, error) { func init() { Provide(jsonip.New()) - Provide(ifconfigme.New()) - Provide(ipme.New()) - Provide(ipecho.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", + }) }