in utils/netutil/netutil.go [68:104]
func GetLocalIP() (string, error) {
ifaces, err := net.Interfaces()
if err != nil {
return "", fmt.Errorf("interfaces: %s", err)
}
ips := map[string]string{}
for _, i := range ifaces {
addrs, err := i.Addrs()
if err != nil {
return "", fmt.Errorf("addrs: %s", err)
}
for _, addr := range addrs {
var ip net.IP
switch v := addr.(type) {
case *net.IPNet:
ip = v.IP
case *net.IPAddr:
ip = v.IP
}
if ip == nil || ip.IsLoopback() {
continue
}
ip = ip.To4()
if ip == nil {
continue
}
ips[i.Name] = ip.String()
break
}
}
for _, i := range _supportedInterfaces {
if ip, ok := ips[i]; ok {
return ip, nil
}
}
return "", errors.New("no ip found")
}