updating net check function on macos

This commit is contained in:
afeiszli 2021-09-19 16:18:22 -04:00
parent a0586ea6d2
commit 06811235c9

View file

@ -4,6 +4,7 @@ import (
//"github.com/davecgh/go-spew/spew"
"errors"
"log"
"net"
"runtime"
"strings"
@ -58,23 +59,33 @@ func IsWGInstalled() bool {
return strings.Contains(out, "Available subcommand")
}
func GetMacIface(addr string) (string, error) {
out, err := ncutils.RunCmd("route get "+addr, false)
var iface string
func GetMacIface(ipstring string) (string, error) {
var wgiface string
_, checknet, err := net.ParseCIDR(ipstring + "/24")
if err != nil {
return iface, errors.New(string(out))
return wgiface, errors.New("could not parse ip " + ipstring)
}
for _, line := range strings.Split(strings.TrimSuffix(string(out), "\n"), "\n") {
if strings.Contains(line, "interface: ") {
iface = getLineAfter(string(out), "interface: ")
iface = strings.Split(iface, "\n")[0]
break
ifaces, err := net.Interfaces()
if err != nil {
return wgiface, err
}
for _, iface := range ifaces {
addrs, err := iface.Addrs()
if err != nil {
continue
}
for _, addr := range addrs {
ip := addr.(*net.IPNet).IP
if checknet.Contains(ip) {
wgiface = iface.Name
break
}
}
}
if iface == "" {
err = errors.New("could not find iface for ip addr " + addr)
if wgiface == "" {
err = errors.New("could not find iface for network " + ipstring)
}
return iface, err
return wgiface, err
}
func getLineAfter(value string, a string) string {