initialize.go 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. //go:build ee
  2. // +build ee
  3. package pro
  4. import (
  5. "time"
  6. controller "github.com/gravitl/netmaker/controllers"
  7. "github.com/gravitl/netmaker/logger"
  8. "github.com/gravitl/netmaker/logic"
  9. "github.com/gravitl/netmaker/models"
  10. "github.com/gravitl/netmaker/mq"
  11. proControllers "github.com/gravitl/netmaker/pro/controllers"
  12. proLogic "github.com/gravitl/netmaker/pro/logic"
  13. "github.com/gravitl/netmaker/servercfg"
  14. "golang.org/x/exp/slog"
  15. )
  16. // InitPro - Initialize Pro Logic
  17. func InitPro() {
  18. servercfg.IsPro = true
  19. models.SetLogo(retrieveProLogo())
  20. controller.HttpMiddlewares = append(
  21. controller.HttpMiddlewares,
  22. proControllers.OnlyServerAPIWhenUnlicensedMiddleware,
  23. )
  24. controller.HttpHandlers = append(
  25. controller.HttpHandlers,
  26. proControllers.MetricHandlers,
  27. proControllers.RelayHandlers,
  28. proControllers.UserHandlers,
  29. proControllers.FailOverHandlers,
  30. )
  31. logic.EnterpriseCheckFuncs = append(logic.EnterpriseCheckFuncs, func() {
  32. // == License Handling ==
  33. enableLicenseHook := false
  34. licenseKeyValue := servercfg.GetLicenseKey()
  35. netmakerTenantID := servercfg.GetNetmakerTenantID()
  36. if licenseKeyValue != "" && netmakerTenantID != "" {
  37. enableLicenseHook = true
  38. }
  39. if !enableLicenseHook {
  40. err := initTrial()
  41. if err != nil {
  42. logger.Log(0, "failed to init trial", err.Error())
  43. enableLicenseHook = true
  44. }
  45. trialEndDate, err := getTrialEndDate()
  46. if err != nil {
  47. slog.Error("failed to get trial end date", "error", err)
  48. enableLicenseHook = true
  49. } else {
  50. // check if trial ended
  51. if time.Now().After(trialEndDate) {
  52. // trial ended already
  53. enableLicenseHook = true
  54. }
  55. }
  56. }
  57. if enableLicenseHook {
  58. logger.Log(0, "starting license checker")
  59. ClearLicenseCache()
  60. if err := ValidateLicense(); err != nil {
  61. slog.Error(err.Error())
  62. return
  63. }
  64. logger.Log(0, "proceeding with Paid Tier license")
  65. logic.SetFreeTierForTelemetry(false)
  66. // == End License Handling ==
  67. AddLicenseHooks()
  68. } else {
  69. logger.Log(0, "starting trial license hook")
  70. addTrialLicenseHook()
  71. }
  72. if servercfg.GetServerConfig().RacAutoDisable {
  73. AddRacHooks()
  74. }
  75. })
  76. logic.ResetFailOver = proLogic.ResetFailOver
  77. logic.ResetFailedOverPeer = proLogic.ResetFailedOverPeer
  78. logic.CreateFailOver = proLogic.CreateFailOver
  79. logic.GetFailOverPeerIps = proLogic.GetFailOverPeerIps
  80. logic.DenyClientNodeAccess = proLogic.DenyClientNode
  81. logic.IsClientNodeAllowed = proLogic.IsClientNodeAllowed
  82. logic.AllowClientNodeAccess = proLogic.RemoveDeniedNodeFromClient
  83. logic.SetClientDefaultACLs = proLogic.SetClientDefaultACLs
  84. logic.SetClientACLs = proLogic.SetClientACLs
  85. logic.UpdateProNodeACLs = proLogic.UpdateProNodeACLs
  86. logic.GetMetrics = proLogic.GetMetrics
  87. logic.UpdateMetrics = proLogic.UpdateMetrics
  88. logic.DeleteMetrics = proLogic.DeleteMetrics
  89. logic.GetRelays = proLogic.GetRelays
  90. logic.GetAllowedIpsForRelayed = proLogic.GetAllowedIpsForRelayed
  91. logic.RelayedAllowedIPs = proLogic.RelayedAllowedIPs
  92. logic.UpdateRelayed = proLogic.UpdateRelayed
  93. logic.SetRelayedNodes = proLogic.SetRelayedNodes
  94. logic.RelayUpdates = proLogic.RelayUpdates
  95. logic.IsInternetGw = proLogic.IsInternetGw
  96. logic.SetInternetGw = proLogic.SetInternetGw
  97. logic.GetTrialEndDate = getTrialEndDate
  98. mq.UpdateMetrics = proLogic.MQUpdateMetrics
  99. mq.UpdateMetricsFallBack = proLogic.MQUpdateMetricsFallBack
  100. }
  101. func retrieveProLogo() string {
  102. return `
  103. __ __ ______ ______ __ __ ______ __ __ ______ ______
  104. /\ "-.\ \ /\ ___\ /\__ _\ /\ "-./ \ /\ __ \ /\ \/ / /\ ___\ /\ == \
  105. \ \ \-. \ \ \ __\ \/_/\ \/ \ \ \-./\ \ \ \ __ \ \ \ _"-. \ \ __\ \ \ __<
  106. \ \_\\"\_\ \ \_____\ \ \_\ \ \_\ \ \_\ \ \_\ \_\ \ \_\ \_\ \ \_____\ \ \_\ \_\
  107. \/_/ \/_/ \/_____/ \/_/ \/_/ \/_/ \/_/\/_/ \/_/\/_/ \/_____/ \/_/ /_/
  108. ___ ___ ____
  109. ____ ____ ____ / _ \ / _ \ / __ \ ____ ____ ____
  110. /___/ /___/ /___/ / ___/ / , _// /_/ / /___/ /___/ /___/
  111. /___/ /___/ /___/ /_/ /_/|_| \____/ /___/ /___/ /___/
  112. `
  113. }