@oneuptime/common 12.0.28 → 12.0.30
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/DashboardDomain.ts +43 -0
- package/Models/DatabaseModels/Index.ts +11 -0
- package/Models/DatabaseModels/MonitorTemplate.ts +15 -3
- package/Models/DatabaseModels/OnCallDutyPolicySchedule.ts +43 -0
- package/Models/DatabaseModels/OnCallDutyPolicyScheduleCalendarFeed.ts +662 -0
- package/Models/DatabaseModels/ProjectOnCallCalendarFeed.ts +584 -0
- package/Models/DatabaseModels/StatusPageDomain.ts +43 -0
- package/Models/DatabaseModels/UserOnCallCalendarFeed.ts +546 -0
- package/Models/DatabaseModels/UserOnCallShiftReminder.ts +231 -0
- package/Models/DatabaseModels/UserOnCallShiftReminderLog.ts +331 -0
- package/Server/API/DashboardDomainAPI.ts +74 -0
- package/Server/API/MicrosoftTeamsAPI.ts +81 -180
- package/Server/API/OnCallCalendarAPI.ts +2194 -0
- package/Server/API/StatusPageDomainAPI.ts +74 -0
- package/Server/EnvironmentConfig.ts +138 -0
- package/Server/Infrastructure/OnCallCalendarFeedCache.ts +1050 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1790200000000-AllowNullMonitorNameOnMonitorTemplate.ts +43 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1790300000000-AddCertificateReissueRequestedAtToDomains.ts +40 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1790400000000-AddOnCallCalendarFeeds.ts +253 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +6 -0
- package/Server/Middleware/OnCallCalendarFeedRateLimit.ts +487 -0
- package/Server/Middleware/ProjectAuthorization.ts +6 -1
- package/Server/Services/DashboardDomainService.ts +131 -0
- package/Server/Services/Index.ts +12 -0
- package/Server/Services/LogPipelineProcessorService.ts +88 -0
- package/Server/Services/MonitorTemplateService.ts +70 -11
- package/Server/Services/OnCallDutyPolicyEscalationRuleScheduleService.ts +32 -0
- package/Server/Services/OnCallDutyPolicyScheduleCalendarFeedService.ts +260 -0
- package/Server/Services/OnCallDutyPolicyScheduleLayerService.ts +70 -3
- package/Server/Services/OnCallDutyPolicyScheduleLayerUserService.ts +138 -3
- package/Server/Services/OnCallDutyPolicyScheduleService.ts +1465 -134
- package/Server/Services/OnCallDutyPolicyUserOverrideService.ts +167 -31
- package/Server/Services/ProjectOnCallCalendarFeedService.ts +192 -0
- package/Server/Services/StatusPageDomainService.ts +163 -3
- package/Server/Services/StatusPagePrivateUserSessionService.ts +197 -56
- package/Server/Services/TeamMemberService.ts +489 -1
- package/Server/Services/TeamService.ts +50 -0
- package/Server/Services/UserNotificationSettingService.ts +44 -1
- package/Server/Services/UserOnCallCalendarFeedService.ts +159 -0
- package/Server/Services/UserOnCallShiftReminderLogService.ts +151 -0
- package/Server/Services/UserOnCallShiftReminderService.ts +112 -0
- package/Server/Types/Domain.ts +17 -0
- package/Server/Utils/APIKey/AccessPermission.ts +24 -0
- package/Server/Utils/Greenlock/Greenlock.ts +156 -58
- package/Server/Utils/LogPipelineProcessorValidation.ts +112 -0
- package/Server/Utils/OnCall/CalendarFeedToken.ts +241 -0
- package/Server/Utils/OnCall/OnCallCalendarFeedRenderer.ts +1488 -0
- package/Server/Utils/OnCall/OnCallCalendarFeedUrls.ts +230 -0
- package/Server/Utils/OnCall/OnCallShiftChangeListeners.ts +227 -0
- package/Server/Utils/OnCall/OnCallShiftMaterializer.ts +1127 -0
- package/Server/Utils/OnCall/OnCallShiftReminderListener.ts +174 -0
- package/Server/Utils/OnCall/OnCallShiftReminderRunner.ts +2584 -0
- package/Server/Utils/Response.ts +134 -0
- package/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsClient.ts +1094 -45
- package/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsPoller.ts +153 -17
- package/Server/Utils/StartServer.ts +10 -0
- package/Server/Utils/Telemetry/AppMetrics.ts +51 -0
- package/Server/Utils/Workspace/MicrosoftTeams/Actions/Alert.ts +23 -11
- package/Server/Utils/Workspace/MicrosoftTeams/Actions/Auth.ts +0 -170
- package/Server/Utils/Workspace/MicrosoftTeams/Actions/Authorization.ts +158 -0
- package/Server/Utils/Workspace/MicrosoftTeams/Actions/Incident.ts +23 -11
- package/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.ts +35 -13
- package/Tests/App/Dashboard/MonitorTemplateColumnAndFacet.test.tsx +505 -0
- package/Tests/App/Dashboard/OnCallCalendarFeedLinks.test.tsx +229 -0
- package/Tests/App/Dashboard/OnCallCalendarFeedPlanGate.test.tsx +489 -0
- package/Tests/App/Dashboard/OnCallCalendarFeedSideMenus.test.tsx +149 -0
- package/Tests/App/Dashboard/OnCallCalendarFeedUtil.test.ts +855 -0
- package/Tests/App/Dashboard/OnCallPersonalCalendarFeed.test.tsx +1209 -0
- package/Tests/App/Dashboard/OnCallSharedCalendarFeedCard.test.tsx +1019 -0
- package/Tests/App/Dashboard/OnCallShiftRemindersAndUpcomingShifts.test.tsx +655 -0
- package/Tests/App/Dashboard/UserSettingsSetupChecklistModel.test.ts +73 -0
- package/Tests/App/StatusPage/StatusPageLoginCodeBootstrap.test.ts +106 -0
- package/Tests/App/StatusPage/StatusPageLoginCodeUtil.test.ts +84 -0
- package/Tests/App/StatusPage/StatusPageRedirectSafety.test.ts +119 -0
- package/Tests/Models/MonitorTemplateMonitorNameColumn.test.ts +258 -0
- package/Tests/Models/OnCallCalendarFeedModels.test.ts +642 -0
- package/Tests/Models/OnCallDutyPolicyScheduleCalendarFeed.test.ts +288 -0
- package/Tests/Models/OnCallDutyPolicyScheduleShiftConfigVersion.test.ts +88 -0
- package/Tests/Models/UserOnCallShiftReminderModels.test.ts +368 -0
- package/Tests/Server/API/CustomDomainReissueSslAPI.test.ts +469 -0
- package/Tests/Server/API/Helpers.ts +8 -0
- package/Tests/Server/API/MicrosoftTeamsBotMessagesEndpoint.test.ts +729 -0
- package/Tests/Server/API/MicrosoftTeamsBotTestEndpoint.test.ts +26 -0
- package/Tests/Server/API/MicrosoftTeamsLegacyWebhookRemoval.test.ts +402 -0
- package/Tests/Server/API/OnCallCalendarAPI.test.ts +4461 -0
- package/Tests/Server/EnvironmentConfigOnCallCalendarFeed.test.ts +357 -0
- package/Tests/Server/Infrastructure/OnCallCalendarFeedCache.test.ts +1589 -0
- package/Tests/Server/Infrastructure/Postgres/AddOnCallCalendarFeedsMigration.test.ts +369 -0
- package/Tests/Server/Middleware/OnCallCalendarFeedRateLimit.test.ts +1365 -0
- package/Tests/Server/Middleware/ProjectAuthorizationApiKeyMiddleware.test.ts +4 -0
- package/Tests/Server/Services/AddCertificateReissueRequestedAtToDomainsMigration.test.ts +287 -0
- package/Tests/Server/Services/CustomDomainCertificateReissue.test.ts +477 -0
- package/Tests/Server/Services/FeedRetentionConsistency.test.ts +70 -0
- package/Tests/Server/Services/LogPipelineProcessorSaveValidation.test.ts +249 -0
- package/Tests/Server/Services/MonitorTemplateServiceBulkSync.test.ts +549 -0
- package/Tests/Server/Services/MonitorTemplateServiceNetworkDeviceSync.test.ts +16 -3
- package/Tests/Server/Services/NetworkDeviceAutoImportRuleEngineService.test.ts +57 -0
- package/Tests/Server/Services/OnCallCalendarFeedServices.test.ts +1103 -0
- package/Tests/Server/Services/OnCallDutyPolicyScheduleResolver.test.ts +1037 -0
- package/Tests/Server/Services/OnCallShiftConfigPropagation.test.ts +1270 -0
- package/Tests/Server/Services/SecurityEventLastErrorColumnWidth.test.ts +151 -15
- package/Tests/Server/Services/StatusPagePrivateUserSessionService.test.ts +587 -0
- package/Tests/Server/Services/TeamDeleteMemberCleanup.test.ts +156 -0
- package/Tests/Server/Services/TeamMemberOnCallCleanup.test.ts +755 -0
- package/Tests/Server/Services/UserNotificationSettingShiftReminderDefaults.test.ts +267 -0
- package/Tests/Server/Services/UserOnCallShiftReminderServices.test.ts +583 -0
- package/Tests/Server/Types/Database/Permissions/ApiKeyFileAccess.test.ts +286 -0
- package/Tests/Server/Types/Database/Permissions/MonitorTemplateColumnAccess.test.ts +328 -0
- package/Tests/Server/Types/Database/Permissions/OnCallCalendarFeedPermissions.test.ts +254 -0
- package/Tests/Server/Types/Database/QueryHelperFindWithSameTextAndIsNull.test.ts +83 -0
- package/Tests/Server/Utils/AI/SRE/ConfidenceSignal.test.ts +377 -0
- package/Tests/Server/Utils/APIKey/AccessPermission.test.ts +16 -1
- package/Tests/Server/Utils/Greenlock/CertificateRenewalSchedule.test.ts +250 -0
- package/Tests/Server/Utils/LogPipelineProcessorValidation.test.ts +198 -0
- package/Tests/Server/Utils/OnCall/CalendarFeedToken.test.ts +467 -0
- package/Tests/Server/Utils/OnCall/OnCallCalendarFeedRenderer.test.ts +2142 -0
- package/Tests/Server/Utils/OnCall/OnCallCalendarFeedUrls.test.ts +278 -0
- package/Tests/Server/Utils/OnCall/OnCallResolverTestHarness.ts +440 -0
- package/Tests/Server/Utils/OnCall/OnCallShiftChangeListeners.test.ts +314 -0
- package/Tests/Server/Utils/OnCall/OnCallShiftMaterializer.test.ts +1502 -0
- package/Tests/Server/Utils/OnCall/OnCallShiftReminderListener.test.ts +491 -0
- package/Tests/Server/Utils/OnCall/OnCallShiftReminderRunner.test.ts +3088 -0
- package/Tests/Server/Utils/OnCall/OnCallShiftReminderTestHarness.ts +910 -0
- package/Tests/Server/Utils/ResponseSendCalendarResponse.test.ts +561 -0
- package/Tests/Server/Utils/SecurityEvent/ConnectorErrorMessage.test.ts +48 -9
- package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsAuth.test.ts +726 -0
- package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsClient.test.ts +74 -11
- package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsErrorHandling.test.ts +1107 -0
- package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsPoller.test.ts +20 -3
- package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsPollerFailureTaxonomy.test.ts +51 -11
- package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsPollerHardening.test.ts +1246 -0
- package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsRequestContract.test.ts +961 -0
- package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsResponseParsing.test.ts +653 -0
- package/Tests/Server/Utils/StartServerEncryptionSecretWarning.test.ts +64 -0
- package/Tests/Server/Utils/Telemetry/AppMetrics.test.ts +29 -0
- package/Tests/Server/Utils/Workspace/MicrosoftTeamsActionAuthorization.test.ts +880 -0
- package/Tests/Types/API/HTTPResponse.test.ts +175 -0
- package/Tests/Types/API/Route.test.ts +36 -4
- package/Tests/Types/Calendar/ICalendar.test.ts +488 -0
- package/Tests/Types/Database/DatabaseProperty.test.ts +171 -0
- package/Tests/Types/DateLocalShortDateTimeString.test.ts +518 -0
- package/Tests/Types/DateLocalTimeString.test.ts +259 -0
- package/Tests/Types/DateUserPrefers12HourFormat.test.ts +316 -0
- package/Tests/Types/NotificationSetting/NotificationSettingEventType.test.ts +53 -0
- package/Tests/Types/OnCallDutyPolicy/CalendarFeedTestFixtures.ts +310 -0
- package/Tests/Types/OnCallDutyPolicy/CalendarFeedWindow.test.ts +205 -0
- package/Tests/Types/OnCallDutyPolicy/LayerUtilLayerMetaAndIterationCap.test.ts +458 -0
- package/Tests/Types/OnCallDutyPolicy/MaterializedShift.test.ts +197 -0
- package/Tests/Types/OnCallDutyPolicy/OnCallCalendarFeedUtil.test.ts +1986 -0
- package/Tests/Types/OnCallDutyPolicy/ScheduleShiftUtilGroupKey.test.ts +678 -0
- package/Tests/Types/OnCallDutyPolicy/ShiftSeamUtil.test.ts +417 -0
- package/Tests/UI/Components/LogsHistogram.test.tsx +41 -2
- package/Tests/UI/Components/LogsViewerEmptyStateTimeRange.test.tsx +212 -0
- package/Tests/UI/Components/TelemetryChartClockFormat.test.tsx +359 -0
- package/Tests/UI/Components/TimeRangePickerClockFormat.test.tsx +422 -0
- package/Tests/UI/Components/TimeRangePickerDropdown.test.tsx +146 -8
- package/Tests/UI/MicrosoftTeams/MicrosoftTeamsMessagingEndpointGuidance.test.tsx +520 -0
- package/Tests/UI/Utils/Breadcrumb/fixtures/RealBreadcrumbTrails.ts +10 -0
- package/Tests/UI/Utils/Breadcrumb/fixtures/RealRoutePatterns.ts +2 -0
- package/Tests/UI/Utils/Navigation.test.ts +82 -0
- package/Tests/Utils/Array.test.ts +100 -0
- package/Tests/Utils/CertificateReissue.test.ts +225 -0
- package/Tests/Utils/Grok/Grok.test.ts +492 -0
- package/Tests/Utils/Monitor/NetworkDeviceMonitorTemplateUtil.test.ts +181 -13
- package/Types/API/Route.ts +20 -5
- package/Types/Calendar/ICalendar.ts +442 -0
- package/Types/Date.ts +143 -13
- package/Types/Email/EmailTemplateType.ts +2 -0
- package/Types/NotificationSetting/NotificationSettingEventType.ts +4 -0
- package/Types/OnCallDutyPolicy/CalendarFeedWindow.ts +140 -0
- package/Types/OnCallDutyPolicy/Layer.ts +190 -35
- package/Types/OnCallDutyPolicy/MaterializedShift.ts +274 -0
- package/Types/OnCallDutyPolicy/OnCallCalendarFeedUtil.ts +1415 -0
- package/Types/OnCallDutyPolicy/ScheduleShiftUtil.ts +159 -4
- package/Types/OnCallDutyPolicy/ShiftSeamUtil.ts +106 -0
- package/Types/Rum/SessionReplay.ts +62 -1
- package/UI/Components/Date/TimeRangePickerDropdown.tsx +9 -5
- package/UI/Components/LogsViewer/LogsViewer.tsx +12 -7
- package/UI/Components/LogsViewer/components/HistogramTooltip.tsx +18 -17
- package/UI/Components/LogsViewer/components/LogsAnalyticsView.tsx +21 -28
- package/UI/Components/LogsViewer/components/LogsHistogram.tsx +2 -4
- package/UI/Components/TelemetryViewer/components/TelemetryHistogram.tsx +2 -4
- package/UI/Components/TelemetryViewer/components/TelemetryHistogramTooltip.tsx +17 -16
- package/UI/Utils/Navigation.ts +42 -0
- package/Utils/Array.ts +37 -0
- package/Utils/CertificateReissue.ts +128 -0
- package/Utils/Grok/Grok.ts +461 -0
- package/Utils/Grok/GrokPatterns.ts +118 -0
- package/Utils/Monitor/NetworkDeviceMonitorTemplateUtil.ts +58 -6
- package/build/dist/Models/DatabaseModels/DashboardDomain.js +44 -0
- package/build/dist/Models/DatabaseModels/DashboardDomain.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Index.js +11 -0
- package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
- package/build/dist/Models/DatabaseModels/MonitorTemplate.js +17 -4
- package/build/dist/Models/DatabaseModels/MonitorTemplate.js.map +1 -1
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicySchedule.js +44 -0
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicySchedule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleCalendarFeed.js +699 -0
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleCalendarFeed.js.map +1 -0
- package/build/dist/Models/DatabaseModels/ProjectOnCallCalendarFeed.js +620 -0
- package/build/dist/Models/DatabaseModels/ProjectOnCallCalendarFeed.js.map +1 -0
- package/build/dist/Models/DatabaseModels/StatusPageDomain.js +44 -0
- package/build/dist/Models/DatabaseModels/StatusPageDomain.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserOnCallCalendarFeed.js +585 -0
- package/build/dist/Models/DatabaseModels/UserOnCallCalendarFeed.js.map +1 -0
- package/build/dist/Models/DatabaseModels/UserOnCallShiftReminder.js +247 -0
- package/build/dist/Models/DatabaseModels/UserOnCallShiftReminder.js.map +1 -0
- package/build/dist/Models/DatabaseModels/UserOnCallShiftReminderLog.js +355 -0
- package/build/dist/Models/DatabaseModels/UserOnCallShiftReminderLog.js.map +1 -0
- package/build/dist/Server/API/DashboardDomainAPI.js +43 -1
- package/build/dist/Server/API/DashboardDomainAPI.js.map +1 -1
- package/build/dist/Server/API/MicrosoftTeamsAPI.js +74 -118
- package/build/dist/Server/API/MicrosoftTeamsAPI.js.map +1 -1
- package/build/dist/Server/API/OnCallCalendarAPI.js +1371 -0
- package/build/dist/Server/API/OnCallCalendarAPI.js.map +1 -0
- package/build/dist/Server/API/StatusPageDomainAPI.js +43 -1
- package/build/dist/Server/API/StatusPageDomainAPI.js.map +1 -1
- package/build/dist/Server/EnvironmentConfig.js +102 -0
- package/build/dist/Server/EnvironmentConfig.js.map +1 -1
- package/build/dist/Server/Infrastructure/OnCallCalendarFeedCache.js +663 -0
- package/build/dist/Server/Infrastructure/OnCallCalendarFeedCache.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790200000000-AllowNullMonitorNameOnMonitorTemplate.js +34 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790200000000-AllowNullMonitorNameOnMonitorTemplate.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790300000000-AddCertificateReissueRequestedAtToDomains.js +28 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790300000000-AddCertificateReissueRequestedAtToDomains.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790400000000-AddOnCallCalendarFeeds.js +103 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790400000000-AddOnCallCalendarFeeds.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +6 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Middleware/OnCallCalendarFeedRateLimit.js +342 -0
- package/build/dist/Server/Middleware/OnCallCalendarFeedRateLimit.js.map +1 -0
- package/build/dist/Server/Middleware/ProjectAuthorization.js +6 -1
- package/build/dist/Server/Middleware/ProjectAuthorization.js.map +1 -1
- package/build/dist/Server/Services/DashboardDomainService.js +104 -0
- package/build/dist/Server/Services/DashboardDomainService.js.map +1 -1
- package/build/dist/Server/Services/Index.js +12 -0
- package/build/dist/Server/Services/Index.js.map +1 -1
- package/build/dist/Server/Services/LogPipelineProcessorService.js +65 -0
- package/build/dist/Server/Services/LogPipelineProcessorService.js.map +1 -1
- package/build/dist/Server/Services/MonitorTemplateService.js +57 -11
- package/build/dist/Server/Services/MonitorTemplateService.js.map +1 -1
- package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleScheduleService.js +20 -0
- package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleScheduleService.js.map +1 -1
- package/build/dist/Server/Services/OnCallDutyPolicyScheduleCalendarFeedService.js +219 -0
- package/build/dist/Server/Services/OnCallDutyPolicyScheduleCalendarFeedService.js.map +1 -0
- package/build/dist/Server/Services/OnCallDutyPolicyScheduleLayerService.js +47 -3
- package/build/dist/Server/Services/OnCallDutyPolicyScheduleLayerService.js.map +1 -1
- package/build/dist/Server/Services/OnCallDutyPolicyScheduleLayerUserService.js +112 -3
- package/build/dist/Server/Services/OnCallDutyPolicyScheduleLayerUserService.js.map +1 -1
- package/build/dist/Server/Services/OnCallDutyPolicyScheduleService.js +955 -9
- package/build/dist/Server/Services/OnCallDutyPolicyScheduleService.js.map +1 -1
- package/build/dist/Server/Services/OnCallDutyPolicyUserOverrideService.js +93 -6
- package/build/dist/Server/Services/OnCallDutyPolicyUserOverrideService.js.map +1 -1
- package/build/dist/Server/Services/ProjectOnCallCalendarFeedService.js +157 -0
- package/build/dist/Server/Services/ProjectOnCallCalendarFeedService.js.map +1 -0
- package/build/dist/Server/Services/StatusPageDomainService.js +132 -3
- package/build/dist/Server/Services/StatusPageDomainService.js.map +1 -1
- package/build/dist/Server/Services/StatusPagePrivateUserSessionService.js +112 -32
- package/build/dist/Server/Services/StatusPagePrivateUserSessionService.js.map +1 -1
- package/build/dist/Server/Services/TeamMemberService.js +396 -1
- package/build/dist/Server/Services/TeamMemberService.js.map +1 -1
- package/build/dist/Server/Services/TeamService.js +43 -0
- package/build/dist/Server/Services/TeamService.js.map +1 -1
- package/build/dist/Server/Services/UserNotificationSettingService.js +26 -1
- package/build/dist/Server/Services/UserNotificationSettingService.js.map +1 -1
- package/build/dist/Server/Services/UserOnCallCalendarFeedService.js +140 -0
- package/build/dist/Server/Services/UserOnCallCalendarFeedService.js.map +1 -0
- package/build/dist/Server/Services/UserOnCallShiftReminderLogService.js +116 -0
- package/build/dist/Server/Services/UserOnCallShiftReminderLogService.js.map +1 -0
- package/build/dist/Server/Services/UserOnCallShiftReminderService.js +92 -0
- package/build/dist/Server/Services/UserOnCallShiftReminderService.js.map +1 -0
- package/build/dist/Server/Types/Domain.js +16 -0
- package/build/dist/Server/Types/Domain.js.map +1 -1
- package/build/dist/Server/Utils/APIKey/AccessPermission.js +24 -0
- package/build/dist/Server/Utils/APIKey/AccessPermission.js.map +1 -1
- package/build/dist/Server/Utils/Greenlock/Greenlock.js +110 -35
- package/build/dist/Server/Utils/Greenlock/Greenlock.js.map +1 -1
- package/build/dist/Server/Utils/LogPipelineProcessorValidation.js +77 -0
- package/build/dist/Server/Utils/LogPipelineProcessorValidation.js.map +1 -0
- package/build/dist/Server/Utils/OnCall/CalendarFeedToken.js +161 -0
- package/build/dist/Server/Utils/OnCall/CalendarFeedToken.js.map +1 -0
- package/build/dist/Server/Utils/OnCall/OnCallCalendarFeedRenderer.js +983 -0
- package/build/dist/Server/Utils/OnCall/OnCallCalendarFeedRenderer.js.map +1 -0
- package/build/dist/Server/Utils/OnCall/OnCallCalendarFeedUrls.js +155 -0
- package/build/dist/Server/Utils/OnCall/OnCallCalendarFeedUrls.js.map +1 -0
- package/build/dist/Server/Utils/OnCall/OnCallShiftChangeListeners.js +145 -0
- package/build/dist/Server/Utils/OnCall/OnCallShiftChangeListeners.js.map +1 -0
- package/build/dist/Server/Utils/OnCall/OnCallShiftMaterializer.js +752 -0
- package/build/dist/Server/Utils/OnCall/OnCallShiftMaterializer.js.map +1 -0
- package/build/dist/Server/Utils/OnCall/OnCallShiftReminderListener.js +92 -0
- package/build/dist/Server/Utils/OnCall/OnCallShiftReminderListener.js.map +1 -0
- package/build/dist/Server/Utils/OnCall/OnCallShiftReminderRunner.js +1786 -0
- package/build/dist/Server/Utils/OnCall/OnCallShiftReminderRunner.js.map +1 -0
- package/build/dist/Server/Utils/Response.js +97 -0
- package/build/dist/Server/Utils/Response.js.map +1 -1
- package/build/dist/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsClient.js +777 -36
- package/build/dist/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsClient.js.map +1 -1
- package/build/dist/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsPoller.js +108 -17
- package/build/dist/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsPoller.js.map +1 -1
- package/build/dist/Server/Utils/StartServer.js +9 -1
- package/build/dist/Server/Utils/StartServer.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/AppMetrics.js +41 -0
- package/build/dist/Server/Utils/Telemetry/AppMetrics.js.map +1 -1
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/Alert.js +17 -6
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/Alert.js.map +1 -1
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/Auth.js +0 -159
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/Auth.js.map +1 -1
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/Authorization.js +128 -0
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/Authorization.js.map +1 -0
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/Incident.js +17 -6
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/Incident.js.map +1 -1
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js +25 -13
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js.map +1 -1
- package/build/dist/Types/API/Route.js +16 -5
- package/build/dist/Types/API/Route.js.map +1 -1
- package/build/dist/Types/Calendar/ICalendar.js +290 -0
- package/build/dist/Types/Calendar/ICalendar.js.map +1 -0
- package/build/dist/Types/Date.js +115 -13
- package/build/dist/Types/Date.js.map +1 -1
- package/build/dist/Types/Email/EmailTemplateType.js +2 -0
- package/build/dist/Types/Email/EmailTemplateType.js.map +1 -1
- package/build/dist/Types/NotificationSetting/NotificationSettingEventType.js +3 -0
- package/build/dist/Types/NotificationSetting/NotificationSettingEventType.js.map +1 -1
- package/build/dist/Types/OnCallDutyPolicy/CalendarFeedWindow.js +97 -0
- package/build/dist/Types/OnCallDutyPolicy/CalendarFeedWindow.js.map +1 -0
- package/build/dist/Types/OnCallDutyPolicy/Layer.js +113 -19
- package/build/dist/Types/OnCallDutyPolicy/Layer.js.map +1 -1
- package/build/dist/Types/OnCallDutyPolicy/MaterializedShift.js +134 -0
- package/build/dist/Types/OnCallDutyPolicy/MaterializedShift.js.map +1 -0
- package/build/dist/Types/OnCallDutyPolicy/OnCallCalendarFeedUtil.js +800 -0
- package/build/dist/Types/OnCallDutyPolicy/OnCallCalendarFeedUtil.js.map +1 -0
- package/build/dist/Types/OnCallDutyPolicy/ScheduleShiftUtil.js +97 -3
- package/build/dist/Types/OnCallDutyPolicy/ScheduleShiftUtil.js.map +1 -1
- package/build/dist/Types/OnCallDutyPolicy/ShiftSeamUtil.js +77 -0
- package/build/dist/Types/OnCallDutyPolicy/ShiftSeamUtil.js.map +1 -0
- package/build/dist/Types/Rum/SessionReplay.js +38 -0
- package/build/dist/Types/Rum/SessionReplay.js.map +1 -1
- package/build/dist/UI/Components/Date/TimeRangePickerDropdown.js +9 -5
- package/build/dist/UI/Components/Date/TimeRangePickerDropdown.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/LogsViewer.js +12 -7
- package/build/dist/UI/Components/LogsViewer/LogsViewer.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/components/HistogramTooltip.js +15 -14
- package/build/dist/UI/Components/LogsViewer/components/HistogramTooltip.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/components/LogsAnalyticsView.js +17 -22
- package/build/dist/UI/Components/LogsViewer/components/LogsAnalyticsView.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/components/LogsHistogram.js +2 -4
- package/build/dist/UI/Components/LogsViewer/components/LogsHistogram.js.map +1 -1
- package/build/dist/UI/Components/TelemetryViewer/components/TelemetryHistogram.js +2 -4
- package/build/dist/UI/Components/TelemetryViewer/components/TelemetryHistogram.js.map +1 -1
- package/build/dist/UI/Components/TelemetryViewer/components/TelemetryHistogramTooltip.js +15 -14
- package/build/dist/UI/Components/TelemetryViewer/components/TelemetryHistogramTooltip.js.map +1 -1
- package/build/dist/UI/Utils/Navigation.js +30 -0
- package/build/dist/UI/Utils/Navigation.js.map +1 -1
- package/build/dist/Utils/Array.js +25 -0
- package/build/dist/Utils/Array.js.map +1 -1
- package/build/dist/Utils/CertificateReissue.js +97 -0
- package/build/dist/Utils/CertificateReissue.js.map +1 -0
- package/build/dist/Utils/Grok/Grok.js +324 -0
- package/build/dist/Utils/Grok/Grok.js.map +1 -0
- package/build/dist/Utils/Grok/GrokPatterns.js +112 -0
- package/build/dist/Utils/Grok/GrokPatterns.js.map +1 -0
- package/build/dist/Utils/Monitor/NetworkDeviceMonitorTemplateUtil.js +63 -3
- package/build/dist/Utils/Monitor/NetworkDeviceMonitorTemplateUtil.js.map +1 -1
- package/package.json +1 -1
- package/UI/Utils/JsonWebToken.ts +0 -14
- package/build/dist/UI/Utils/JsonWebToken.js +0 -10
- package/build/dist/UI/Utils/JsonWebToken.js.map +0 -1
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
import Redis from "../Infrastructure/Redis";
|
|
2
|
+
import logger, { getLogAttributesFromRequest } from "../Utils/Logger";
|
|
3
|
+
import resolveTrustedClientIp from "../Utils/ClientIp";
|
|
4
|
+
import Response from "../Utils/Response";
|
|
5
|
+
import { OnCallCalendarFeedRateLimitPerIpPerWindow, OnCallCalendarFeedRateLimitPerTokenPerWindow, OnCallCalendarFeedRateLimitWindowSeconds, } from "../EnvironmentConfig";
|
|
6
|
+
import TooManyRequestsException from "../../Types/Exception/TooManyRequestsException";
|
|
7
|
+
import { createHash } from "crypto";
|
|
8
|
+
/*
|
|
9
|
+
* Rate limiting for the public on-call calendar feed routes:
|
|
10
|
+
*
|
|
11
|
+
* GET /api/on-call-calendar/user/:token/shifts.ics
|
|
12
|
+
* GET /api/on-call-calendar/schedule/:token/schedule.ics
|
|
13
|
+
* GET /api/on-call-calendar/project/:token/project.ics
|
|
14
|
+
*
|
|
15
|
+
* These are polled by calendar clients (Google, Outlook, Apple) with no session
|
|
16
|
+
* and no API key -- the token in the path is the whole credential -- so there
|
|
17
|
+
* is nothing else in front of them that bounds request volume. Rendering a
|
|
18
|
+
* feed expands every layer of every candidate schedule across up to 180 days,
|
|
19
|
+
* which is exactly the kind of work an unbounded anonymous route must not be
|
|
20
|
+
* allowed to drive in a loop.
|
|
21
|
+
*
|
|
22
|
+
* A sibling of PublicDashboardRateLimit rather than a reuse of it: that class
|
|
23
|
+
* derives its key from dashboard ids and domains, and the one thing that must
|
|
24
|
+
* be different here is that the key is derived from a SECRET. It is never used
|
|
25
|
+
* raw -- not in a Redis key, not in a log line -- see resolveTokenKey.
|
|
26
|
+
*/
|
|
27
|
+
/*
|
|
28
|
+
* Every request consumes TWO counters, and either one can reject it:
|
|
29
|
+
*
|
|
30
|
+
* - the token counter, keyed on a hash of the token + client address. This is
|
|
31
|
+
* the budget one subscribed calendar gets. Default 60 per minute: Apple
|
|
32
|
+
* Calendar's most eager setting is one poll every five minutes, so a real
|
|
33
|
+
* client never comes near it, and a whole office of clients behind one NAT
|
|
34
|
+
* all polling the same shared team link still has headroom.
|
|
35
|
+
*
|
|
36
|
+
* - the address counter, keyed on client address alone. Without it the token
|
|
37
|
+
* counter is trivially bypassed by rotating tokens: every guess lands in a
|
|
38
|
+
* fresh bucket and still costs a Postgres lookup even though it is a 404.
|
|
39
|
+
* Default 3000 per minute is the ceiling that survives rotation.
|
|
40
|
+
*
|
|
41
|
+
* Both are incremented on every request including a rejected one, so a client
|
|
42
|
+
* that keeps hammering keeps its window pinned rather than being handed a
|
|
43
|
+
* fresh allowance for free.
|
|
44
|
+
*/
|
|
45
|
+
export var OnCallCalendarFeedRateLimitScope;
|
|
46
|
+
(function (OnCallCalendarFeedRateLimitScope) {
|
|
47
|
+
OnCallCalendarFeedRateLimitScope["Token"] = "token";
|
|
48
|
+
OnCallCalendarFeedRateLimitScope["Ip"] = "ip";
|
|
49
|
+
})(OnCallCalendarFeedRateLimitScope || (OnCallCalendarFeedRateLimitScope = {}));
|
|
50
|
+
export var OnCallCalendarFeedRateLimitOutcome;
|
|
51
|
+
(function (OnCallCalendarFeedRateLimitOutcome) {
|
|
52
|
+
OnCallCalendarFeedRateLimitOutcome["Allowed"] = "allowed";
|
|
53
|
+
OnCallCalendarFeedRateLimitOutcome["RateLimited"] = "rate-limited";
|
|
54
|
+
/* Redis is unreachable, so no limit can be honoured either way. */
|
|
55
|
+
OnCallCalendarFeedRateLimitOutcome["CounterUnavailable"] = "counter-unavailable";
|
|
56
|
+
})(OnCallCalendarFeedRateLimitOutcome || (OnCallCalendarFeedRateLimitOutcome = {}));
|
|
57
|
+
/*
|
|
58
|
+
* The token shape the feed routes accept: 32 random bytes as base64url, which
|
|
59
|
+
* is always exactly 43 characters. Anything else is not a token that could
|
|
60
|
+
* exist and shares one small "invalid" bucket (see resolveTokenKey).
|
|
61
|
+
*/
|
|
62
|
+
export const ON_CALL_CALENDAR_FEED_TOKEN_PATTERN = /^[A-Za-z0-9_-]{43}$/;
|
|
63
|
+
const KEY_PREFIX = "oncal:rl:";
|
|
64
|
+
/*
|
|
65
|
+
* Counter keys outlive their window by one full window, so a request landing
|
|
66
|
+
* on a boundary cannot read a key that was reclaimed mid-window.
|
|
67
|
+
*/
|
|
68
|
+
const TTL_MULTIPLIER = 2;
|
|
69
|
+
/* Bounds a Redis key built from attacker-supplied path segments. */
|
|
70
|
+
const MAX_KEY_SEGMENT_LENGTH = 64;
|
|
71
|
+
/*
|
|
72
|
+
* How much of the token hash goes into the Redis key. 16 hex characters is 64
|
|
73
|
+
* bits -- far more than enough to keep distinct tokens in distinct buckets --
|
|
74
|
+
* and short enough that a KEYS/SCAN listing stays readable.
|
|
75
|
+
*/
|
|
76
|
+
const TOKEN_KEY_HASH_LENGTH = 16;
|
|
77
|
+
/* How often the "counter unavailable" condition may be logged. */
|
|
78
|
+
const COUNTER_UNAVAILABLE_LOG_INTERVAL_MS = 60 * 1000;
|
|
79
|
+
class OnCallCalendarFeedRateLimit {
|
|
80
|
+
/* The limits in force, for tests and for operators' diagnostics. */
|
|
81
|
+
static getConfig() {
|
|
82
|
+
return Object.assign({}, OnCallCalendarFeedRateLimit.config);
|
|
83
|
+
}
|
|
84
|
+
/*
|
|
85
|
+
* The client address to bill this request to.
|
|
86
|
+
*
|
|
87
|
+
* Delegates to the shared ClientIp helper, which reads X-Forwarded-For from
|
|
88
|
+
* the trusted (right-hand) end under the instance-wide TRUSTED_PROXY_HOPS
|
|
89
|
+
* setting. Deliberately NOT Express.getClientIp: that takes the LEFTMOST
|
|
90
|
+
* entry, which any caller can set by sending its own X-Forwarded-For header,
|
|
91
|
+
* and for a rate limiter that is fatal -- a fresh spoofed value per request
|
|
92
|
+
* means a fresh bucket per request and no limit at all.
|
|
93
|
+
*/
|
|
94
|
+
static resolveClientIp(req) {
|
|
95
|
+
const clientIp = resolveTrustedClientIp(req);
|
|
96
|
+
if (clientIp) {
|
|
97
|
+
return OnCallCalendarFeedRateLimit.sanitizeKeySegment(clientIp);
|
|
98
|
+
}
|
|
99
|
+
/*
|
|
100
|
+
* No address at all. Everything in this state shares one bucket, which is
|
|
101
|
+
* the conservative direction -- an unidentifiable caller should not get its
|
|
102
|
+
* own private allowance.
|
|
103
|
+
*/
|
|
104
|
+
return "unknown";
|
|
105
|
+
}
|
|
106
|
+
/*
|
|
107
|
+
* The token this request presents, as a key segment that is NOT the token.
|
|
108
|
+
*
|
|
109
|
+
* The token is a bearer credential. Redis keys show up in KEYS/SCAN output,
|
|
110
|
+
* in monitoring dashboards and in Redis's own slow log, so a raw token in a
|
|
111
|
+
* key is a token written down somewhere it was never meant to be. The key
|
|
112
|
+
* therefore carries a truncated SHA-256 of it: enough bits to keep distinct
|
|
113
|
+
* tokens apart, no way back to the token.
|
|
114
|
+
*
|
|
115
|
+
* The hash is unkeyed on purpose. This is a rate-limit bucket name, not the
|
|
116
|
+
* stored lookup hash the feed row is found by (that one is a full SHA-256 and
|
|
117
|
+
* lives in Postgres); 64 bits of a preimage-resistant hash of 256 bits of
|
|
118
|
+
* randomness is not a useful oracle for anything.
|
|
119
|
+
*
|
|
120
|
+
* Anything that is not shaped like a token collapses into one shared
|
|
121
|
+
* "invalid" bucket. It cannot correspond to a real feed, so a small shared
|
|
122
|
+
* allowance between all such requests is the right grouping, and it bounds
|
|
123
|
+
* Redis memory against a caller feeding junk path segments.
|
|
124
|
+
*/
|
|
125
|
+
static resolveTokenKey(req) {
|
|
126
|
+
var _a;
|
|
127
|
+
const raw = (_a = req.params) === null || _a === void 0 ? void 0 : _a["token"];
|
|
128
|
+
if (typeof raw !== "string") {
|
|
129
|
+
return "none";
|
|
130
|
+
}
|
|
131
|
+
const value = raw.trim();
|
|
132
|
+
if (!value) {
|
|
133
|
+
return "none";
|
|
134
|
+
}
|
|
135
|
+
if (!ON_CALL_CALENDAR_FEED_TOKEN_PATTERN.test(value)) {
|
|
136
|
+
return "invalid";
|
|
137
|
+
}
|
|
138
|
+
return OnCallCalendarFeedRateLimit.hashToken(value);
|
|
139
|
+
}
|
|
140
|
+
/*
|
|
141
|
+
* Bucket segment for a token the caller already validated. Exposed so a
|
|
142
|
+
* route that has the token in hand (or a test) can build the same key the
|
|
143
|
+
* middleware does.
|
|
144
|
+
*/
|
|
145
|
+
static hashToken(token) {
|
|
146
|
+
return `t:${createHash("sha256")
|
|
147
|
+
.update(token, "utf8")
|
|
148
|
+
.digest("hex")
|
|
149
|
+
.slice(0, TOKEN_KEY_HASH_LENGTH)}`;
|
|
150
|
+
}
|
|
151
|
+
static sanitizeKeySegment(value) {
|
|
152
|
+
return (value
|
|
153
|
+
.slice(0, MAX_KEY_SEGMENT_LENGTH)
|
|
154
|
+
/*
|
|
155
|
+
* Redis keys are binary safe, but a predictable charset keeps
|
|
156
|
+
* operational tooling (KEYS/SCAN patterns, dashboards) sane.
|
|
157
|
+
*/
|
|
158
|
+
.replace(/[^a-zA-Z0-9._:%\-[\]]/g, "_"));
|
|
159
|
+
}
|
|
160
|
+
/*
|
|
161
|
+
* Increment both counters for this request and decide.
|
|
162
|
+
*
|
|
163
|
+
* Both INCRs go out in one pipeline so the common path costs a single round
|
|
164
|
+
* trip; the EXPIRE follow-ups only happen on the request that created a key.
|
|
165
|
+
*/
|
|
166
|
+
static async consume(data) {
|
|
167
|
+
const client = Redis.getClient();
|
|
168
|
+
if (!client || !Redis.isConnected()) {
|
|
169
|
+
return {
|
|
170
|
+
outcome: OnCallCalendarFeedRateLimitOutcome.CounterUnavailable,
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
const config = OnCallCalendarFeedRateLimit.config;
|
|
174
|
+
const windowMs = config.windowSeconds * 1000;
|
|
175
|
+
const windowIndex = Math.floor(Date.now() / windowMs);
|
|
176
|
+
const tokenCounterKey = `${KEY_PREFIX}t:${data.tokenKey}:${data.clientIp}:${windowIndex}`;
|
|
177
|
+
const ipCounterKey = `${KEY_PREFIX}i:${data.clientIp}:${windowIndex}`;
|
|
178
|
+
try {
|
|
179
|
+
const pipelineResults = (await client
|
|
180
|
+
.pipeline()
|
|
181
|
+
.incr(tokenCounterKey)
|
|
182
|
+
.incr(ipCounterKey)
|
|
183
|
+
.exec());
|
|
184
|
+
if (!pipelineResults || pipelineResults.length < 2) {
|
|
185
|
+
throw new Error("Rate limit pipeline returned no result");
|
|
186
|
+
}
|
|
187
|
+
const tokenCount = OnCallCalendarFeedRateLimit.readCounterResult(pipelineResults[0]);
|
|
188
|
+
const ipCount = OnCallCalendarFeedRateLimit.readCounterResult(pipelineResults[1]);
|
|
189
|
+
/*
|
|
190
|
+
* Set the expiry only on the write that created the key. Re-issuing
|
|
191
|
+
* EXPIRE on every increment would slide the window forward for as long
|
|
192
|
+
* as the load continues, so the counter would never reset and a client
|
|
193
|
+
* that tripped the limit once could never recover.
|
|
194
|
+
*/
|
|
195
|
+
const ttlSeconds = config.windowSeconds * TTL_MULTIPLIER;
|
|
196
|
+
const keysToExpire = [];
|
|
197
|
+
if (tokenCount === 1) {
|
|
198
|
+
keysToExpire.push(tokenCounterKey);
|
|
199
|
+
}
|
|
200
|
+
if (ipCount === 1) {
|
|
201
|
+
keysToExpire.push(ipCounterKey);
|
|
202
|
+
}
|
|
203
|
+
if (keysToExpire.length > 0) {
|
|
204
|
+
const expirePipeline = client.pipeline();
|
|
205
|
+
for (const key of keysToExpire) {
|
|
206
|
+
expirePipeline.expire(key, ttlSeconds);
|
|
207
|
+
}
|
|
208
|
+
await expirePipeline.exec();
|
|
209
|
+
}
|
|
210
|
+
const retryAfterSeconds = OnCallCalendarFeedRateLimit.getSecondsUntilWindowEnd(config.windowSeconds);
|
|
211
|
+
/*
|
|
212
|
+
* Token counter is reported first when both are over: it is the more
|
|
213
|
+
* specific of the two and the more useful thing to see in a log line.
|
|
214
|
+
*/
|
|
215
|
+
if (tokenCount > config.perTokenLimit) {
|
|
216
|
+
return {
|
|
217
|
+
outcome: OnCallCalendarFeedRateLimitOutcome.RateLimited,
|
|
218
|
+
retryAfterSeconds,
|
|
219
|
+
scope: OnCallCalendarFeedRateLimitScope.Token,
|
|
220
|
+
isFirstRejectionInWindow: tokenCount === config.perTokenLimit + 1,
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
if (ipCount > config.perIpLimit) {
|
|
224
|
+
return {
|
|
225
|
+
outcome: OnCallCalendarFeedRateLimitOutcome.RateLimited,
|
|
226
|
+
retryAfterSeconds,
|
|
227
|
+
scope: OnCallCalendarFeedRateLimitScope.Ip,
|
|
228
|
+
isFirstRejectionInWindow: ipCount === config.perIpLimit + 1,
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
return { outcome: OnCallCalendarFeedRateLimitOutcome.Allowed };
|
|
232
|
+
}
|
|
233
|
+
catch (err) {
|
|
234
|
+
/*
|
|
235
|
+
* Throttled: whatever broke Redis is unlikely to break it for one
|
|
236
|
+
* request only, and a per-request log line buries the incident it is
|
|
237
|
+
* reporting. The log names neither the token nor its hash.
|
|
238
|
+
*/
|
|
239
|
+
if (OnCallCalendarFeedRateLimit.shouldLogCounterUnavailable()) {
|
|
240
|
+
logger.warn(`OnCallCalendarFeedRateLimit: counter failed for a request from ${data.clientIp}`);
|
|
241
|
+
logger.warn(err);
|
|
242
|
+
}
|
|
243
|
+
return {
|
|
244
|
+
outcome: OnCallCalendarFeedRateLimitOutcome.CounterUnavailable,
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
static readCounterResult(result) {
|
|
249
|
+
if (!result) {
|
|
250
|
+
throw new Error("Rate limit counter returned no result");
|
|
251
|
+
}
|
|
252
|
+
const [error, value] = result;
|
|
253
|
+
if (error) {
|
|
254
|
+
throw error;
|
|
255
|
+
}
|
|
256
|
+
if (typeof value !== "number") {
|
|
257
|
+
throw new Error("Rate limit counter returned a non-numeric value");
|
|
258
|
+
}
|
|
259
|
+
return value;
|
|
260
|
+
}
|
|
261
|
+
/*
|
|
262
|
+
* Remaining seconds in the current fixed window, so every rejected caller
|
|
263
|
+
* is told to come back when the window actually rolls rather than all
|
|
264
|
+
* backing off by the same constant and re-colliding.
|
|
265
|
+
*/
|
|
266
|
+
static getSecondsUntilWindowEnd(windowSeconds) {
|
|
267
|
+
const windowMs = windowSeconds * 1000;
|
|
268
|
+
const msIntoWindow = Date.now() % windowMs;
|
|
269
|
+
return Math.max(1, Math.ceil((windowMs - msIntoWindow) / 1000));
|
|
270
|
+
}
|
|
271
|
+
/*
|
|
272
|
+
* Express middleware. Mounted on each feed route (it reads `:token` from
|
|
273
|
+
* req.params, so it must sit on the route, not on the router) ahead of the
|
|
274
|
+
* token lookup, so a flood is refused before it costs a Postgres read, let
|
|
275
|
+
* alone a render.
|
|
276
|
+
*
|
|
277
|
+
* FAILS OPEN. When Redis is unreachable every request is let through and
|
|
278
|
+
* the condition is logged (throttled). The limiter is load control: the
|
|
279
|
+
* token is still checked by the route behind it, and blacking out every
|
|
280
|
+
* subscribed calendar over a Redis blip -- clients that get a 503 keep the
|
|
281
|
+
* copy they have, but one that gets it repeatedly may drop the calendar --
|
|
282
|
+
* is a worse outcome than an unbounded window for the duration of the blip.
|
|
283
|
+
*/
|
|
284
|
+
static getMiddleware() {
|
|
285
|
+
return async (req, res, next) => {
|
|
286
|
+
const tokenKey = OnCallCalendarFeedRateLimit.resolveTokenKey(req);
|
|
287
|
+
const clientIp = OnCallCalendarFeedRateLimit.resolveClientIp(req);
|
|
288
|
+
const decision = await OnCallCalendarFeedRateLimit.consume({ tokenKey, clientIp });
|
|
289
|
+
if (decision.outcome === OnCallCalendarFeedRateLimitOutcome.RateLimited) {
|
|
290
|
+
if (decision.retryAfterSeconds) {
|
|
291
|
+
OnCallCalendarFeedRateLimit.setRetryAfterHeader(res, decision.retryAfterSeconds);
|
|
292
|
+
}
|
|
293
|
+
/*
|
|
294
|
+
* The crossing request only, and never the token or its hash: an
|
|
295
|
+
* operator needs to know an address is hammering the feeds, not which
|
|
296
|
+
* feed. The route's own attributes (requestId, no token) are enough to
|
|
297
|
+
* correlate.
|
|
298
|
+
*/
|
|
299
|
+
if (decision.isFirstRejectionInWindow) {
|
|
300
|
+
logger.warn(`OnCallCalendarFeedRateLimit: rejected calendar feed request from ${clientIp} (${decision.scope} limit)`);
|
|
301
|
+
}
|
|
302
|
+
return Response.sendErrorResponse(req, res, new TooManyRequestsException("Too many requests. Please try again later."));
|
|
303
|
+
}
|
|
304
|
+
if (decision.outcome ===
|
|
305
|
+
OnCallCalendarFeedRateLimitOutcome.CounterUnavailable) {
|
|
306
|
+
if (OnCallCalendarFeedRateLimit.shouldLogCounterUnavailable()) {
|
|
307
|
+
logger.warn("OnCallCalendarFeedRateLimit: rate limit counter unavailable, allowing calendar feed requests unthrottled");
|
|
308
|
+
logger.warn(getLogAttributesFromRequest(req));
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
return next();
|
|
312
|
+
};
|
|
313
|
+
}
|
|
314
|
+
/*
|
|
315
|
+
* A Redis outage means EVERY request takes the unavailable path, so an
|
|
316
|
+
* unguarded log line there is one per request for as long as the outage
|
|
317
|
+
* lasts. One line per interval is enough to make the condition visible.
|
|
318
|
+
*/
|
|
319
|
+
static shouldLogCounterUnavailable() {
|
|
320
|
+
const now = Date.now();
|
|
321
|
+
if (now - OnCallCalendarFeedRateLimit.counterUnavailableLastLoggedAt <
|
|
322
|
+
COUNTER_UNAVAILABLE_LOG_INTERVAL_MS) {
|
|
323
|
+
return false;
|
|
324
|
+
}
|
|
325
|
+
OnCallCalendarFeedRateLimit.counterUnavailableLastLoggedAt = now;
|
|
326
|
+
return true;
|
|
327
|
+
}
|
|
328
|
+
static setRetryAfterHeader(res, retryAfterSeconds) {
|
|
329
|
+
const setHeader = res["setHeader"];
|
|
330
|
+
if (typeof setHeader === "function") {
|
|
331
|
+
setHeader.call(res, "Retry-After", String(retryAfterSeconds));
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
OnCallCalendarFeedRateLimit.config = {
|
|
336
|
+
windowSeconds: OnCallCalendarFeedRateLimitWindowSeconds,
|
|
337
|
+
perTokenLimit: OnCallCalendarFeedRateLimitPerTokenPerWindow,
|
|
338
|
+
perIpLimit: OnCallCalendarFeedRateLimitPerIpPerWindow,
|
|
339
|
+
};
|
|
340
|
+
OnCallCalendarFeedRateLimit.counterUnavailableLastLoggedAt = 0;
|
|
341
|
+
export default OnCallCalendarFeedRateLimit;
|
|
342
|
+
//# sourceMappingURL=OnCallCalendarFeedRateLimit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OnCallCalendarFeedRateLimit.js","sourceRoot":"","sources":["../../../../Server/Middleware/OnCallCalendarFeedRateLimit.ts"],"names":[],"mappings":"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"}
|
|
@@ -164,7 +164,12 @@ export default class ProjectMiddleware {
|
|
|
164
164
|
req.tenantId = tenantId;
|
|
165
165
|
req.userType = UserType.API;
|
|
166
166
|
/*
|
|
167
|
-
*
|
|
167
|
+
* The two halves of an API key's authority. The global half is the
|
|
168
|
+
* fixed marker set every key carries (see APIKeyAccessPermission); the
|
|
169
|
+
* per-key grants an administrator actually configured are read from
|
|
170
|
+
* ApiKeyPermission just below. That second half is what the long-lived
|
|
171
|
+
* "TODO: Add API key permissions" here was asking for, and it is done -
|
|
172
|
+
* the TODO outlived the work.
|
|
168
173
|
*/
|
|
169
174
|
req.userGlobalAccessPermission =
|
|
170
175
|
await APIKeyAccessPermission.getDefaultApiGlobalPermission(tenantId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectAuthorization.js","sourceRoot":"","sources":["../../../../Server/Middleware/ProjectAuthorization.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ProjectAuthorization.js","sourceRoot":"","sources":["../../../../Server/Middleware/ProjectAuthorization.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,6 +20,10 @@ import Telemetry from "../Utils/Telemetry";
|
|
|
20
20
|
import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
|
|
21
21
|
import { DashboardCNameRecord } from "../EnvironmentConfig";
|
|
22
22
|
import Domain from "../Types/Domain";
|
|
23
|
+
import OneUptimeDate from "../../Types/Date";
|
|
24
|
+
import CertificateReissueUtil from "../../Utils/CertificateReissue";
|
|
25
|
+
import TooManyRequestsException from "../../Types/Exception/TooManyRequestsException";
|
|
26
|
+
import QueryHelper from "../Types/Database/QueryHelper";
|
|
23
27
|
const DASHBOARD_DOMAIN_EGRESS_LABEL = "Dashboard domain";
|
|
24
28
|
export class Service extends DatabaseService {
|
|
25
29
|
constructor() {
|
|
@@ -174,6 +178,100 @@ export class Service extends DatabaseService {
|
|
|
174
178
|
},
|
|
175
179
|
});
|
|
176
180
|
}
|
|
181
|
+
/*
|
|
182
|
+
* Reissue this domain's Let's Encrypt certificate because a customer asked
|
|
183
|
+
* for it, rather than because it is close to expiring.
|
|
184
|
+
*
|
|
185
|
+
* Every order spends from a Let's Encrypt account that is shared by the
|
|
186
|
+
* whole installation - including by the cron that keeps everybody else's
|
|
187
|
+
* certificates alive - so this is throttled to one request per domain per
|
|
188
|
+
* CertificateReissueUtil.COOLDOWN_IN_HOURS.
|
|
189
|
+
*
|
|
190
|
+
* Throws with a customer-readable reason for every refusal, so the API layer
|
|
191
|
+
* can hand the message straight back without classifying the failure:
|
|
192
|
+
* BadDataException for a domain that is not eligible at all, and
|
|
193
|
+
* TooManyRequestsException (429) for one that is simply too soon.
|
|
194
|
+
*/
|
|
195
|
+
async reissueCert(domainId) {
|
|
196
|
+
const now = OneUptimeDate.getCurrentDate();
|
|
197
|
+
const dashboardDomain = await this.findOneBy({
|
|
198
|
+
query: {
|
|
199
|
+
_id: domainId.toString(),
|
|
200
|
+
},
|
|
201
|
+
select: {
|
|
202
|
+
_id: true,
|
|
203
|
+
fullDomain: true,
|
|
204
|
+
isCnameVerified: true,
|
|
205
|
+
isSslOrdered: true,
|
|
206
|
+
isCustomCertificate: true,
|
|
207
|
+
certificateReissueRequestedAt: true,
|
|
208
|
+
},
|
|
209
|
+
props: {
|
|
210
|
+
isRoot: true,
|
|
211
|
+
},
|
|
212
|
+
});
|
|
213
|
+
if (!dashboardDomain) {
|
|
214
|
+
throw new BadDataException("Domain not found.");
|
|
215
|
+
}
|
|
216
|
+
if (!dashboardDomain.fullDomain) {
|
|
217
|
+
throw new BadDataException("Unable to reissue certificate because domain is null");
|
|
218
|
+
}
|
|
219
|
+
/*
|
|
220
|
+
* Nothing to reissue: the certificate on a custom-certificate domain is
|
|
221
|
+
* the one the customer uploaded, and we have no way to obtain another.
|
|
222
|
+
*/
|
|
223
|
+
if (dashboardDomain.isCustomCertificate) {
|
|
224
|
+
throw new BadDataException("This domain uses a certificate you uploaded yourself, so there is no Let's Encrypt certificate to reissue. Please edit this domain and upload a new certificate instead.");
|
|
225
|
+
}
|
|
226
|
+
if (!dashboardDomain.isCnameVerified) {
|
|
227
|
+
throw new BadDataException("CNAME is not verified. Please verify CNAME first before you reissue the SSL certificate.");
|
|
228
|
+
}
|
|
229
|
+
/*
|
|
230
|
+
* A domain that never ordered a certificate has nothing to reissue - the
|
|
231
|
+
* dashboard shows "Order Free SSL" for it, which is the correct button.
|
|
232
|
+
*/
|
|
233
|
+
if (!dashboardDomain.isSslOrdered) {
|
|
234
|
+
throw new BadDataException("No SSL certificate has been ordered for this domain yet. Please order one first.");
|
|
235
|
+
}
|
|
236
|
+
/*
|
|
237
|
+
* Claim the cooldown before ordering anything, and claim it by putting the
|
|
238
|
+
* cooldown condition in the WHERE clause rather than in an `if` above the
|
|
239
|
+
* write. Two clicks that arrive together both read a row that is not
|
|
240
|
+
* cooling down; only the write can decide which one of them gets to spend
|
|
241
|
+
* the CA's allowance.
|
|
242
|
+
*
|
|
243
|
+
* The stamp goes down BEFORE the order and is never rolled back on
|
|
244
|
+
* failure. A rejected order still costs a validation attempt against the
|
|
245
|
+
* shared account, and a domain whose order fails is exactly the domain
|
|
246
|
+
* somebody presses again - so a failed attempt has to start the clock the
|
|
247
|
+
* same way a successful one does.
|
|
248
|
+
*/
|
|
249
|
+
const claimedRowCount = await this.updateOneBy({
|
|
250
|
+
query: {
|
|
251
|
+
_id: domainId.toString(),
|
|
252
|
+
certificateReissueRequestedAt: QueryHelper.lessThanEqualToOrNull(CertificateReissueUtil.getCooldownCutoff(now)),
|
|
253
|
+
},
|
|
254
|
+
data: {
|
|
255
|
+
certificateReissueRequestedAt: now,
|
|
256
|
+
},
|
|
257
|
+
props: {
|
|
258
|
+
isRoot: true,
|
|
259
|
+
},
|
|
260
|
+
});
|
|
261
|
+
if (claimedRowCount === 0) {
|
|
262
|
+
if (dashboardDomain.certificateReissueRequestedAt) {
|
|
263
|
+
throw new TooManyRequestsException(CertificateReissueUtil.getCooldownMessage(dashboardDomain.certificateReissueRequestedAt, now));
|
|
264
|
+
}
|
|
265
|
+
/*
|
|
266
|
+
* The row matched the cooldown a moment ago and does not now: another
|
|
267
|
+
* request claimed it in between, or the domain was deleted. Either way
|
|
268
|
+
* the caller must not order.
|
|
269
|
+
*/
|
|
270
|
+
throw new BadDataException("Could not start a certificate reissue for this domain. Please refresh the page and try again.");
|
|
271
|
+
}
|
|
272
|
+
logger.debug("Reissuing SSL certificate for domain: " + dashboardDomain.fullDomain, { fullDomain: dashboardDomain.fullDomain });
|
|
273
|
+
await this.orderCert(dashboardDomain);
|
|
274
|
+
}
|
|
177
275
|
async updateSslProvisioningStatusForAllDomains() {
|
|
178
276
|
const domains = await this.findBy({
|
|
179
277
|
query: {
|
|
@@ -602,6 +700,12 @@ __decorate([
|
|
|
602
700
|
__metadata("design:paramtypes", [DashboardDomain]),
|
|
603
701
|
__metadata("design:returntype", Promise)
|
|
604
702
|
], Service.prototype, "orderCert", null);
|
|
703
|
+
__decorate([
|
|
704
|
+
CaptureSpan(),
|
|
705
|
+
__metadata("design:type", Function),
|
|
706
|
+
__metadata("design:paramtypes", [ObjectID]),
|
|
707
|
+
__metadata("design:returntype", Promise)
|
|
708
|
+
], Service.prototype, "reissueCert", null);
|
|
605
709
|
__decorate([
|
|
606
710
|
CaptureSpan(),
|
|
607
711
|
__metadata("design:type", Function),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DashboardDomainService.js","sourceRoot":"","sources":["../../../../Server/Services/DashboardDomainService.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DashboardDomainService.js","sourceRoot":"","sources":["../../../../Server/Services/DashboardDomainService.ts"],"names":[],"mappings":"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"}
|
|
@@ -162,6 +162,12 @@ import OnCallDutyPolicyScheduleOwnerTeamService from "./OnCallDutyPolicySchedule
|
|
|
162
162
|
import OnCallDutyPolicyScheduleLabelRuleService from "./OnCallDutyPolicyScheduleLabelRuleService";
|
|
163
163
|
import OnCallDutyPolicyScheduleLayerUserService from "./OnCallDutyPolicyScheduleLayerUserService";
|
|
164
164
|
import OnCallDutyPolicyScheduleService from "./OnCallDutyPolicyScheduleService";
|
|
165
|
+
// On-call calendar feeds and shift reminders
|
|
166
|
+
import UserOnCallCalendarFeedService from "./UserOnCallCalendarFeedService";
|
|
167
|
+
import OnCallDutyPolicyScheduleCalendarFeedService from "./OnCallDutyPolicyScheduleCalendarFeedService";
|
|
168
|
+
import ProjectOnCallCalendarFeedService from "./ProjectOnCallCalendarFeedService";
|
|
169
|
+
import UserOnCallShiftReminderService from "./UserOnCallShiftReminderService";
|
|
170
|
+
import UserOnCallShiftReminderLogService from "./UserOnCallShiftReminderLogService";
|
|
165
171
|
// On-Call Duty
|
|
166
172
|
import OnCallDutyPolicyService from "./OnCallDutyPolicyService";
|
|
167
173
|
import ProbeService from "./ProbeService";
|
|
@@ -654,6 +660,12 @@ const services = [
|
|
|
654
660
|
OnCallDutyPolicyScheduleOwnerTeamService,
|
|
655
661
|
OnCallDutyPolicyScheduleLabelRuleService,
|
|
656
662
|
OnCallDutyPolicyScheduleLayerUserService,
|
|
663
|
+
// On-call calendar feeds and shift reminders
|
|
664
|
+
UserOnCallCalendarFeedService,
|
|
665
|
+
OnCallDutyPolicyScheduleCalendarFeedService,
|
|
666
|
+
ProjectOnCallCalendarFeedService,
|
|
667
|
+
UserOnCallShiftReminderService,
|
|
668
|
+
UserOnCallShiftReminderLogService,
|
|
657
669
|
OnCallDutyPolicyScheduleLayerService,
|
|
658
670
|
OnCallDutyPolicyEscalationRuleScheduleService,
|
|
659
671
|
UsageBillingService,
|