initialize.go 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  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/logger"
  9. "github.com/gravitl/netmaker/logic"
  10. "github.com/gravitl/netmaker/models"
  11. "github.com/gravitl/netmaker/servercfg"
  12. )
  13. // InitEE - Initialize EE Logic
  14. func InitEE() {
  15. setIsEnterprise()
  16. models.SetLogo(retrieveEELogo())
  17. controller.HttpHandlers = append(
  18. controller.HttpHandlers,
  19. ee_controllers.MetricHandlers,
  20. ee_controllers.NetworkUsersHandlers,
  21. ee_controllers.UserGroupsHandlers,
  22. ee_controllers.RelayHandlers,
  23. )
  24. logic.EnterpriseCheckFuncs = append(logic.EnterpriseCheckFuncs, func() {
  25. // == License Handling ==
  26. ValidateLicense()
  27. if Limits.FreeTier {
  28. logger.Log(0, "proceeding with Free Tier license")
  29. logic.SetFreeTierForTelemetry(true)
  30. } else {
  31. logger.Log(0, "proceeding with Paid Tier license")
  32. logic.SetFreeTierForTelemetry(false)
  33. }
  34. // == End License Handling ==
  35. AddLicenseHooks()
  36. resetFailover()
  37. })
  38. logic.EnterpriseFailoverFunc = eelogic.SetFailover
  39. logic.EnterpriseResetFailoverFunc = eelogic.ResetFailover
  40. logic.EnterpriseResetAllPeersFailovers = eelogic.WipeAffectedFailoversOnly
  41. logic.DenyClientNodeAccess = eelogic.DenyClientNode
  42. logic.IsClientNodeAllowed = eelogic.IsClientNodeAllowed
  43. logic.AllowClientNodeAccess = eelogic.RemoveDeniedNodeFromClient
  44. }
  45. func setControllerLimits() {
  46. logic.Node_Limit = Limits.Nodes
  47. logic.Users_Limit = Limits.Users
  48. logic.Clients_Limit = Limits.Clients
  49. logic.Free_Tier = Limits.FreeTier
  50. servercfg.Is_EE = true
  51. if logic.Free_Tier {
  52. logic.Networks_Limit = 3
  53. }
  54. }
  55. func resetFailover() {
  56. nets, err := logic.GetNetworks()
  57. if err == nil {
  58. for _, net := range nets {
  59. err = eelogic.ResetFailover(net.NetID)
  60. if err != nil {
  61. logger.Log(0, "failed to reset failover on network", net.NetID, ":", err.Error())
  62. }
  63. }
  64. }
  65. }
  66. func retrieveEELogo() string {
  67. return `
  68. __ __ ______ ______ __ __ ______ __ __ ______ ______
  69. /\ "-.\ \ /\ ___\ /\__ _\ /\ "-./ \ /\ __ \ /\ \/ / /\ ___\ /\ == \
  70. \ \ \-. \ \ \ __\ \/_/\ \/ \ \ \-./\ \ \ \ __ \ \ \ _"-. \ \ __\ \ \ __<
  71. \ \_\\"\_\ \ \_____\ \ \_\ \ \_\ \ \_\ \ \_\ \_\ \ \_\ \_\ \ \_____\ \ \_\ \_\
  72. \/_/ \/_/ \/_____/ \/_/ \/_/ \/_/ \/_/\/_/ \/_/\/_/ \/_____/ \/_/ /_/
  73. ___ ___ ____
  74. ____ ____ ____ / _ \ / _ \ / __ \ ____ ____ ____
  75. /___/ /___/ /___/ / ___/ / , _// /_/ / /___/ /___/ /___/
  76. /___/ /___/ /___/ /_/ /_/|_| \____/ /___/ /___/ /___/
  77. `
  78. }