| 123456789101112131415161718192021222324252627282930313233343536373839 |
- package config
-
- import (
- "io/ioutil"
- "net"
- "net/http"
- "strings"
-
- "github.com/juju/errors"
- )
-
- func getGlobalIPv4() (net.IP, error) {
- return fetchIP("https://v4.ifconfig.co/ip")
- }
-
- func getGlobalIPv6() (net.IP, error) {
- return fetchIP("https://v6.ifconfig.co/ip")
- }
-
- func fetchIP(url string) (net.IP, error) {
- resp, err := http.Get(url)
- if err != nil {
- return nil, err
- }
- defer resp.Body.Close() // nolint: errcheck
-
- respDataBytes, err := ioutil.ReadAll(resp.Body)
- if err != nil {
- return nil, err
- }
- respData := strings.TrimSpace(string(respDataBytes))
-
- ip := net.ParseIP(respData)
- if ip == nil {
- return nil, errors.Errorf("ifconfig.co returns incorrect IP %s", respData)
- }
-
- return ip, nil
- }
|