|
@@ -1,46 +0,0 @@
|
|
|
-package utils
|
|
|
-
|
|
|
-import (
|
|
|
- "errors"
|
|
|
- "io"
|
|
|
- "net/http"
|
|
|
- "time"
|
|
|
-)
|
|
|
-
|
|
|
-// GetPublicIP - gets public ip
|
|
|
-func GetPublicIP() (string, error) {
|
|
|
-
|
|
|
- iplist := []string{"https://ip.client.gravitl.com", "https://ifconfig.me", "https://api.ipify.org", "https://ipinfo.io/ip"}
|
|
|
-
|
|
|
- //for network, ipService := range global_settings.PublicIPServices {
|
|
|
- //logger.Log(3, "User provided public IP service defined for network", network, "is", ipService)
|
|
|
-
|
|
|
- // prepend the user-specified service so it's checked first
|
|
|
- // iplist = append([]string{ipService}, iplist...)
|
|
|
- //}
|
|
|
-
|
|
|
- endpoint := ""
|
|
|
- var err error
|
|
|
- for _, ipserver := range iplist {
|
|
|
- client := &http.Client{
|
|
|
- Timeout: time.Second * 10,
|
|
|
- }
|
|
|
- resp, err := client.Get(ipserver)
|
|
|
- if err != nil {
|
|
|
- continue
|
|
|
- }
|
|
|
- defer resp.Body.Close()
|
|
|
- if resp.StatusCode == http.StatusOK {
|
|
|
- bodyBytes, err := io.ReadAll(resp.Body)
|
|
|
- if err != nil {
|
|
|
- continue
|
|
|
- }
|
|
|
- endpoint = string(bodyBytes)
|
|
|
- break
|
|
|
- }
|
|
|
- }
|
|
|
- if err == nil && endpoint == "" {
|
|
|
- err = errors.New("public address not found")
|
|
|
- }
|
|
|
- return endpoint, err
|
|
|
-}
|