Browse Source

began transition

0xdcarns 3 years ago
parent
commit
c033be41bb
11 changed files with 31 additions and 56 deletions
  1. 1 0
      go.mod
  2. 2 0
      go.sum
  3. 0 5
      logic/networks.go
  4. 13 2
      logic/nodes.go
  5. 0 1
      logic/relay.go
  6. 0 2
      logic/server.go
  7. 5 6
      logic/util.go
  8. 0 2
      logic/wireguard.go
  9. 10 14
      models/node.go
  10. 0 3
      netclient/config/config.go
  11. 0 21
      netclient/functions/common.go

+ 1 - 0
go.mod

@@ -36,6 +36,7 @@ require (
 	github.com/go-playground/locales v0.14.0 // indirect
 	github.com/go-playground/universal-translator v0.18.0 // indirect
 	github.com/google/go-cmp v0.5.5 // indirect
+	github.com/google/uuid v1.3.0 // indirect
 	github.com/josharian/native v0.0.0-20200817173448-b6b71def0850 // indirect
 	github.com/leodido/go-urn v1.2.1 // indirect
 	github.com/mdlayher/genetlink v1.0.0 // indirect

+ 2 - 0
go.sum

@@ -70,6 +70,8 @@ github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
 github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU=
 github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
 github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
+github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
+github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
 github.com/gorilla/handlers v1.5.1 h1:9lRY6j8DEeeBT10CvO9hGW0gmky0BprnvDI5vfhUHH4=
 github.com/gorilla/handlers v1.5.1/go.mod h1:t8XrUpc4KVXb7HGyJ4/cEnwQiaxrX/hz1Zv/4g96P1Q=
 github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI=

+ 0 - 5
logic/networks.go

@@ -110,7 +110,6 @@ func NetworkNodesUpdatePullChanges(networkName string) error {
 			if err != nil {
 				return err
 			}
-			node.SetID()
 			database.Insert(node.ID, string(data), database.NODES_TABLE_NAME)
 		}
 	}
@@ -355,7 +354,6 @@ func UpdateNetworkLocalAddresses(networkName string) error {
 				fmt.Println("error in node  address assignment!")
 				return err
 			}
-			node.SetID()
 			database.Insert(node.ID, string(newNodeData), database.NODES_TABLE_NAME)
 		}
 	}
@@ -387,7 +385,6 @@ func RemoveNetworkNodeIPv6Addresses(networkName string) error {
 			if err != nil {
 				return err
 			}
-			node.SetID()
 			database.Insert(node.ID, string(data), database.NODES_TABLE_NAME)
 		}
 	}
@@ -424,7 +421,6 @@ func UpdateNetworkNodeAddresses(networkName string) error {
 			if err != nil {
 				return err
 			}
-			node.SetID()
 			database.Insert(node.ID, string(data), database.NODES_TABLE_NAME)
 		}
 	}
@@ -630,7 +626,6 @@ func networkNodesUpdateAction(networkName string, action string) error {
 			if err != nil {
 				return err
 			}
-			node.SetID()
 			database.Insert(node.ID, string(data), database.NODES_TABLE_NAME)
 		}
 	}

+ 13 - 2
logic/nodes.go

