Browse Source

fixing mac interface parsing

afeiszli 3 years ago
parent
commit
c826b782ed
2 changed files with 16 additions and 9 deletions
  1. 4 4
      netclient/server/grpc.go
  2. 12 5
      netclient/wireguard/common.go

+ 4 - 4
netclient/server/grpc.go

@@ -211,12 +211,12 @@ func GetPeers(macaddress string, network string, server string, dualstack bool,
 			for _, iprange := range ranges { // go through each cidr for egress gateway
 			for _, iprange := range ranges { // go through each cidr for egress gateway
 				_, ipnet, err := net.ParseCIDR(iprange) // confirming it's valid cidr
 				_, ipnet, err := net.ParseCIDR(iprange) // confirming it's valid cidr
 				if err != nil {
 				if err != nil {
-					ncutils.PrintLog("could not parse gateway IP range. Not adding "+iprange,1)
+					ncutils.PrintLog("could not parse gateway IP range. Not adding "+iprange, 1)
 					continue // if can't parse CIDR
 					continue // if can't parse CIDR
 				}
 				}
-				nodeEndpointArr := strings.Split(node.Endpoint, ":") // getting the public ip of node
-				if ipnet.Contains(net.IP(nodeEndpointArr[0])) {      // ensuring egress gateway range does not contain public ip of node
-					ncutils.PrintLog("egress IP range of "+iprange+" overlaps with "+node.Endpoint+", omitting",1)
+				nodeEndpointArr := strings.Split(nodecfg.Endpoint, ":") // getting the public ip of node
+				if ipnet.Contains(net.IP(nodeEndpointArr[0])) {         // ensuring egress gateway range does not contain public ip of node
+					ncutils.PrintLog("egress IP range of "+iprange+" overlaps with "+nodecfg.Endpoint+", omitting", 1)
 					continue // skip adding egress range if overlaps with node's ip
 					continue // skip adding egress range if overlaps with node's ip
 				}
 				}
 				gateways = append(gateways, iprange)
 				gateways = append(gateways, iprange)

+ 12 - 5
netclient/wireguard/common.go

@@ -45,7 +45,7 @@ func SetPeers(iface string, keepalive int32, peers []wgtypes.PeerConfig) error {
 		for _, currentPeer := range devicePeers {
 		for _, currentPeer := range devicePeers {
 			if currentPeer.AllowedIPs[0].String() == peer.AllowedIPs[0].String() &&
 			if currentPeer.AllowedIPs[0].String() == peer.AllowedIPs[0].String() &&
 				currentPeer.PublicKey.String() != peer.PublicKey.String() {
 				currentPeer.PublicKey.String() != peer.PublicKey.String() {
-				_, err := ncutils.RunCmd( "wg set "+iface+" peer "+currentPeer.PublicKey.String()+" remove", true)
+				_, err := ncutils.RunCmd("wg set "+iface+" peer "+currentPeer.PublicKey.String()+" remove", true)
 				if err != nil {
 				if err != nil {
 					log.Println("error removing peer", peer.Endpoint.String())
 					log.Println("error removing peer", peer.Endpoint.String())
 				}
 				}
@@ -176,11 +176,18 @@ func InitWireguard(node *models.Node, privkey string, peers []wgtypes.PeerConfig
 			return err
 			return err
 		}
 		}
 		// spin up userspace / windows interface + apply the conf file
 		// spin up userspace / windows interface + apply the conf file
-		d, _ := wgclient.Device(ifacename)
-		for d != nil && d.Name == ifacename {
+		var deviceiface string
+		if ncutils.IsMac() {
+			deviceiface, err = local.GetMacIface(node.Address)
+			if err != nil || deviceiface == "" {
+				deviceiface = ifacename
+			}
+		}
+		d, _ := wgclient.Device(deviceiface)
+		for d != nil && d.Name == deviceiface {
 			_ = RemoveConf(ifacename, false) // remove interface first
 			_ = RemoveConf(ifacename, false) // remove interface first
 			time.Sleep(time.Second >> 2)
 			time.Sleep(time.Second >> 2)
-			d, _ = wgclient.Device(ifacename)
+			d, _ = wgclient.Device(deviceiface)
 		}
 		}
 		err = ApplyConf(confPath)
 		err = ApplyConf(confPath)
 		if err != nil {
 		if err != nil {
@@ -259,7 +266,7 @@ func SetWGConfig(network string, peerupdate bool) error {
 	}
 	}
 	servercfg := cfg.Server
 	servercfg := cfg.Server
 	nodecfg := cfg.Node
 	nodecfg := cfg.Node
-	
+
 	peers, hasGateway, gateways, err := server.GetPeers(nodecfg.MacAddress, nodecfg.Network, servercfg.GRPCAddress, nodecfg.IsDualStack == "yes", nodecfg.IsIngressGateway == "yes")
 	peers, hasGateway, gateways, err := server.GetPeers(nodecfg.MacAddress, nodecfg.Network, servercfg.GRPCAddress, nodecfg.IsDualStack == "yes", nodecfg.IsIngressGateway == "yes")
 	if err != nil {
 	if err != nil {
 		return err
 		return err