7 // ExternalIPv4 returns the first IPv4 available.
8 func ExternalIPv4() (string, error) {
9 ifaces, err := net.Interfaces()
14 for _, iface := range ifaces {
16 if iface.Flags&net.FlagUp == 0 {
20 if iface.Flags&net.FlagLoopback != 0 {
23 addrs, err := iface.Addrs()
28 for _, addr := range addrs {
30 switch v := addr.(type) {
36 if ip == nil || ip.IsLoopback() {
41 continue // not an ipv4 address
43 return ip.String(), nil
46 return "127.0.0.1", nil