initialize.go 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. //go:build ee
  2. // +build ee
  3. package ee
  4. import (
  5. controller "github.com/gravitl/netmaker/controllers"
  6. "github.com/gravitl/netmaker/ee/ee_controllers"
  7. eelogic "github.com/gravitl/netmaker/ee/logic"
  8. "github.com/gravitl/netmaker/logic"
  9. "github.com/gravitl/netmaker/models"
  10. "github.com/gravitl/netmaker/servercfg"
  11. "golang.org/x/exp/slog"
  12. )
  13. // InitEE - Initialize EE Logic
  14. func InitEE() {
  15. setIsEnterprise()
  16. servercfg.Is_EE = true
  17. models.SetLogo(retrieveEELogo())
  18. controller.HttpMiddlewares = append(
  19. controller.HttpMiddlewares,
  20. ee_controllers.OnlyServerAPIWhenUnlicensedMiddleware,
  21. )
  22. controller.HttpHandlers = append(
  23. controller.HttpHandlers,
  24. ee_controllers.MetricHandlers,
  25. ee_controllers.NetworkUsersHandlers,
  26. ee_controllers.UserGroupsHandlers,
  27. ee_controllers.RelayHandlers,
  28. )
  29. logic.EnterpriseCheckFuncs = append(logic.EnterpriseCheckFuncs, func() {
  30. // == License Handling ==
  31. if err := ValidateLicense(); err != nil {
  32. slog.Error(err.Error())
  33. return
  34. }
  35. slog.Info("proceeding with Paid Tier license")
  36. logic.SetFreeTierForTelemetry(false)
  37. // == End License Handling ==
  38. AddLicenseHooks()
  39. resetFailover()
  40. })
  41. logic.EnterpriseFailoverFunc = eelogic.SetFailover
  42. logic.EnterpriseResetFailoverFunc = eelogic.ResetFailover
  43. logic.EnterpriseResetAllPeersFailovers = eelogic.WipeAffectedFailoversOnly
  44. logic.DenyClientNodeAccess = eelogic.DenyClientNode
  45. logic.IsClientNodeAllowed = eelogic.IsClientNodeAllowed
  46. logic.AllowClientNodeAccess = eelogic.RemoveDeniedNodeFromClient
  47. }
  48. func resetFailover() {
  49. nets, err := logic.GetNetworks()
  50. if err == nil {
  51. for _, net := range nets {
  52. err = eelogic.ResetFailover(net.NetID)
  53. if err != nil {
  54. slog.Error("failed to reset failover", "network", net.NetID, "error", err.Error())
  55. }
  56. }
  57. }
  58. }
  59. func retrieveEELogo() string {
  60. return `
  61. __ __ ______ ______ __ __ ______ __ __ ______ ______
  62. /\ "-.\ \ /\ ___\ /\__ _\ /\ "-./ \ /\ __ \ /\ \/ / /\ ___\ /\ == \
  63. \ \ \-. \ \ \ __\ \/_/\ \/ \ \ \-./\ \ \ \ __ \ \ \ _"-. \ \ __\ \ \ __<
  64. \ \_\\"\_\ \ \_____\ \ \_\ \ \_\ \ \_\ \ \_\ \_\ \ \_\ \_\ \ \_____\ \ \_\ \_\
  65. \/_/ \/_/ \/_____/ \/_/ \/_/ \/_/ \/_/\/_/ \/_/\/_/ \/_____/ \/_/ /_/
  66. ___ ___ ____
  67. ____ ____ ____ / _ \ / _ \ / __ \ ____ ____ ____
  68. /___/ /___/ /___/ / ___/ / , _// /_/ / /___/ /___/ /___/
  69. /___/ /___/ /___/ /_/ /_/|_| \____/ /___/ /___/ /___/
  70. `
  71. }