Browse Source

added mutex on log

0xdcarns 3 years ago
parent
commit
a5e483adab
4 changed files with 60 additions and 66 deletions
  1. 4 0
      logger/logger.go
  2. 2 1
      netclient/config/config.go
  3. 3 2
      netclient/functions/daemon.go
  4. 51 63
      netclient/functions/join.go

+ 4 - 0
logger/logger.go

@@ -6,6 +6,7 @@ import (
 	"sort"
 	"strconv"
 	"strings"
+	"sync"
 	"time"
 )
 
@@ -36,6 +37,9 @@ func ResetLogs() {
 
 // Log - handles adding logs
 func Log(verbosity int, message ...string) {
+	var mu sync.Mutex
+	mu.Lock()
+	defer mu.Unlock()
 	var currentTime = time.Now()
 	var currentMessage = makeString(message...)
 	if int32(verbosity) <= getVerbose() && getVerbose() >= 0 {

+ 2 - 1
netclient/config/config.go

@@ -119,7 +119,8 @@ func ModConfig(node *models.Node) error {
 
 	modconfig.Node = (*node)
 	modconfig.NetworkSettings = node.NetworkSettings
-	log.Printf("%v \n", modconfig)
+	log.Printf("%v \n", node.NetworkSettings)
+	log.Printf("%v \n", modconfig.NetworkSettings)
 	err = Write(&modconfig, network)
 	return err
 }

+ 3 - 2
netclient/functions/daemon.go

@@ -59,10 +59,11 @@ func Daemon() error {
 // SetupMQTT creates a connection to broker and return client
 func SetupMQTT(cfg *config.ClientConfig) mqtt.Client {
 	opts := mqtt.NewClientOptions()
-	for i, server := range cfg.Node.NetworkSettings.DefaultServerAddrs {
+	for _, server := range cfg.Node.NetworkSettings.DefaultServerAddrs {
 		if server.Address != "" && server.IsLeader {
-			ncutils.Log(fmt.Sprintf("adding server (%d) to listen on network %s \n", (i + 1), cfg.Node.Network))
+			ncutils.Log(fmt.Sprintf("adding server (%s) to listen on network %s \n", server.Address, cfg.Node.Network))
 			opts.AddBroker(server.Address + ":1883")
+			break
 		}
 	}
 	opts.SetDefaultPublishHandler(All)

+ 51 - 63
netclient/functions/join.go

@@ -7,6 +7,7 @@ import (
 	"fmt"
 	"log"
 	"os/exec"
+	"runtime"
 
 	"github.com/google/uuid"
 	nodepb "github.com/gravitl/netmaker/grpc"
@@ -101,8 +102,7 @@ func JoinNetwork(cfg config.ClientConfig, privateKey string) error {
 	// make sure name is appropriate, if not, give blank name
 	cfg.Node.Name = formatName(cfg.Node)
 	// differentiate between client/server here
-	var node models.Node // fill this node with appropriate calls
-	postnode := &models.Node{
+	var node = models.Node{
 		Password:            cfg.Node.Password,
 		ID:                  cfg.Node.ID,
 		MacAddress:          cfg.Node.MacAddress,
@@ -124,45 +124,18 @@ func JoinNetwork(cfg config.ClientConfig, privateKey string) error {
 		UDPHolePunch:        cfg.Node.UDPHolePunch,
 	}
 
-	if cfg.Node.IsServer != "yes" {
-		ncutils.Log("joining " + cfg.Network + " at " + cfg.Server.GRPCAddress)
-		var wcclient nodepb.NodeServiceClient
-
-		conn, err := grpc.Dial(cfg.Server.GRPCAddress,
-			ncutils.GRPCRequestOpts(cfg.Server.GRPCSSL))
+	ncutils.Log("joining " + cfg.Network + " at " + cfg.Server.GRPCAddress)
+	var wcclient nodepb.NodeServiceClient
 
-		if err != nil {
-			log.Fatalf("Unable to establish client connection to "+cfg.Server.GRPCAddress+": %v", err)
-		}
-		defer conn.Close()
-		wcclient = nodepb.NewNodeServiceClient(conn)
+	conn, err := grpc.Dial(cfg.Server.GRPCAddress,
+		ncutils.GRPCRequestOpts(cfg.Server.GRPCSSL))
 
-		if err = config.ModConfig(postnode); err != nil {
-			return err
-		}
-		data, err := json.Marshal(postnode)
-		if err != nil {
-			return err
-		}
-		// Create node on server
-		res, err := wcclient.CreateNode(
-			context.TODO(),
-			&nodepb.Object{
-				Data: string(data),
-				Type: nodepb.NODE_TYPE,
-			},
-		)
-		if err != nil {
-			return err
-		}
-		ncutils.PrintLog("node created on remote server...updating configs", 1)
-
-		nodeData := res.Data
-		if err = json.Unmarshal([]byte(nodeData), &node); err != nil {
-			return err
-		}
-		log.Printf("%v \n", nodeData)
+	if err != nil {
+		log.Fatalf("Unable to establish client connection to "+cfg.Server.GRPCAddress+": %v", err)
 	}
+	defer conn.Close()
+	wcclient = nodepb.NewNodeServiceClient(conn)
+	// log.Printf("%v \n", nodeData)
 
 	// get free port based on returned default listen port
 	node.ListenPort, err = ncutils.GetFreePort(node.ListenPort)
@@ -183,33 +156,48 @@ func JoinNetwork(cfg config.ClientConfig, privateKey string) error {
 		cfg.Node.IsStatic = "yes"
 	}
 
-	if node.IsServer != "yes" { // == handle client side ==
-		cfg.Node = node
-		err = config.ModConfig(&node)
-		if err != nil {
-			return err
-		}
-		err = wireguard.StorePrivKey(privateKey, cfg.Network)
-		if err != nil {
-			return err
-		}
-		if node.IsPending == "yes" {
-			ncutils.Log("Node is marked as PENDING.")
-			ncutils.Log("Awaiting approval from Admin before configuring WireGuard.")
-			if cfg.Daemon != "off" {
-				return daemon.InstallDaemon(cfg)
-			}
-		}
-		// pushing any local changes to server before starting wireguard
-		err = Push(cfg.Network)
-		if err != nil {
-			return err
-		}
-		// attempt to make backup
-		if err = config.SaveBackup(node.Network); err != nil {
-			ncutils.Log("failed to make backup, node will not auto restore if config is corrupted")
+	err = wireguard.StorePrivKey(privateKey, cfg.Network)
+	if err != nil {
+		return err
+	}
+	if node.IsPending == "yes" {
+		ncutils.Log("Node is marked as PENDING.")
+		ncutils.Log("Awaiting approval from Admin before configuring WireGuard.")
+		if cfg.Daemon != "off" {
+			return daemon.InstallDaemon(cfg)
 		}
 	}
+	data, err := json.Marshal(&node)
+	if err != nil {
+		return err
+	}
+	// Create node on server
+	res, err := wcclient.CreateNode(
+		context.TODO(),
+		&nodepb.Object{
+			Data: string(data),
+			Type: nodepb.NODE_TYPE,
+		},
+	)
+	if err != nil {
+		return err
+	}
+	ncutils.PrintLog("node created on remote server...updating configs", 1)
+
+	nodeData := res.Data
+	if err = json.Unmarshal([]byte(nodeData), &node); err != nil {
+		return err
+	}
+	node.OS = runtime.GOOS
+	cfg.Node = node
+	err = config.ModConfig(&node)
+	if err != nil {
+		return err
+	}
+	// attempt to make backup
+	if err = config.SaveBackup(node.Network); err != nil {
+		ncutils.Log("failed to make backup, node will not auto restore if config is corrupted")
+	}
 
 	ncutils.Log("retrieving peers")
 	peers, hasGateway, gateways, err := server.GetPeers(node.MacAddress, cfg.Network, cfg.Server.GRPCAddress, node.IsDualStack == "yes", node.IsIngressGateway == "yes", node.IsServer == "yes")