@oneuptime/common 12.0.12 → 12.0.14
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.
- package/Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel.ts +32 -5
- package/Models/DatabaseModels/NetworkDevice.ts +64 -0
- package/Models/DatabaseModels/OnCallDutyPolicySchedule.ts +14 -0
- package/Models/DatabaseModels/StatusPage.ts +59 -0
- package/Models/DatabaseModels/StatusPageOidc.ts +2 -0
- package/Models/DatabaseModels/UserCall.ts +94 -3
- package/Models/DatabaseModels/UserEmail.ts +94 -3
- package/Models/DatabaseModels/UserIncomingCallNumber.ts +94 -3
- package/Models/DatabaseModels/UserPush.ts +37 -0
- package/Models/DatabaseModels/UserSMS.ts +94 -3
- package/Models/DatabaseModels/UserWhatsApp.ts +93 -2
- package/Models/DatabaseModels/WorkspaceProjectAuthToken.ts +19 -2
- package/Server/API/AIChatAPI.ts +55 -56
- package/Server/API/BaseAPI.ts +79 -14
- package/Server/API/CommonAPI.ts +89 -0
- package/Server/API/MicrosoftTeamsAPI.ts +20 -9
- package/Server/API/SlackAPI.ts +13 -10
- package/Server/API/StatusPageAPI.ts +2197 -2128
- package/Server/API/TelemetryAPI.ts +72 -3
- package/Server/API/UserCallAPI.ts +53 -45
- package/Server/API/UserEmailAPI.ts +53 -44
- package/Server/API/UserIncomingCallNumberAPI.ts +48 -38
- package/Server/API/UserNotificationMethodAdminAPI.ts +481 -0
- package/Server/API/UserPushAPI.ts +126 -2
- package/Server/API/UserSmsAPI.ts +53 -44
- package/Server/API/UserWhatsAppAPI.ts +53 -50
- package/Server/Infrastructure/Postgres/SchemaMigrations/1787142779538-MigrationName.ts +154 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1787156982416-MigrationName.ts +17 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1787500000000-AddEnableSearchEngineIndexingToStatusPage.ts +30 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1787600000000-AddNetworkDeviceReachabilityColumns.ts +47 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1787700000000-FixTotpOtpUrlAlgorithm.ts +45 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +10 -0
- package/Server/Middleware/UserAuthorization.ts +11 -2
- package/Server/Middleware/VerificationCodeRateLimit.ts +586 -0
- package/Server/Services/AnalyticsDatabaseService.ts +169 -0
- package/Server/Services/ApiKeyPermissionService.ts +116 -2
- package/Server/Services/DatabaseService.ts +118 -6
- package/Server/Services/LogAggregationService.ts +39 -0
- package/Server/Services/LogService.ts +21 -0
- package/Server/Services/NetworkSiteService.ts +12 -0
- package/Server/Services/PushNotificationService.ts +127 -12
- package/Server/Services/SpanService.ts +21 -0
- package/Server/Services/TeamMemberService.ts +53 -13
- package/Server/Services/TraceAggregationService.ts +15 -0
- package/Server/Services/UserCallService.ts +55 -24
- package/Server/Services/UserEmailService.ts +83 -17
- package/Server/Services/UserIncomingCallNumberService.ts +49 -85
- package/Server/Services/UserNotificationMethodAdminService.ts +1527 -0
- package/Server/Services/UserNotificationRuleService.ts +26 -0
- package/Server/Services/UserPushService.ts +89 -0
- package/Server/Services/UserSmsService.ts +50 -17
- package/Server/Services/UserWhatsAppService.ts +48 -15
- package/Server/Services/WorkspaceNotificationRuleService.ts +172 -220
- package/Server/Types/AnalyticsDatabase/ModelPermission.ts +9 -0
- package/Server/Types/Database/Permissions/AccessControlPermission.ts +47 -16
- package/Server/Types/Database/QueryHelper.ts +30 -0
- package/Server/Utils/APIKey/AccessPermission.ts +16 -40
- package/Server/Utils/AnalyticsDatabase/QuerySettingsHelper.ts +59 -0
- package/Server/Utils/AnalyticsDatabase/StatementGenerator.ts +144 -0
- package/Server/Utils/ChannelVerification.ts +510 -0
- package/Server/Utils/LogRedaction.ts +576 -0
- package/Server/Utils/Logger.ts +123 -46
- package/Server/Utils/Monitor/Criteria/IncomingRequestCriteria.ts +13 -16
- package/Server/Utils/Monitor/Criteria/SSLMonitorCriteria.ts +94 -23
- package/Server/Utils/Monitor/MonitorAlert.ts +24 -21
- package/Server/Utils/Monitor/MonitorIncident.ts +21 -18
- package/Server/Utils/Monitor/MonitorResource.ts +29 -9
- package/Server/Utils/Monitor/MonitorResourceContext.ts +107 -0
- package/Server/Utils/Monitor/MonitorStepResourceIdentity.ts +442 -0
- package/Server/Utils/Monitor/NetworkInventoryUtil.ts +28 -7
- package/Server/Utils/Monitor/SeriesResourceLabels.ts +3 -3
- package/Server/Utils/Monitor/SeriesResourceLinker.ts +96 -28
- package/Server/Utils/SessionReplay/SessionReplayGateCacheStore.ts +56 -10
- package/Server/Utils/StartServer.ts +30 -9
- package/Server/Utils/StatusPageSearchEngineIndexing.ts +33 -0
- package/Server/Utils/Telemetry/ResourceEntityFilter.ts +441 -0
- package/Server/Utils/TotpAuth.ts +137 -9
- package/Server/Utils/UserRegistrationToken.ts +182 -0
- package/Server/Utils/VerificationCode.ts +134 -0
- package/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.ts +488 -46
- package/Tests/App/Dashboard/AdminNotificationRulesPage.test.tsx +173 -94
- package/Tests/App/Dashboard/AdminUserNotificationMethodsPage.test.tsx +1151 -0
- package/Tests/App/Dashboard/AdminUserOnCallPages.test.tsx +905 -0
- package/Tests/App/Dashboard/DashboardCommandPalette.test.tsx +338 -0
- package/Tests/App/Dashboard/InvestigationPanel.test.tsx +1 -1
- package/Tests/App/Dashboard/MonitorTypePicker.test.tsx +328 -0
- package/Tests/App/StatusPage/StatusPageIndexPageRobotsMeta.test.ts +130 -0
- package/Tests/Models/DatabaseModels/DatabaseBaseModelToJSONObjectCache.test.ts +180 -0
- package/Tests/Models/StatusPageEnableSearchEngineIndexing.test.ts +157 -0
- package/Tests/Models/UserPushCriticalAlertColumn.test.ts +172 -0
- package/Tests/Server/API/AIChatCancelAndFeedback.test.ts +23 -1
- package/Tests/Server/API/AIChatRouteAuthorization.test.ts +785 -0
- package/Tests/Server/API/BaseAPIApiKeyAuth.test.ts +21 -8
- package/Tests/Server/API/BaseAPIGetListParallel.test.ts +519 -0
- package/Tests/Server/API/CommonAPIAuthGuard.test.ts +290 -0
- package/Tests/Server/API/MicrosoftTeamsManifest.test.ts +7 -1
- package/Tests/Server/API/NotificationChannelVerificationAPI.test.ts +543 -0
- package/Tests/Server/API/StatusPageOverviewCache.test.ts +474 -0
- package/Tests/Server/API/StatusPageSeoSearchEngineIndexing.test.ts +189 -0
- package/Tests/Server/API/UserIncomingCallNumberApi.test.ts +108 -18
- package/Tests/Server/API/UserNotificationMethodAdminAPI.test.ts +963 -0
- package/Tests/Server/API/UserPushCriticalAlertsApi.test.ts +114 -0
- package/Tests/Server/API/UserSmsApi.test.ts +107 -14
- package/Tests/Server/API/UserTotpAuthAPI.test.ts +427 -0
- package/Tests/Server/Infrastructure/InMemoryTTLCache.test.ts +158 -0
- package/Tests/Server/Infrastructure/Postgres/DeviceRoleAndDeclaredLinkParentMigration.test.ts +9 -60
- package/Tests/Server/Infrastructure/Postgres/FixTotpOtpUrlAlgorithmMigration.test.ts +315 -0
- package/Tests/Server/Middleware/ProjectAuthorizationApiKeyMiddleware.test.ts +24 -15
- package/Tests/Server/Middleware/UserAuthorization.test.ts +79 -0
- package/Tests/Server/Middleware/VerificationCodeRateLimit.test.ts +775 -0
- package/Tests/Server/Services/AddNetworkDeviceReachabilityColumnsMigration.test.ts +280 -0
- package/Tests/Server/Services/AnalyticsDatabasePaginationStability.test.ts +33 -13
- package/Tests/Server/Services/AnalyticsDatabaseSortKeyBoundary.test.ts +658 -0
- package/Tests/Server/Services/ApiKeyPermissionService.test.ts +347 -0
- package/Tests/Server/Services/CriticalOnCallAlertDelivery.test.ts +458 -0
- package/Tests/Server/Services/CriticalPushAlertPayload.test.ts +301 -0
- package/Tests/Server/Services/DatabaseServiceAtomicIncrement.test.ts +143 -0
- package/Tests/Server/Services/DatabaseServiceUpdateDebugLogging.test.ts +282 -0
- package/Tests/Server/Services/DeliverNotificationForRuleExtraction.test.ts +1 -0
- package/Tests/Server/Services/LogAggregationScanMemory.test.ts +421 -0
- package/Tests/Server/Services/LogAggregationService.test.ts +2 -2
- package/Tests/Server/Services/NetworkSiteService.test.ts +56 -2
- package/Tests/Server/Services/NotificationChannelCodeIssuance.test.ts +401 -0
- package/Tests/Server/Services/PushNotificationDeliveryOptions.test.ts +204 -0
- package/Tests/Server/Services/TeamMemberAutoAcceptInvitation.test.ts +21 -1
- package/Tests/Server/Services/TeamMemberInviteRegistrationToken.test.ts +290 -0
- package/Tests/Server/Services/TelemetryResourceFacetFilters.test.ts +267 -0
- package/Tests/Server/Services/UserNotificationMethodAdminService.test.ts +948 -0
- package/Tests/Server/Services/UserNotificationRuleExecuteItem.test.ts +1 -0
- package/Tests/Server/Services/UserPushCriticalAlertToggle.test.ts +255 -0
- package/Tests/Server/Services/UserTotpAuthEnrolment.test.ts +218 -0
- package/Tests/Server/Services/WorkspaceNotificationRuleTestRuleChannels.test.ts +702 -0
- package/Tests/Server/TestingUtils/AuthenticatorApp.ts +248 -0
- package/Tests/Server/Types/Database/Permissions/AccessControlPermission.test.ts +165 -0
- package/Tests/Server/Types/Database/Permissions/NotificationChannelVerificationColumns.test.ts +135 -0
- package/Tests/Server/Types/Database/Permissions/OnCallScheduleRelationSelect.test.ts +504 -0
- package/Tests/Server/Types/Database/QueryHelperFindWithSameTextAnyOf.test.ts +91 -0
- package/Tests/Server/Types/Workflow/Components/JsonToText.test.ts +384 -0
- package/Tests/Server/Types/Workflow/Components/MergeJson.test.ts +403 -0
- package/Tests/Server/Utils/APIKey/AccessPermission.test.ts +48 -36
- package/Tests/Server/Utils/AnalyticsDatabase/StatementGenerator.test.ts +213 -0
- package/Tests/Server/Utils/Browser.test.ts +162 -0
- package/Tests/Server/Utils/ChannelVerification.test.ts +689 -0
- package/Tests/Server/Utils/Express.test.ts +371 -0
- package/Tests/Server/Utils/LogRedaction.test.ts +415 -0
- package/Tests/Server/Utils/LoggerCredentialLeak.test.ts +245 -0
- package/Tests/Server/Utils/Monitor/Criteria/CustomCodeMonitorCriteria.test.ts +707 -0
- package/Tests/Server/Utils/Monitor/Criteria/DnsMonitorCriteria.test.ts +698 -0
- package/Tests/Server/Utils/Monitor/Criteria/IncomingEmailBodyCriteria.test.ts +243 -0
- package/Tests/Server/Utils/Monitor/Criteria/IncomingRequestBodyCriteria.test.ts +278 -0
- package/Tests/Server/Utils/Monitor/Criteria/SSLMonitorCriteria.test.ts +374 -4
- package/Tests/Server/Utils/Monitor/MonitorAlertResourceLinking.test.ts +160 -20
- package/Tests/Server/Utils/Monitor/MonitorDependencySuppressionCreatorSkip.test.ts +13 -8
- package/Tests/Server/Utils/Monitor/MonitorIncidentResourceLinking.test.ts +162 -18
- package/Tests/Server/Utils/Monitor/MonitorResourceContext.test.ts +349 -0
- package/Tests/Server/Utils/Monitor/MonitorResourceIngestedStepSelection.test.ts +455 -0
- package/Tests/Server/Utils/Monitor/MonitorStepResourceIdentity.test.ts +690 -0
- package/Tests/Server/Utils/Monitor/MonitorSummaryPersistence.test.ts +7 -2
- package/Tests/Server/Utils/Monitor/NetworkDeviceReachabilityRoundTrip.test.ts +369 -0
- package/Tests/Server/Utils/Monitor/NetworkInventoryUtil.test.ts +86 -8
- package/Tests/Server/Utils/Monitor/SeriesResourceLinker.test.ts +92 -18
- package/Tests/Server/Utils/PrivacyFilterUtil.test.ts +64 -0
- package/Tests/Server/Utils/PushNotificationUtilCreators.test.ts +267 -0
- package/Tests/Server/Utils/SessionReplay/SessionReplayGateCacheStore.test.ts +207 -0
- package/Tests/Server/Utils/StartServerBodyVerify.test.ts +335 -0
- package/Tests/Server/Utils/StatusPageSearchEngineIndexing.test.ts +60 -0
- package/Tests/Server/Utils/Telemetry/OneuptimeLabel.test.ts +439 -0
- package/Tests/Server/Utils/Telemetry/ResourceEntityFilter.test.ts +435 -0
- package/Tests/Server/Utils/TotpAuth.test.ts +719 -0
- package/Tests/Server/Utils/UserRegistrationToken.test.ts +322 -0
- package/Tests/Server/Utils/VerificationCode.test.ts +296 -0
- package/Tests/Server/Utils/Workspace/MicrosoftTeamsChannelSend.test.ts +607 -62
- package/Tests/Server/Utils/Workspace/MicrosoftTeamsInstalledTeamIdSpace.test.ts +778 -0
- package/Tests/Server/Utils/Workspace/MicrosoftTeamsTeamInstalls.test.ts +44 -10
- package/Tests/Types/API/HostnameFromAuthority.test.ts +164 -0
- package/Tests/Types/AutoRemediation/AutoRemediationSuggestionStatus.test.ts +192 -0
- package/Tests/Types/Call/CallRequest.test.ts +189 -0
- package/Tests/Types/Dashboard/DashboardSize.test.ts +226 -0
- package/Tests/Types/Database/AccessControl/ColumnAccessControlCache.test.ts +344 -0
- package/Tests/Types/Database/DatabasePropertyFindOperator.test.ts +518 -0
- package/Tests/Types/Database/TableColumnMetadataCache.test.ts +286 -0
- package/Tests/Types/Incident/IncidentSlaStatus.test.ts +191 -0
- package/Tests/Types/Metrics/MetricDashboardMetricType.test.ts +278 -0
- package/Tests/Types/Metrics/MetricPipelineRuleType.test.ts +517 -0
- package/Tests/Types/Monitor/IncomingMonitorDefaultCriteria.test.ts +470 -0
- package/Tests/Types/Monitor/MonitorCriteriaInstance.test.ts +6 -4
- package/Tests/Types/Monitor/MonitorStep.test.ts +100 -0
- package/Tests/Types/Monitor/MonitorTypeKeywords.test.ts +360 -0
- package/Tests/Types/Monitor/Recommendation/MonitorRecommendationCatalog.test.ts +262 -5
- package/Tests/Types/Monitor/Recommendation/MonitorRecommendationCoverage.test.ts +1 -1
- package/Tests/Types/Monitor/Recommendation/MonitorRecommendationNotificationMode.test.ts +1 -1
- package/Tests/Types/Monitor/ServiceAlertTemplates.test.ts +905 -0
- package/Tests/Types/Service/ServiceLanguage.test.ts +255 -0
- package/Tests/Types/StatusPage/SearchEngineIndexing.test.ts +86 -0
- package/Tests/Types/Telemetry/ResourceEntityFacet.test.ts +254 -0
- package/Tests/Types/TextRandomGeneration.test.ts +211 -0
- package/Tests/UI/Components/Button.test.tsx +175 -1
- package/Tests/UI/Components/CardSelect.test.tsx +1021 -0
- package/Tests/UI/Components/CodeBlockLanguages.test.tsx +236 -0
- package/Tests/UI/Components/CommandPalette/CommandPalette.test.tsx +568 -0
- package/Tests/UI/Components/CommandPalette/CommandPaletteKeyboard.test.tsx +239 -0
- package/Tests/UI/Components/CommandPalette/CommandPaletteProviders.test.tsx +400 -0
- package/Tests/UI/Components/CommandPalette/PaletteFilter.test.ts +234 -0
- package/Tests/UI/Components/CommandPalette/RecentCommands.test.ts +97 -0
- package/Tests/UI/Components/CountModelSideMenuItemGuard.test.tsx +198 -0
- package/Tests/UI/Components/FeedItemSafeMode.test.tsx +1 -1
- package/Tests/UI/Components/Forms/Utils/FormFieldSchemaTypeUtil.test.ts +267 -0
- package/Tests/UI/Components/List.test.tsx +9 -2
- package/Tests/UI/Components/ListLoadingStates.test.tsx +173 -0
- package/Tests/UI/Components/MarkdownLazy.test.tsx +113 -0
- package/Tests/UI/Components/MarkdownMermaidRetry.test.tsx +110 -0
- package/Tests/UI/Components/MasterPage.test.tsx +36 -1
- package/Tests/UI/Components/ModelTable/useCustomFieldColumns.test.tsx +8 -0
- package/Tests/UI/Components/MonitorTemplateVariables/TemplateVariablesCatalog.test.ts +692 -0
- package/Tests/UI/Components/MoreMenuMotion.test.tsx +118 -0
- package/Tests/UI/Components/NavBarCommandKGating.test.tsx +178 -0
- package/Tests/UI/Components/OrderedStatesList.test.tsx +19 -2
- package/Tests/UI/Components/SideOverMotion.test.tsx +109 -0
- package/Tests/UI/Components/Skeleton.test.tsx +71 -0
- package/Tests/UI/Components/TableLoadingStates.test.tsx +279 -0
- package/Tests/UI/Components/Tabs.test.tsx +24 -0
- package/Tests/UI/Components/Toast.test.tsx +130 -7
- package/Tests/UI/Components/ToastStacking.test.tsx +198 -0
- package/Tests/UI/Utils/Dropdown.test.ts +423 -0
- package/Tests/UI/Utils/ModelAPITenantHeader.test.ts +122 -0
- package/Tests/UI/Utils/ModelListCache.test.ts +338 -0
- package/Tests/UI/Utils/ProjectListCacheInvalidation.test.ts +225 -0
- package/Tests/Utils/API.test.ts +16 -2
- package/Tests/Utils/Dashboard/Components/DashboardKubernetesResourceListShared.test.ts +347 -0
- package/Tests/Utils/Dashboard/Components/DashboardListSharedArgs.test.ts +259 -0
- package/Tests/Utils/Dashboard/Components/DashboardMonitorListComponent.test.ts +466 -0
- package/Tests/Utils/Monitor/MonitorMetricType.test.ts +66 -1
- package/Tests/Utils/Monitor/NetworkTopologyUtil.test.ts +115 -6
- package/Tests/Utils/NetworkDevice/DeviceReachabilityUtil.test.ts +610 -0
- package/Tests/Utils/NetworkSite/SiteStatusRollupUtil.test.ts +114 -45
- package/Tests/Utils/Rum/UrlScrubberSegments.test.ts +362 -0
- package/Types/API/Hostname.ts +79 -0
- package/Types/Database/AccessControl/ColumnAccessControl.ts +33 -11
- package/Types/Database/AccessControl/ColumnBillingAccessControl.ts +33 -11
- package/Types/Database/DatabaseProperty.ts +38 -0
- package/Types/Database/TableColumn.ts +34 -7
- package/Types/Email/EmailTemplateType.ts +1 -0
- package/Types/Events/Recurring.ts +16 -1
- package/Types/Monitor/MonitorCriteriaInstance.ts +41 -20
- package/Types/Monitor/MonitorStep.ts +13 -1
- package/Types/Monitor/MonitorType.ts +345 -40
- package/Types/Monitor/Recommendation/MonitorRecommendationCatalog.ts +131 -8
- package/Types/Monitor/Recommendation/MonitorRecommendationTypes.ts +48 -8
- package/Types/Monitor/SSLMonitor/SslMonitorResponse.ts +43 -0
- package/Types/Monitor/ServiceAlertTemplates.ts +1352 -0
- package/Types/Permission.ts +35 -0
- package/Types/PushNotification/AndroidNotificationChannel.ts +26 -0
- package/Types/PushNotification/PushNotificationMessage.ts +15 -0
- package/Types/PushNotification/PushNotificationRequest.ts +8 -16
- package/Types/Service/ServiceLanguage.ts +144 -0
- package/Types/StatusPage/SearchEngineIndexing.ts +61 -0
- package/Types/Telemetry/ResourceEntityFacet.ts +211 -0
- package/Types/Text.ts +111 -19
- package/UI/Components/Button/Button.tsx +27 -14
- package/UI/Components/CardSelect/CardSelect.tsx +714 -105
- package/UI/Components/CodeBlock/CodeBlock.tsx +54 -7
- package/UI/Components/CodeBlock/LanguageRegistry.ts +103 -0
- package/UI/Components/CommandPalette/CommandPalette.tsx +790 -0
- package/UI/Components/CommandPalette/PaletteFilter.ts +196 -0
- package/UI/Components/CommandPalette/PaletteRow.tsx +173 -0
- package/UI/Components/CommandPalette/RecentCommands.ts +57 -0
- package/UI/Components/CommandPalette/Types.ts +49 -0
- package/UI/Components/CommandPalette/UseProviderSearch.ts +129 -0
- package/UI/Components/Dropdown/Dropdown.tsx +6 -1
- package/UI/Components/EmptyState/EmptyState.tsx +8 -1
- package/UI/Components/Feed/FeedItem.tsx +1 -1
- package/UI/Components/Footer/Footer.tsx +32 -6
- package/UI/Components/Forms/Fields/FormField.tsx +3 -0
- package/UI/Components/Forms/Types/Field.ts +8 -0
- package/UI/Components/List/List.tsx +37 -5
- package/UI/Components/List/ListSkeleton.tsx +54 -0
- package/UI/Components/Loader/PageLoader.tsx +29 -8
- package/UI/Components/LogsViewer/components/LogsAnalyticsView.tsx +26 -4
- package/UI/Components/Markdown.tsx/LazyMarkdownViewer.tsx +23 -2
- package/UI/Components/Markdown.tsx/MarkdownViewer.tsx +71 -26
- package/UI/Components/MasterPage/MasterPage.tsx +24 -11
- package/UI/Components/Modal/Modal.tsx +2 -2
- package/UI/Components/ModelTable/BaseModelTable.tsx +1 -1
- package/UI/Components/ModelTable/useCustomFieldColumns.ts +11 -5
- package/UI/Components/MoreMenu/MoreMenu.tsx +39 -1
- package/UI/Components/Navbar/NavBar.tsx +14 -1
- package/UI/Components/OrderedStatesList/OrderedStatesList.tsx +50 -5
- package/UI/Components/SideMenu/CountModelSideMenuItem.tsx +40 -1
- package/UI/Components/SideOver/SideOver.tsx +37 -2
- package/UI/Components/Skeleton/Skeleton.tsx +53 -0
- package/UI/Components/Table/Table.tsx +74 -44
- package/UI/Components/Table/TableSkeletonRows.tsx +141 -0
- package/UI/Components/Tabs/Tab.tsx +1 -1
- package/UI/Components/Toast/Toast.tsx +118 -53
- package/UI/Components/Toast/ToastInit.tsx +82 -32
- package/UI/Styles/Theme.css +40 -0
- package/UI/Utils/ModelAPI/ModelAPI.ts +20 -10
- package/UI/Utils/ModelListCache.ts +188 -0
- package/UI/Utils/Project.ts +29 -0
- package/Utils/API.ts +6 -1
- package/Utils/Monitor/MonitorMetricType.ts +16 -1
- package/Utils/Monitor/NetworkTopologyUtil.ts +60 -8
- package/Utils/NetworkDevice/DeviceReachabilityUtil.ts +262 -0
- package/Utils/NetworkSite/SiteStatusRollupUtil.ts +41 -24
- package/Utils/Telemetry/CrossSignalScope.ts +75 -4
- package/build/dist/Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel.js +20 -4
- package/build/dist/Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkDevice.js +66 -0
- package/build/dist/Models/DatabaseModels/NetworkDevice.js.map +1 -1
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicySchedule.js +14 -0
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicySchedule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/StatusPage.js +60 -0
- package/build/dist/Models/DatabaseModels/StatusPage.js.map +1 -1
- package/build/dist/Models/DatabaseModels/StatusPageOidc.js +2 -0
- package/build/dist/Models/DatabaseModels/StatusPageOidc.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserCall.js +101 -3
- package/build/dist/Models/DatabaseModels/UserCall.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserEmail.js +101 -3
- package/build/dist/Models/DatabaseModels/UserEmail.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserIncomingCallNumber.js +101 -3
- package/build/dist/Models/DatabaseModels/UserIncomingCallNumber.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserPush.js +38 -0
- package/build/dist/Models/DatabaseModels/UserPush.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserSMS.js +101 -3
- package/build/dist/Models/DatabaseModels/UserSMS.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserWhatsApp.js +100 -2
- package/build/dist/Models/DatabaseModels/UserWhatsApp.js.map +1 -1
- package/build/dist/Models/DatabaseModels/WorkspaceProjectAuthToken.js.map +1 -1
- package/build/dist/Server/API/AIChatAPI.js +48 -35
- package/build/dist/Server/API/AIChatAPI.js.map +1 -1
- package/build/dist/Server/API/BaseAPI.js +69 -13
- package/build/dist/Server/API/BaseAPI.js.map +1 -1
- package/build/dist/Server/API/CommonAPI.js +59 -0
- package/build/dist/Server/API/CommonAPI.js.map +1 -1
- package/build/dist/Server/API/MicrosoftTeamsAPI.js +20 -6
- package/build/dist/Server/API/MicrosoftTeamsAPI.js.map +1 -1
- package/build/dist/Server/API/SlackAPI.js +13 -10
- package/build/dist/Server/API/SlackAPI.js.map +1 -1
- package/build/dist/Server/API/StatusPageAPI.js +745 -673
- package/build/dist/Server/API/StatusPageAPI.js.map +1 -1
- package/build/dist/Server/API/TelemetryAPI.js +34 -3
- package/build/dist/Server/API/TelemetryAPI.js.map +1 -1
- package/build/dist/Server/API/UserCallAPI.js +42 -38
- package/build/dist/Server/API/UserCallAPI.js.map +1 -1
- package/build/dist/Server/API/UserEmailAPI.js +42 -38
- package/build/dist/Server/API/UserEmailAPI.js.map +1 -1
- package/build/dist/Server/API/UserIncomingCallNumberAPI.js +37 -32
- package/build/dist/Server/API/UserIncomingCallNumberAPI.js.map +1 -1
- package/build/dist/Server/API/UserNotificationMethodAdminAPI.js +341 -0
- package/build/dist/Server/API/UserNotificationMethodAdminAPI.js.map +1 -0
- package/build/dist/Server/API/UserPushAPI.js +95 -2
- package/build/dist/Server/API/UserPushAPI.js.map +1 -1
- package/build/dist/Server/API/UserSmsAPI.js +42 -38
- package/build/dist/Server/API/UserSmsAPI.js.map +1 -1
- package/build/dist/Server/API/UserWhatsAppAPI.js +42 -40
- package/build/dist/Server/API/UserWhatsAppAPI.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787142779538-MigrationName.js +89 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787142779538-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787156982416-MigrationName.js +12 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787156982416-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787500000000-AddEnableSearchEngineIndexingToStatusPage.js +23 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787500000000-AddEnableSearchEngineIndexingToStatusPage.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787600000000-AddNetworkDeviceReachabilityColumns.js +34 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787600000000-AddNetworkDeviceReachabilityColumns.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787700000000-FixTotpOtpUrlAlgorithm.js +40 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787700000000-FixTotpOtpUrlAlgorithm.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +10 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Middleware/UserAuthorization.js +6 -2
- package/build/dist/Server/Middleware/UserAuthorization.js.map +1 -1
- package/build/dist/Server/Middleware/VerificationCodeRateLimit.js +393 -0
- package/build/dist/Server/Middleware/VerificationCodeRateLimit.js.map +1 -0
- package/build/dist/Server/Services/AnalyticsDatabaseService.js +136 -0
- package/build/dist/Server/Services/AnalyticsDatabaseService.js.map +1 -1
- package/build/dist/Server/Services/ApiKeyPermissionService.js +90 -1
- package/build/dist/Server/Services/ApiKeyPermissionService.js.map +1 -1
- package/build/dist/Server/Services/DatabaseService.js +89 -6
- package/build/dist/Server/Services/DatabaseService.js.map +1 -1
- package/build/dist/Server/Services/LogAggregationService.js +7 -0
- package/build/dist/Server/Services/LogAggregationService.js.map +1 -1
- package/build/dist/Server/Services/LogService.js +16 -0
- package/build/dist/Server/Services/LogService.js.map +1 -1
- package/build/dist/Server/Services/NetworkSiteService.js +12 -0
- package/build/dist/Server/Services/NetworkSiteService.js.map +1 -1
- package/build/dist/Server/Services/PushNotificationService.js +69 -30
- package/build/dist/Server/Services/PushNotificationService.js.map +1 -1
- package/build/dist/Server/Services/SpanService.js +16 -0
- package/build/dist/Server/Services/SpanService.js.map +1 -1
- package/build/dist/Server/Services/TeamMemberService.js +43 -7
- package/build/dist/Server/Services/TeamMemberService.js.map +1 -1
- package/build/dist/Server/Services/TraceAggregationService.js +2 -0
- package/build/dist/Server/Services/TraceAggregationService.js.map +1 -1
- package/build/dist/Server/Services/UserCallService.js +54 -22
- package/build/dist/Server/Services/UserCallService.js.map +1 -1
- package/build/dist/Server/Services/UserEmailService.js +78 -17
- package/build/dist/Server/Services/UserEmailService.js.map +1 -1
- package/build/dist/Server/Services/UserIncomingCallNumberService.js +45 -74
- package/build/dist/Server/Services/UserIncomingCallNumberService.js.map +1 -1
- package/build/dist/Server/Services/UserNotificationMethodAdminService.js +1117 -0
- package/build/dist/Server/Services/UserNotificationMethodAdminService.js.map +1 -0
- package/build/dist/Server/Services/UserNotificationRuleService.js +20 -0
- package/build/dist/Server/Services/UserNotificationRuleService.js.map +1 -1
- package/build/dist/Server/Services/UserPushService.js +77 -0
- package/build/dist/Server/Services/UserPushService.js.map +1 -1
- package/build/dist/Server/Services/UserSmsService.js +50 -17
- package/build/dist/Server/Services/UserSmsService.js.map +1 -1
- package/build/dist/Server/Services/UserWhatsAppService.js +48 -15
- package/build/dist/Server/Services/UserWhatsAppService.js.map +1 -1
- package/build/dist/Server/Services/WorkspaceNotificationRuleService.js +137 -164
- package/build/dist/Server/Services/WorkspaceNotificationRuleService.js.map +1 -1
- package/build/dist/Server/Types/AnalyticsDatabase/ModelPermission.js +9 -0
- package/build/dist/Server/Types/AnalyticsDatabase/ModelPermission.js.map +1 -1
- package/build/dist/Server/Types/Database/Permissions/AccessControlPermission.js +21 -13
- package/build/dist/Server/Types/Database/Permissions/AccessControlPermission.js.map +1 -1
- package/build/dist/Server/Types/Database/QueryHelper.js +27 -0
- package/build/dist/Server/Types/Database/QueryHelper.js.map +1 -1
- package/build/dist/Server/Utils/APIKey/AccessPermission.js +9 -32
- package/build/dist/Server/Utils/APIKey/AccessPermission.js.map +1 -1
- package/build/dist/Server/Utils/AnalyticsDatabase/QuerySettingsHelper.js +46 -0
- package/build/dist/Server/Utils/AnalyticsDatabase/QuerySettingsHelper.js.map +1 -1
- package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js +87 -0
- package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js.map +1 -1
- package/build/dist/Server/Utils/ChannelVerification.js +348 -0
- package/build/dist/Server/Utils/ChannelVerification.js.map +1 -0
- package/build/dist/Server/Utils/LogRedaction.js +449 -0
- package/build/dist/Server/Utils/LogRedaction.js.map +1 -0
- package/build/dist/Server/Utils/Logger.js +98 -45
- package/build/dist/Server/Utils/Logger.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/IncomingRequestCriteria.js +13 -12
- package/build/dist/Server/Utils/Monitor/Criteria/IncomingRequestCriteria.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/SSLMonitorCriteria.js +65 -13
- package/build/dist/Server/Utils/Monitor/Criteria/SSLMonitorCriteria.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorAlert.js +20 -17
- package/build/dist/Server/Utils/Monitor/MonitorAlert.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorIncident.js +17 -14
- package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorResource.js +20 -3
- package/build/dist/Server/Utils/Monitor/MonitorResource.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorResourceContext.js +95 -0
- package/build/dist/Server/Utils/Monitor/MonitorResourceContext.js.map +1 -0
- package/build/dist/Server/Utils/Monitor/MonitorStepResourceIdentity.js +313 -0
- package/build/dist/Server/Utils/Monitor/MonitorStepResourceIdentity.js.map +1 -0
- package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js +27 -7
- package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/SeriesResourceLabels.js +3 -3
- package/build/dist/Server/Utils/Monitor/SeriesResourceLinker.js +67 -26
- package/build/dist/Server/Utils/Monitor/SeriesResourceLinker.js.map +1 -1
- package/build/dist/Server/Utils/SessionReplay/SessionReplayGateCacheStore.js +29 -10
- package/build/dist/Server/Utils/SessionReplay/SessionReplayGateCacheStore.js.map +1 -1
- package/build/dist/Server/Utils/StartServer.js +10 -7
- package/build/dist/Server/Utils/StartServer.js.map +1 -1
- package/build/dist/Server/Utils/StatusPageSearchEngineIndexing.js +24 -0
- package/build/dist/Server/Utils/StatusPageSearchEngineIndexing.js.map +1 -0
- package/build/dist/Server/Utils/Telemetry/ResourceEntityFilter.js +311 -0
- package/build/dist/Server/Utils/Telemetry/ResourceEntityFilter.js.map +1 -0
- package/build/dist/Server/Utils/TotpAuth.js +127 -8
- package/build/dist/Server/Utils/TotpAuth.js.map +1 -1
- package/build/dist/Server/Utils/UserRegistrationToken.js +170 -0
- package/build/dist/Server/Utils/UserRegistrationToken.js.map +1 -0
- package/build/dist/Server/Utils/VerificationCode.js +120 -0
- package/build/dist/Server/Utils/VerificationCode.js.map +1 -0
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js +366 -37
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js.map +1 -1
- package/build/dist/Types/API/Hostname.js +63 -0
- package/build/dist/Types/API/Hostname.js.map +1 -1
- package/build/dist/Types/Database/AccessControl/ColumnAccessControl.js +20 -6
- package/build/dist/Types/Database/AccessControl/ColumnAccessControl.js.map +1 -1
- package/build/dist/Types/Database/AccessControl/ColumnBillingAccessControl.js +20 -6
- package/build/dist/Types/Database/AccessControl/ColumnBillingAccessControl.js.map +1 -1
- package/build/dist/Types/Database/DatabaseProperty.js +38 -0
- package/build/dist/Types/Database/DatabaseProperty.js.map +1 -1
- package/build/dist/Types/Database/TableColumn.js +24 -6
- package/build/dist/Types/Database/TableColumn.js.map +1 -1
- package/build/dist/Types/Email/EmailTemplateType.js +1 -0
- package/build/dist/Types/Email/EmailTemplateType.js.map +1 -1
- package/build/dist/Types/Events/Recurring.js +13 -1
- package/build/dist/Types/Events/Recurring.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorCriteriaInstance.js +42 -21
- package/build/dist/Types/Monitor/MonitorCriteriaInstance.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorStep.js +9 -1
- package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorType.js +330 -31
- package/build/dist/Types/Monitor/MonitorType.js.map +1 -1
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationCatalog.js +77 -5
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationCatalog.js.map +1 -1
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationTypes.js +18 -6
- package/build/dist/Types/Monitor/Recommendation/MonitorRecommendationTypes.js.map +1 -1
- package/build/dist/Types/Monitor/ServiceAlertTemplates.js +1028 -0
- package/build/dist/Types/Monitor/ServiceAlertTemplates.js.map +1 -0
- package/build/dist/Types/Permission.js +33 -0
- package/build/dist/Types/Permission.js.map +1 -1
- package/build/dist/Types/PushNotification/AndroidNotificationChannel.js +27 -0
- package/build/dist/Types/PushNotification/AndroidNotificationChannel.js.map +1 -0
- package/build/dist/Types/Service/ServiceLanguage.js +96 -0
- package/build/dist/Types/Service/ServiceLanguage.js.map +1 -0
- package/build/dist/Types/StatusPage/SearchEngineIndexing.js +55 -0
- package/build/dist/Types/StatusPage/SearchEngineIndexing.js.map +1 -0
- package/build/dist/Types/Telemetry/ResourceEntityFacet.js +156 -0
- package/build/dist/Types/Telemetry/ResourceEntityFacet.js.map +1 -0
- package/build/dist/Types/Text.js +82 -17
- package/build/dist/Types/Text.js.map +1 -1
- package/build/dist/UI/Components/Button/Button.js +22 -14
- package/build/dist/UI/Components/Button/Button.js.map +1 -1
- package/build/dist/UI/Components/CardSelect/CardSelect.js +360 -40
- package/build/dist/UI/Components/CardSelect/CardSelect.js.map +1 -1
- package/build/dist/UI/Components/CodeBlock/CodeBlock.js +35 -3
- package/build/dist/UI/Components/CodeBlock/CodeBlock.js.map +1 -1
- package/build/dist/UI/Components/CodeBlock/LanguageRegistry.js +57 -0
- package/build/dist/UI/Components/CodeBlock/LanguageRegistry.js.map +1 -0
- package/build/dist/UI/Components/CommandPalette/CommandPalette.js +439 -0
- package/build/dist/UI/Components/CommandPalette/CommandPalette.js.map +1 -0
- package/build/dist/UI/Components/CommandPalette/PaletteFilter.js +135 -0
- package/build/dist/UI/Components/CommandPalette/PaletteFilter.js.map +1 -0
- package/build/dist/UI/Components/CommandPalette/PaletteRow.js +83 -0
- package/build/dist/UI/Components/CommandPalette/PaletteRow.js.map +1 -0
- package/build/dist/UI/Components/CommandPalette/RecentCommands.js +47 -0
- package/build/dist/UI/Components/CommandPalette/RecentCommands.js.map +1 -0
- package/build/dist/UI/Components/CommandPalette/Types.js +2 -0
- package/build/dist/UI/Components/CommandPalette/Types.js.map +1 -0
- package/build/dist/UI/Components/CommandPalette/UseProviderSearch.js +88 -0
- package/build/dist/UI/Components/CommandPalette/UseProviderSearch.js.map +1 -0
- package/build/dist/UI/Components/Dropdown/Dropdown.js +6 -1
- package/build/dist/UI/Components/Dropdown/Dropdown.js.map +1 -1
- package/build/dist/UI/Components/EmptyState/EmptyState.js +1 -1
- package/build/dist/UI/Components/EmptyState/EmptyState.js.map +1 -1
- package/build/dist/UI/Components/Feed/FeedItem.js +1 -1
- package/build/dist/UI/Components/Feed/FeedItem.js.map +1 -1
- package/build/dist/UI/Components/Footer/Footer.js +7 -4
- package/build/dist/UI/Components/Footer/Footer.js.map +1 -1
- package/build/dist/UI/Components/Forms/Fields/FormField.js +1 -1
- package/build/dist/UI/Components/Forms/Fields/FormField.js.map +1 -1
- package/build/dist/UI/Components/List/List.js +19 -5
- package/build/dist/UI/Components/List/List.js.map +1 -1
- package/build/dist/UI/Components/List/ListSkeleton.js +21 -0
- package/build/dist/UI/Components/List/ListSkeleton.js.map +1 -0
- package/build/dist/UI/Components/Loader/PageLoader.js +15 -5
- package/build/dist/UI/Components/Loader/PageLoader.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/components/LogsAnalyticsView.js +16 -3
- package/build/dist/UI/Components/LogsViewer/components/LogsAnalyticsView.js.map +1 -1
- package/build/dist/UI/Components/Markdown.tsx/LazyMarkdownViewer.js +13 -1
- package/build/dist/UI/Components/Markdown.tsx/LazyMarkdownViewer.js.map +1 -1
- package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js +52 -25
- package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js.map +1 -1
- package/build/dist/UI/Components/MasterPage/MasterPage.js +10 -2
- package/build/dist/UI/Components/MasterPage/MasterPage.js.map +1 -1
- package/build/dist/UI/Components/Modal/Modal.js +2 -2
- package/build/dist/UI/Components/ModelTable/BaseModelTable.js +1 -1
- package/build/dist/UI/Components/ModelTable/BaseModelTable.js.map +1 -1
- package/build/dist/UI/Components/ModelTable/useCustomFieldColumns.js +9 -2
- package/build/dist/UI/Components/ModelTable/useCustomFieldColumns.js.map +1 -1
- package/build/dist/UI/Components/MoreMenu/MoreMenu.js +32 -1
- package/build/dist/UI/Components/MoreMenu/MoreMenu.js.map +1 -1
- package/build/dist/UI/Components/Navbar/NavBar.js +5 -1
- package/build/dist/UI/Components/Navbar/NavBar.js.map +1 -1
- package/build/dist/UI/Components/OrderedStatesList/OrderedStatesList.js +29 -5
- package/build/dist/UI/Components/OrderedStatesList/OrderedStatesList.js.map +1 -1
- package/build/dist/UI/Components/SideMenu/CountModelSideMenuItem.js +23 -1
- package/build/dist/UI/Components/SideMenu/CountModelSideMenuItem.js.map +1 -1
- package/build/dist/UI/Components/SideOver/SideOver.js +23 -2
- package/build/dist/UI/Components/SideOver/SideOver.js.map +1 -1
- package/build/dist/UI/Components/Skeleton/Skeleton.js +23 -0
- package/build/dist/UI/Components/Skeleton/Skeleton.js.map +1 -0
- package/build/dist/UI/Components/Table/Table.js +35 -24
- package/build/dist/UI/Components/Table/Table.js.map +1 -1
- package/build/dist/UI/Components/Table/TableSkeletonRows.js +52 -0
- package/build/dist/UI/Components/Table/TableSkeletonRows.js.map +1 -0
- package/build/dist/UI/Components/Tabs/Tab.js +1 -1
- package/build/dist/UI/Components/Tabs/Tab.js.map +1 -1
- package/build/dist/UI/Components/Toast/Toast.js +77 -23
- package/build/dist/UI/Components/Toast/Toast.js.map +1 -1
- package/build/dist/UI/Components/Toast/ToastInit.js +37 -15
- package/build/dist/UI/Components/Toast/ToastInit.js.map +1 -1
- package/build/dist/UI/Utils/ModelAPI/ModelAPI.js +18 -9
- package/build/dist/UI/Utils/ModelAPI/ModelAPI.js.map +1 -1
- package/build/dist/UI/Utils/ModelListCache.js +126 -0
- package/build/dist/UI/Utils/ModelListCache.js.map +1 -0
- package/build/dist/UI/Utils/Project.js +24 -1
- package/build/dist/UI/Utils/Project.js.map +1 -1
- package/build/dist/Utils/API.js +6 -1
- package/build/dist/Utils/API.js.map +1 -1
- package/build/dist/Utils/Monitor/MonitorMetricType.js +13 -1
- package/build/dist/Utils/Monitor/MonitorMetricType.js.map +1 -1
- package/build/dist/Utils/Monitor/NetworkTopologyUtil.js +34 -7
- package/build/dist/Utils/Monitor/NetworkTopologyUtil.js.map +1 -1
- package/build/dist/Utils/NetworkDevice/DeviceReachabilityUtil.js +177 -0
- package/build/dist/Utils/NetworkDevice/DeviceReachabilityUtil.js.map +1 -0
- package/build/dist/Utils/NetworkSite/SiteStatusRollupUtil.js +23 -27
- package/build/dist/Utils/NetworkSite/SiteStatusRollupUtil.js.map +1 -1
- package/build/dist/Utils/Telemetry/CrossSignalScope.js +44 -4
- package/build/dist/Utils/Telemetry/CrossSignalScope.js.map +1 -1
- package/jest.config.json +1 -1
- package/package.json +2 -3
- package/Server/Utils/Monitor/MonitorClusterContext.ts +0 -182
- package/Tests/__mocks__/otpauth.js +0 -30
- package/build/dist/Server/Utils/Monitor/MonitorClusterContext.js +0 -141
- package/build/dist/Server/Utils/Monitor/MonitorClusterContext.js.map +0 -1
|
@@ -0,0 +1,311 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import ObjectID from "../../../Types/ObjectID";
|
|
11
|
+
import PositiveNumber from "../../../Types/PositiveNumber";
|
|
12
|
+
import HostService from "../../Services/HostService";
|
|
13
|
+
import DockerHostService from "../../Services/DockerHostService";
|
|
14
|
+
import PodmanHostService from "../../Services/PodmanHostService";
|
|
15
|
+
import KubernetesClusterService from "../../Services/KubernetesClusterService";
|
|
16
|
+
import { keyForHost, keyForKubernetesCluster, } from "../../../Utils/Telemetry/EntityKey";
|
|
17
|
+
import { isResourceEntityFacetKey, parseResourceEntityFacetSelections, } from "../../../Types/Telemetry/ResourceEntityFacet";
|
|
18
|
+
import Includes from "../../../Types/BaseDatabase/Includes";
|
|
19
|
+
import TableColumnType from "../../../Types/AnalyticsDatabase/TableColumnType";
|
|
20
|
+
import { SQL } from "../AnalyticsDatabase/Statement";
|
|
21
|
+
import logger from "../Logger";
|
|
22
|
+
import CaptureSpan from "./CaptureSpan";
|
|
23
|
+
/*
|
|
24
|
+
* `Host` / `DockerHost` / `PodmanHost` all key on the canonicalized
|
|
25
|
+
* `host.name` (see `HostService.findOrCreateByHostIdentifier` and its
|
|
26
|
+
* Docker / Podman siblings), which is exactly the Host entity's identity —
|
|
27
|
+
* so all three resolve through `keyForHost`. A Kubernetes cluster keys on
|
|
28
|
+
* `k8s.cluster.name` (`InventoryItem.k8sClusterIdentity`).
|
|
29
|
+
*
|
|
30
|
+
* The Docker / Podman facets need this as much as the Kubernetes one does:
|
|
31
|
+
* `getServiceNameFromAttributes` synthesises a per-container service name
|
|
32
|
+
* for agent-collected container telemetry, so those rows are primary-keyed
|
|
33
|
+
* on a Service too and an id-only predicate finds almost nothing.
|
|
34
|
+
*
|
|
35
|
+
* Resolving them to the Host entity means "Docker Host web-1" also matches
|
|
36
|
+
* non-container telemetry from web-1 when the Infrastructure agent runs
|
|
37
|
+
* alongside. That is the machine the facet names, so the wider match is the
|
|
38
|
+
* honest reading — and it is the only identity an OTLP resource carries;
|
|
39
|
+
* DockerHost / PodmanHost are inventory-mirrored types that no resource
|
|
40
|
+
* ever declares (see EntityType).
|
|
41
|
+
*/
|
|
42
|
+
const FACET_DEFINITIONS = {
|
|
43
|
+
hostId: {
|
|
44
|
+
attributeKey: "resource.host.name",
|
|
45
|
+
entityKeyFor: keyForHost,
|
|
46
|
+
findIdentifiers: async (data) => {
|
|
47
|
+
const rows = await HostService.findBy({
|
|
48
|
+
query: { projectId: data.projectId, _id: new Includes(data.ids) },
|
|
49
|
+
select: { hostIdentifier: true },
|
|
50
|
+
limit: new PositiveNumber(data.ids.length),
|
|
51
|
+
skip: new PositiveNumber(0),
|
|
52
|
+
props: { isRoot: true },
|
|
53
|
+
});
|
|
54
|
+
return rows.map((row) => {
|
|
55
|
+
return row.hostIdentifier || "";
|
|
56
|
+
});
|
|
57
|
+
},
|
|
58
|
+
},
|
|
59
|
+
dockerHostId: {
|
|
60
|
+
attributeKey: "resource.host.name",
|
|
61
|
+
entityKeyFor: keyForHost,
|
|
62
|
+
findIdentifiers: async (data) => {
|
|
63
|
+
const rows = await DockerHostService.findBy({
|
|
64
|
+
query: { projectId: data.projectId, _id: new Includes(data.ids) },
|
|
65
|
+
select: { hostIdentifier: true },
|
|
66
|
+
limit: new PositiveNumber(data.ids.length),
|
|
67
|
+
skip: new PositiveNumber(0),
|
|
68
|
+
props: { isRoot: true },
|
|
69
|
+
});
|
|
70
|
+
return rows.map((row) => {
|
|
71
|
+
return row.hostIdentifier || "";
|
|
72
|
+
});
|
|
73
|
+
},
|
|
74
|
+
},
|
|
75
|
+
podmanHostId: {
|
|
76
|
+
attributeKey: "resource.host.name",
|
|
77
|
+
entityKeyFor: keyForHost,
|
|
78
|
+
findIdentifiers: async (data) => {
|
|
79
|
+
const rows = await PodmanHostService.findBy({
|
|
80
|
+
query: { projectId: data.projectId, _id: new Includes(data.ids) },
|
|
81
|
+
select: { hostIdentifier: true },
|
|
82
|
+
limit: new PositiveNumber(data.ids.length),
|
|
83
|
+
skip: new PositiveNumber(0),
|
|
84
|
+
props: { isRoot: true },
|
|
85
|
+
});
|
|
86
|
+
return rows.map((row) => {
|
|
87
|
+
return row.hostIdentifier || "";
|
|
88
|
+
});
|
|
89
|
+
},
|
|
90
|
+
},
|
|
91
|
+
kubernetesClusterId: {
|
|
92
|
+
attributeKey: "resource.k8s.cluster.name",
|
|
93
|
+
entityKeyFor: keyForKubernetesCluster,
|
|
94
|
+
findIdentifiers: async (data) => {
|
|
95
|
+
const rows = await KubernetesClusterService.findBy({
|
|
96
|
+
query: { projectId: data.projectId, _id: new Includes(data.ids) },
|
|
97
|
+
select: { clusterIdentifier: true },
|
|
98
|
+
limit: new PositiveNumber(data.ids.length),
|
|
99
|
+
skip: new PositiveNumber(0),
|
|
100
|
+
props: { isRoot: true },
|
|
101
|
+
});
|
|
102
|
+
return rows.map((row) => {
|
|
103
|
+
return row.clusterIdentifier || "";
|
|
104
|
+
});
|
|
105
|
+
},
|
|
106
|
+
},
|
|
107
|
+
};
|
|
108
|
+
/**
|
|
109
|
+
* Append the resolved resource scopes to a hand-written aggregation
|
|
110
|
+
* statement (the Log / Trace histogram, facet and analytics queries, which
|
|
111
|
+
* build SQL directly rather than through StatementGenerator).
|
|
112
|
+
*
|
|
113
|
+
* Emits one `AND ( ... OR ... )` group per scope, mirroring exactly what
|
|
114
|
+
* StatementGenerator compiles for the list query — the chart and the list
|
|
115
|
+
* must agree on which rows a facet selects, or the histogram tells a
|
|
116
|
+
* different story than the rows underneath it.
|
|
117
|
+
*
|
|
118
|
+
* A scope with no usable branch appends nothing rather than an empty
|
|
119
|
+
* `IN ()`: an unresolvable filter must not silently match zero rows.
|
|
120
|
+
*/
|
|
121
|
+
export function appendResourceScopeFilters(statement, scopes) {
|
|
122
|
+
if (!scopes || scopes.length === 0) {
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
for (const scope of scopes) {
|
|
126
|
+
if (!scope) {
|
|
127
|
+
continue;
|
|
128
|
+
}
|
|
129
|
+
const branches = [];
|
|
130
|
+
const entityIds = (scope.entityIds || []).filter((id) => {
|
|
131
|
+
return typeof id === "string" && id.length > 0;
|
|
132
|
+
});
|
|
133
|
+
if (entityIds.length > 0) {
|
|
134
|
+
branches.push(SQL `primaryEntityId IN (${{
|
|
135
|
+
type: TableColumnType.ObjectID,
|
|
136
|
+
value: new Includes(entityIds),
|
|
137
|
+
}})`);
|
|
138
|
+
}
|
|
139
|
+
const entityKeys = (scope.entityKeys || []).filter((entityKey) => {
|
|
140
|
+
return typeof entityKey === "string" && entityKey.length > 0;
|
|
141
|
+
});
|
|
142
|
+
if (entityKeys.length > 0) {
|
|
143
|
+
branches.push(SQL `hasAny(entityKeys, ${{
|
|
144
|
+
type: TableColumnType.ArrayText,
|
|
145
|
+
value: entityKeys,
|
|
146
|
+
}})`);
|
|
147
|
+
}
|
|
148
|
+
const attributeValues = (scope.attributeValues || []).filter((attributeValue) => {
|
|
149
|
+
return typeof attributeValue === "string" && attributeValue.length > 0;
|
|
150
|
+
});
|
|
151
|
+
if (scope.attributeKey && attributeValues.length > 0) {
|
|
152
|
+
branches.push(SQL `attributes[${{
|
|
153
|
+
type: TableColumnType.Text,
|
|
154
|
+
value: scope.attributeKey,
|
|
155
|
+
}}] IN (${{
|
|
156
|
+
type: TableColumnType.Text,
|
|
157
|
+
value: new Includes(attributeValues),
|
|
158
|
+
}})`);
|
|
159
|
+
}
|
|
160
|
+
if (branches.length === 0) {
|
|
161
|
+
continue;
|
|
162
|
+
}
|
|
163
|
+
statement.append(SQL ` AND (`);
|
|
164
|
+
for (const [index, branch] of branches.entries()) {
|
|
165
|
+
if (index > 0) {
|
|
166
|
+
statement.append(SQL ` OR `);
|
|
167
|
+
}
|
|
168
|
+
statement.append(branch);
|
|
169
|
+
}
|
|
170
|
+
statement.append(SQL `)`);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
class ResourceEntityFilter {
|
|
174
|
+
/**
|
|
175
|
+
* Read the `resourceFilters` field off a request body (or an analytics
|
|
176
|
+
* query record) into the canonical selection shape. Delegates to the
|
|
177
|
+
* isomorphic parser so the browser and the server agree on exactly which
|
|
178
|
+
* selections are well-formed.
|
|
179
|
+
*/
|
|
180
|
+
static parseSelections(source) {
|
|
181
|
+
return parseResourceEntityFacetSelections(source);
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Compile each facet's selected ids into a scope. One scope per facet, so
|
|
185
|
+
* the caller ANDs them: selecting a cluster and a host means "in that
|
|
186
|
+
* cluster AND on that host", which is what a reader expects of two
|
|
187
|
+
* independent filter groups.
|
|
188
|
+
*
|
|
189
|
+
* The identifier lookup is best-effort: if Postgres is unreachable or an
|
|
190
|
+
* id no longer resolves, the scope keeps its `entityIds` branch and
|
|
191
|
+
* simply loses the entity-key one. That degrades to today's behavior
|
|
192
|
+
* rather than dropping the constraint (which would silently widen the
|
|
193
|
+
* result set).
|
|
194
|
+
*/
|
|
195
|
+
static async resolveScopes(data) {
|
|
196
|
+
const facetKeys = Object.keys(data.selections).filter((key) => {
|
|
197
|
+
return (isResourceEntityFacetKey(key) &&
|
|
198
|
+
(data.selections[key] || []).length > 0);
|
|
199
|
+
});
|
|
200
|
+
if (facetKeys.length === 0) {
|
|
201
|
+
return [];
|
|
202
|
+
}
|
|
203
|
+
return Promise.all(facetKeys.map(async (facetKey) => {
|
|
204
|
+
return ResourceEntityFilter.resolveOne({
|
|
205
|
+
projectId: data.projectId,
|
|
206
|
+
facetKey,
|
|
207
|
+
ids: data.selections[facetKey] || [],
|
|
208
|
+
});
|
|
209
|
+
}));
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Rewrite an analytics list query in place: consume the client-sent
|
|
213
|
+
* `resourceFilters` ids and replace them with the resolved
|
|
214
|
+
* `resourceEntityScopes` that StatementGenerator compiles.
|
|
215
|
+
*
|
|
216
|
+
* The compiled key is always rebuilt from scratch — a client cannot
|
|
217
|
+
* hand-craft one, so the only way a scope reaches the SQL is through this
|
|
218
|
+
* resolver. (It could only ever narrow rows, but leaving one authoritative
|
|
219
|
+
* writer keeps the predicate auditable.)
|
|
220
|
+
*
|
|
221
|
+
* Without a tenant the identifier lookup cannot be project-scoped, so the
|
|
222
|
+
* scope keeps its id branch and drops the entity-key one: narrower than
|
|
223
|
+
* the request asked for, never wider.
|
|
224
|
+
*/
|
|
225
|
+
static async rewriteAnalyticsQuery(data) {
|
|
226
|
+
const query = data.query;
|
|
227
|
+
if (!query || typeof query !== "object") {
|
|
228
|
+
return;
|
|
229
|
+
}
|
|
230
|
+
const raw = query[ResourceEntityFilter.QUERY_FILTER_KEY];
|
|
231
|
+
delete query[ResourceEntityFilter.QUERY_FILTER_KEY];
|
|
232
|
+
delete query[ResourceEntityFilter.QUERY_SCOPE_KEY];
|
|
233
|
+
if (raw === undefined || raw === null) {
|
|
234
|
+
return;
|
|
235
|
+
}
|
|
236
|
+
const selections = ResourceEntityFilter.parseSelections(raw);
|
|
237
|
+
if (Object.keys(selections).length === 0) {
|
|
238
|
+
return;
|
|
239
|
+
}
|
|
240
|
+
if (!data.projectId) {
|
|
241
|
+
query[ResourceEntityFilter.QUERY_SCOPE_KEY] = Object.keys(selections).map((facetKey) => {
|
|
242
|
+
return { entityIds: selections[facetKey] || [], entityKeys: [] };
|
|
243
|
+
});
|
|
244
|
+
return;
|
|
245
|
+
}
|
|
246
|
+
const scopes = await ResourceEntityFilter.resolveScopes({
|
|
247
|
+
projectId: data.projectId,
|
|
248
|
+
selections,
|
|
249
|
+
});
|
|
250
|
+
if (scopes.length > 0) {
|
|
251
|
+
query[ResourceEntityFilter.QUERY_SCOPE_KEY] = scopes;
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
static async resolveOne(data) {
|
|
255
|
+
const scope = {
|
|
256
|
+
entityIds: data.ids,
|
|
257
|
+
entityKeys: [],
|
|
258
|
+
};
|
|
259
|
+
const definition = FACET_DEFINITIONS[data.facetKey];
|
|
260
|
+
if (!definition) {
|
|
261
|
+
return scope;
|
|
262
|
+
}
|
|
263
|
+
let identifiers = [];
|
|
264
|
+
try {
|
|
265
|
+
identifiers = await definition.findIdentifiers({
|
|
266
|
+
projectId: data.projectId,
|
|
267
|
+
ids: data.ids.map((id) => {
|
|
268
|
+
return new ObjectID(id);
|
|
269
|
+
}),
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
catch (err) {
|
|
273
|
+
logger.warn(`Could not resolve ${data.facetKey} identifiers for the entity-key filter; falling back to primaryEntityId only: ${err}`);
|
|
274
|
+
return scope;
|
|
275
|
+
}
|
|
276
|
+
const uniqueIdentifiers = Array.from(new Set(identifiers.filter((identifier) => {
|
|
277
|
+
return identifier.trim().length > 0;
|
|
278
|
+
})));
|
|
279
|
+
if (uniqueIdentifiers.length === 0) {
|
|
280
|
+
return scope;
|
|
281
|
+
}
|
|
282
|
+
const projectIdString = data.projectId.toString();
|
|
283
|
+
scope.entityKeys = Array.from(new Set(uniqueIdentifiers.map((identifier) => {
|
|
284
|
+
return definition.entityKeyFor(projectIdString, identifier);
|
|
285
|
+
})));
|
|
286
|
+
scope.attributeKey = definition.attributeKey;
|
|
287
|
+
scope.attributeValues = uniqueIdentifiers;
|
|
288
|
+
return scope;
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* Query key the client puts the raw selected ids under, and the key the
|
|
293
|
+
* compiled scopes are written to. Kept together so the rewrite below is
|
|
294
|
+
* the only thing that has to know the pair.
|
|
295
|
+
*/
|
|
296
|
+
ResourceEntityFilter.QUERY_FILTER_KEY = "resourceFilters";
|
|
297
|
+
ResourceEntityFilter.QUERY_SCOPE_KEY = "resourceEntityScopes";
|
|
298
|
+
export default ResourceEntityFilter;
|
|
299
|
+
__decorate([
|
|
300
|
+
CaptureSpan(),
|
|
301
|
+
__metadata("design:type", Function),
|
|
302
|
+
__metadata("design:paramtypes", [Object]),
|
|
303
|
+
__metadata("design:returntype", Promise)
|
|
304
|
+
], ResourceEntityFilter, "resolveScopes", null);
|
|
305
|
+
__decorate([
|
|
306
|
+
CaptureSpan(),
|
|
307
|
+
__metadata("design:type", Function),
|
|
308
|
+
__metadata("design:paramtypes", [Object]),
|
|
309
|
+
__metadata("design:returntype", Promise)
|
|
310
|
+
], ResourceEntityFilter, "rewriteAnalyticsQuery", null);
|
|
311
|
+
//# sourceMappingURL=ResourceEntityFilter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ResourceEntityFilter.js","sourceRoot":"","sources":["../../../../../Server/Utils/Telemetry/ResourceEntityFilter.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,59 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
9
9
|
};
|
|
10
10
|
import * as OTPAuth from "otpauth";
|
|
11
11
|
import CaptureSpan from "./Telemetry/CaptureSpan";
|
|
12
|
+
/**
|
|
13
|
+
* The HMAC algorithm every new enrolment is issued with.
|
|
14
|
+
*
|
|
15
|
+
* RFC 6238 fixes SHA1 as the default and every authenticator implements it.
|
|
16
|
+
* The `algorithm` parameter in an otpauth:// URI is, in practice, advisory:
|
|
17
|
+
* Google Authenticator and Microsoft Authenticator parse the URI, ignore the
|
|
18
|
+
* parameter, and compute SHA1 anyway. A server that issues `algorithm=SHA256`
|
|
19
|
+
* therefore hands those apps a QR code they will silently mis-implement — the
|
|
20
|
+
* app shows a confident six digits, the server computes a completely different
|
|
21
|
+
* six digits, and enrolment can never succeed no matter how many codes the
|
|
22
|
+
* user tries. That is the failure this constant exists to prevent.
|
|
23
|
+
*
|
|
24
|
+
* SHA1 is not a weakness here. HMAC-SHA1 is unaffected by the collision
|
|
25
|
+
* attacks that retired SHA1 for signatures (RFC 6234 / RFC 2104), and the
|
|
26
|
+
* output is truncated to six digits over a 30 second window regardless — the
|
|
27
|
+
* brute-force surface is the 10^6 code space, not the hash.
|
|
28
|
+
*/
|
|
29
|
+
export const DefaultTotpAlgorithm = "SHA1";
|
|
30
|
+
/**
|
|
31
|
+
* Algorithms a submitted token is checked against, in order.
|
|
32
|
+
*
|
|
33
|
+
* OneUptime issued `SHA256` enrolments before this was understood. Those
|
|
34
|
+
* secrets are still in the database and still work in the minority of apps
|
|
35
|
+
* that do honour the parameter (1Password, Bitwarden, Aegis, FreeOTP), so
|
|
36
|
+
* dropping SHA256 from verification would lock those accounts out of their
|
|
37
|
+
* own logins.
|
|
38
|
+
*
|
|
39
|
+
* The cost is exactly one bit: two algorithms across the validation window
|
|
40
|
+
* means twice as many six-digit strings are accepted at any instant. Against
|
|
41
|
+
* a 10^6 code space that is still a vanishing fraction, and the tests pin the
|
|
42
|
+
* bound so it cannot quietly grow.
|
|
43
|
+
*
|
|
44
|
+
* Retiring SHA256 needs more than time passing. Nothing on the row records
|
|
45
|
+
* which algorithm the user's app actually computes, so "no legacy rows remain"
|
|
46
|
+
* is not a question the database can answer today — removing it means either
|
|
47
|
+
* storing the algorithm that verified, or accepting that some long-dormant
|
|
48
|
+
* account re-enrols instead of logging in.
|
|
49
|
+
*/
|
|
50
|
+
export const SupportedTotpAlgorithms = ["SHA1", "SHA256"];
|
|
51
|
+
/**
|
|
52
|
+
* Number of 30 second steps either side of now that a token is accepted for.
|
|
53
|
+
*
|
|
54
|
+
* Three steps is +/- 90 seconds, which absorbs ordinary phone/server clock
|
|
55
|
+
* drift and the user typing the last digit as the code rolls over.
|
|
56
|
+
*/
|
|
57
|
+
export const TotpValidationWindow = 3;
|
|
58
|
+
/**
|
|
59
|
+
* Number of digits in a token, and the length of the time step in seconds.
|
|
60
|
+
* Both are the values Google Authenticator assumes, and — like `algorithm` —
|
|
61
|
+
* both are parameters it ignores when told anything else.
|
|
62
|
+
*/
|
|
63
|
+
export const TotpDigits = 6;
|
|
64
|
+
export const TotpPeriodInSeconds = 30;
|
|
12
65
|
/**
|
|
13
66
|
* Utility class for handling TOTP authentication.
|
|
14
67
|
*/
|
|
@@ -32,26 +85,82 @@ export default class TotpAuth {
|
|
|
32
85
|
email: data.email,
|
|
33
86
|
}),
|
|
34
87
|
// Algorithm used for the HMAC function.
|
|
35
|
-
algorithm:
|
|
88
|
+
algorithm: data.algorithm || DefaultTotpAlgorithm,
|
|
36
89
|
// Length of the generated tokens.
|
|
37
|
-
digits:
|
|
90
|
+
digits: TotpDigits,
|
|
38
91
|
// Interval of time for which a token is valid, in seconds.
|
|
39
|
-
period:
|
|
92
|
+
period: TotpPeriodInSeconds,
|
|
40
93
|
// Arbitrary key encoded in Base32 or OTPAuth.Secret instance.
|
|
41
94
|
secret: data.secret,
|
|
42
95
|
});
|
|
43
96
|
return totp;
|
|
44
97
|
}
|
|
98
|
+
/**
|
|
99
|
+
* Strips the formatting authenticator apps add for readability.
|
|
100
|
+
*
|
|
101
|
+
* Google Authenticator renders a code as "123 456" and both the iOS and
|
|
102
|
+
* Android clipboards keep that space when the user copies it. Rejecting the
|
|
103
|
+
* paste is a self-inflicted "Invalid code" for a user who supplied exactly
|
|
104
|
+
* the right secret material, so the separators are removed before the token
|
|
105
|
+
* is compared. Anything that is not a digit is dropped, which also covers
|
|
106
|
+
* the hyphen some apps use and stray whitespace from a trimmed paste.
|
|
107
|
+
*
|
|
108
|
+
* @param token - The raw token as submitted.
|
|
109
|
+
* @returns The token reduced to its digits.
|
|
110
|
+
*/
|
|
111
|
+
static normalizeToken(token) {
|
|
112
|
+
/*
|
|
113
|
+
* The token arrives straight off a JSON body, so it is only a string
|
|
114
|
+
* because the client chose to send one. A number or an object here must
|
|
115
|
+
* fail verification, not throw out of `.replace` and surface as a 500.
|
|
116
|
+
*/
|
|
117
|
+
if (typeof token !== "string" || !token) {
|
|
118
|
+
return "";
|
|
119
|
+
}
|
|
120
|
+
return token.replace(/\D/g, "");
|
|
121
|
+
}
|
|
45
122
|
/**
|
|
46
123
|
* Verifies if a given token matches the provided secret key.
|
|
47
124
|
* @param data - The data object containing the secret key and token.
|
|
48
125
|
* @returns A boolean indicating whether the token is valid or not.
|
|
49
126
|
*/
|
|
50
127
|
static verifyToken(data) {
|
|
51
|
-
const { secret,
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
128
|
+
const { secret, email } = data;
|
|
129
|
+
if (!secret) {
|
|
130
|
+
return false;
|
|
131
|
+
}
|
|
132
|
+
const token = this.normalizeToken(data.token);
|
|
133
|
+
/*
|
|
134
|
+
* otpauth compares the submitted string against the codes it generates,
|
|
135
|
+
* so a token of the wrong length can never match — but it would still be
|
|
136
|
+
* run through one HMAC per algorithm per window step first. Reject it up
|
|
137
|
+
* front instead.
|
|
138
|
+
*/
|
|
139
|
+
if (token.length !== TotpDigits) {
|
|
140
|
+
return false;
|
|
141
|
+
}
|
|
142
|
+
for (const algorithm of SupportedTotpAlgorithms) {
|
|
143
|
+
let totp;
|
|
144
|
+
try {
|
|
145
|
+
totp = this.getTotp({ secret, email, algorithm });
|
|
146
|
+
}
|
|
147
|
+
catch (_a) {
|
|
148
|
+
/*
|
|
149
|
+
* A secret that is not valid base32 throws in the OTPAuth.Secret
|
|
150
|
+
* constructor. That is a corrupt row, not a wrong code, and it fails
|
|
151
|
+
* identically for every algorithm — so stop rather than repeat it.
|
|
152
|
+
*/
|
|
153
|
+
return false;
|
|
154
|
+
}
|
|
155
|
+
const delta = totp.validate({
|
|
156
|
+
token,
|
|
157
|
+
window: TotpValidationWindow,
|
|
158
|
+
});
|
|
159
|
+
if (delta !== null) {
|
|
160
|
+
return true;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
return false;
|
|
55
164
|
}
|
|
56
165
|
/**
|
|
57
166
|
* Generates a URI for the given secret key and user email, which can be used to set up two-factor authentication.
|
|
@@ -60,7 +169,11 @@ export default class TotpAuth {
|
|
|
60
169
|
*/
|
|
61
170
|
static generateUri(data) {
|
|
62
171
|
const { secret, userEmail } = data;
|
|
63
|
-
const totp = this.getTotp({
|
|
172
|
+
const totp = this.getTotp({
|
|
173
|
+
secret,
|
|
174
|
+
email: userEmail,
|
|
175
|
+
algorithm: DefaultTotpAlgorithm,
|
|
176
|
+
});
|
|
64
177
|
return totp.toString();
|
|
65
178
|
}
|
|
66
179
|
}
|
|
@@ -82,6 +195,12 @@ __decorate([
|
|
|
82
195
|
__metadata("design:paramtypes", [Object]),
|
|
83
196
|
__metadata("design:returntype", OTPAuth.TOTP)
|
|
84
197
|
], TotpAuth, "getTotp", null);
|
|
198
|
+
__decorate([
|
|
199
|
+
CaptureSpan(),
|
|
200
|
+
__metadata("design:type", Function),
|
|
201
|
+
__metadata("design:paramtypes", [String]),
|
|
202
|
+
__metadata("design:returntype", String)
|
|
203
|
+
], TotpAuth, "normalizeToken", null);
|
|
85
204
|
__decorate([
|
|
86
205
|
CaptureSpan(),
|
|
87
206
|
__metadata("design:type", Function),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TotpAuth.js","sourceRoot":"","sources":["../../../../Server/Utils/TotpAuth.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AACnC,OAAO,WAAW,MAAM,yBAAyB,CAAC;AAElD;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,QAAQ;IAC3B;;;OAGG;IAEW,AAAP,MAAM,CAAC,cAAc;QAC1B,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC;IACrC,CAAC;IAGa,AAAP,MAAM,CAAC,QAAQ,CAAC,IAAsB;QAC3C,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC/B,CAAC;IAGa,AAAP,MAAM,CAAC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"TotpAuth.js","sourceRoot":"","sources":["../../../../Server/Utils/TotpAuth.ts"],"names":[],"mappings":"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"}
|