123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- package ee
- import "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 server
- var 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 memory
- type GlobalLimits struct {
- Servers int
- Users int
- Nodes int
- Clients int
- FreeTier bool
- Networks int
- }
- // LicenseKey - the license key struct representation with associated data
- type 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 struct
- type 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-id
- type 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 limits
- type 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 limits
- func (l *LicenseLimits) SetDefaults() {
- l.Clients = 0
- l.Servers = 1
- l.Nodes = 0
- l.Users = 1
- }
- // ValidateLicenseRequest - used for request to validate license endpoint
- type 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"`
- }
|