From ce31a383dbd9814f502661d70224f1dfbfd85198 Mon Sep 17 00:00:00 2001 From: nikk gitanes Date: Mon, 13 Sep 2021 08:04:58 +0300 Subject: [PATCH] fix build, rework interface check and filter ipv6 for name --- server/dlna/dlna.go | 35 +++++++++++-------- .../utils/net_interface_filter_nix_darwin.go | 2 +- 2 files changed, 21 insertions(+), 16 deletions(-) diff --git a/server/dlna/dlna.go b/server/dlna/dlna.go index dfef97c..1465267 100644 --- a/server/dlna/dlna.go +++ b/server/dlna/dlna.go @@ -7,6 +7,7 @@ import ( "os" "os/user" "path/filepath" + "runtime" "time" "github.com/anacrolix/dms/dlna/dms" @@ -27,10 +28,12 @@ func Start() { log.TLogln(err) os.Exit(1) } - for _, element := 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()) { - ifs = append(ifs, element) + 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 } + ifs = append(ifs, i) } return }(), @@ -164,19 +167,21 @@ func getDefaultFriendlyName() string { } var list []string 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() - 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 { - var ip net.IP - switch v := addr.(type) { - case *net.IPNet: - ip = v.IP - case *net.IPAddr: - ip = v.IP - } - if !ip.IsLoopback() { - list = append(list, ip.String()) - } + 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.IsLoopback() && ip.To4() != nil { + list = append(list, ip.String()) } } } diff --git a/server/utils/net_interface_filter_nix_darwin.go b/server/utils/net_interface_filter_nix_darwin.go index 5777510..ecebcef 100644 --- a/server/utils/net_interface_filter_nix_darwin.go +++ b/server/utils/net_interface_filter_nix_darwin.go @@ -20,7 +20,7 @@ func GetAllPhysicalInterfaces() []PhysicalInterface { var outInterfaces []PhysicalInterface 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}) } }