Browse Source

fixed hub logic

afeiszli 3 years ago
parent
commit
f21dad5184

+ 1 - 1
logic/peers.go

@@ -96,7 +96,7 @@ func GetPeersList(refnode *models.Node) ([]models.Node, error) {
 	network, err := GetNetwork(networkName)
 	if err != nil {
 		return peers, err
-	} else if network.IsHubAndSpoke == "yes" && refnode.IsHub != "yes" {
+	} else if network.IsPointToSite == "yes" && refnode.IsHub != "yes" {
 		return GetHubPeer(networkName), nil
 	}
 	if relayedNodeAddr == "" {

+ 1 - 1
logic/server.go

@@ -41,7 +41,7 @@ func ServerJoin(networkSettings *models.Network) (models.Node, error) {
 	}
 	var ishub = "no"
 
-	if networkSettings.IsHubAndSpoke == "yes" || networkSettings.IsComms == "yes" {
+	if networkSettings.IsPointToSite == "yes" || networkSettings.IsComms == "yes" {
 		nodes, err := GetNetworkNodes(networkSettings.NetID)
 		if err != nil || nodes == nil {
 			ishub = "yes"

+ 3 - 3
models/network.go

@@ -24,7 +24,7 @@ type Network struct {
 	IsDualStack         string      `json:"isdualstack" bson:"isdualstack" validate:"checkyesorno"`
 	IsIPv4              string      `json:"isipv4" bson:"isipv4" validate:"checkyesorno"`
 	IsIPv6              string      `json:"isipv6" bson:"isipv6" validate:"checkyesorno"`
-	IsHubAndSpoke       string      `json:"ishubandspoke" bson:"ishubandspoke" validate:"checkyesorno"`
+	IsPointToSite       string      `json:"ispointtosite" bson:"ispointtosite" validate:"checkyesorno"`
 	IsComms             string      `json:"iscomms" bson:"iscomms" validate:"checkyesorno"`
 	LocalRange          string      `json:"localrange" bson:"localrange" validate:"omitempty,cidr"`
 	DefaultUDPHolePunch string      `json:"defaultudpholepunch" bson:"defaultudpholepunch" validate:"checkyesorno"`
@@ -57,8 +57,8 @@ func (network *Network) SetDefaults() {
 	if network.IsLocal == "" {
 		network.IsLocal = "no"
 	}
-	if network.IsHubAndSpoke == "" {
-		network.IsHubAndSpoke = "no"
+	if network.IsPointToSite == "" {
+		network.IsPointToSite = "no"
 	}
 	if network.IsComms == "" {
 		network.IsComms = "no"

+ 1 - 1
netclient/functions/mqhandlers.go

@@ -176,7 +176,7 @@ func UpdatePeers(client mqtt.Client, msg mqtt.Message) {
 			return
 		}
 	}
-	err = wireguard.SetPeers(iface, cfg.Node.Address, cfg.Node.PersistentKeepalive, peerUpdate.Peers)
+	err = wireguard.SetPeers(iface, &cfg.Node, peerUpdate.Peers)
 	if err != nil {
 		ncutils.Log("error syncing wg after peer update: " + err.Error())
 		return

+ 8 - 5
netclient/wireguard/common.go

@@ -25,8 +25,10 @@ const (
 )
 
 // SetPeers - sets peers on a given WireGuard interface
-func SetPeers(iface, currentNodeAddr string, keepalive int32, peers []wgtypes.PeerConfig) error {
+func SetPeers(iface string, node *models.Node, peers []wgtypes.PeerConfig) error {
 	var devicePeers []wgtypes.Peer
+	var currentNodeAddr = node.Address
+	var keepalive = node.PersistentKeepalive
 	var oldPeerAllowedIps = make(map[string][]net.IPNet, len(peers))
 	var err error
 	if ncutils.IsFreeBSD() {
@@ -73,13 +75,14 @@ func SetPeers(iface, currentNodeAddr string, keepalive int32, peers []wgtypes.Pe
 		if keepAliveString == "0" {
 			keepAliveString = "15"
 		}
-		if peer.Endpoint != nil {
+		if node.IsHub == "yes" || peer.Endpoint == nil {
 			_, err = ncutils.RunCmd("wg set "+iface+" peer "+peer.PublicKey.String()+
-				" endpoint "+udpendpoint+
 				" persistent-keepalive "+keepAliveString+
 				" allowed-ips "+allowedips, true)
+
 		} else {
 			_, err = ncutils.RunCmd("wg set "+iface+" peer "+peer.PublicKey.String()+
+				" endpoint "+udpendpoint+
 				" persistent-keepalive "+keepAliveString+
 				" allowed-ips "+allowedips, true)
 		}
@@ -207,7 +210,7 @@ func InitWireguard(node *models.Node, privkey string, peers []wgtypes.PeerConfig
 		err = SyncWGQuickConf(ifacename, confPath)
 	}
 	if !ncutils.HasWgQuick() && ncutils.IsLinux() {
-		err = SetPeers(ifacename, node.Address, node.PersistentKeepalive, peers)
+		err = SetPeers(ifacename, node, peers)
 		if err != nil {
 			ncutils.PrintLog("error setting peers: "+err.Error(), 1)
 		}
@@ -251,7 +254,7 @@ func SetWGConfig(network string, peerupdate bool) error {
 				return err
 			}
 		}
-		err = SetPeers(iface, nodecfg.Address, nodecfg.PersistentKeepalive, peers)
+		err = SetPeers(iface, &nodecfg, peers)
 	} else if peerupdate {
 		err = InitWireguard(&nodecfg, privkey, peers, hasGateway, gateways, true)
 	} else {

+ 1 - 1
serverctl/serverctl.go

@@ -33,7 +33,7 @@ func InitializeCommsNetwork() error {
 		var network models.Network
 		network.NetID = COMMS_NETID
 		network.AddressRange = servercfg.GetCommsCIDR()
-		network.IsHubAndSpoke = "yes"
+		network.IsPointToSite = "yes"
 		network.DefaultUDPHolePunch = "yes"
 		network.IsComms = "yes"
 		return logic.CreateNetwork(network)