@oneuptime/common 13.0.8 → 14.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (333) hide show
  1. package/Models/AnalyticsModels/AuditLog.ts +23 -15
  2. package/Models/DatabaseModels/GlobalConfig.ts +24 -0
  3. package/Models/DatabaseModels/Monitor.ts +3 -2
  4. package/Models/DatabaseModels/MonitorTemplate.ts +2 -1
  5. package/Scripts/generate-service-worker.js +65 -4
  6. package/Server/API/BaseAPI.ts +26 -5
  7. package/Server/API/GlobalConfigAPI.ts +228 -462
  8. package/Server/API/ProjectOIDC.ts +25 -16
  9. package/Server/API/ProjectSSO.ts +24 -16
  10. package/Server/API/StatusPageAPI.ts +100 -42
  11. package/Server/API/TeamMemberAPI.ts +10 -1
  12. package/Server/Enterprise/EnterpriseEdition.ts +649 -0
  13. package/Server/Enterprise/EnterpriseFeature.ts +48 -0
  14. package/Server/Enterprise/EnterpriseLicenseSnapshot.ts +192 -0
  15. package/Server/Enterprise/EnterpriseServerModule.ts +233 -0
  16. package/Server/EnvironmentConfig.ts +147 -2
  17. package/Server/Infrastructure/Postgres/SchemaMigrations/1793900000000-AddEnterpriseEditionFirstSeenAt.ts +25 -0
  18. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +2 -0
  19. package/Server/Middleware/UserAuthorization.ts +38 -16
  20. package/Server/Services/AuditLogService.ts +84 -1079
  21. package/Server/Services/EnterpriseLicenseService.ts +38 -0
  22. package/Server/Services/GlobalConfigService.ts +80 -1
  23. package/Server/Services/MonitorProbeService.ts +116 -20
  24. package/Server/Services/MonitorService.ts +56 -4
  25. package/Server/Services/MonitorStatusTimelineService.ts +284 -0
  26. package/Server/Services/MonitorTemplateService.ts +26 -0
  27. package/Server/Services/ProjectService.ts +284 -0
  28. package/Server/Services/RumSessionPinService.ts +25 -6
  29. package/Server/Services/StatusPagePrivateUserService.ts +7 -3
  30. package/Server/Services/StatusPageService.ts +78 -1
  31. package/Server/Services/TeamMemberService.ts +11 -0
  32. package/Server/Services/TeamService.ts +10 -0
  33. package/Server/Services/UserService.ts +10 -17
  34. package/Server/Types/Database/Permissions/CreatePermission.ts +15 -0
  35. package/Server/Types/Database/Permissions/EditionPermission.ts +208 -18
  36. package/Server/Types/Database/Permissions/TablePermission.ts +10 -3
  37. package/Server/Types/Database/Permissions/UpdatePermission.ts +29 -0
  38. package/Server/Types/Markdown.ts +41 -0
  39. package/Server/Utils/CommunityEditionSsoReport.ts +361 -0
  40. package/Server/Utils/EditionEnforcement.ts +233 -0
  41. package/Server/Utils/FrontendEnvironment.ts +41 -2
  42. package/Server/Utils/InstanceHealth/RedisHealth.ts +12 -277
  43. package/Server/Utils/Monitor/AffectedResourceList.ts +190 -0
  44. package/Server/Utils/Monitor/Criteria/EvaluateOverTime.ts +10 -1
  45. package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +543 -333
  46. package/Server/Utils/Monitor/MonitoringIntervalValidator.ts +116 -0
  47. package/Server/Utils/Workspace/Slack/Slack.ts +423 -10
  48. package/Tests/App/Accounts/LoginPasskey.test.tsx +18 -0
  49. package/Tests/App/Accounts/LoginSsoEdition.test.tsx +616 -0
  50. package/Tests/App/AdminDashboard/AdminAuthenticationSsoEdition.test.tsx +217 -0
  51. package/Tests/App/AdminDashboard/AdminEnterprisePluginPage.test.tsx +357 -0
  52. package/Tests/App/AdminDashboard/EnterpriseLicensesShell.test.tsx +214 -0
  53. package/Tests/App/AdminDashboard/GlobalSSOEnterpriseShells.test.tsx +271 -0
  54. package/Tests/App/AdminDashboard/HealthShells.test.tsx +659 -0
  55. package/Tests/App/Dashboard/AuditLogsAndComplianceShells.test.tsx +572 -0
  56. package/Tests/App/Dashboard/EnterpriseFeatureUpgrade.test.tsx +547 -0
  57. package/Tests/App/Dashboard/EnterprisePluginPage.test.tsx +667 -0
  58. package/Tests/App/Dashboard/IdentityEnterpriseShells.test.tsx +319 -0
  59. package/Tests/App/Dashboard/OnboardingSsoEmptyState.test.tsx +185 -0
  60. package/Tests/App/Dashboard/SecurityEventConnectionDiagnostics.test.tsx +45 -9
  61. package/Tests/App/Dashboard/SecurityEventDetailPanel.test.tsx +399 -0
  62. package/Tests/App/Dashboard/SecurityEventListRow.test.tsx +214 -0
  63. package/Tests/App/Dashboard/SecurityEventsEmptyState.test.tsx +1 -83
  64. package/Tests/App/Dashboard/SecurityEventsNavTabs.test.tsx +248 -0
  65. package/Tests/App/Dashboard/SecurityEventsViewer.test.tsx +1203 -0
  66. package/Tests/App/Dashboard/UserEmailCallSites.test.tsx +11 -91
  67. package/Tests/App/StatusPage/StatusPageSsoEmptyState.test.tsx +319 -0
  68. package/Tests/Helpers/RefreshAwareApiScan.ts +757 -0
  69. package/Tests/Helpers/TenantScopedRequestScan.ts +515 -0
  70. package/Tests/Scripts/GenerateServiceWorker.test.ts +931 -0
  71. package/Tests/Server/API/BaseAPICreateItemDoesNotMutateModel.test.ts +130 -0
  72. package/Tests/Server/API/GlobalConfigLicense.test.ts +742 -497
  73. package/Tests/Server/API/OnCallReadinessAPI.test.ts +35 -909
  74. package/Tests/Server/API/SsoProviderListingsEdition.test.ts +432 -0
  75. package/Tests/Server/API/TeamMemberLeaveScimLockEdition.test.ts +252 -0
  76. package/Tests/Server/Enterprise/EnterpriseEdition.test.ts +824 -0
  77. package/Tests/Server/Enterprise/EnterpriseFeatureActive.test.ts +643 -0
  78. package/Tests/Server/Enterprise/EnterpriseLicenseSnapshot.test.ts +294 -0
  79. package/Tests/Server/Enterprise/EnterpriseModelFeatureMap.test.ts +93 -0
  80. package/Tests/Server/Enterprise/EnterpriseOnlyModulesLiveInEe.test.ts +582 -0
  81. package/Tests/Server/Enterprise/EnterpriseServerModule.test.ts +247 -0
  82. package/Tests/Server/Enterprise/FakeEnterpriseModule.ts +502 -0
  83. package/Tests/Server/Enterprise/TestBillingFlag.ts +70 -0
  84. package/Tests/Server/EnvironmentConfigEnterpriseEdition.test.ts +314 -0
  85. package/Tests/Server/Infrastructure/ContainerBootConfiguration.test.ts +289 -0
  86. package/Tests/Server/Infrastructure/E2EClickHouseFixtureAccess.test.ts +5 -1
  87. package/Tests/Server/Middleware/UserAuthorization.test.ts +37 -2
  88. package/Tests/Server/Middleware/UserAuthorizationEditionEnforcement.test.ts +516 -0
  89. package/Tests/Server/Services/AuditLogService.test.ts +460 -990
  90. package/Tests/Server/Services/CreateAndReadResponsesKeepIds.test.ts +263 -0
  91. package/Tests/Server/Services/EnterpriseLicenseServiceKeyGeneration.test.ts +151 -0
  92. package/Tests/Server/Services/GlobalConfigServiceLicenseColumns.test.ts +357 -0
  93. package/Tests/Server/Services/MonitorDestinationInfoIPv6.test.ts +101 -0
  94. package/Tests/Server/Services/MonitorProbeServiceIntervalScheduling.test.ts +333 -0
  95. package/Tests/Server/Services/MonitorStatusTimelineDailyAggregates.test.ts +303 -0
  96. package/Tests/Server/Services/ProjectServiceAuditLogLicense.test.ts +701 -0
  97. package/Tests/Server/Services/ProjectServiceAuditLogSettingsCache.test.ts +31 -35
  98. package/Tests/Server/Services/ScimPushGroupsTeamLocksEdition.test.ts +431 -0
  99. package/Tests/Server/Services/SsoRequirementReadMasking.test.ts +419 -0
  100. package/Tests/Server/Services/SsoRequirementWriteGuard.test.ts +769 -0
  101. package/Tests/Server/Services/StatusPagePrivateUserInvitationPolicy.test.ts +94 -0
  102. package/Tests/Server/Services/UserAuthenticationService.test.ts +35 -0
  103. package/Tests/Server/Services/UserServiceSeatLimit.test.ts +94 -56
  104. package/Tests/Server/Types/Database/Permissions/EditionPermission.test.ts +1823 -0
  105. package/Tests/Server/Types/Markdown.test.ts +181 -0
  106. package/Tests/Server/Utils/CommunityEditionSsoReport.test.ts +565 -0
  107. package/Tests/Server/Utils/EditionEnforcement.test.ts +303 -0
  108. package/Tests/Server/Utils/FrontendEnvironment.test.ts +367 -0
  109. package/Tests/Server/Utils/InstanceHealth/RedisHealth.test.ts +38 -418
  110. package/Tests/Server/Utils/Monitor/AffectedResourceList.test.ts +518 -0
  111. package/Tests/Server/Utils/Monitor/Criteria/EvaluateOverTime.test.ts +24 -4
  112. package/Tests/Server/Utils/Monitor/MonitorCriteriaEvaluator.test.ts +934 -96
  113. package/Tests/Server/Utils/Monitor/MonitoringIntervalValidator.test.ts +188 -0
  114. package/Tests/Server/Utils/Workspace/Slack/SlackMarkdownSectionSplit.test.ts +1209 -0
  115. package/Tests/Types/API/HostnameFromAuthority.test.ts +20 -10
  116. package/Tests/Types/API/HostnameIPv6.test.ts +149 -0
  117. package/Tests/Types/Database/CanonicalModelInstance.test.ts +190 -0
  118. package/Tests/UI/Components/EditionLabelLapseCopy.ts +104 -0
  119. package/Tests/UI/Components/EditionLabelLicenseManagerWiring.test.tsx +254 -0
  120. package/Tests/UI/Components/EditionLabelLicenseRefresh.test.tsx +84 -178
  121. package/Tests/UI/Components/EditionLabelLicenseStatus.test.tsx +1586 -0
  122. package/Tests/UI/Components/EditionLabelLicenseWritesGuard.test.tsx +157 -0
  123. package/Tests/UI/Components/Graphs/DayUptimeGraph.test.tsx +49 -2
  124. package/Tests/UI/Components/MarkdownConverters.test.ts +684 -0
  125. package/Tests/UI/Components/ModelListEmptyState.test.tsx +289 -0
  126. package/Tests/UI/Components/TelemetryViewer/TelemetryViewerEmptyContent.test.tsx +131 -0
  127. package/Tests/UI/EsbuildEnterpriseAlias.test.ts +1127 -0
  128. package/Tests/Utils/HostAddressUtil.test.ts +138 -0
  129. package/Tests/Utils/Monitor/MonitorDestinationUtil.test.ts +313 -0
  130. package/Tests/Utils/Monitor/MonitoringIntervalUtil.test.ts +304 -0
  131. package/Tests/Utils/StatusPage/UptimeDailyAggregateUtil.test.ts +248 -0
  132. package/Types/API/Hostname.ts +63 -16
  133. package/Types/Database/AccessControl/ColumnAccessControl.ts +19 -7
  134. package/Types/Database/AccessControl/ColumnBillingAccessControl.ts +19 -7
  135. package/Types/Database/AccessControl/OwnerOnlyColumn.ts +15 -6
  136. package/Types/Database/CanonicalModelInstance.ts +102 -0
  137. package/Types/Database/TableColumn.ts +20 -6
  138. package/Types/EnterpriseLicense/EnterpriseLicensePeriods.ts +29 -0
  139. package/Types/IP/IPv6.ts +6 -1
  140. package/Types/Monitor/MonitorStep.ts +6 -1
  141. package/Types/Monitor/ProxmoxAlertTemplates.ts +1 -1
  142. package/Types/StatusPage/UptimeDailyAggregate.ts +110 -0
  143. package/UI/Components/EditionLabel/EditionLabel.tsx +796 -1195
  144. package/UI/Components/EditionLabel/LicenseManager.ts +119 -0
  145. package/UI/Components/Graphs/DayUptimeGraph.tsx +123 -15
  146. package/UI/Components/Markdown.tsx/MarkdownConverters.ts +0 -0
  147. package/UI/Components/ModelList/ModelList.tsx +11 -1
  148. package/UI/Components/MonitorGraphs/Uptime.tsx +69 -0
  149. package/UI/Components/TelemetryViewer/TelemetryViewer.tsx +28 -12
  150. package/UI/esbuild-enterprise.js +263 -0
  151. package/Utils/EnterpriseLicense/EnterpriseLicenseUsage.ts +7 -2
  152. package/Utils/HostAddressUtil.ts +94 -0
  153. package/Utils/Monitor/MonitorDestinationUtil.ts +157 -0
  154. package/Utils/Monitor/MonitoringIntervalUtil.ts +436 -0
  155. package/Utils/StatusPage/UptimeDailyAggregateUtil.ts +192 -0
  156. package/build/dist/Models/AnalyticsModels/AuditLog.js +23 -15
  157. package/build/dist/Models/AnalyticsModels/AuditLog.js.map +1 -1
  158. package/build/dist/Models/DatabaseModels/GlobalConfig.js +25 -0
  159. package/build/dist/Models/DatabaseModels/GlobalConfig.js.map +1 -1
  160. package/build/dist/Models/DatabaseModels/Monitor.js +2 -2
  161. package/build/dist/Models/DatabaseModels/Monitor.js.map +1 -1
  162. package/build/dist/Models/DatabaseModels/MonitorTemplate.js +2 -1
  163. package/build/dist/Models/DatabaseModels/MonitorTemplate.js.map +1 -1
  164. package/build/dist/Server/API/BaseAPI.js +26 -5
  165. package/build/dist/Server/API/BaseAPI.js.map +1 -1
  166. package/build/dist/Server/API/GlobalConfigAPI.js +148 -344
  167. package/build/dist/Server/API/GlobalConfigAPI.js.map +1 -1
  168. package/build/dist/Server/API/ProjectOIDC.js +24 -16
  169. package/build/dist/Server/API/ProjectOIDC.js.map +1 -1
  170. package/build/dist/Server/API/ProjectSSO.js +24 -16
  171. package/build/dist/Server/API/ProjectSSO.js.map +1 -1
  172. package/build/dist/Server/API/StatusPageAPI.js +93 -43
  173. package/build/dist/Server/API/StatusPageAPI.js.map +1 -1
  174. package/build/dist/Server/API/TeamMemberAPI.js +8 -1
  175. package/build/dist/Server/API/TeamMemberAPI.js.map +1 -1
  176. package/build/dist/Server/Enterprise/EnterpriseEdition.js +466 -0
  177. package/build/dist/Server/Enterprise/EnterpriseEdition.js.map +1 -0
  178. package/build/dist/Server/Enterprise/EnterpriseFeature.js +39 -0
  179. package/build/dist/Server/Enterprise/EnterpriseFeature.js.map +1 -0
  180. package/build/dist/Server/Enterprise/EnterpriseLicenseSnapshot.js +70 -0
  181. package/build/dist/Server/Enterprise/EnterpriseLicenseSnapshot.js.map +1 -0
  182. package/build/dist/Server/Enterprise/EnterpriseServerModule.js +84 -0
  183. package/build/dist/Server/Enterprise/EnterpriseServerModule.js.map +1 -0
  184. package/build/dist/Server/EnvironmentConfig.js +84 -2
  185. package/build/dist/Server/EnvironmentConfig.js.map +1 -1
  186. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1793900000000-AddEnterpriseEditionFirstSeenAt.js +18 -0
  187. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1793900000000-AddEnterpriseEditionFirstSeenAt.js.map +1 -0
  188. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +2 -0
  189. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  190. package/build/dist/Server/Middleware/UserAuthorization.js +30 -11
  191. package/build/dist/Server/Middleware/UserAuthorization.js.map +1 -1
  192. package/build/dist/Server/Services/AuditLogService.js +71 -740
  193. package/build/dist/Server/Services/AuditLogService.js.map +1 -1
  194. package/build/dist/Server/Services/EnterpriseLicenseService.js +34 -0
  195. package/build/dist/Server/Services/EnterpriseLicenseService.js.map +1 -1
  196. package/build/dist/Server/Services/GlobalConfigService.js +63 -0
  197. package/build/dist/Server/Services/GlobalConfigService.js.map +1 -1
  198. package/build/dist/Server/Services/MonitorProbeService.js +90 -17
  199. package/build/dist/Server/Services/MonitorProbeService.js.map +1 -1
  200. package/build/dist/Server/Services/MonitorService.js +45 -4
  201. package/build/dist/Server/Services/MonitorService.js.map +1 -1
  202. package/build/dist/Server/Services/MonitorStatusTimelineService.js +242 -0
  203. package/build/dist/Server/Services/MonitorStatusTimelineService.js.map +1 -1
  204. package/build/dist/Server/Services/MonitorTemplateService.js +16 -0
  205. package/build/dist/Server/Services/MonitorTemplateService.js.map +1 -1
  206. package/build/dist/Server/Services/ProjectService.js +214 -0
  207. package/build/dist/Server/Services/ProjectService.js.map +1 -1
  208. package/build/dist/Server/Services/RumSessionPinService.js +24 -6
  209. package/build/dist/Server/Services/RumSessionPinService.js.map +1 -1
  210. package/build/dist/Server/Services/StatusPagePrivateUserService.js +7 -3
  211. package/build/dist/Server/Services/StatusPagePrivateUserService.js.map +1 -1
  212. package/build/dist/Server/Services/StatusPageService.js +71 -0
  213. package/build/dist/Server/Services/StatusPageService.js.map +1 -1
  214. package/build/dist/Server/Services/TeamMemberService.js +10 -0
  215. package/build/dist/Server/Services/TeamMemberService.js.map +1 -1
  216. package/build/dist/Server/Services/TeamService.js +9 -0
  217. package/build/dist/Server/Services/TeamService.js.map +1 -1
  218. package/build/dist/Server/Services/UserService.js +10 -16
  219. package/build/dist/Server/Services/UserService.js.map +1 -1
  220. package/build/dist/Server/Types/Database/Permissions/CreatePermission.js +10 -0
  221. package/build/dist/Server/Types/Database/Permissions/CreatePermission.js.map +1 -1
  222. package/build/dist/Server/Types/Database/Permissions/EditionPermission.js +154 -14
  223. package/build/dist/Server/Types/Database/Permissions/EditionPermission.js.map +1 -1
  224. package/build/dist/Server/Types/Database/Permissions/TablePermission.js +10 -3
  225. package/build/dist/Server/Types/Database/Permissions/TablePermission.js.map +1 -1
  226. package/build/dist/Server/Types/Database/Permissions/UpdatePermission.js +17 -0
  227. package/build/dist/Server/Types/Database/Permissions/UpdatePermission.js.map +1 -1
  228. package/build/dist/Server/Types/Markdown.js +31 -0
  229. package/build/dist/Server/Types/Markdown.js.map +1 -1
  230. package/build/dist/Server/Utils/CommunityEditionSsoReport.js +223 -0
  231. package/build/dist/Server/Utils/CommunityEditionSsoReport.js.map +1 -0
  232. package/build/dist/Server/Utils/EditionEnforcement.js +187 -0
  233. package/build/dist/Server/Utils/EditionEnforcement.js.map +1 -0
  234. package/build/dist/Server/Utils/FrontendEnvironment.js +31 -2
  235. package/build/dist/Server/Utils/FrontendEnvironment.js.map +1 -1
  236. package/build/dist/Server/Utils/InstanceHealth/RedisHealth.js +6 -193
  237. package/build/dist/Server/Utils/InstanceHealth/RedisHealth.js.map +1 -1
  238. package/build/dist/Server/Utils/Monitor/AffectedResourceList.js +96 -0
  239. package/build/dist/Server/Utils/Monitor/AffectedResourceList.js.map +1 -0
  240. package/build/dist/Server/Utils/Monitor/Criteria/EvaluateOverTime.js +8 -1
  241. package/build/dist/Server/Utils/Monitor/Criteria/EvaluateOverTime.js.map +1 -1
  242. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +449 -261
  243. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
  244. package/build/dist/Server/Utils/Monitor/MonitoringIntervalValidator.js +88 -0
  245. package/build/dist/Server/Utils/Monitor/MonitoringIntervalValidator.js.map +1 -0
  246. package/build/dist/Server/Utils/Workspace/Slack/Slack.js +331 -11
  247. package/build/dist/Server/Utils/Workspace/Slack/Slack.js.map +1 -1
  248. package/build/dist/Types/API/Hostname.js +59 -11
  249. package/build/dist/Types/API/Hostname.js.map +1 -1
  250. package/build/dist/Types/Database/AccessControl/ColumnAccessControl.js +19 -7
  251. package/build/dist/Types/Database/AccessControl/ColumnAccessControl.js.map +1 -1
  252. package/build/dist/Types/Database/AccessControl/ColumnBillingAccessControl.js +19 -7
  253. package/build/dist/Types/Database/AccessControl/ColumnBillingAccessControl.js.map +1 -1
  254. package/build/dist/Types/Database/AccessControl/OwnerOnlyColumn.js +13 -6
  255. package/build/dist/Types/Database/AccessControl/OwnerOnlyColumn.js.map +1 -1
  256. package/build/dist/Types/Database/CanonicalModelInstance.js +88 -0
  257. package/build/dist/Types/Database/CanonicalModelInstance.js.map +1 -0
  258. package/build/dist/Types/Database/TableColumn.js +19 -6
  259. package/build/dist/Types/Database/TableColumn.js.map +1 -1
  260. package/build/dist/Types/EnterpriseLicense/EnterpriseLicensePeriods.js +28 -0
  261. package/build/dist/Types/EnterpriseLicense/EnterpriseLicensePeriods.js.map +1 -0
  262. package/build/dist/Types/IP/IPv6.js +6 -1
  263. package/build/dist/Types/IP/IPv6.js.map +1 -1
  264. package/build/dist/Types/Monitor/MonitorStep.js +5 -0
  265. package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
  266. package/build/dist/Types/Monitor/ProxmoxAlertTemplates.js +1 -1
  267. package/build/dist/Types/StatusPage/UptimeDailyAggregate.js +32 -0
  268. package/build/dist/Types/StatusPage/UptimeDailyAggregate.js.map +1 -0
  269. package/build/dist/UI/Components/EditionLabel/EditionLabel.js +414 -585
  270. package/build/dist/UI/Components/EditionLabel/EditionLabel.js.map +1 -1
  271. package/build/dist/UI/Components/EditionLabel/LicenseManager.js +2 -0
  272. package/build/dist/UI/Components/EditionLabel/LicenseManager.js.map +1 -0
  273. package/build/dist/UI/Components/Graphs/DayUptimeGraph.js +90 -17
  274. package/build/dist/UI/Components/Graphs/DayUptimeGraph.js.map +1 -1
  275. package/build/dist/UI/Components/Markdown.tsx/MarkdownConverters.js +0 -0
  276. package/build/dist/UI/Components/Markdown.tsx/MarkdownConverters.js.map +1 -1
  277. package/build/dist/UI/Components/ModelList/ModelList.js +4 -1
  278. package/build/dist/UI/Components/ModelList/ModelList.js.map +1 -1
  279. package/build/dist/UI/Components/MonitorGraphs/Uptime.js +42 -1
  280. package/build/dist/UI/Components/MonitorGraphs/Uptime.js.map +1 -1
  281. package/build/dist/UI/Components/TelemetryViewer/TelemetryViewer.js +2 -2
  282. package/build/dist/UI/Components/TelemetryViewer/TelemetryViewer.js.map +1 -1
  283. package/build/dist/Utils/EnterpriseLicense/EnterpriseLicenseUsage.js +6 -2
  284. package/build/dist/Utils/EnterpriseLicense/EnterpriseLicenseUsage.js.map +1 -1
  285. package/build/dist/Utils/HostAddressUtil.js +80 -0
  286. package/build/dist/Utils/HostAddressUtil.js.map +1 -0
  287. package/build/dist/Utils/Monitor/MonitorDestinationUtil.js +127 -0
  288. package/build/dist/Utils/Monitor/MonitorDestinationUtil.js.map +1 -0
  289. package/build/dist/Utils/Monitor/MonitoringIntervalUtil.js +374 -0
  290. package/build/dist/Utils/Monitor/MonitoringIntervalUtil.js.map +1 -0
  291. package/build/dist/Utils/StatusPage/UptimeDailyAggregateUtil.js +148 -0
  292. package/build/dist/Utils/StatusPage/UptimeDailyAggregateUtil.js.map +1 -0
  293. package/jest.config.json +3 -1
  294. package/package.json +1 -1
  295. package/test-setup.sh +103 -34
  296. package/tsconfig.json +13 -0
  297. package/Server/API/EnterpriseLicenseAPI.ts +0 -925
  298. package/Server/API/TeamComplianceAPI.ts +0 -158
  299. package/Server/Middleware/SCIMAuthorization.ts +0 -141
  300. package/Server/Services/TeamComplianceService.ts +0 -733
  301. package/Server/Utils/EnterpriseLicense/EnterpriseLicenseSeatUtil.ts +0 -186
  302. package/Server/Utils/InstanceHealth/PostgresHealth.ts +0 -286
  303. package/Tests/App/AdminDashboard/EnterpriseLicenseInstanceActivity.test.tsx +0 -451
  304. package/Tests/App/Dashboard/AuditLogsTable.test.tsx +0 -598
  305. package/Tests/App/Dashboard/SecurityEventsExplorer.test.tsx +0 -761
  306. package/Tests/App/Dashboard/SecurityEventsSideMenu.test.tsx +0 -247
  307. package/Tests/App/Dashboard/SecurityEventsTableColumns.test.tsx +0 -382
  308. package/Tests/App/Dashboard/SecurityEventsVolumeChart.test.tsx +0 -321
  309. package/Tests/Server/API/EnterpriseLicenseReportUserCount.test.ts +0 -1851
  310. package/Tests/Server/Middleware/SCIMAuthorization.test.ts +0 -525
  311. package/Tests/Server/Services/TeamComplianceServiceBehaviour.test.ts +0 -1845
  312. package/Tests/Server/Utils/EnterpriseLicense/EnterpriseLicenseSeatUtil.test.ts +0 -495
  313. package/Tests/Server/Utils/InstanceHealth/PostgresHealth.test.ts +0 -337
  314. package/Tests/Utils/EnterpriseLicenseSeats.test.ts +0 -576
  315. package/Tests/Utils/EnterpriseLicenseSync.test.ts +0 -568
  316. package/Utils/EnterpriseLicense/EnterpriseLicenseSeats.ts +0 -287
  317. package/Utils/EnterpriseLicense/EnterpriseLicenseSync.ts +0 -244
  318. package/build/dist/Server/API/EnterpriseLicenseAPI.js +0 -646
  319. package/build/dist/Server/API/EnterpriseLicenseAPI.js.map +0 -1
  320. package/build/dist/Server/API/TeamComplianceAPI.js +0 -111
  321. package/build/dist/Server/API/TeamComplianceAPI.js.map +0 -1
  322. package/build/dist/Server/Middleware/SCIMAuthorization.js +0 -124
  323. package/build/dist/Server/Middleware/SCIMAuthorization.js.map +0 -1
  324. package/build/dist/Server/Services/TeamComplianceService.js +0 -537
  325. package/build/dist/Server/Services/TeamComplianceService.js.map +0 -1
  326. package/build/dist/Server/Utils/EnterpriseLicense/EnterpriseLicenseSeatUtil.js +0 -145
  327. package/build/dist/Server/Utils/EnterpriseLicense/EnterpriseLicenseSeatUtil.js.map +0 -1
  328. package/build/dist/Server/Utils/InstanceHealth/PostgresHealth.js +0 -194
  329. package/build/dist/Server/Utils/InstanceHealth/PostgresHealth.js.map +0 -1
  330. package/build/dist/Utils/EnterpriseLicense/EnterpriseLicenseSeats.js +0 -168
  331. package/build/dist/Utils/EnterpriseLicense/EnterpriseLicenseSeats.js.map +0 -1
  332. package/build/dist/Utils/EnterpriseLicense/EnterpriseLicenseSync.js +0 -174
  333. package/build/dist/Utils/EnterpriseLicense/EnterpriseLicenseSync.js.map +0 -1
