| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 | package authimport (	"os"	"github.com/gravitl/netmaker/netclient/ncutils"	//    "os")// SetJWT func will used to create the JWT while signing in and signing out//func SetJWT(client nodepb.NodeServiceClient, network string) (context.Context, error) {//	home := ncutils.GetNetclientPathSpecific()//	tokentext, err := os.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 = ncutils.GetFileWithRetry(home+"nettoken-"+network, 1)//		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//}// AutoLogin - auto logins whenever client needs to request from server//func AutoLogin(client nodepb.NodeServiceClient, network string) error {//	home := ncutils.GetNetclientPathSpecific()//	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,//		ID:         cfg.Node.ID,//		Network:    network,//	}//	data, err := json.Marshal(&node)//	if err != nil {//		return nil//	}////	login := &nodepb.Object{//		Data: string(data),//		Type: nodepb.NODE_TYPE,//	}//	// RPC call//	res, err := client.Login(context.TODO(), login)//	if err != nil {//		return err//	}//	tokenstring := []byte(res.Data)//	err = os.WriteFile(home+"nettoken-"+network, tokenstring, 0600)//	if err != nil {//		return err//	}//	return err//}// StoreSecret - stores auth secret locallyfunc StoreSecret(key string, network string) error {	d1 := []byte(key)	return os.WriteFile(ncutils.GetNetclientPathSpecific()+"secret-"+network, d1, 0600)}// RetrieveSecret - fetches secret locallyfunc RetrieveSecret(network string) (string, error) {	dat, err := ncutils.GetFileWithRetry(ncutils.GetNetclientPathSpecific()+"secret-"+network, 3)	return string(dat), err}// StoreTrafficKey - stores traffic keyfunc StoreTrafficKey(key *[32]byte, network string) error {	var data, err = ncutils.ConvertKeyToBytes(key)	if err != nil {		return err	}	return os.WriteFile(ncutils.GetNetclientPathSpecific()+"traffic-"+network, data, 0600)}// RetrieveTrafficKey - reads traffic file locallyfunc RetrieveTrafficKey(network string) (*[32]byte, error) {	data, err := ncutils.GetFileWithRetry(ncutils.GetNetclientPathSpecific()+"traffic-"+network, 2)	if err != nil {		return nil, err	}	return ncutils.ConvertBytesToKey(data)}// Configuraion - struct for mac and passtype Configuration struct {	MacAddress string	Password   string}
 |