Reduce code complexity in AnteHandler, and GetExternalIP

This commit is contained in:
ValarDragon
2018-07-09 15:29:16 -07:00
parent a768543d92
commit 2b5ccdbf87
2 changed files with 65 additions and 50 deletions
+24 -12
View File
@@ -149,24 +149,15 @@ func externalIP() (string, error) {
return "", err
}
for _, iface := range ifaces {
if iface.Flags&net.FlagUp == 0 {
continue // interface down
}
if iface.Flags&net.FlagLoopback != 0 {
continue // loopback interface
if skipInterface(iface) {
continue
}
addrs, err := iface.Addrs()
if err != nil {
return "", 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
}
ip := addrToIP(addr)
if ip == nil || ip.IsLoopback() {
continue
}
@@ -179,3 +170,24 @@ func externalIP() (string, error) {
}
return "", errors.New("are you connected to the network?")
}
func skipInterface(iface net.Interface) bool {
if iface.Flags&net.FlagUp == 0 {
return true // interface down
}
if iface.Flags&net.FlagLoopback != 0 {
return true // loopback interface
}
return false
}
func addrToIP(addr net.Addr) net.IP {
var ip net.IP
switch v := addr.(type) {
case *net.IPNet:
ip = v.IP
case *net.IPAddr:
ip = v.IP
}
return ip
}