| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 | package authimport (	"encoding/json"	"fmt"	"github.com/gravitl/netmaker/models"	"github.com/gravitl/netmaker/netclient/config"	//    "os"	"context"	"io/ioutil"	nodepb "github.com/gravitl/netmaker/grpc"	"google.golang.org/grpc/codes"	"google.golang.org/grpc/metadata"	"google.golang.org/grpc/status")// CreateJWT func will used to create the JWT while signing in and signing outfunc SetJWT(client nodepb.NodeServiceClient, network string) (context.Context, error) {	//home, err := os.UserHomeDir()	home := "/etc/netclient"	tokentext, err := ioutil.ReadFile(home + "/nettoken-" + network)	if err != nil {		err = AutoLogin(client, network)		if err != nil {			return nil, status.Errorf(codes.Unauthenticated, fmt.Sprintf("Something went wrong with Auto Login: %v", err))		}		tokentext, err = ioutil.ReadFile(home + "/nettoken-" + network)		if err != nil {			return nil, status.Errorf(codes.Unauthenticated, fmt.Sprintf("Something went wrong: %v", err))		}	}	token := string(tokentext)	// Anything linked to this variable will transmit request headers.	md := metadata.New(map[string]string{"authorization": token})	ctx := context.Background()	ctx = metadata.NewOutgoingContext(ctx, md)	return ctx, nil}func AutoLogin(client nodepb.NodeServiceClient, network string) error {	//home, err := os.UserHomeDir()	home := "/etc/netclient"	//nodecfg := config.Config.Node	cfg, err := config.ReadConfig(network)	if err != nil {		return err	}	pass, err := RetrieveSecret(network)	if err != nil {		return err	}	node := models.Node{		Password:   pass,		MacAddress: cfg.Node.MacAddress,		Network:    network,	}	data, err := json.Marshal(&node)	if err != nil {		return nil	}	login := &nodepb.Object{		Data: string(data),	}	// RPC call	res, err := client.Login(context.TODO(), login)	if err != nil {		return err	}	tokenstring := []byte(res.Data)	err = ioutil.WriteFile(home+"/nettoken-"+network, tokenstring, 0644)	if err != nil {		return err	}	return err}func StoreSecret(key string, network string) error {	d1 := []byte(key)	err := ioutil.WriteFile("/etc/netclient/secret-"+network, d1, 0644)	return err}func RetrieveSecret(network string) (string, error) {	dat, err := ioutil.ReadFile("/etc/netclient/secret-" + network)	return string(dat), err}type Configuration struct {	MacAddress string	Password   string}
 |