Browse Source

Fixed client and server issues with updates and dns before db connect

worker-9 4 years ago
parent
commit
fb5f08be5a
4 changed files with 22 additions and 34 deletions
  1. 4 7
      controllers/nodeHttpController.go
  2. 2 2
      main.go
  3. 3 2
      models/node.go
  4. 13 23
      netclient/wireguard/kernel.go

+ 4 - 7
controllers/nodeHttpController.go

@@ -198,7 +198,7 @@ func authorize(networkCheck bool, authNetwork string, next http.Handler) http.Ha
 				isAuthorized = true
 				isAuthorized = true
 				r.Header.Set("ismasterkey", "yes")
 				r.Header.Set("ismasterkey", "yes")
 			} else {
 			} else {
-                                r.Header.Set("ismasterkey", "")
+				r.Header.Set("ismasterkey", "")
 				mac, _, err := functions.VerifyToken(authToken)
 				mac, _, err := functions.VerifyToken(authToken)
 				if err != nil {
 				if err != nil {
 					errorResponse = models.ErrorResponse{
 					errorResponse = models.ErrorResponse{
@@ -320,7 +320,7 @@ func getAllNodes(w http.ResponseWriter, r *http.Request) {
 		return
 		return
 	}
 	}
 	var nodes []models.Node
 	var nodes []models.Node
-	if user.IsAdmin  || r.Header.Get("ismasterkey") == "yes" {
+	if user.IsAdmin || r.Header.Get("ismasterkey") == "yes" {
 		nodes, err = models.GetAllNodes()
 		nodes, err = models.GetAllNodes()
 		if err != nil {
 		if err != nil {
 			returnErrorResponse(w, r, formatError(err, "internal"))
 			returnErrorResponse(w, r, formatError(err, "internal"))
@@ -706,8 +706,8 @@ func CreateIngressGateway(netid string, macaddress string) (models.Node, error)
 		}
 		}
 	}
 	}
 	node.SetLastModified()
 	node.SetLastModified()
-        node.PostUp = postUpCmd
-        node.PostDown = postDownCmd
+	node.PostUp = postUpCmd
+	node.PostDown = postDownCmd
 	key, err := functions.GetRecordKey(node.MacAddress, node.Network)
 	key, err := functions.GetRecordKey(node.MacAddress, node.Network)
 	if err != nil {
 	if err != nil {
 		return models.Node{}, err
 		return models.Node{}, err
@@ -788,9 +788,6 @@ func updateNode(w http.ResponseWriter, r *http.Request) {
 		return
 		return
 	}
 	}
 
 
-	if err = SetNetworkNodesLastModified(node.Network); err != nil {
-		log.Println(err)
-	}
 	if servercfg.IsDNSMode() {
 	if servercfg.IsDNSMode() {
 		err = SetDNS()
 		err = SetDNS()
 	}
 	}

+ 2 - 2
main.go

@@ -23,7 +23,6 @@ import (
 
 
 //Start MongoDB Connection and start API Request Handler
 //Start MongoDB Connection and start API Request Handler
 func main() {
 func main() {
-	checkModes() // check which flags are set and if root or not
 	initialize() // initial db and grpc server
 	initialize() // initial db and grpc server
 	defer database.Database.Close()
 	defer database.Database.Close()
 	startControllers() // start the grpc or rest endpoints
 	startControllers() // start the grpc or rest endpoints
@@ -46,6 +45,7 @@ func checkModes() { // Client Mode Prereq Check
 	if uid != 0 {
 	if uid != 0 {
 		log.Fatal("To run in client mode requires root privileges. Either disable client mode or run with sudo.")
 		log.Fatal("To run in client mode requires root privileges. Either disable client mode or run with sudo.")
 	}
 	}
+	database.InitializeDatabase()
 
 
 	if servercfg.IsDNSMode() {
 	if servercfg.IsDNSMode() {
 		err := functions.SetDNSDir()
 		err := functions.SetDNSDir()
@@ -57,7 +57,7 @@ func checkModes() { // Client Mode Prereq Check
 }
 }
 
 
 func initialize() {
 func initialize() {
-	database.InitializeDatabase()
+	checkModes() // check which flags are set and if root or not
 	if servercfg.IsGRPCWireGuard() {
 	if servercfg.IsGRPCWireGuard() {
 		if err := serverctl.InitServerWireGuard(); err != nil {
 		if err := serverctl.InitServerWireGuard(); err != nil {
 			log.Fatal(err)
 			log.Fatal(err)

+ 3 - 2
models/node.go

@@ -15,6 +15,7 @@ import (
 
 
 const charset = "abcdefghijklmnopqrstuvwxyz" + "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
 const charset = "abcdefghijklmnopqrstuvwxyz" + "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
 const TEN_YEARS_IN_SECONDS = 300000000
 const TEN_YEARS_IN_SECONDS = 300000000
+
 var seededRand *rand.Rand = rand.New(
 var seededRand *rand.Rand = rand.New(
 	rand.NewSource(time.Now().UnixNano()))
 	rand.NewSource(time.Now().UnixNano()))
 
 
@@ -264,16 +265,16 @@ func (newNode *Node) Fill(currentNode *Node) {
 }
 }
 
 
 func (currentNode *Node) Update(newNode *Node) error {
 func (currentNode *Node) Update(newNode *Node) error {
-        newNode.Fill(currentNode)
+	newNode.Fill(currentNode)
 	if err := newNode.Validate(true); err != nil {
 	if err := newNode.Validate(true); err != nil {
 		return err
 		return err
 	}
 	}
 	newNode.SetID()
 	newNode.SetID()
 	if newNode.ID == currentNode.ID {
 	if newNode.ID == currentNode.ID {
+		newNode.SetLastModified()
 		if data, err := json.Marshal(newNode); err != nil {
 		if data, err := json.Marshal(newNode); err != nil {
 			return err
 			return err
 		} else {
 		} else {
-			newNode.SetLastModified()
 			if err = database.Insert(newNode.ID, string(data), database.NODES_TABLE_NAME); err == nil {
 			if err = database.Insert(newNode.ID, string(data), database.NODES_TABLE_NAME); err == nil {
 				if network, err := GetNetwork(newNode.Network); err == nil {
 				if network, err := GetNetwork(newNode.Network); err == nil {
 					err = network.SetNetworkNodesLastModified()
 					err = network.SetNetworkNodesLastModified()

+ 13 - 23
netclient/wireguard/kernel.go

@@ -1,7 +1,6 @@
 package wireguard
 package wireguard
 
 
 import (
 import (
-	"github.com/davecgh/go-spew/spew"
 	"context"
 	"context"
 	"crypto/tls"
 	"crypto/tls"
 	"errors"
 	"errors"
@@ -14,6 +13,8 @@ import (
 	"strconv"
 	"strconv"
 	"strings"
 	"strings"
 
 
+	"github.com/davecgh/go-spew/spew"
+
 	nodepb "github.com/gravitl/netmaker/grpc"
 	nodepb "github.com/gravitl/netmaker/grpc"
 	"github.com/gravitl/netmaker/models"
 	"github.com/gravitl/netmaker/models"
 	"github.com/gravitl/netmaker/netclient/auth"
 	"github.com/gravitl/netmaker/netclient/auth"
@@ -203,30 +204,19 @@ func InitWireguard(node *nodepb.Node, privkey string, peers []wgtypes.PeerConfig
 		Stdout: os.Stdout,
 		Stdout: os.Stdout,
 		Stderr: os.Stdout,
 		Stderr: os.Stdout,
 	}
 	}
+	cmdIPLinkDelete := exec.Command("ip", "link", "delete", "dev", ifacename)
 
 
-	currentiface, err := net.InterfaceByName(ifacename)
-
-	if err != nil {
-		err = cmdIPDevLinkAdd.Run()
-		if err != nil && !strings.Contains(err.Error(), "exists") {
-			fmt.Println("Error creating interface")
-			//fmt.Println(err.Error())
-			//return err
-		}
+	delErr := cmdIPLinkDelete.Run()
+	addLinkErr := cmdIPDevLinkAdd.Run()
+	addErr := cmdIPAddrAdd.Run()
+	if delErr != nil {
+		log.Println(delErr)
 	}
 	}
-	match := false
-	addrs, _ := currentiface.Addrs()
-	for _, a := range addrs {
-		if strings.Contains(a.String(), node.Address) {
-			match = true
-		}
+	if addLinkErr != nil {
+		log.Println(addLinkErr)
 	}
 	}
-	if !match {
-		err = cmdIPAddrAdd.Run()
-		if err != nil {
-			fmt.Println("Error adding address")
-			//return err
-		}
+	if addErr != nil {
+		log.Println(addErr)
 	}
 	}
 	var nodeport int
 	var nodeport int
 	nodeport = int(node.Listenport)
 	nodeport = int(node.Listenport)
@@ -267,7 +257,7 @@ func InitWireguard(node *nodepb.Node, privkey string, peers []wgtypes.PeerConfig
 		}
 		}
 	}
 	}
 	//=========DNS Setup==========\\
 	//=========DNS Setup==========\\
-	log.Println("NODECFG.DNS:",nodecfg.DNS)
+	log.Println("NODECFG.DNS:", nodecfg.DNS)
 	if nodecfg.DNS == "on" {
 	if nodecfg.DNS == "on" {
 		_ = local.UpdateDNS(ifacename, network, nameserver)
 		_ = local.UpdateDNS(ifacename, network, nameserver)
 	}
 	}