@@ -7,39 +7,179 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  var __metadata = (this && this.__metadata) || function (k, v) {
8
8
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
9
  };
10
- import { IsBillingEnabled, IsEnterpriseEdition, } from "../../../../Server/EnvironmentConfig";
11
- import PaymentRequiredException from "../../../../Types/Exception/PaymentRequiredException";
10
+ import { IsBillingEnabled } from "../../../../Server/EnvironmentConfig";
11
+ import EnterpriseEdition from "../../../Enterprise/EnterpriseEdition";
12
+ import { ALL_ENTERPRISE_FEATURES, } from "../../../Enterprise/EnterpriseFeature";
13
+ import DatabaseRequestType from "../../BaseDatabase/DatabaseRequestType";
12
14
  import CaptureSpan from "../../../Utils/Telemetry/CaptureSpan";
15
+ /*
16
+ * Switching an identity provider off (isEnabled: false). Switching one on is
17
+ * configuration and needs the license; only the literal false counts, so a
18
+ * value the database might coerce ("false", 0) is judged by the full check.
19
+ */
20
+ const isSwitchingOff = (value) => {
21
+ return value === false;
22
+ };
23
+ /*
24
+ * The shortest SCIM bearer token a rotation may set without the license. The
25
+ * Dashboard's "Reset token" generates a UUID (36 characters) and services
26
+ * default to one, so this only turns away a token short enough to be weaker
27
+ * than the one it replaces.
28
+ */
29
+ export const MIN_ROTATED_SCIM_BEARER_TOKEN_LENGTH = 32;
30
+ // Replacing a (possibly leaked) SCIM bearer token with a new, long one.
31
+ const isRotatedBearerToken = (value) => {
32
+ return (typeof value === "string" &&
33
+ value.trim().length >= MIN_ROTATED_SCIM_BEARER_TOKEN_LENGTH);
34
+ };
35
+ /*
36
+ * The updates an administrator may make to enterprise configuration while
37
+ * the feature is unavailable, because they can only tighten security: the
38
+ * incident-response moves. Keyed by table name, like the facade's feature
39
+ * map; a model that is not listed has none.
40
+ *
41
+ * isEnabled: false disable an SSO/OIDC provider (project, status page or
42
+ * global), or a global provider's attachment to a
43
+ * project.
44
+ * bearerToken rotate a leaked SCIM bearer token.
45
+ *
46
+ * TeamComplianceSetting has no entry: switching a compliance rule off
47
+ * relaxes it.
48
+ */
49
+ const TIGHTEN_ONLY_UPDATES = new Map([
50
+ ["GlobalSSO", { isEnabled: isSwitchingOff }],
51
+ ["GlobalOIDC", { isEnabled: isSwitchingOff }],
52
+ ["GlobalSSOProject", { isEnabled: isSwitchingOff }],
53
+ ["GlobalOIDCProject", { isEnabled: isSwitchingOff }],
54
+ ["ProjectSSO", { isEnabled: isSwitchingOff }],
55
+ ["ProjectOIDC", { isEnabled: isSwitchingOff }],
56
+ ["StatusPageSSO", { isEnabled: isSwitchingOff }],
57
+ ["StatusPageOIDC", { isEnabled: isSwitchingOff }],
58
+ ["ProjectSCIM", { bearerToken: isRotatedBearerToken }],
59
+ ["StatusPageSCIM", { bearerToken: isRotatedBearerToken }],
60
+ ]);
13
61
  export default class EditionPermissions {
14
62
  /*
15
- * Gates models marked with @TableEditionAccessControl({ requiresEnterprise: true }).
63
+ * Gates the enterprise CONFIGURATION models, the ones marked with
64
+ * @TableEditionAccessControl({ requiresEnterprise: true }): project, global
65
+ * and status page SSO/OIDC providers, SCIM configurations and team
66
+ * compliance settings.
67
+ *
68
+ * Only creating and updating them needs the license. Reading and deleting
69
+ * are always allowed, so an install that dropped to the Community Edition,
70
+ * or whose license lapsed, can still see what it has configured and remove
71
+ * it. Only configuration is gated here, and none of it is ever deleted.
72
+ * Whether what exists RUNS is decided at runtime by
73
+ * EnterpriseEdition.isFeatureActive: SSO, SCIM and audit logging stop while
74
+ * a self-hosted license is lapsed and resume when a license is activated.
75
+ *
76
+ * The one kind of update that needs no license either is a TIGHTEN-ONLY
77
+ * update (see TIGHTEN_ONLY_UPDATES): every column it writes is on the
78
+ * model's list with a value that can only tighten security - disabling an
79
+ * identity provider, rotating a leaked SCIM bearer token. A lapsed license
80
+ * must never stand between an administrator and those moves during an
81
+ * incident. The same holds on the Community Edition, deliberately and for
82
+ * the same reason reads and deletes do: the move can only reduce what the
83
+ * configuration allows, and a provider disabled (or a token rotated) there
84
+ * stays so when the install returns to the Enterprise Edition, instead of
85
+ * coming back live. Anything else in the same update - even one more
86
+ * column - makes it an ordinary update, which needs the license.
87
+ *
88
+ * `updateData` is what the update writes. Only UpdatePermission, which has
89
+ * it, passes it; without it an update is judged by the full check (fail
90
+ * closed). TablePermission leaves updates to UpdatePermission for that
91
+ * reason.
92
+ *
93
+ * Master admins are subject to this check - Create/UpdatePermission call it
94
+ * before their master-admin early return - because the global SSO/OIDC
95
+ * models are only ever written by master admins and would otherwise never
96
+ * be gated. Internal root writes (props.isRoot) are never checked.
16
97
  *
17
- * On self-hosted builds (billing disabled) the model is only accessible when
18
- * the binary was built as the Enterprise Edition (IS_ENTERPRISE_EDITION=true).
98
+ * On the cloud / billing-enabled deployment enforcement is left to
99
+ * BillingPermission: it already gates these models by the plan tier in
100
+ * their @TableBillingAccessControl, so a second check would be redundant.
19
101
  *
20
- * On the cloud / billing-enabled deployment we leave enforcement to
21
- * BillingPermission — it already gates these models via the model's
22
- * @TableBillingAccessControl plan tier, so a second check would be redundant.
102
+ * Deliberately synchronous. TablePermission and CreatePermission are
103
+ * synchronous and their callers do not await them, so an async check with a
104
+ * missed await would turn the refusal into an unhandled rejection and let
105
+ * the write through. The license is read from the enterprise module's
106
+ * cached snapshot, and an unknown snapshot refuses the write (fail closed).
23
107
  */
24
- static checkEditionPermissions(modelType, _props) {
108
+ static checkEditionPermissions(modelType, props, operation, updateData) {
25
109
  if (IsBillingEnabled) {
26
110
  return;
27
111
  }
112
+ if (props.isRoot) {
113
+ return;
114
+ }
115
+ if (operation !== DatabaseRequestType.Create &&
116
+ operation !== DatabaseRequestType.Update) {
117
+ return;
118
+ }
28
119
  const model = new modelType();
29
120
  if (!model.requiresEnterprise) {
30
121
  return;
31
122
  }
32
- if (!IsEnterpriseEdition) {
33
- throw new PaymentRequiredException(`${model.singularName || "This feature"} is only available on the OneUptime Enterprise Edition. ` +
34
- `Please switch to the Enterprise Edition build to enable this feature. ` +
35
- `See https://oneuptime.com/enterprise/overview for details.`);
123
+ if (operation === DatabaseRequestType.Update &&
124
+ EditionPermissions.isTightenOnlyUpdate(model.tableName, updateData)) {
125
+ return;
126
+ }
127
+ const feature = EnterpriseEdition.getModelFeature(modelType);
128
+ if (feature) {
129
+ EnterpriseEdition.assertFeatureAvailableSync(feature);
130
+ return;
131
+ }
132
+ /*
133
+ * An enterprise model the facade has no feature for (its guard test
134
+ * should make this impossible). Fail closed: only a license entitled to
135
+ * every enterprise feature may configure it.
136
+ */
137
+ for (const enterpriseFeature of ALL_ENTERPRISE_FEATURES) {
138
+ EnterpriseEdition.assertFeatureAvailableSync(enterpriseFeature);
139
+ }
140
+ }
141
+ /*
142
+ * True when the update writes at least one column, and every column it
143
+ * writes is on the table's tighten-only list with a value that passes the
144
+ * column's rule. Columns set to undefined are not written and are ignored.
145
+ * Anything that is not a plain object of columns is not tighten-only.
146
+ */
147
+ static isTightenOnlyUpdate(tableName, updateData) {
148
+ const rules = tableName ? TIGHTEN_ONLY_UPDATES.get(tableName) : undefined;
149
+ if (!rules) {
150
+ return false;
151
+ }
152
+ if (!updateData ||
153
+ typeof updateData !== "object" ||
154
+ Array.isArray(updateData)) {
155
+ return false;
156
+ }
157
+ const writtenColumns = Object.entries(updateData).filter(([, value]) => {
158
+ return value !== undefined;
159
+ });
160
+ if (writtenColumns.length === 0) {
161
+ return false;
162
+ }
163
+ return writtenColumns.every(([column, value]) => {
164
+ const rule = Object.prototype.hasOwnProperty.call(rules, column)
165
+ ? rules[column]
166
+ : undefined;
167
+ return Boolean(rule && rule(value));
168
+ });
169
+ }
170
+ // The tables with tighten-only updates, and their columns (for guard tests).
171
+ static getTightenOnlyColumns() {
172
+ const columns = new Map();
173
+ for (const [tableName, rules] of TIGHTEN_ONLY_UPDATES) {
174
+ columns.set(tableName, Object.keys(rules));
36
175
  }
176
+ return columns;
37
177
  }
38
178
  }
39
179
  __decorate([
40
180
  CaptureSpan(),
41
181
  __metadata("design:type", Function),
42
- __metadata("design:paramtypes", [Object, Object]),
182
+ __metadata("design:paramtypes", [Object, Object, String, Object]),
43
183
  __metadata("design:returntype", void 0)
44
184
  ], EditionPermissions, "checkEditionPermissions", null);
45
185
  //# sourceMappingURL=EditionPermission.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EditionPermission.js","sourceRoot":"","sources":["../../../../../../Server/Types/Database/Permissions/EditionPermission.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EACL,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,sCAAsC,CAAC;AAK9C,OAAO,wBAAwB,MAAM,sDAAsD,CAAC;AAC5F,OAAO,WAAW,MAAM,sCAAsC,CAAC;AAE/D,MAAM,CAAC,OAAO,OAAO,kBAAkB;IACrC;;;;;;;;;OASG;IAEW,AAAP,MAAM,CAAC,uBAAuB,CACnC,SAAgC,EAChC,MAAsC;QAEtC,IAAI,gBAAgB,EAAE,CAAC;YACrB,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAc,IAAI,SAAS,EAAE,CAAC;QAEzC,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC;YAC9B,OAAO;QACT,CAAC;QAED,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACzB,MAAM,IAAI,wBAAwB,CAChC,GAAG,KAAK,CAAC,YAAY,IAAI,cAAc,0DAA0D;gBAC/F,wEAAwE;gBACxE,4DAA4D,CAC/D,CAAC;QACJ,CAAC;IACH,CAAC;CACF;AAtBe;IADb,WAAW,EAAE;;;;uDAsBb"}
1
+ {"version":3,"file":"EditionPermission.js","sourceRoot":"","sources":["../../../../../../Server/Types/Database/Permissions/EditionPermission.ts"],"names":[],"mappings":"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"}
@@ -39,10 +39,17 @@ export default class TablePermission {
39
39
  // 2nd CHECK: Is user project in active state?
40
40
  BillingPermissions.checkBillingPermissions(modelType, props, type);
41
41
  /*
42
- * 3rd CHECK: Is this an enterprise-only feature being accessed on the
43
- * community self-hosted build?
42
+ * 3rd CHECK: Is this a create of enterprise configuration that the
43
+ * edition or the license does not allow? (Reads and deletes always pass.)
44
+ * Updates are checked by UpdatePermission.checkUpdatePermissions instead,
45
+ * which every update runs and which sees what the update writes: an
46
+ * update that only tightens security (disabling an identity provider,
47
+ * rotating a SCIM token) needs no license, and this check, which is not
48
+ * handed the data, could only refuse it.
44
49
  */
45
- EditionPermissions.checkEditionPermissions(modelType, props);
50
+ if (type !== DatabaseRequestType.Update) {
51
+ EditionPermissions.checkEditionPermissions(modelType, props, type);
52
+ }
46
53
  // 4th CHECK: Does user have access to CRUD data on this model.
47
54
  const userPermissions = DatabaseCommonInteractionPropsUtil.getUserPermissions(props, PermissionType.Allow);
48
55
  const modelPermissions = TablePermission.getTablePermission(modelType, type);
@@ -1 +1 @@
1
- {"version":3,"file":"TablePermission.js","sourceRoot":"","sources":["../../../../../../Server/Types/Database/Permissions/TablePermission.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TablePermission.js","sourceRoot":"","sources":["../../../../../../Server/Types/Database/Permissions/TablePermission.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,7 @@ import DatabaseRequestType from "../../BaseDatabase/DatabaseRequestType";
11
11
  import AccessControlUtil from "./AccessControlPermission";
12
12
  import BasePermission from "./BasePermission";
13
13
  import ColumnPermissions from "./ColumnPermission";
14
+ import EditionPermissions from "./EditionPermission";
14
15
  import TablePermission from "./TablePermission";
15
16
  import CaptureSpan from "../../../Utils/Telemetry/CaptureSpan";
16
17
  export default class UpdatePermission {
@@ -19,11 +20,27 @@ export default class UpdatePermission {
19
20
  await AccessControlUtil.checkAccessControlPermissionByModel(Object.assign(Object.assign({}, data), { type: DatabaseRequestType.Update }));
20
21
  }
21
22
  static async checkUpdatePermissions(modelType, query, data, props) {
23
+ /*
24
+ * The edition check for updates runs here, the one permission entry
25
+ * point that sees what the update writes: an update that only tightens
26
+ * security (disabling an identity provider, rotating a SCIM token) needs
27
+ * no license, anything else does (see EditionPermission). TablePermission
28
+ * leaves updates to this method for that reason.
29
+ *
30
+ * Master admins skip every table-level check below, but not the edition
31
+ * check: changing enterprise configuration (global SSO/OIDC providers are
32
+ * only ever edited by master admins) needs the license for them too.
33
+ * Everyone else gets it right after the table-level check.
34
+ */
35
+ if (props.isMasterAdmin && !props.isRoot) {
36
+ EditionPermissions.checkEditionPermissions(modelType, props, DatabaseRequestType.Update, data);
37
+ }
22
38
  if (props.isRoot || props.isMasterAdmin) {
23
39
  // If system is making this query then let the query run!
24
40
  return query;
25
41
  }
26
42
  TablePermission.checkTableLevelPermissions(modelType, props, DatabaseRequestType.Update);
43
+ EditionPermissions.checkEditionPermissions(modelType, props, DatabaseRequestType.Update, data);
27
44
  const checkBasePermission = await BasePermission.checkPermissions(modelType, query, null, props, DatabaseRequestType.Update);
28
45
  query = checkBasePermission.query;
29
46
  ColumnPermissions.checkDataColumnPermissions(modelType, data, props, DatabaseRequestType.Update);
@@ -1 +1 @@
1
- {"version":3,"file":"UpdatePermission.js","sourceRoot":"","sources":["../../../../../../Server/Types/Database/Permissions/UpdatePermission.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,mBAAmB,MAAM,wCAAwC,CAAC;AAEzE,OAAO,iBAAiB,MAAM,2BAA2B,CAAC;AAC1D,OAAO,cAAgD,MAAM,kBAAkB,CAAC;AAChF,OAAO,iBAAiB,MAAM,oBAAoB,CAAC;AACnD,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAIhD,OAAO,WAAW,MAAM,sCAAsC,CAAC;AAE/D,MAAM,CAAC,OAAO,OAAO,gBAAgB;IAEf,AAAb,MAAM,CAAC,KAAK,CAAC,4BAA4B,CAE9C,IAID;QACC,MAAM,iBAAiB,CAAC,wCAAwC,iCACzD,IAAI,KAAE,IAAI,EAAE,mBAAmB,CAAC,MAAM,IAC5C,CAAC;QAEF,MAAM,iBAAiB,CAAC,mCAAmC,iCACtD,IAAI,KACP,IAAI,EAAE,mBAAmB,CAAC,MAAM,IAChC,CAAC;IACL,CAAC;IAGmB,AAAb,MAAM,CAAC,KAAK,CAAC,sBAAsB,CACxC,SAAiC,EACjC,KAAwB,EACxB,IAAwC,EACxC,KAAqC;QAErC,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;YACxC,yDAAyD;YACzD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,eAAe,CAAC,0BAA0B,CACxC,SAAS,EACT,KAAK,EACL,mBAAmB,CAAC,MAAM,CAC3B,CAAC;QAEF,MAAM,mBAAmB,GACvB,MAAM,cAAc,CAAC,gBAAgB,CACnC,SAAS,EACT,KAAK,EACL,IAAI,EACJ,KAAK,EACL,mBAAmB,CAAC,MAAM,CAC3B,CAAC;QAEJ,KAAK,GAAG,mBAAmB,CAAC,KAAK,CAAC;QAElC,iBAAiB,CAAC,0BAA0B,CAC1C,SAAS,EACT,IAAW,EACX,KAAK,EACL,mBAAmB,CAAC,MAAM,CAC3B,CAAC;QAEF,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAvDqB;IADnB,WAAW,EAAE;;;;0DAgBb;AAGmB;IADnB,WAAW,EAAE;;;;oDAqCb"}
1
+ {"version":3,"file":"UpdatePermission.js","sourceRoot":"","sources":["../../../../../../Server/Types/Database/Permissions/UpdatePermission.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,mBAAmB,MAAM,wCAAwC,CAAC;AAEzE,OAAO,iBAAiB,MAAM,2BAA2B,CAAC;AAC1D,OAAO,cAAgD,MAAM,kBAAkB,CAAC;AAChF,OAAO,iBAAiB,MAAM,oBAAoB,CAAC;AACnD,OAAO,kBAAkB,MAAM,qBAAqB,CAAC;AACrD,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAIhD,OAAO,WAAW,MAAM,sCAAsC,CAAC;AAE/D,MAAM,CAAC,OAAO,OAAO,gBAAgB;IAEf,AAAb,MAAM,CAAC,KAAK,CAAC,4BAA4B,CAE9C,IAID;QACC,MAAM,iBAAiB,CAAC,wCAAwC,iCACzD,IAAI,KAAE,IAAI,EAAE,mBAAmB,CAAC,MAAM,IAC5C,CAAC;QAEF,MAAM,iBAAiB,CAAC,mCAAmC,iCACtD,IAAI,KACP,IAAI,EAAE,mBAAmB,CAAC,MAAM,IAChC,CAAC;IACL,CAAC;IAGmB,AAAb,MAAM,CAAC,KAAK,CAAC,sBAAsB,CACxC,SAAiC,EACjC,KAAwB,EACxB,IAAwC,EACxC,KAAqC;QAErC;;;;;;;;;;;WAWG;QACH,IAAI,KAAK,CAAC,aAAa,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YACzC,kBAAkB,CAAC,uBAAuB,CACxC,SAAS,EACT,KAAK,EACL,mBAAmB,CAAC,MAAM,EAC1B,IAAI,CACL,CAAC;QACJ,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;YACxC,yDAAyD;YACzD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,eAAe,CAAC,0BAA0B,CACxC,SAAS,EACT,KAAK,EACL,mBAAmB,CAAC,MAAM,CAC3B,CAAC;QAEF,kBAAkB,CAAC,uBAAuB,CACxC,SAAS,EACT,KAAK,EACL,mBAAmB,CAAC,MAAM,EAC1B,IAAI,CACL,CAAC;QAEF,MAAM,mBAAmB,GACvB,MAAM,cAAc,CAAC,gBAAgB,CACnC,SAAS,EACT,KAAK,EACL,IAAI,EACJ,KAAK,EACL,mBAAmB,CAAC,MAAM,CAC3B,CAAC;QAEJ,KAAK,GAAG,mBAAmB,CAAC,KAAK,CAAC;QAElC,iBAAiB,CAAC,0BAA0B,CAC1C,SAAS,EACT,IAAW,EACX,KAAK,EACL,mBAAmB,CAAC,MAAM,CAC3B,CAAC;QAEF,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAnFqB;IADnB,WAAW,EAAE;;;;0DAgBb;AAGmB;IADnB,WAAW,EAAE;;;;oDAiEb"}
@@ -163,6 +163,37 @@ class Markdown {
163
163
  `word-break:break-word;${align || "text-align:left;"}">` +
164
164
  `${content}</${tag}>`);
165
165
  };
166
+ /*
167
+ * Lists. A platform monitor's root cause lists its affected resources
168
+ * as a numbered list with a bullet list of details nested under each
169
+ * item, and the cluster and metric details above it are bullets too.
170
+ *
171
+ * Left to the client, Gmail and Apple Mail indent every list level by
172
+ * 40px — close to a tenth of the card, twice over for a nested list —
173
+ * and Outlook's Word engine ignores padding on <ul>/<ol> and picks its
174
+ * own margins. So the indent is a margin-left, which Outlook honours,
175
+ * with padding zeroed: 24px holds a bullet, and 32px holds a numbered
176
+ * marker up to three digits ("100."). The vertical margins give each
177
+ * item's nested details a little air above and a gap below that
178
+ * separates it from the next item.
179
+ *
180
+ * margin-left is a physical side, so it is followed by the logical
181
+ * margin-inline-start / -end: a client that understands them moves
182
+ * the indent to the marker side in right-to-left text, and one that
183
+ * does not keeps the margin-left.
184
+ */
185
+ renderer.list = function (body, ordered, start) {
186
+ const tag = ordered ? "ol" : "ul";
187
+ const startAttribute = ordered && start !== "" && start !== 1 ? ` start="${start}"` : "";
188
+ const indent = ordered ? "32px" : "24px";
189
+ return (`<${tag}${startAttribute} style="margin:6px 0 12px 0;` +
190
+ `margin-left:${indent};margin-inline-start:${indent};` +
191
+ `margin-inline-end:0;padding:0;">` +
192
+ `${body}</${tag}>`);
193
+ };
194
+ renderer.listitem = function (text) {
195
+ return `<li style="margin:0 0 4px;padding:0;">${text}</li>`;
196
+ };
166
197
  /*
167
198
  * The root cause backticks metric names, aliases and timestamps. Left
168
199
  * bare they were indistinguishable from the prose around them.
@@ -1 +1 @@
1
- {"version":3,"file":"Markdown.js","sourceRoot":"","sources":["../../../../Server/Types/Markdown.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Markdown.js","sourceRoot":"","sources":["../../../../Server/Types/Markdown.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,223 @@
1
+ import EnterpriseEdition from "../Enterprise/EnterpriseEdition";
2
+ import EnterpriseFeature from "../Enterprise/EnterpriseFeature";
3
+ import { ENTERPRISE_LICENSE_GRACE_PERIOD_IN_DAYS, ENTERPRISE_LICENSE_TRIAL_PERIOD_IN_DAYS, } from "../Enterprise/EnterpriseLicenseSnapshot";
4
+ import GlobalConfigService from "../Services/GlobalConfigService";
5
+ import ProjectSCIMService from "../Services/ProjectSCIMService";
6
+ import ProjectService from "../Services/ProjectService";
7
+ import StatusPageService from "../Services/StatusPageService";
8
+ import logger from "./Logger";
9
+ // How many ids of each kind the log line names; the counts are always exact.
10
+ export const MAX_IDS_LISTED_PER_KIND = 20;
11
+ const COMMUNITY_CONTEXT = { reason: "community" };
12
+ /*
13
+ * Tells the operator which configured security settings this server is not
14
+ * enforcing, so that never happens silently:
15
+ *
16
+ * - Community Edition: moving from the Enterprise image to the Community
17
+ * one keeps the database as it is, so a project that required SSO still
18
+ * says so - but the SSO login routes are part of the Enterprise Edition,
19
+ * so the requirement is relaxed rather than locking everyone out. Logged
20
+ * once per process at boot.
21
+ * - Enterprise Edition: when the license lapses, SSO and SCIM stop and the
22
+ * same settings are relaxed until a license is activated. Logged each time
23
+ * SSO or SCIM stops (EnterpriseEdition reports each change once),
24
+ * including a license that has already lapsed at boot.
25
+ */
26
+ class CommunityEditionSsoReport {
27
+ /*
28
+ * Called once at boot, after the enterprise loader. On the Community
29
+ * Edition it logs the relaxed settings once per process. On the Enterprise
30
+ * Edition it starts watching the license (once per process) and reports
31
+ * whenever SSO or SCIM stops. Never throws: a failed check is logged and
32
+ * boot carries on. Returns what the Community Edition report found (null
33
+ * when it did not run or the check failed).
34
+ */
35
+ static async logRelaxedEnforcementOnce() {
36
+ if (EnterpriseEdition.isLoaded()) {
37
+ CommunityEditionSsoReport.watchLicenseOnce();
38
+ return null;
39
+ }
40
+ if (CommunityEditionSsoReport.hasRun) {
41
+ return null;
42
+ }
43
+ CommunityEditionSsoReport.hasRun = true;
44
+ return await CommunityEditionSsoReport.report(COMMUNITY_CONTEXT);
45
+ }
46
+ /*
47
+ * Collects and logs the relaxed settings. Never throws. Returns what it
48
+ * found (null when the check failed).
49
+ */
50
+ static async report(context) {
51
+ try {
52
+ const summary = await CommunityEditionSsoReport.collect();
53
+ const message = CommunityEditionSsoReport.describe(summary, context);
54
+ if (message) {
55
+ logger.warn(message);
56
+ }
57
+ return summary;
58
+ }
59
+ catch (err) {
60
+ logger.error(context.reason === "community"
61
+ ? "Community Edition: could not check for SSO requirements and SCIM team locks left over from an Enterprise Edition install."
62
+ : "OneUptime Enterprise license lapsed: could not check which SSO requirements and SCIM team locks are no longer enforced.");
63
+ logger.error(err);
64
+ return null;
65
+ }
66
+ }
67
+ /*
68
+ * Watches the Enterprise license for SSO or SCIM stopping, once per
69
+ * process. The first look happens here, so a license that has already
70
+ * lapsed at boot is reported like a lapse at runtime.
71
+ */
72
+ static watchLicenseOnce() {
73
+ if (CommunityEditionSsoReport.stopWatchingLicense) {
74
+ return;
75
+ }
76
+ CommunityEditionSsoReport.stopWatchingLicense =
77
+ EnterpriseEdition.onFeatureStateChange((change) => {
78
+ CommunityEditionSsoReport.onFeatureStateChange(change);
79
+ });
80
+ try {
81
+ EnterpriseEdition.isFeatureActive(EnterpriseFeature.SSO);
82
+ EnterpriseEdition.isFeatureActive(EnterpriseFeature.SCIM);
83
+ }
84
+ catch (err) {
85
+ logger.error(err);
86
+ }
87
+ }
88
+ static onFeatureStateChange(change) {
89
+ const isSsoRelaxed = change.stopped.includes(EnterpriseFeature.SSO);
90
+ const isScimRelaxed = change.stopped.includes(EnterpriseFeature.SCIM);
91
+ if (!isSsoRelaxed && !isScimRelaxed) {
92
+ return;
93
+ }
94
+ void CommunityEditionSsoReport.report({
95
+ reason: "lapsed-license",
96
+ isSsoRelaxed,
97
+ isScimRelaxed,
98
+ });
99
+ }
100
+ // Reads the stored (not the masked) settings. Root reads are never masked.
101
+ static async collect() {
102
+ const [instanceRequiresSso, projectCount, projects, statusPageCount, statusPages, scimCount, scimConfigurations,] = await Promise.all([
103
+ GlobalConfigService.getRequireSsoForLogin(),
104
+ ProjectService.countBy({
105
+ query: { requireSsoForLogin: true },
106
+ props: { isRoot: true },
107
+ }),
108
+ ProjectService.findBy({
109
+ query: { requireSsoForLogin: true },
110
+ select: { _id: true },
111
+ limit: MAX_IDS_LISTED_PER_KIND,
112
+ skip: 0,
113
+ props: { isRoot: true },
114
+ }),
115
+ StatusPageService.countBy({
116
+ query: { requireSsoForLogin: true },
117
+ props: { isRoot: true },
118
+ }),
119
+ StatusPageService.findBy({
120
+ query: { requireSsoForLogin: true },
121
+ select: { _id: true },
122
+ limit: MAX_IDS_LISTED_PER_KIND,
123
+ skip: 0,
124
+ props: { isRoot: true },
125
+ }),
126
+ ProjectSCIMService.countBy({
127
+ query: { enablePushGroups: true },
128
+ props: { isRoot: true },
129
+ }),
130
+ ProjectSCIMService.findBy({
131
+ query: { enablePushGroups: true },
132
+ select: { projectId: true },
133
+ limit: MAX_IDS_LISTED_PER_KIND,
134
+ skip: 0,
135
+ props: { isRoot: true },
136
+ }),
137
+ ]);
138
+ return {
139
+ instanceRequiresSso: Boolean(instanceRequiresSso),
140
+ projectsRequiringSso: projectCount.toNumber(),
141
+ projectIdsRequiringSso: CommunityEditionSsoReport.toIds(projects.map((project) => {
142
+ var _a, _b;
143
+ return ((_a = project.id) === null || _a === void 0 ? void 0 : _a.toString()) || ((_b = project._id) === null || _b === void 0 ? void 0 : _b.toString());
144
+ })),
145
+ statusPagesRequiringSso: statusPageCount.toNumber(),
146
+ statusPageIdsRequiringSso: CommunityEditionSsoReport.toIds(statusPages.map((statusPage) => {
147
+ var _a, _b;
148
+ return ((_a = statusPage.id) === null || _a === void 0 ? void 0 : _a.toString()) || ((_b = statusPage._id) === null || _b === void 0 ? void 0 : _b.toString());
149
+ })),
150
+ scimConfigurationsWithPushGroups: scimCount.toNumber(),
151
+ projectIdsWithScimPushGroups: CommunityEditionSsoReport.toIds(scimConfigurations.map((scim) => {
152
+ var _a;
153
+ return (_a = scim.projectId) === null || _a === void 0 ? void 0 : _a.toString();
154
+ })),
155
+ };
156
+ }
157
+ // The log line, or null when nothing is relaxed.
158
+ static describe(summary, context = COMMUNITY_CONTEXT) {
159
+ const isSsoRelaxed = context.reason === "community" || context.isSsoRelaxed;
160
+ const isScimRelaxed = context.reason === "community" || context.isScimRelaxed;
161
+ const relaxed = [];
162
+ if (isSsoRelaxed && summary.instanceRequiresSso) {
163
+ relaxed.push('the instance-wide "Require SSO for Login" setting (Admin Dashboard > Settings > Authentication)');
164
+ }
165
+ if (isSsoRelaxed && summary.projectsRequiringSso > 0) {
166
+ relaxed.push(`${summary.projectsRequiringSso} project(s) that require SSO for login${CommunityEditionSsoReport.describeIds(summary.projectIdsRequiringSso, summary.projectsRequiringSso)}`);
167
+ }
168
+ if (isSsoRelaxed && summary.statusPagesRequiringSso > 0) {
169
+ relaxed.push(`${summary.statusPagesRequiringSso} private status page(s) that require SSO for login${CommunityEditionSsoReport.describeIds(summary.statusPageIdsRequiringSso, summary.statusPagesRequiringSso)}`);
170
+ }
171
+ if (isScimRelaxed && summary.scimConfigurationsWithPushGroups > 0) {
172
+ relaxed.push(`${summary.scimConfigurationsWithPushGroups} SCIM configuration(s) with Push Groups on, whose teams can be edited in OneUptime again${CommunityEditionSsoReport.describeIds(summary.projectIdsWithScimPushGroups, summary.scimConfigurationsWithPushGroups, "project ids")}`);
173
+ }
174
+ if (relaxed.length === 0) {
175
+ return null;
176
+ }
177
+ if (context.reason === "lapsed-license") {
178
+ const stopped = isSsoRelaxed && isScimRelaxed
179
+ ? "SSO login and SCIM provisioning have"
180
+ : isSsoRelaxed
181
+ ? "SSO login has"
182
+ : "SCIM provisioning has";
183
+ return ("OneUptime Enterprise license lapsed: this server has security settings that it no longer enforces, " +
184
+ `because ${stopped} stopped until a license that includes ${isSsoRelaxed && isScimRelaxed ? "them" : "it"} is activated. ` +
185
+ (isSsoRelaxed
186
+ ? "Users of these projects and status pages sign in with email and password instead (users who only ever signed in with SSO can reset their password). "
187
+ : "") +
188
+ `Not enforced: ${relaxed.join("; ")}. ` +
189
+ "The settings are kept unchanged and are enforced again as soon as a license is activated, without a restart.");
190
+ }
191
+ return ("Community Edition: this server has security settings from an Enterprise Edition install that it does not enforce, " +
192
+ "because SSO login and SCIM provisioning are part of the OneUptime Enterprise Edition. " +
193
+ "Users of these projects and status pages sign in with email and password instead. " +
194
+ `Not enforced: ${relaxed.join("; ")}. ` +
195
+ `The settings are kept unchanged and are enforced again when this server runs the Enterprise Edition image with a valid license (or during its ${ENTERPRISE_LICENSE_TRIAL_PERIOD_IN_DAYS}-day trial, or the ${ENTERPRISE_LICENSE_GRACE_PERIOD_IN_DAYS}-day grace period after a license expires).`);
196
+ }
197
+ // Test suites only: allow the next call to run again and stop watching.
198
+ static resetForTests() {
199
+ CommunityEditionSsoReport.hasRun = false;
200
+ if (CommunityEditionSsoReport.stopWatchingLicense) {
201
+ CommunityEditionSsoReport.stopWatchingLicense();
202
+ CommunityEditionSsoReport.stopWatchingLicense = null;
203
+ }
204
+ }
205
+ static toIds(values) {
206
+ return values
207
+ .filter((value) => {
208
+ return Boolean(value);
209
+ })
210
+ .slice(0, MAX_IDS_LISTED_PER_KIND);
211
+ }
212
+ static describeIds(ids, total, label = "ids") {
213
+ if (ids.length === 0) {
214
+ return "";
215
+ }
216
+ const more = total > ids.length ? ` and ${total - ids.length} more` : "";
217
+ return ` (${label}: ${ids.join(", ")}${more})`;
218
+ }
219
+ }
220
+ CommunityEditionSsoReport.hasRun = false;
221
+ CommunityEditionSsoReport.stopWatchingLicense = null;
222
+ export default CommunityEditionSsoReport;
223
+ //# sourceMappingURL=CommunityEditionSsoReport.js.map