Browse Source

gen new key and re-register on pull

Matthew R. Kasun 3 years ago
parent
commit
1ae9240d86
1 changed files with 16 additions and 0 deletions
  1. 16 0
      netclient/functions/pull.go

+ 16 - 0
netclient/functions/pull.go

@@ -1,6 +1,8 @@
 package functions
 
 import (
+	"crypto/ed25519"
+	"crypto/rand"
 	"encoding/json"
 	"errors"
 	"fmt"
@@ -12,9 +14,11 @@ import (
 	"github.com/gravitl/netmaker/logger"
 	"github.com/gravitl/netmaker/models"
 	"github.com/gravitl/netmaker/netclient/config"
+	"github.com/gravitl/netmaker/netclient/daemon"
 	"github.com/gravitl/netmaker/netclient/local"
 	"github.com/gravitl/netmaker/netclient/ncutils"
 	"github.com/gravitl/netmaker/netclient/wireguard"
+	"github.com/gravitl/netmaker/tls"
 	//homedir "github.com/mitchellh/go-homedir"
 )
 
@@ -78,6 +82,18 @@ func Pull(network string, manual bool) (*models.Node, error) {
 	if bkupErr != nil {
 		logger.Log(0, "unable to update backup file")
 	}
+	//generate new private key and re-register with server
+	_, newKey, err := ed25519.GenerateKey(rand.Reader)
+	if err != nil {
+		return &resNode, err
+	}
+	if err := tls.SaveKey(ncutils.GetNetclientPath(), "/client.key", newKey); err != nil {
+		return &resNode, err
+	}
+	if err = RegisterWithServer(&newKey, cfg); err != nil {
+		return &resNode, err
+	}
+	daemon.Restart()
 
 	return &resNode, err
 }