Files
overlord/Overlord-Client/cmd/agent/config/public_ip.go
T

40 lines
695 B
Go
Raw Normal View History

2026-05-14 19:56:50 -05:00
//go:build fetch_public_ip
package config
import (
"encoding/json"
"io"
"net"
"net/http"
"strings"
"time"
)
func FetchPublicIPAddress() string {
client := &http.Client{Timeout: 5 * time.Second}
resp, err := client.Get("https://api.ipify.org?format=json")
if err != nil {
return ""
}
defer resp.Body.Close()
if resp.StatusCode < 200 || resp.StatusCode >= 300 {
return ""
}
body, err := io.ReadAll(io.LimitReader(resp.Body, 256))
if err != nil {
return ""
}
var payload struct {
IP string `json:"ip"`
}
if err := json.Unmarshal(body, &payload); err != nil {
return ""
}
ip := strings.TrimSpace(payload.IP)
if net.ParseIP(ip) == nil {
return ""
}
return ip
}