@@ -125,7 +125,6 @@ func UpdateNode(currentNode *models.Node, newNode *models.Node) error {
 	if err := ValidateNode(newNode, true); err != nil {
 		return err
 	}
-	newNode.SetID()
 	if newNode.ID == currentNode.ID {
 		newNode.SetLastModified()
 		if data, err := json.Marshal(newNode); err != nil {
@@ -285,7 +284,6 @@ func SetNodeDefaults(node *models.Node) {
 	node.SetRoamingDefault()
 	node.SetPullChangesDefault()
 	node.SetDefaultAction()
-	node.SetID()
 	node.SetIsServerDefault()
 	node.SetIsStaticDefault()
 	node.SetDefaultEgressGateway()
@@ -380,3 +378,16 @@ func GetNodeRelay(network string, relayedNodeAddr string) (models.Node, error) {
 	}
 	return relay, errors.New("could not find relay for node " + relayedNodeAddr)
 }
+
+// GetNodeByID - get node by uuid, should have been set by create
+func GetNodeByID(uuid string) (models.Node, error) {
+	var record, err = database.FetchRecord(database.NODES_TABLE_NAME, uuid)
+	if err != nil {
+		return models.Node{}, err
+	}
+	var node models.Node
+	if err = json.Unmarshal([]byte(record), &node); err != nil {
+		return models.Node{}, err
+	}
+	return node, nil
+}

+ 0 - 1
logic/relay.go

@@ -73,7 +73,6 @@ func SetRelayedNodes(yesOrno string, networkName string, addrs []string) error {
 					if err != nil {
 						return err
 					}
-					node.SetID()
 					database.Insert(node.ID, string(data), database.NODES_TABLE_NAME)
 				}
 			}

+ 0 - 2
logic/server.go

@@ -113,7 +113,6 @@ func ServerJoin(networkSettings *models.Network, serverID string) error {
 		node.Endpoint = node.LocalAddress
 	}
 
-	node.SetID()
 	if err = StorePrivKey(node.ID, privateKey); err != nil {
 		return err
 	}
@@ -215,7 +214,6 @@ func ServerLeave(mac string, network string) error {
 	if err != nil {
 		return err
 	}
-	serverNode.SetID()
 	return DeleteNode(&serverNode, true)
 }
 

+ 5 - 6
logic/util.go

@@ -9,6 +9,7 @@ import (
 	"strings"
 	"time"
 
+	"github.com/google/uuid"
 	"github.com/gravitl/netmaker/database"
 	"github.com/gravitl/netmaker/logger"
 	"github.com/gravitl/netmaker/models"
@@ -44,7 +45,6 @@ func SetNetworkServerPeers(node *models.Node) {
 // DeleteNode - deletes a node from database or moves into delete nodes table
 func DeleteNode(node *models.Node, exterminate bool) error {
 	var err error
-	node.SetID()
 	var key = node.ID
 	if !exterminate {
 		args := strings.Split(key, "###")
@@ -114,15 +114,14 @@ func CreateNode(node *models.Node) error {
 	if err != nil {
 		return err
 	}
-	key, err := GetRecordKey(node.MacAddress, node.Network)
-	if err != nil {
-		return err
-	}
+
+	node.ID = uuid.NewString()
+
 	nodebytes, err := json.Marshal(&node)
 	if err != nil {
 		return err
 	}
-	err = database.Insert(key, string(nodebytes), database.NODES_TABLE_NAME)
+	err = database.Insert(node.ID, string(nodebytes), database.NODES_TABLE_NAME)
 	if err != nil {
 		return err
 	}

+ 0 - 2
logic/wireguard.go

@@ -283,7 +283,6 @@ func setServerPeers(iface string, keepalive int32, peers []wgtypes.PeerConfig) e
 
 func setWGConfig(node *models.Node, peerupdate bool) error {
 
-	node.SetID()
 	peers, hasGateway, gateways, err := GetServerPeers(node)
 	if err != nil {
 		return err
@@ -305,7 +304,6 @@ func setWGConfig(node *models.Node, peerupdate bool) error {
 
 func setWGKeyConfig(node *models.Node) error {
 
-	node.SetID()
 	privatekey, err := wgtypes.GeneratePrivateKey()
 	if err != nil {
 		return err

+ 10 - 14
models/node.go

@@ -2,7 +2,6 @@ package models
 
 import (
 	"bytes"
-	"errors"
 	"math/rand"
 	"net"
 	"strings"
@@ -75,11 +74,17 @@ type Node struct {
 	MTU                 int32    `json:"mtu" bson:"mtu" yaml:"mtu"`
 }
 
+// NodesArray - used for node sorting
 type NodesArray []Node
 
-func (a NodesArray) Len() int           { return len(a) }
+// NodesArray.Len - gets length of node array
+func (a NodesArray) Len() int { return len(a) }
+
+// NodesArray.Less - gets returns lower rank of two node addresses
 func (a NodesArray) Less(i, j int) bool { return isLess(a[i].Address, a[j].Address) }
-func (a NodesArray) Swap(i, j int)      { a[i], a[j] = a[j], a[i] }
+
+// NodesArray.Swap - swaps two nodes in array
+func (a NodesArray) Swap(i, j int) { a[i], a[j] = a[j], a[i] }
 
 func isLess(ipA string, ipB string) bool {
 	ipNetA := net.ParseIP(ipA)
@@ -87,12 +92,14 @@ func isLess(ipA string, ipB string) bool {
 	return bytes.Compare(ipNetA, ipNetB) < 0
 }
 
+// Node.SetDefaultMTU - sets default MTU of a node
 func (node *Node) SetDefaultMTU() {
 	if node.MTU == 0 {
 		node.MTU = 1280
 	}
 }
 
+// Node.SetDefaulIsPending - sets ispending default
 func (node *Node) SetDefaulIsPending() {
 	if node.IsPending == "" {
 		node.IsPending = "no"
@@ -191,10 +198,6 @@ func (node *Node) SetLastPeerUpdate() {
 	node.LastPeerUpdate = time.Now().Unix()
 }
 
-func (node *Node) SetID() {
-	node.ID = node.MacAddress + "###" + node.Network
-}
-
 func (node *Node) SetExpirationDateTime() {
 	node.ExpirationDateTime = time.Now().Unix() + TEN_YEARS_IN_SECONDS
 }
@@ -379,10 +382,3 @@ func (node *Node) NameInNodeCharSet() bool {
 	}
 	return true
 }
-
-func (node *Node) GetID() (string, error) {
-	if node.MacAddress == "" || node.Network == "" {
-		return "", errors.New("unable to get record key")
-	}
-	return node.MacAddress + "###" + node.Network, nil
-}

+ 0 - 3
netclient/config/config.go

@@ -97,9 +97,6 @@ func (config *ClientConfig) ReadConfig() {
 			fmt.Println("no config or invalid")
 			fmt.Println(err)
 			log.Fatal(err)
-		} else {
-			config.Node.SetID()
-			//config = cfg
 		}
 	}
 }

+ 0 - 21
netclient/functions/common.go

@@ -102,26 +102,6 @@ func getPrivateAddrBackup() (string, error) {
 	return local, err
 }
 
-// DEPRECATED
-// func needInterfaceUpdate(ctx context.Context, mac string, network string, iface string) (bool, string, error) {
-// 	var header metadata.MD
-// 	req := &nodepb.Object{
-// 		Data: mac + "###" + network,
-// 		Type: nodepb.STRING_TYPE,
-// 	}
-// 	readres, err := wcclient.ReadNode(ctx, req, grpc.Header(&header))
-// 	if err != nil {
-// 		return false, "", err
-// 	}
-// 	var resNode models.Node
-// 	if err := json.Unmarshal([]byte(readres.Data), &resNode); err != nil {
-// 		return false, iface, err
-// 	}
-// 	oldiface := resNode.Interface
-
-// 	return iface != oldiface, oldiface, err
-// }
-
 // GetNode - gets node locally
 func GetNode(network string) models.Node {
 
@@ -184,7 +164,6 @@ func LeaveNetwork(network string) error {
 		if err != nil {
 			log.Printf("Failed to authenticate: %v", err)
 		} else { // handle client side
-			node.SetID()
 			var header metadata.MD
 			_, err = wcclient.DeleteNode(
 				ctx,