From f21dad51843c76a71dcc094c50caac7c1753345b Mon Sep 17 00:00:00 2001 From: afeiszli Date: Mon, 21 Feb 2022 09:45:42 -0500 Subject: [PATCH] fixed hub logic --- logic/peers.go | 2 +- logic/server.go | 2 +- models/network.go | 6 +++--- netclient/functions/mqhandlers.go | 2 +- netclient/wireguard/common.go | 13 ++++++++----- serverctl/serverctl.go | 2 +- 6 files changed, 15 insertions(+), 12 deletions(-) diff --git a/logic/peers.go b/logic/peers.go index ad9b15e1..e01cef48 100644 --- a/logic/peers.go +++ b/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 == "" { diff --git a/logic/server.go b/logic/server.go index cad44533..d8b84181 100644 --- a/logic/server.go +++ b/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" diff --git a/models/network.go b/models/network.go index fb7763ee..99b693e1 100644 --- a/models/network.go +++ b/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" diff --git a/netclient/functions/mqhandlers.go b/netclient/functions/mqhandlers.go index 21893f6d..dd367cb8 100644 --- a/netclient/functions/mqhandlers.go +++ b/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 diff --git a/netclient/wireguard/common.go b/netclient/wireguard/common.go index b832eed5..7156b42e 100644 --- a/netclient/wireguard/common.go +++ b/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 { diff --git a/serverctl/serverctl.go b/serverctl/serverctl.go index 0b775307..18aca0f4 100644 --- a/serverctl/serverctl.go +++ b/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)