types.go 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. //go:build ee
  2. // +build ee
  3. package pro
  4. import (
  5. "errors"
  6. "github.com/gravitl/netmaker/models"
  7. )
  8. const (
  9. license_cache_key = "license_response_cache"
  10. license_validation_err_msg = "invalid license"
  11. server_id_key = "nm-server-id"
  12. )
  13. var errValidation = errors.New(license_validation_err_msg)
  14. // LicenseKey - the license key struct representation with associated data
  15. type LicenseKey struct {
  16. LicenseValue string `json:"license_value"` // actual (public) key and the unique value for the key
  17. Expiration int64 `json:"expiration" swaggertype:"primitive,integer" format:"int64"`
  18. UsageServers int `json:"limit_servers"`
  19. UsageUsers int `json:"limit_users"`
  20. UsageClients int `json:"limit_clients"`
  21. UsageHosts int `json:"limit_hosts"`
  22. UsageNetworks int `json:"limit_networks"`
  23. UsageIngresses int `json:"limit_ingresses"`
  24. UsageEgresses int `json:"limit_egresses"`
  25. Metadata string `json:"metadata"`
  26. IsActive bool `json:"is_active"` // yes if active
  27. }
  28. // ValidatedLicense - the validated license struct
  29. type ValidatedLicense struct {
  30. LicenseValue string `json:"license_value" binding:"required"` // license that validation is being requested for
  31. EncryptedLicense string `json:"encrypted_license" binding:"required"` // to be decrypted by Netmaker using Netmaker server's private key
  32. FeatureFlags models.FeatureFlags `json:"feature_flags" binding:"required"`
  33. }
  34. // LicenseSecret - the encrypted struct for sending user-id
  35. type LicenseSecret struct {
  36. AssociatedID string `json:"associated_id" binding:"required"` // UUID for user foreign key to User table
  37. Usage models.Usage `json:"limits" binding:"required"`
  38. }
  39. // ValidateLicenseRequest - used for request to validate license endpoint
  40. type ValidateLicenseRequest struct {
  41. LicenseKey string `json:"license_key" binding:"required"`
  42. 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)
  43. EncryptedPart string `json:"secret" binding:"required"`
  44. NmBaseDomain string `json:"nm_base_domain"`
  45. }
  46. type licenseResponseCache struct {
  47. Body []byte `json:"body" binding:"required"`
  48. }