From 03d17a0520d377a712cf5b5cb07b802783e340a4 Mon Sep 17 00:00:00 2001 From: Matthew R Kasun Date: Tue, 25 Jan 2022 18:15:27 -0500 Subject: [PATCH] addressing review comments --- controllers/node.go | 29 ++++++++++++----------------- controllers/node_grpc.go | 4 ++-- controllers/relay.go | 10 ++++------ logic/peers.go | 2 ++ mq/mq.go | 34 +++++++++++++++++----------------- netclient/daemon/macos.go | 7 ++++--- netclient/daemon/systemd.go | 10 ++++++---- 7 files changed, 47 insertions(+), 49 deletions(-) diff --git a/controllers/node.go b/controllers/node.go index e13487a1..d2e6b80a 100644 --- a/controllers/node.go +++ b/controllers/node.go @@ -431,11 +431,10 @@ func uncordonNode(w http.ResponseWriter, r *http.Request) { } go func() { if err := mq.NodeUpdate(&node); err != nil { - logger.Log(1, "error publishing node update"+err.Error()) + logger.Log(1, "error publishing node update", err.Error()) } if err := mq.UpdatePeers(&node); err != nil { - logger.Log(1, "error publishing peer update "+err.Error()) - return + logger.Log(1, "error publishing peer update ", err.Error()) } }() logger.Log(1, r.Header.Get("user"), "uncordoned node", node.Name) @@ -464,11 +463,10 @@ func createEgressGateway(w http.ResponseWriter, r *http.Request) { } go func() { if err := mq.NodeUpdate(&node); err != nil { - logger.Log(1, "error publishing node update"+err.Error()) + logger.Log(1, "error publishing node update", err.Error()) } if err := mq.UpdatePeers(&node); err != nil { logger.Log(1, "error publishing peer update "+err.Error()) - return } }() logger.Log(1, r.Header.Get("user"), "created egress gateway on node", gateway.NodeID, "on network", gateway.NetID) @@ -491,11 +489,10 @@ func deleteEgressGateway(w http.ResponseWriter, r *http.Request) { } go func() { if err := mq.NodeUpdate(&node); err != nil { - logger.Log(1, "error publishing node update"+err.Error()) + logger.Log(1, "error publishing node update", err.Error()) } if err := mq.UpdatePeers(&node); err != nil { - logger.Log(1, "error publishing peer update "+err.Error()) - return + logger.Log(1, "error publishing peer update ", err.Error()) } }() logger.Log(1, r.Header.Get("user"), "deleted egress gateway", nodeid, "on network", netid) @@ -517,11 +514,10 @@ func createIngressGateway(w http.ResponseWriter, r *http.Request) { } go func() { if err := mq.NodeUpdate(&node); err != nil { - logger.Log(1, "error publishing node update"+err.Error()) + logger.Log(1, "error publishing node update", err.Error()) } if err := mq.UpdatePeers(&node); err != nil { - logger.Log(1, "error publishing peer update "+err.Error()) - return + logger.Log(1, "error publishing peer update ", err.Error()) } }() logger.Log(1, r.Header.Get("user"), "created ingress gateway on node", nodeid, "on network", netid) @@ -540,11 +536,10 @@ func deleteIngressGateway(w http.ResponseWriter, r *http.Request) { } go func() { if err := mq.NodeUpdate(&node); err != nil { - logger.Log(1, "error publishing node update"+err.Error()) + logger.Log(1, "error publishing node update", err.Error()) } if err := mq.UpdatePeers(&node); err != nil { - logger.Log(1, "error publishing peer update "+err.Error()) - return + logger.Log(1, "error publishing peer update ", err.Error()) } }() logger.Log(1, r.Header.Get("user"), "deleted ingress gateway", nodeid) @@ -619,11 +614,11 @@ func updateNode(w http.ResponseWriter, r *http.Request) { json.NewEncoder(w).Encode(newNode) go func() { if err := mq.NodeUpdate(&newNode); err != nil { - logger.Log(1, "error publishing node update"+err.Error()) + logger.Log(1, "error publishing node update", err.Error()) } if logic.ShouldPeersUpdate(&node, &newNode) { if err := mq.UpdatePeers(&newNode); err != nil { - logger.Log(1, "error publishing peer update after node update"+err.Error()) + logger.Log(1, "error publishing peer update after node update", err.Error()) } } }() @@ -655,7 +650,7 @@ func deleteNode(w http.ResponseWriter, r *http.Request) { node.Action = models.NODE_DELETE go func() { if err := mq.NodeUpdate(&node); err != nil { - logger.Log(1, "error publishing node delete "+err.Error()) + logger.Log(1, "error publishing node delete ", err.Error()) } }() logger.Log(1, r.Header.Get("user"), "Deleted node", nodeid, "from network", params["network"]) diff --git a/controllers/node_grpc.go b/controllers/node_grpc.go index db4e4538..c2fe6f19 100644 --- a/controllers/node_grpc.go +++ b/controllers/node_grpc.go @@ -94,7 +94,7 @@ func (s *NodeServiceServer) CreateNode(ctx context.Context, req *nodepb.Object) // notify other nodes on network of new peer go func() { if err := mq.UpdatePeers(&node); err != nil { - logger.Log(0, "failed to inform peers of new node "+err.Error()) + logger.Log(0, "failed to inform peers of new node ", err.Error()) } }() @@ -161,7 +161,7 @@ func (s *NodeServiceServer) DeleteNode(ctx context.Context, req *nodepb.Object) // notify other nodes on network of deleted peer go func() { if err := mq.UpdatePeers(&node); err != nil { - logger.Log(0, "failed to inform peers of deleted node "+err.Error()) + logger.Log(0, "failed to inform peers of deleted node ", err.Error()) } }() diff --git a/controllers/relay.go b/controllers/relay.go index c7f86b51..4b9fda8c 100644 --- a/controllers/relay.go +++ b/controllers/relay.go @@ -32,11 +32,10 @@ func createRelay(w http.ResponseWriter, r *http.Request) { } go func() { if err := mq.NodeUpdate(&node); err != nil { - logger.Log(1, "error publishing node update"+err.Error()) + logger.Log(1, "error publishing node update", err.Error()) } if err := mq.UpdatePeers(&node); err != nil { - logger.Log(1, "error publishing peer update "+err.Error()) - return + logger.Log(1, "error publishing peer update ", err.Error()) } }() logger.Log(1, r.Header.Get("user"), "created relay on node", relay.NodeID, "on network", relay.NetID) @@ -59,11 +58,10 @@ func deleteRelay(w http.ResponseWriter, r *http.Request) { } go func() { if err := mq.NodeUpdate(&node); err != nil { - logger.Log(1, "error publishing node update"+err.Error()) + logger.Log(1, "error publishing node update", err.Error()) } if err := mq.UpdatePeers(&node); err != nil { - logger.Log(1, "error publishing peer update "+err.Error()) - return + logger.Log(1, "error publishing peer update ", err.Error()) } }() logger.Log(1, r.Header.Get("user"), "deleted relay server", nodeid, "on network", netid) diff --git a/logic/peers.go b/logic/peers.go index 174bab54..311ee2d6 100644 --- a/logic/peers.go +++ b/logic/peers.go @@ -12,6 +12,7 @@ import ( "golang.zx2c4.com/wireguard/wgctrl/wgtypes" ) +// GetPeerUpdate - gets a wireguard peer config for each peer of a node func GetPeerUpdate(node *models.Node) (models.PeerUpdate, error) { var peerUpdate models.PeerUpdate var peers []wgtypes.PeerConfig @@ -60,6 +61,7 @@ func GetPeerUpdate(node *models.Node) (models.PeerUpdate, error) { return peerUpdate, nil } +// GetAllowedIPs - calculates the wireguard allowedip field for a peer of a node based on the peer and node settings func GetAllowedIPs(node, peer *models.Node) []net.IPNet { var allowedips []net.IPNet var gateways []string diff --git a/mq/mq.go b/mq/mq.go index 19b93c8c..a31d8254 100644 --- a/mq/mq.go +++ b/mq/mq.go @@ -14,14 +14,14 @@ import ( "github.com/gravitl/netmaker/servercfg" ) -// default message handler - only called in GetDebug == true +// DefaultHandler default message queue handler - only called when GetDebug == true var DefaultHandler mqtt.MessageHandler = func(client mqtt.Client, msg mqtt.Message) { - logger.Log(0, "MQTT Message: Topic: "+string(msg.Topic())+" Message: "+string(msg.Payload())) + logger.Log(0, "MQTT Message: Topic: ", string(msg.Topic()), " Message: ", string(msg.Payload())) } // Ping message Handler -- handles ping topic from client nodes var Ping mqtt.MessageHandler = func(client mqtt.Client, msg mqtt.Message) { - logger.Log(0, "Ping Handler: "+msg.Topic()) + logger.Log(0, "Ping Handler: ", msg.Topic()) go func() { id, err := GetID(msg.Topic()) if err != nil { @@ -30,7 +30,7 @@ var Ping mqtt.MessageHandler = func(client mqtt.Client, msg mqtt.Message) { } node, err := logic.GetNodeByID(id) if err != nil { - logger.Log(0, "mq-ping error getting node: "+err.Error()) + logger.Log(0, "mq-ping error getting node: ", err.Error()) record, err := database.FetchRecord(database.NODES_TABLE_NAME, id) if err != nil { logger.Log(0, "error reading database ", err.Error()) @@ -42,7 +42,7 @@ var Ping mqtt.MessageHandler = func(client mqtt.Client, msg mqtt.Message) { } node.SetLastCheckIn() if err := logic.UpdateNode(&node, &node); err != nil { - logger.Log(0, "error updating node "+err.Error()) + logger.Log(0, "error updating node ", err.Error()) } logger.Log(0, "ping processed") // --TODO --set client version once feature is implemented. @@ -55,26 +55,26 @@ var UpdateNode mqtt.MessageHandler = func(client mqtt.Client, msg mqtt.Message) go func() { id, err := GetID(msg.Topic()) if err != nil { - logger.Log(1, "error getting node.ID sent on "+msg.Topic()+" "+err.Error()) + logger.Log(1, "error getting node.ID sent on ", msg.Topic(), err.Error()) return } - logger.Log(1, "Update Node Handler"+id) + logger.Log(1, "Update Node Handler", id) var newNode models.Node if err := json.Unmarshal(msg.Payload(), &newNode); err != nil { - logger.Log(1, "error unmarshaling payload "+err.Error()) + logger.Log(1, "error unmarshaling payload ", err.Error()) return } currentNode, err := logic.GetNodeByID(newNode.ID) if err != nil { - logger.Log(1, "error getting node "+newNode.ID+" "+err.Error()) + logger.Log(1, "error getting node ", newNode.ID, err.Error()) return } if err := logic.UpdateNode(¤tNode, &newNode); err != nil { - logger.Log(1, "error saving node"+err.Error()) + logger.Log(1, "error saving node", err.Error()) } if logic.ShouldPeersUpdate(¤tNode, &newNode) { if err := PublishPeerUpdate(client, &newNode); err != nil { - logger.Log(1, "error publishing peer update "+err.Error()) + logger.Log(1, "error publishing peer update ", err.Error()) return } } @@ -85,22 +85,22 @@ var UpdateNode mqtt.MessageHandler = func(client mqtt.Client, msg mqtt.Message) func PublishPeerUpdate(client mqtt.Client, newNode *models.Node) error { networkNodes, err := logic.GetNetworkNodes(newNode.Network) if err != nil { - logger.Log(1, "err getting Network Nodes"+err.Error()) + logger.Log(1, "err getting Network Nodes", err.Error()) return err } for _, node := range networkNodes { peerUpdate, err := logic.GetPeerUpdate(&node) if err != nil { - logger.Log(1, "error getting peer update for node "+node.ID+" "+err.Error()) + logger.Log(1, "error getting peer update for node ", node.ID, err.Error()) continue } data, err := json.Marshal(&peerUpdate) if err != nil { - logger.Log(2, "error marshaling peer update "+err.Error()) + logger.Log(2, "error marshaling peer update ", err.Error()) return err } if token := client.Publish("update/peers/"+node.ID, 0, false, data); token.Wait() && token.Error() != nil { - logger.Log(2, "error publishing peer update to peer "+node.ID+" "+token.Error().Error()) + logger.Log(2, "error publishing peer update to peer ", node.ID, token.Error().Error()) return err } } @@ -125,11 +125,11 @@ func NodeUpdate(node *models.Node) error { defer client.Disconnect(250) data, err := json.Marshal(node) if err != nil { - logger.Log(2, "error marshalling node update "+err.Error()) + logger.Log(2, "error marshalling node update ", err.Error()) return err } if token := client.Publish("update/"+node.ID, 0, false, data); token.Wait() && token.Error() != nil { - logger.Log(2, "error publishing peer update to peer "+node.ID+" "+token.Error().Error()) + logger.Log(2, "error publishing peer update to peer ", node.ID, token.Error().Error()) return err } return nil diff --git a/netclient/daemon/macos.go b/netclient/daemon/macos.go index 51efc9fb..98959d26 100644 --- a/netclient/daemon/macos.go +++ b/netclient/daemon/macos.go @@ -10,6 +10,7 @@ import ( ) const MAC_SERVICE_NAME = "com.gravitl.netclient" +const EXEC_DIR = "/sbin/" // SetupMacDaemon - Creates a daemon service from the netclient under LaunchAgents for MacOS func SetupMacDaemon(interval string) error { @@ -20,8 +21,8 @@ func SetupMacDaemon(interval string) error { } binarypath := dir + "/netclient" - if !ncutils.FileExists("/sbin/netclient") { - err = ncutils.Copy(binarypath, "/sbin/netclient") + if !ncutils.FileExists(EXEC_DIR + "netclient") { + err = ncutils.Copy(binarypath, EXEC_DIR+"netclient") if err != nil { log.Println(err) return err @@ -51,7 +52,7 @@ func CleanupMac() { } os.RemoveAll(ncutils.GetNetclientPath()) - os.Remove("/sbin/netclient") + os.Remove(EXEC_DIR + "netclient") } // CreateMacService - Creates the mac service file for LaunchDaemons diff --git a/netclient/daemon/systemd.go b/netclient/daemon/systemd.go index 6b1ecc4a..b4c9d05d 100644 --- a/netclient/daemon/systemd.go +++ b/netclient/daemon/systemd.go @@ -10,6 +10,8 @@ import ( "github.com/gravitl/netmaker/netclient/ncutils" ) +const EXEC_DIR = "/usr/sbin/" + // SetupSystemDDaemon - sets system daemon for supported machines func SetupSystemDDaemon(interval string) error { @@ -31,8 +33,8 @@ func SetupSystemDDaemon(interval string) error { } //install binary //should check if the existing binary is the corect version -- for now only copy if file doesn't exist - if !ncutils.FileExists("/usr/sbin/netclient") { - err = ncutils.Copy(binarypath, "/usr/sbin/netclient") + if !ncutils.FileExists(EXEC_DIR + "netclient") { + err = ncutils.Copy(binarypath, EXEC_DIR+"netclient") if err != nil { log.Println(err) return err @@ -61,7 +63,7 @@ WantedBy=multi-user.target } _, _ = ncutils.RunCmd("systemctl enable netclient.service", true) _, _ = ncutils.RunCmd("systemctl daemon-reload", true) - _, _ = ncutils.RunCmd("systemctl start netclient.server", true) + _, _ = ncutils.RunCmd("systemctl start netclient.service", true) return nil } @@ -69,7 +71,7 @@ func CleanupLinux() { if err := os.RemoveAll(ncutils.GetNetclientPath()); err != nil { ncutils.PrintLog("Removing netclient configs: "+err.Error(), 1) } - if err := os.Remove("/usr/sbin/netclient"); err != nil { + if err := os.Remove(EXEC_DIR + "netclient"); err != nil { ncutils.PrintLog("Removing netclient binary: "+err.Error(), 1) } }