cmd/cli: use powershell to get physical interfaces

This commit is contained in:
Cuong Manh Le
2024-09-20 21:57:12 +07:00
committed by Cuong Manh Le
parent 5a88a7c22c
commit cfe1209d61
3 changed files with 20 additions and 42 deletions
+19 -8
View File
@@ -1,7 +1,10 @@
package cli
import (
"bufio"
"bytes"
"net"
"strings"
)
func patchNetIfaceName(iface *net.Interface) error {
@@ -11,13 +14,21 @@ func patchNetIfaceName(iface *net.Interface) error {
// validInterface reports whether the *net.Interface is a valid one.
// On Windows, only physical interfaces are considered valid.
func validInterface(iface *net.Interface, validIfacesMap map[string]struct{}) bool {
if iface == nil {
return false
}
if isPhysicalInterface(iface.HardwareAddr.String()) {
return true
}
return false
_, ok := validIfacesMap[iface.Name]
return ok
}
func validInterfacesMap() map[string]struct{} { return nil }
// validInterfacesMap returns a set of all physical interfaces.
func validInterfacesMap() map[string]struct{} {
out, err := powershell("Get-NetAdapter -Physical | Select-Object -ExpandProperty Name")
if err != nil {
return nil
}
m := make(map[string]struct{})
scanner := bufio.NewScanner(bytes.NewReader(out))
for scanner.Scan() {
ifaceName := strings.TrimSpace(scanner.Text())
m[ifaceName] = struct{}{}
}
return m
}