mirror of
https://github.com/gravitl/netmaker.git
synced 2025-09-06 13:14:24 +08:00
* Add limited http handlers functionality to rest handler * Export ee.errValidation (ee.ErrValidation) * Export a fatal error handled by the hook manager * Export a new status variable for unlicensed server * Mark server as unlicensed when ee checks fail * Handle license validation failures with a (re)boot in a limited state * Revert "Export a fatal error handled by the hook manager" This reverts commit 069c21974a8d36e889c73ad78023448d787d62a5. * Revert "Export ee.errValidation (ee.ErrValidation)" This reverts commit 59dbab8c79773ca5d879f28cbaf53f3dd4297b9b. * Revert "Add limited http handlers functionality to rest handler" This reverts commit e2f1f28facaca54713db76a588839cd2733cf673. * Revert "Handle license validation failures with a (re)boot in a limited state" This reverts commit 58cfbbaf522a1345aac1fa67964ebff0a6d60cd8. * Revert "Mark server as unlicensed when ee checks fail" This reverts commit 77c6dbdd3c9cfa6e7d6becedef6251e8617ae367. * Handle license validation failures with a middleware * Forbid responses if unlicensed ee and not in status api * Remove unused func
78 lines
2.7 KiB
Go
78 lines
2.7 KiB
Go
//go:build ee
|
|
// +build ee
|
|
|
|
package ee
|
|
|
|
import (
|
|
controller "github.com/gravitl/netmaker/controllers"
|
|
"github.com/gravitl/netmaker/ee/ee_controllers"
|
|
eelogic "github.com/gravitl/netmaker/ee/logic"
|
|
"github.com/gravitl/netmaker/logic"
|
|
"github.com/gravitl/netmaker/models"
|
|
"github.com/gravitl/netmaker/servercfg"
|
|
"golang.org/x/exp/slog"
|
|
)
|
|
|
|
// InitEE - Initialize EE Logic
|
|
func InitEE() {
|
|
setIsEnterprise()
|
|
servercfg.Is_EE = true
|
|
models.SetLogo(retrieveEELogo())
|
|
controller.HttpMiddlewares = append(
|
|
controller.HttpMiddlewares,
|
|
ee_controllers.OnlyServerAPIWhenUnlicensedMiddleware,
|
|
)
|
|
controller.HttpHandlers = append(
|
|
controller.HttpHandlers,
|
|
ee_controllers.MetricHandlers,
|
|
ee_controllers.NetworkUsersHandlers,
|
|
ee_controllers.UserGroupsHandlers,
|
|
ee_controllers.RelayHandlers,
|
|
)
|
|
logic.EnterpriseCheckFuncs = append(logic.EnterpriseCheckFuncs, func() {
|
|
// == License Handling ==
|
|
if err := ValidateLicense(); err != nil {
|
|
slog.Error(err.Error())
|
|
return
|
|
}
|
|
slog.Info("proceeding with Paid Tier license")
|
|
logic.SetFreeTierForTelemetry(false)
|
|
// == End License Handling ==
|
|
AddLicenseHooks()
|
|
resetFailover()
|
|
})
|
|
logic.EnterpriseFailoverFunc = eelogic.SetFailover
|
|
logic.EnterpriseResetFailoverFunc = eelogic.ResetFailover
|
|
logic.EnterpriseResetAllPeersFailovers = eelogic.WipeAffectedFailoversOnly
|
|
logic.DenyClientNodeAccess = eelogic.DenyClientNode
|
|
logic.IsClientNodeAllowed = eelogic.IsClientNodeAllowed
|
|
logic.AllowClientNodeAccess = eelogic.RemoveDeniedNodeFromClient
|
|
}
|
|
|
|
func resetFailover() {
|
|
nets, err := logic.GetNetworks()
|
|
if err == nil {
|
|
for _, net := range nets {
|
|
err = eelogic.ResetFailover(net.NetID)
|
|
if err != nil {
|
|
slog.Error("failed to reset failover", "network", net.NetID, "error", err.Error())
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
func retrieveEELogo() string {
|
|
return `
|
|
__ __ ______ ______ __ __ ______ __ __ ______ ______
|
|
/\ "-.\ \ /\ ___\ /\__ _\ /\ "-./ \ /\ __ \ /\ \/ / /\ ___\ /\ == \
|
|
\ \ \-. \ \ \ __\ \/_/\ \/ \ \ \-./\ \ \ \ __ \ \ \ _"-. \ \ __\ \ \ __<
|
|
\ \_\\"\_\ \ \_____\ \ \_\ \ \_\ \ \_\ \ \_\ \_\ \ \_\ \_\ \ \_____\ \ \_\ \_\
|
|
\/_/ \/_/ \/_____/ \/_/ \/_/ \/_/ \/_/\/_/ \/_/\/_/ \/_____/ \/_/ /_/
|
|
|
|
___ ___ ____
|
|
____ ____ ____ / _ \ / _ \ / __ \ ____ ____ ____
|
|
/___/ /___/ /___/ / ___/ / , _// /_/ / /___/ /___/ /___/
|
|
/___/ /___/ /___/ /_/ /_/|_| \____/ /___/ /___/ /___/
|
|
|
|
`
|
|
}
|