initialize.go 3.7 KB

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