From 184e5a66d9d9ba850a2f24c8aca28888f96d1376 Mon Sep 17 00:00:00 2001 From: "Matthew R. Kasun" Date: Fri, 19 Aug 2022 11:25:39 -0400 Subject: [PATCH] refactor server routing --- controllers/network.go | 6 ++---- logic/server.go | 41 +++-------------------------------------- logic/wireguard.go | 8 +++----- models/node.go | 2 +- 4 files changed, 9 insertions(+), 48 deletions(-) diff --git a/controllers/network.go b/controllers/network.go index fa7f5b96..5c2c8cf6 100644 --- a/controllers/network.go +++ b/controllers/network.go @@ -39,7 +39,7 @@ func networkHandlers(r *mux.Router) { r.HandleFunc("/api/networks/{networkname}/acls", securityCheck(true, http.HandlerFunc(getNetworkACL))).Methods("GET") } -//simple get all networks function +// simple get all networks function func getNetworks(w http.ResponseWriter, r *http.Request) { headerNetworks := r.Header.Get("networks") @@ -216,9 +216,7 @@ func updateNetwork(w http.ResponseWriter, r *http.Request) { return } for _, node := range nodes { - if err = mq.NodeUpdate(&node); err != nil { - logger.Log(1, "failed to send update to node during a network wide update", node.Name, node.ID, err.Error()) - } + runUpdates(&node, true) } } diff --git a/logic/server.go b/logic/server.go index 4dca4ce1..79474d98 100644 --- a/logic/server.go +++ b/logic/server.go @@ -11,8 +11,8 @@ import ( "github.com/gravitl/netmaker/logger" "github.com/gravitl/netmaker/models" "github.com/gravitl/netmaker/netclient/ncutils" + "github.com/gravitl/netmaker/netclient/wireguard" "github.com/gravitl/netmaker/servercfg" - "golang.org/x/exp/slices" "golang.zx2c4.com/wireguard/wgctrl/wgtypes" ) @@ -148,13 +148,13 @@ func ServerJoin(networkSettings *models.Network) (models.Node, error) { return returnNode, err } - peers, hasGateway, gateways, err := GetServerPeers(node) + peers, err := GetPeerUpdate(node) if err != nil && !ncutils.IsEmptyRecord(err) { logger.Log(1, "failed to retrieve peers") return returnNode, err } - err = initWireguard(node, privateKey, peers[:], hasGateway, gateways[:]) + err = wireguard.InitWireguard(node, privateKey, peers.Peers, false) if err != nil { return returnNode, err } @@ -188,41 +188,6 @@ func ServerUpdate(serverNode *models.Node, ifaceDelta bool) error { return serverPush(serverNode) } -/** - * Below function needs major refactor - * - */ - -// GetServerPeers - gets peers of server -func GetServerPeers(serverNode *models.Node) ([]wgtypes.PeerConfig, bool, []string, error) { - update, err := GetPeerUpdate(serverNode) - if err != nil { - return []wgtypes.PeerConfig{}, false, []string{}, err - } - - // this is temporary code, should be removed by 0.14.4 - // refactor server routing to use client-side routing code - var hasGateways = false - var gateways = []string{} - nodes, err := GetNetworkNodes(serverNode.Network) - if err == nil { - for _, node := range nodes { - //if egress ranges is internet (0.0.0.0/0 or ::/0) remove as don't want server to use internet gateway - if node.IsEgressGateway == "yes" && (slices.Contains(node.EgressGatewayRanges, "0.0.0.0/0") || slices.Contains(node.EgressGatewayRanges, "::/0")) { - logger.Log(0, "skipping internet gateway for server") - continue - } - if node.IsEgressGateway == "yes" && !IsLocalServer(&node) { - gateways = append(gateways, node.EgressGatewayRanges...) - } - } - hasGateways = len(gateways) > 0 - } - // end temporary code - - return update.Peers, hasGateways, gateways, nil -} - // == Private == func isDeleteError(err error) bool { diff --git a/logic/wireguard.go b/logic/wireguard.go index e061c783..633cdd6e 100644 --- a/logic/wireguard.go +++ b/logic/wireguard.go @@ -302,8 +302,7 @@ func removeWGQuickConf(confPath string, printlog bool) error { } func setWGConfig(node *models.Node, peerupdate bool) error { - - peers, hasGateway, gateways, err := GetServerPeers(node) + peers, err := GetPeerUpdate(node) if err != nil { return err } @@ -312,15 +311,14 @@ func setWGConfig(node *models.Node, peerupdate bool) error { return err } if peerupdate { - if err := wireguard.SetPeers(node.Interface, node, peers); err != nil { + if err := wireguard.SetPeers(node.Interface, node, peers.Peers); err != nil { logger.Log(0, "error updating peers", err.Error()) } logger.Log(2, "updated peers on server", node.Name) } else { - err = initWireguard(node, privkey, peers[:], hasGateway, gateways[:]) + err = wireguard.InitWireguard(node, privkey, peers.Peers, false) logger.Log(3, "finished setting wg config on server", node.Name) } - peers = nil return err } diff --git a/models/node.go b/models/node.go index 06d3b6b9..88449264 100644 --- a/models/node.go +++ b/models/node.go @@ -89,7 +89,7 @@ type Node struct { Version string `json:"version" bson:"version" yaml:"version"` Server string `json:"server" bson:"server" yaml:"server"` TrafficKeys TrafficKeys `json:"traffickeys" bson:"traffickeys" yaml:"traffickeys"` - FirewallInUse string `json:"firewallinuse" bson:"firewallinuse" yaml:"firewallinuse"` + FirewallInUse string `json:"firewallinuse" bson:"firewallinuse" yaml:"firewallinuse"` InternetGateway string `json:"internetgateway" bson:"internetgateway" yaml:"internetgateway"` }