mirror of
				https://github.com/gravitl/netmaker.git
				synced 2025-10-31 04:06:37 +08:00 
			
		
		
		
	 230e062c84
			
		
	
	230e062c84
	
	
	
		
			
			* set free tier limits through config * add host limit to config * check for host limit on free tier * fix license validation, replace node limit with hosts * add hosts to telemetry data * debug init * validate license every 1hr * hook manager, api to fetch server usage * hook manager, server usage api * encode json server usage api * update ngork url * update license validation endpoint * avoid setting limits on eer * adding hotfix * correct users limits env var * add comments to exported funcs --------- Co-authored-by: afeiszli <alex.feiszli@gmail.com>
		
			
				
	
	
		
			97 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			97 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package logic
 | |
| 
 | |
| import (
 | |
| 	"encoding/json"
 | |
| 
 | |
| 	"github.com/gravitl/netmaker/database"
 | |
| 	"github.com/gravitl/netmaker/servercfg"
 | |
| )
 | |
| 
 | |
| var (
 | |
| 	// Networks_Limit - dummy var for community
 | |
| 	Networks_Limit = 1000000000
 | |
| 	// Users_Limit - dummy var for community
 | |
| 	Users_Limit = 1000000000
 | |
| 	// Clients_Limit - dummy var for community
 | |
| 	Clients_Limit = 1000000000
 | |
| 	// Hosts_Limit - dummy var for community
 | |
| 	Hosts_Limit = 1000000000
 | |
| 	// Free_Tier - specifies if free tier
 | |
| 	Free_Tier = false
 | |
| )
 | |
| 
 | |
| type serverData struct {
 | |
| 	PrivateKey string `json:"privatekey,omitempty" bson:"privatekey,omitempty"`
 | |
| }
 | |
| 
 | |
| // StorePrivKey - stores server client WireGuard privatekey if needed
 | |
| func StorePrivKey(serverID string, privateKey string) error {
 | |
| 	var newData = serverData{}
 | |
| 	var err error
 | |
| 	var data []byte
 | |
| 	newData.PrivateKey = privateKey
 | |
| 	data, err = json.Marshal(&newData)
 | |
| 	if err != nil {
 | |
| 		return err
 | |
| 	}
 | |
| 	return database.Insert(serverID, string(data), database.SERVERCONF_TABLE_NAME)
 | |
| }
 | |
| 
 | |
| // FetchPrivKey - fetches private key
 | |
| func FetchPrivKey(serverID string) (string, error) {
 | |
| 	var dbData string
 | |
| 	var err error
 | |
| 	var fetchedData = serverData{}
 | |
| 	dbData, err = database.FetchRecord(database.SERVERCONF_TABLE_NAME, serverID)
 | |
| 	if err != nil {
 | |
| 		return "", err
 | |
| 	}
 | |
| 	err = json.Unmarshal([]byte(dbData), &fetchedData)
 | |
| 	if err != nil {
 | |
| 		return "", err
 | |
| 	}
 | |
| 	return fetchedData.PrivateKey, nil
 | |
| }
 | |
| 
 | |
| // RemovePrivKey - removes a private key
 | |
| func RemovePrivKey(serverID string) error {
 | |
| 	return database.DeleteRecord(database.SERVERCONF_TABLE_NAME, serverID)
 | |
| }
 | |
| 
 | |
| // FetchJWTSecret - fetches jwt secret from db
 | |
| func FetchJWTSecret() (string, error) {
 | |
| 	var dbData string
 | |
| 	var err error
 | |
| 	var fetchedData = serverData{}
 | |
| 	dbData, err = database.FetchRecord(database.SERVERCONF_TABLE_NAME, "nm-jwt-secret")
 | |
| 	if err != nil {
 | |
| 		return "", err
 | |
| 	}
 | |
| 	err = json.Unmarshal([]byte(dbData), &fetchedData)
 | |
| 	if err != nil {
 | |
| 		return "", err
 | |
| 	}
 | |
| 	return fetchedData.PrivateKey, nil
 | |
| }
 | |
| 
 | |
| // StoreJWTSecret - stores server jwt secret if needed
 | |
| func StoreJWTSecret(privateKey string) error {
 | |
| 	var newData = serverData{}
 | |
| 	var err error
 | |
| 	var data []byte
 | |
| 	newData.PrivateKey = privateKey
 | |
| 	data, err = json.Marshal(&newData)
 | |
| 	if err != nil {
 | |
| 		return err
 | |
| 	}
 | |
| 	return database.Insert("nm-jwt-secret", string(data), database.SERVERCONF_TABLE_NAME)
 | |
| }
 | |
| 
 | |
| func SetFreeTierLimits() {
 | |
| 	Free_Tier = true
 | |
| 	Users_Limit = servercfg.GetUserLimit()
 | |
| 	Clients_Limit = servercfg.GetClientLimit()
 | |
| 	Networks_Limit = servercfg.GetNetworkLimit()
 | |
| 	Hosts_Limit = servercfg.GetHostLimit()
 | |
| }
 |