fix build, rework interface check and filter ipv6 for name

This commit is contained in:
nikk gitanes
2021-09-13 08:04:58 +03:00
parent 02b749a4c4
commit ce31a383db
2 changed files with 21 additions and 16 deletions

View File

@@ -7,6 +7,7 @@ import (
"os" "os"
"os/user" "os/user"
"path/filepath" "path/filepath"
"runtime"
"time" "time"
"github.com/anacrolix/dms/dlna/dms" "github.com/anacrolix/dms/dlna/dms"
@@ -27,10 +28,12 @@ func Start() {
log.TLogln(err) log.TLogln(err)
os.Exit(1) os.Exit(1)
} }
for _, element := range ifaces { for _, i := range ifaces {
if element.Flags&net.FlagLoopback == 0 && element.Flags&net.FlagUp == net.FlagUp && element.Flags&net.FlagMulticast == net.FlagMulticast && utils.IsPhysicalInterface(element.HardwareAddr.String()) { // interface flags seem to always be 0 on Windows
ifs = append(ifs, element) if runtime.GOOS != "windows" && (i.Flags&net.FlagLoopback != 0 || i.Flags&net.FlagUp == 0 || i.Flags&net.FlagMulticast == 0) || !utils.IsPhysicalInterface(i.HardwareAddr.String()) {
continue
} }
ifs = append(ifs, i)
} }
return return
}(), }(),
@@ -164,8 +167,11 @@ func getDefaultFriendlyName() string {
} }
var list []string var list []string
for _, i := range ifaces { for _, i := range ifaces {
// interface flags seem to always be 0 on Windows
if runtime.GOOS != "windows" && (i.Flags&net.FlagLoopback != 0 || i.Flags&net.FlagUp == 0 || i.Flags&net.FlagMulticast == 0) || !utils.IsPhysicalInterface(i.HardwareAddr.String()) {
continue
}
addrs, _ := i.Addrs() addrs, _ := i.Addrs()
if i.Flags&net.FlagLoopback == 0 && i.Flags&net.FlagUp == net.FlagUp && i.Flags&net.FlagMulticast == net.FlagMulticast && utils.IsPhysicalInterface(i.HardwareAddr.String()) {
for _, addr := range addrs { for _, addr := range addrs {
var ip net.IP var ip net.IP
switch v := addr.(type) { switch v := addr.(type) {
@@ -174,12 +180,11 @@ func getDefaultFriendlyName() string {
case *net.IPAddr: case *net.IPAddr:
ip = v.IP ip = v.IP
} }
if !ip.IsLoopback() { if !ip.IsLoopback() && ip.To4() != nil {
list = append(list, ip.String()) list = append(list, ip.String())
} }
} }
} }
}
if len(list) > 0 { if len(list) > 0 {
return ret + " " + list[0] return ret + " " + list[0]
} }

View File

@@ -20,7 +20,7 @@ func GetAllPhysicalInterfaces() []PhysicalInterface {
var outInterfaces []PhysicalInterface var outInterfaces []PhysicalInterface
for _, element := range ifaces { for _, element := range ifaces {
if element.Flags&net.FlagLoopback == 0 && element.Flags&net.FlagUp == 1 && isPhysicalInterface(element.HardwareAddr.String()) { if element.Flags&net.FlagLoopback == 0 && element.Flags&net.FlagUp == 1 && IsPhysicalInterface(element.HardwareAddr.String()) {
outInterfaces = append(outInterfaces, PhysicalInterface{MACAddress: element.HardwareAddr.String(), Name: element.Name, FriendlyName: element.Name}) outInterfaces = append(outInterfaces, PhysicalInterface{MACAddress: element.HardwareAddr.String(), Name: element.Name, FriendlyName: element.Name})
} }
} }