diff --git a/netclient/functions/pull.go b/netclient/functions/pull.go index 25a93640..f919dc3d 100644 --- a/netclient/functions/pull.go +++ b/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 }