@ -15,13 +15,18 @@ func DetectedHostAddress() string {
return ""
}
if v4Address := selectIpV4 ( netInterfaces ) ; v4Address != "" {
if v4Address := selectIpV4 ( netInterfaces , true ) ; v4Address != "" {
return v4Address
}
if v6Address := selectIpV4 ( netInterfaces , false ) ; v6Address != "" {
return v6Address
}
return "localhost"
}
func selectIpV4 ( netInterfaces [ ] net . Interface ) string {
func selectIpV4 ( netInterfaces [ ] net . Interface , isIpV4 bool ) string {
for _ , netInterface := range netInterfaces {
if ( netInterface . Flags & net . FlagUp ) == 0 {
continue
@ -33,12 +38,18 @@ func selectIpV4(netInterfaces []net.Interface) string {
for _ , a := range addrs {
if ipNet , ok := a . ( * net . IPNet ) ; ok && ! ipNet . IP . IsLoopback ( ) {
if isIpV4 {
if ipNet . IP . To4 ( ) != nil {
return ipNet . IP . String ( )
}
} else {
if ipNet . IP . To16 ( ) != nil {
return ipNet . IP . String ( )
}
}
}
}
}
return ""
}