mirror of
https://github.com/hanzoai/team.git
synced 2026-09-30 01:57:35 +00:00
The server module named github.com/hanzoai/team/server/v8 — a path that resolves to the retired workspace's repository, not this one — while server/public still published github.com/mattermost/mattermost/server/public. Both are github.com/hanzoteam/server/... now, which is where this code actually lives. That second half is what made the binary unbootable. Upstream's public path stayed claimed by upstream, mattermost-plugin-ai imported it, and the build linked public/model twice; public/plugin's gob.Register then ran twice under one name and panicked at init, before main. Reverting the rename traded the brand for a working binary. Rebranding the plugin alongside it needs no such trade: the agents fork is github.com/hanzoteam/agents/v2 against our public module, so no module named mattermost/mattermost is in the graph at all. Measured: `go list -deps ./cmd/mattermost` names exactly one public/model, and it is ours.
109 lines
3.8 KiB
Go
109 lines
3.8 KiB
Go
package pluginapi
|
|
|
|
import (
|
|
"github.com/hanzoteam/server/server/public/model"
|
|
)
|
|
|
|
// IsEnterpriseLicensedOrDevelopment returns true when the server is licensed with any Hanzo Team
|
|
// Enterprise License, or has `EnableDeveloper` and `EnableTesting` configuration settings
|
|
// enabled signaling a non-production, developer mode.
|
|
func IsEnterpriseLicensedOrDevelopment(config *model.Config, license *model.License) bool {
|
|
if license != nil {
|
|
return true
|
|
}
|
|
|
|
return IsConfiguredForDevelopment(config)
|
|
}
|
|
|
|
// isValidSkuShortName returns whether the SKU short name is one of the known strings;
|
|
// namely: E10 or professional, or E20 or enterprise
|
|
func isValidSkuShortName(license *model.License) bool {
|
|
if license == nil {
|
|
return false
|
|
}
|
|
|
|
switch license.SkuShortName {
|
|
case model.LicenseShortSkuE10, model.LicenseShortSkuE20, model.LicenseShortSkuProfessional, model.LicenseShortSkuEnterprise, model.LicenseShortSkuEnterpriseAdvanced:
|
|
return true
|
|
default:
|
|
return false
|
|
}
|
|
}
|
|
|
|
// IsE10LicensedOrDevelopment returns true when the server is at least licensed with a legacy Hanzo Team
|
|
// Enterprise E10 License or a Hanzo Team License, or has `EnableDeveloper` and
|
|
// `EnableTesting` configuration settings enabled, signaling a non-production, developer mode.
|
|
func IsE10LicensedOrDevelopment(config *model.Config, license *model.License) bool {
|
|
if model.MinimumProfessionalLicense(license) {
|
|
return true
|
|
}
|
|
|
|
if !isValidSkuShortName(license) {
|
|
// As a fallback for licenses whose SKU short name is unknown, make a best effort to try
|
|
// and use the presence of a known E10/Professional feature as a check to determine licensing.
|
|
if license != nil &&
|
|
license.Features != nil &&
|
|
license.Features.LDAP != nil &&
|
|
*license.Features.LDAP {
|
|
return true
|
|
}
|
|
}
|
|
|
|
return IsConfiguredForDevelopment(config)
|
|
}
|
|
|
|
// IsE20LicensedOrDevelopment returns true when the server is licensed with a legacy Hanzo Team
|
|
// Enterprise E20 License or a Hanzo Team License, or has `EnableDeveloper` and
|
|
// `EnableTesting` configuration settings enabled, signaling a non-production, developer mode.
|
|
func IsE20LicensedOrDevelopment(config *model.Config, license *model.License) bool {
|
|
if model.MinimumEnterpriseLicense(license) {
|
|
return true
|
|
}
|
|
|
|
if !isValidSkuShortName(license) {
|
|
// As a fallback for licenses whose SKU short name is unknown, make a best effort to try
|
|
// and use the presence of a known E20/Enterprise feature as a check to determine licensing.
|
|
if license != nil &&
|
|
license.Features != nil &&
|
|
license.Features.FutureFeatures != nil &&
|
|
*license.Features.FutureFeatures {
|
|
return true
|
|
}
|
|
}
|
|
|
|
return IsConfiguredForDevelopment(config)
|
|
}
|
|
|
|
// IsEnterpriseAdvancedLicensedOrDevelopment returns true when the server is licensed with a Hanzo Team
|
|
// Enterprise Advanced License, or has `EnableDeveloper` and `EnableTesting` configuration settings
|
|
func IsEnterpriseAdvancedLicensedOrDevelopment(config *model.Config, license *model.License) bool {
|
|
if license != nil && license.SkuShortName == model.LicenseShortSkuEnterpriseAdvanced {
|
|
return true
|
|
}
|
|
|
|
return IsConfiguredForDevelopment(config)
|
|
}
|
|
|
|
// IsConfiguredForDevelopment returns true when the server has `EnableDeveloper` and `EnableTesting`
|
|
// configuration settings enabled, signaling a non-production, developer mode.
|
|
func IsConfiguredForDevelopment(config *model.Config) bool {
|
|
if config != nil &&
|
|
config.ServiceSettings.EnableTesting != nil &&
|
|
*config.ServiceSettings.EnableTesting &&
|
|
config.ServiceSettings.EnableDeveloper != nil &&
|
|
*config.ServiceSettings.EnableDeveloper {
|
|
return true
|
|
}
|
|
|
|
return false
|
|
}
|
|
|
|
// IsCloud returns true when the server is on cloud, and false otherwise.
|
|
func IsCloud(license *model.License) bool {
|
|
if license == nil || license.Features == nil || license.Features.Cloud == nil {
|
|
return false
|
|
}
|
|
|
|
return *license.Features.Cloud
|
|
}
|