initialize.go 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. //go:build ee
  2. // +build ee
  3. package pro
  4. import (
  5. controller "github.com/gravitl/netmaker/controllers"
  6. "github.com/gravitl/netmaker/logger"
  7. "github.com/gravitl/netmaker/logic"
  8. "github.com/gravitl/netmaker/models"
  9. "github.com/gravitl/netmaker/mq"
  10. "github.com/gravitl/netmaker/pro/auth"
  11. proControllers "github.com/gravitl/netmaker/pro/controllers"
  12. "github.com/gravitl/netmaker/pro/email"
  13. proLogic "github.com/gravitl/netmaker/pro/logic"
  14. "github.com/gravitl/netmaker/servercfg"
  15. "golang.org/x/exp/slog"
  16. )
  17. // InitPro - Initialize Pro Logic
  18. func InitPro() {
  19. servercfg.IsPro = true
  20. models.SetLogo(retrieveProLogo())
  21. controller.HttpMiddlewares = append(
  22. controller.HttpMiddlewares,
  23. proControllers.OnlyServerAPIWhenUnlicensedMiddleware,
  24. )
  25. controller.HttpHandlers = append(
  26. controller.HttpHandlers,
  27. proControllers.MetricHandlers,
  28. proControllers.UserHandlers,
  29. proControllers.FailOverHandlers,
  30. proControllers.InetHandlers,
  31. proControllers.RacHandlers,
  32. proControllers.EventHandlers,
  33. proControllers.TagHandlers,
  34. )
  35. controller.ListRoles = proControllers.ListRoles
  36. logic.EnterpriseCheckFuncs = append(logic.EnterpriseCheckFuncs, func() {
  37. // == License Handling ==
  38. enableLicenseHook := false
  39. if enableLicenseHook {
  40. logger.Log(0, "starting license checker")
  41. ClearLicenseCache()
  42. if err := ValidateLicense(); err != nil {
  43. slog.Error(err.Error())
  44. return
  45. }
  46. logger.Log(0, "proceeding with Paid Tier license")
  47. logic.SetFreeTierForTelemetry(false)
  48. // == End License Handling ==
  49. AddLicenseHooks()
  50. }
  51. if logic.GetRacAutoDisable() {
  52. AddRacHooks()
  53. }
  54. var authProvider = auth.InitializeAuthProvider()
  55. if authProvider != "" {
  56. slog.Info("OAuth provider,", authProvider+",", "initialized")
  57. } else {
  58. slog.Error("no OAuth provider found or not configured, continuing without OAuth")
  59. }
  60. proLogic.LoadNodeMetricsToCache()
  61. proLogic.InitFailOverCache()
  62. auth.ResetIDPSyncHook()
  63. email.Init()
  64. go proLogic.EventWatcher()
  65. })
  66. logic.ResetFailOver = proLogic.ResetFailOver
  67. logic.ResetFailedOverPeer = proLogic.ResetFailedOverPeer
  68. logic.FailOverExists = proLogic.FailOverExists
  69. logic.CreateFailOver = proLogic.CreateFailOver
  70. logic.GetFailOverPeerIps = proLogic.GetFailOverPeerIps
  71. logic.DenyClientNodeAccess = proLogic.DenyClientNode
  72. logic.IsClientNodeAllowed = proLogic.IsClientNodeAllowed
  73. logic.AllowClientNodeAccess = proLogic.RemoveDeniedNodeFromClient
  74. logic.SetClientDefaultACLs = proLogic.SetClientDefaultACLs
  75. logic.SetClientACLs = proLogic.SetClientACLs
  76. logic.UpdateProNodeACLs = proLogic.UpdateProNodeACLs
  77. logic.GetMetrics = proLogic.GetMetrics
  78. logic.UpdateMetrics = proLogic.UpdateMetrics
  79. logic.DeleteMetrics = proLogic.DeleteMetrics
  80. logic.GetTrialEndDate = getTrialEndDate
  81. logic.SetDefaultGw = proLogic.SetDefaultGw
  82. logic.SetDefaultGwForRelayedUpdate = proLogic.SetDefaultGwForRelayedUpdate
  83. logic.UnsetInternetGw = proLogic.UnsetInternetGw
  84. logic.SetInternetGw = proLogic.SetInternetGw
  85. logic.GetAllowedIpForInetNodeClient = proLogic.GetAllowedIpForInetNodeClient
  86. mq.UpdateMetrics = proLogic.MQUpdateMetrics
  87. mq.UpdateMetricsFallBack = proLogic.MQUpdateMetricsFallBack
  88. logic.GetFilteredNodesByUserAccess = proLogic.GetFilteredNodesByUserAccess
  89. logic.CreateRole = proLogic.CreateRole
  90. logic.UpdateRole = proLogic.UpdateRole
  91. logic.DeleteRole = proLogic.DeleteRole
  92. logic.NetworkPermissionsCheck = proLogic.NetworkPermissionsCheck
  93. logic.GlobalPermissionsCheck = proLogic.GlobalPermissionsCheck
  94. logic.DeleteNetworkRoles = proLogic.DeleteNetworkRoles
  95. logic.CreateDefaultNetworkRolesAndGroups = proLogic.CreateDefaultNetworkRolesAndGroups
  96. logic.FilterNetworksByRole = proLogic.FilterNetworksByRole
  97. logic.IsGroupsValid = proLogic.IsGroupsValid
  98. logic.IsGroupValid = proLogic.IsGroupValid
  99. logic.IsNetworkRolesValid = proLogic.IsNetworkRolesValid
  100. logic.InitialiseRoles = proLogic.UserRolesInit
  101. logic.UpdateUserGwAccess = proLogic.UpdateUserGwAccess
  102. logic.CreateDefaultUserPolicies = proLogic.CreateDefaultUserPolicies
  103. logic.MigrateUserRoleAndGroups = proLogic.MigrateUserRoleAndGroups
  104. logic.MigrateToUUIDs = proLogic.MigrateToUUIDs
  105. logic.IntialiseGroups = proLogic.UserGroupsInit
  106. logic.AddGlobalNetRolesToAdmins = proLogic.AddGlobalNetRolesToAdmins
  107. logic.GetUserGroupsInNetwork = proLogic.GetUserGroupsInNetwork
  108. logic.GetUserGroup = proLogic.GetUserGroup
  109. logic.GetNodeStatus = proLogic.GetNodeStatus
  110. logic.ResetAuthProvider = auth.ResetAuthProvider
  111. logic.ResetIDPSyncHook = auth.ResetIDPSyncHook
  112. logic.EmailInit = email.Init
  113. logic.LogEvent = proLogic.LogEvent
  114. logic.RemoveUserFromAclPolicy = proLogic.RemoveUserFromAclPolicy
  115. logic.IsUserAllowedToCommunicate = proLogic.IsUserAllowedToCommunicate
  116. logic.DeleteAllNetworkTags = proLogic.DeleteAllNetworkTags
  117. logic.CreateDefaultTags = proLogic.CreateDefaultTags
  118. logic.GetInetClientsFromAclPolicies = proLogic.GetInetClientsFromAclPolicies
  119. logic.IsPeerAllowed = proLogic.IsPeerAllowed
  120. logic.IsAclPolicyValid = proLogic.IsAclPolicyValid
  121. logic.GetEgressRulesForNode = proLogic.GetEgressRulesForNode
  122. logic.GetAclRuleForInetGw = proLogic.GetAclRuleForInetGw
  123. logic.GetAclRulesForNode = proLogic.GetAclRulesForNode
  124. logic.CheckIfAnyActiveEgressPolicy = proLogic.CheckIfAnyActiveEgressPolicy
  125. logic.CheckIfAnyPolicyisUniDirectional = proLogic.CheckIfAnyPolicyisUniDirectional
  126. logic.MigrateToGws = proLogic.MigrateToGws
  127. logic.IsNodeAllowedToCommunicate = proLogic.IsNodeAllowedToCommunicate
  128. logic.GetFwRulesForNodeAndPeerOnGw = proLogic.GetFwRulesForNodeAndPeerOnGw
  129. logic.GetFwRulesForUserNodesOnGw = proLogic.GetFwRulesForUserNodesOnGw
  130. }
  131. func retrieveProLogo() string {
  132. return `
  133. __ __ ______ ______ __ __ ______ __ __ ______ ______
  134. /\ "-.\ \ /\ ___\ /\__ _\ /\ "-./ \ /\ __ \ /\ \/ / /\ ___\ /\ == \
  135. \ \ \-. \ \ \ __\ \/_/\ \/ \ \ \-./\ \ \ \ __ \ \ \ _"-. \ \ __\ \ \ __<
  136. \ \_\\"\_\ \ \_____\ \ \_\ \ \_\ \ \_\ \ \_\ \_\ \ \_\ \_\ \ \_____\ \ \_\ \_\
  137. \/_/ \/_/ \/_____/ \/_/ \/_/ \/_/ \/_/\/_/ \/_/\/_/ \/_____/ \/_/ /_/
  138. ___ ___ ____
  139. ____ ____ ____ / _ \ / _ \ / __ \ ____ ____ ____
  140. /___/ /___/ /___/ / ___/ / , _// /_/ / /___/ /___/ /___/
  141. /___/ /___/ /___/ /_/ /_/|_| \____/ /___/ /___/ /___/
  142. `
  143. }