| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 | package eeimport "fmt"const (	api_endpoint               = "https://api.controller.netmaker.io/api/v1/license/validate"	license_cache_key          = "license_response_cache"	license_validation_err_msg = "invalid license"	server_id_key              = "nm-server-id")var errValidation = fmt.Errorf(license_validation_err_msg)// Limits - limits to be referenced throughout servervar Limits = GlobalLimits{	Servers:  0,	Users:    0,	Nodes:    0,	Clients:  0,	Networks: 0,	FreeTier: false,}// GlobalLimits - struct for holding global limits on this netmaker server in memorytype GlobalLimits struct {	Servers  int	Users    int	Nodes    int	Clients  int	FreeTier bool	Networks int}// LicenseKey - the license key struct representation with associated datatype LicenseKey struct {	LicenseValue   string `json:"license_value"` // actual (public) key and the unique value for the key	Expiration     int64  `json:"expiration"`	LimitServers   int    `json:"limit_servers"`	LimitUsers     int    `json:"limit_users"`	LimitNodes     int    `json:"limit_nodes"`	LimitClients   int    `json:"limit_clients"`	Metadata       string `json:"metadata"`	SubscriptionID string `json:"subscription_id"` // for a paid subscription (non-free-tier license)	FreeTier       string `json:"free_tier"`       // yes if free tier	IsActive       string `json:"is_active"`       // yes if active}// ValidatedLicense - the validated license structtype ValidatedLicense struct {	LicenseValue     string `json:"license_value" binding:"required"`     // license that validation is being requested for	EncryptedLicense string `json:"encrypted_license" binding:"required"` // to be decrypted by Netmaker using Netmaker server's private key}// LicenseSecret - the encrypted struct for sending user-idtype LicenseSecret struct {	UserID string        `json:"user_id" binding:"required"` // UUID for user foreign key to User table	Limits LicenseLimits `json:"limits" binding:"required"`}// LicenseLimits - struct license limitstype LicenseLimits struct {	Servers int `json:"servers" binding:"required"`	Users   int `json:"users" binding:"required"`	Nodes   int `json:"nodes" binding:"required"`	Clients int `json:"clients" binding:"required"`}// LicenseLimits.SetDefaults - sets the default values for limitsfunc (l *LicenseLimits) SetDefaults() {	l.Clients = 0	l.Servers = 1	l.Nodes = 0	l.Users = 1}// ValidateLicenseRequest - used for request to validate license endpointtype ValidateLicenseRequest struct {	NmServerPubKey string `json:"nm_server_pub_key" binding:"required"` // Netmaker server public key used to send data back to Netmaker for the Netmaker server to decrypt (eg output from validating license)	EncryptedPart  string `json:"secret" binding:"required"`}type licenseResponseCache struct {	Body []byte `json:"body" binding:"required"`}
 |