@oneuptime/common 12.0.25 → 12.0.26
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/AnalyticsModels/Index.ts +2 -0
- package/Models/AnalyticsModels/ThreatIntelIndicator.ts +413 -0
- package/Models/DatabaseModels/AlertSeverity.ts +4 -1
- package/Models/DatabaseModels/CephClusterFeed.ts +625 -0
- package/Models/DatabaseModels/CloudResourceFeed.ts +625 -0
- package/Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel.ts +13 -0
- package/Models/DatabaseModels/DetectionRule.ts +9 -3
- package/Models/DatabaseModels/DockerHostFeed.ts +625 -0
- package/Models/DatabaseModels/DockerSwarmClusterFeed.ts +628 -0
- package/Models/DatabaseModels/GoogleSecOpsConnection.ts +9 -3
- package/Models/DatabaseModels/HostFeed.ts +625 -0
- package/Models/DatabaseModels/IncidentSeverity.ts +4 -1
- package/Models/DatabaseModels/Index.ts +22 -0
- package/Models/DatabaseModels/KubernetesClusterFeed.ts +628 -0
- package/Models/DatabaseModels/Monitor.ts +87 -0
- package/Models/DatabaseModels/NetworkDevice.ts +96 -5
- package/Models/DatabaseModels/NetworkDeviceAutoImportRule.ts +92 -6
- package/Models/DatabaseModels/NetworkDeviceDiscoveryScan.ts +301 -31
- package/Models/DatabaseModels/NetworkSite.ts +120 -0
- package/Models/DatabaseModels/OnCallDutyPolicyExecutionLog.ts +1 -0
- package/Models/DatabaseModels/PodmanHostFeed.ts +625 -0
- package/Models/DatabaseModels/ProxmoxClusterFeed.ts +626 -0
- package/Models/DatabaseModels/ScheduledMaintenance.ts +67 -0
- package/Models/DatabaseModels/ServiceFeed.ts +625 -0
- package/Models/DatabaseModels/TelemetrySourceMap.ts +474 -0
- package/Models/DatabaseModels/ThreatIntelFeed.ts +758 -0
- package/Models/DatabaseModels/UserOnCallLog.ts +1 -0
- package/Models/DatabaseModels/UserTotpAuth.ts +1 -0
- package/Models/DatabaseModels/UserWebAuthn.ts +1 -0
- package/Server/API/AlertAPI.ts +23 -1
- package/Server/API/BaseAPI.ts +14 -3
- package/Server/API/IncidentAPI.ts +41 -1
- package/Server/API/IncidentEpisodeAPI.ts +23 -1
- package/Server/API/MicrosoftTeamsAPI.ts +31 -2
- package/Server/API/ScheduledMaintenanceAPI.ts +23 -1
- package/Server/API/SlackAPI.ts +48 -0
- package/Server/API/TelemetryAPI.ts +167 -42
- package/Server/API/UserOnCallLogTimelineAPI.ts +75 -61
- package/Server/API/UserTotpAuthAPI.ts +67 -1
- package/Server/API/UserWebAuthnAPI.ts +44 -1
- package/Server/Infrastructure/Postgres/SchemaMigrations/1787923136162-MigrationName.ts +57 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1789600000000-AddAutoProvisionedNetworkDeviceMonitors.ts +49 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1789700000000-AddNetworkScaleIndexes.ts +129 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1789800000000-WidenSecurityEventLastErrorColumns.ts +54 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1789900000000-AddNetworkSiteRollupPolicyAndMaintenance.ts +64 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1790000000000-AddTelemetrySourceMap.ts +64 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1790000000001-AddSnmpConfigsToNetworkDeviceDiscoveryScan.ts +72 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1790003445000-AddSnmpEnabledToNetworkDeviceDiscoveryScan.ts +31 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1790100000000-AddResourceActivityFeeds.ts +489 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +18 -0
- package/Server/Middleware/IdentityRateLimit.ts +53 -3
- package/Server/Services/AIService.ts +181 -41
- package/Server/Services/CephClusterFeedService.ts +99 -0
- package/Server/Services/CephClusterLabelRuleEngineService.ts +29 -0
- package/Server/Services/CephClusterOwnerRuleEngineService.ts +23 -0
- package/Server/Services/CephClusterOwnerTeamService.ts +129 -0
- package/Server/Services/CephClusterOwnerUserService.ts +123 -0
- package/Server/Services/CephClusterService.ts +223 -2
- package/Server/Services/CloudResourceFeedService.ts +99 -0
- package/Server/Services/CloudResourceLabelRuleEngineService.ts +30 -0
- package/Server/Services/CloudResourceOwnerRuleEngineService.ts +33 -0
- package/Server/Services/CloudResourceOwnerTeamService.ts +129 -0
- package/Server/Services/CloudResourceOwnerUserService.ts +123 -0
- package/Server/Services/CloudResourceService.ts +227 -2
- package/Server/Services/DatabaseService.ts +265 -0
- package/Server/Services/DockerHostFeedService.ts +99 -0
- package/Server/Services/DockerHostLabelRuleEngineService.ts +29 -0
- package/Server/Services/DockerHostOwnerRuleEngineService.ts +23 -0
- package/Server/Services/DockerHostOwnerTeamService.ts +129 -0
- package/Server/Services/DockerHostOwnerUserService.ts +123 -0
- package/Server/Services/DockerHostService.ts +227 -2
- package/Server/Services/DockerSwarmClusterFeedService.ts +102 -0
- package/Server/Services/DockerSwarmClusterLabelRuleEngineService.ts +30 -0
- package/Server/Services/DockerSwarmClusterOwnerRuleEngineService.ts +24 -0
- package/Server/Services/DockerSwarmClusterOwnerTeamService.ts +133 -0
- package/Server/Services/DockerSwarmClusterOwnerUserService.ts +127 -0
- package/Server/Services/DockerSwarmClusterService.ts +229 -2
- package/Server/Services/EnterpriseLicenseService.ts +15 -7
- package/Server/Services/ExceptionAggregationService.ts +12 -2
- package/Server/Services/HostFeedService.ts +99 -0
- package/Server/Services/HostLabelRuleEngineService.ts +29 -0
- package/Server/Services/HostOwnerRuleEngineService.ts +23 -0
- package/Server/Services/HostOwnerTeamService.ts +129 -0
- package/Server/Services/HostOwnerUserService.ts +123 -0
- package/Server/Services/HostService.ts +215 -2
- package/Server/Services/IncidentService.ts +11 -0
- package/Server/Services/Index.ts +24 -0
- package/Server/Services/KubernetesClusterFeedService.ts +99 -0
- package/Server/Services/KubernetesClusterLabelRuleEngineService.ts +30 -0
- package/Server/Services/KubernetesClusterOwnerRuleEngineService.ts +24 -0
- package/Server/Services/KubernetesClusterOwnerTeamService.ts +133 -0
- package/Server/Services/KubernetesClusterOwnerUserService.ts +127 -0
- package/Server/Services/KubernetesClusterService.ts +231 -2
- package/Server/Services/LogAggregationService.ts +23 -280
- package/Server/Services/MetricAggregationService.ts +98 -1
- package/Server/Services/MonitorService.ts +177 -13
- package/Server/Services/MonitorTemplateService.ts +111 -0
- package/Server/Services/NetworkDeviceAutoImportRuleEngineService.ts +777 -86
- package/Server/Services/NetworkDeviceAutoImportRuleService.ts +199 -16
- package/Server/Services/NetworkDeviceDiscoveryScanService.ts +1055 -14
- package/Server/Services/NetworkDeviceService.ts +750 -4
- package/Server/Services/NetworkInterfaceService.ts +415 -0
- package/Server/Services/NetworkSiteService.ts +485 -52
- package/Server/Services/PodmanHostFeedService.ts +99 -0
- package/Server/Services/PodmanHostLabelRuleEngineService.ts +29 -0
- package/Server/Services/PodmanHostOwnerRuleEngineService.ts +23 -0
- package/Server/Services/PodmanHostOwnerTeamService.ts +129 -0
- package/Server/Services/PodmanHostOwnerUserService.ts +123 -0
- package/Server/Services/PodmanHostService.ts +227 -2
- package/Server/Services/ProjectService.ts +16 -10
- package/Server/Services/ProxmoxClusterFeedService.ts +99 -0
- package/Server/Services/ProxmoxClusterLabelRuleEngineService.ts +30 -0
- package/Server/Services/ProxmoxClusterOwnerRuleEngineService.ts +24 -0
- package/Server/Services/ProxmoxClusterOwnerTeamService.ts +131 -0
- package/Server/Services/ProxmoxClusterOwnerUserService.ts +124 -0
- package/Server/Services/ProxmoxClusterService.ts +225 -2
- package/Server/Services/ScheduledMaintenanceStateTimelineService.ts +61 -0
- package/Server/Services/ServiceFeedService.ts +99 -0
- package/Server/Services/ServiceLabelRuleEngineService.ts +29 -0
- package/Server/Services/ServiceOwnerRuleEngineService.ts +26 -0
- package/Server/Services/ServiceOwnerTeamService.ts +129 -0
- package/Server/Services/ServiceOwnerUserService.ts +123 -0
- package/Server/Services/ServiceService.ts +227 -3
- package/Server/Services/StatusPageSubscriberService.ts +7 -0
- package/Server/Services/TelemetryAttributeService.ts +13 -3
- package/Server/Services/TelemetrySourceMapService.ts +307 -0
- package/Server/Services/ThreatIntelFeedService.ts +222 -0
- package/Server/Services/ThreatIntelIndicatorService.ts +428 -0
- package/Server/Services/TraceAggregationService.ts +101 -11
- package/Server/Services/UserService.ts +13 -6
- package/Server/Services/UserTwoFactorBackupCodeService.ts +127 -0
- package/Server/Services/UserWebhookService.ts +11 -2
- package/Server/Static/Brand/README.md +38 -0
- package/Server/Static/Brand/favicons/apple-touch-icon.png +0 -0
- package/Server/Static/Brand/favicons/favicon-16x16.png +0 -0
- package/Server/Static/Brand/favicons/favicon-32x32.png +0 -0
- package/Server/Static/Brand/favicons/favicon.ico +0 -0
- package/Server/Static/Brand/favicons/safari-pinned-tab.svg +31 -0
- package/Server/Static/Brand/hou-wb.svg +1 -0
- package/Server/Static/Brand/oneuptime-logo.svg +1 -0
- package/Server/Static/Brand/ou-wb.svg +1 -0
- package/Server/Static/Vendor/README.md +4 -0
- package/Server/Types/AnalyticsDatabase/ModelPermission.ts +13 -3
- package/Server/Types/Database/AggregateBy.ts +83 -0
- package/Server/Types/Database/AggregateResultUtil.ts +126 -0
- package/Server/Types/Database/JSONColumnQuery.ts +18 -0
- package/Server/Types/Database/QueryHelper.ts +40 -0
- package/Server/Types/Database/QueryUtil.ts +26 -0
- package/Server/Types/Workflow/Components/API/Utils.ts +10 -1
- package/Server/Types/Workflow/Components/JavaScript.ts +8 -0
- package/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.ts +9 -0
- package/Server/Utils/AI/SRE/InvestigationGrader.ts +18 -0
- package/Server/Utils/AnalyticsDatabase/AttributeFilterStatement.ts +422 -0
- package/Server/Utils/AnalyticsDatabase/StatementGenerator.ts +176 -0
- package/Server/Utils/DataSource/HttpFetch.ts +18 -0
- package/Server/Utils/Database/RelationIdUtil.ts +42 -0
- package/Server/Utils/Marketing/MarketingEventUtil.ts +38 -9
- package/Server/Utils/Monitor/Criteria/ServerMonitorCriteria.ts +34 -3
- package/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.ts +9 -1
- package/Server/Utils/Monitor/Criteria/SyntheticMonitor.ts +28 -10
- package/Server/Utils/Monitor/MonitorAlert.ts +541 -332
- package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +330 -64
- package/Server/Utils/Monitor/MonitorIncident.ts +640 -434
- package/Server/Utils/Monitor/MonitorResource.ts +226 -49
- package/Server/Utils/Monitor/NetworkDeviceWalkUtil.ts +46 -3
- package/Server/Utils/Monitor/NetworkInventoryUtil.ts +23 -102
- package/Server/Utils/Monitor/PerEntityCriteriaFanOut.ts +329 -0
- package/Server/Utils/NetworkDevice/DeviceHealthAggregation.ts +427 -0
- package/Server/Utils/NetworkSite/NetworkSiteMaintenanceSuppression.ts +310 -0
- package/Server/Utils/OnCallNotificationContext.ts +686 -0
- package/Server/Utils/PrivateNetworkWebhookConfig.ts +549 -0
- package/Server/Utils/ResourceFeed/ResourceFeedUtil.ts +139 -0
- package/Server/Utils/Response.ts +11 -1
- package/Server/Utils/SSRFProtection.ts +230 -60
- package/Server/Utils/SecurityEvent/ConnectorErrorMessage.ts +106 -0
- package/Server/Utils/SecurityEvent/DetectionRuleEvaluator.ts +84 -284
- package/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsPoller.ts +47 -20
- package/Server/Utils/SecurityEvent/SecurityEventAlerting.ts +318 -0
- package/Server/Utils/SecurityEvent/ThreatIntel/TaxiiClient.ts +199 -0
- package/Server/Utils/SecurityEvent/ThreatIntel/ThreatIntelEnricher.ts +252 -0
- package/Server/Utils/SecurityEvent/ThreatIntel/ThreatIntelFeedPoller.ts +739 -0
- package/Server/Utils/SecurityEvent/ThreatIntel/ThreatIntelMatcher.ts +533 -0
- package/Server/Utils/StartServer.ts +83 -56
- package/Server/Utils/StatusPageSubscriberWebhook.ts +3 -0
- package/Server/Utils/Telemetry/SourceMapResolver.ts +480 -0
- package/Server/Utils/TwoFactorBackupCodeNotification.ts +106 -0
- package/Server/Utils/VM/VMAPI.ts +3 -0
- package/Server/Utils/VM/VMRunner.ts +27 -1
- package/Server/Utils/VendorAssets.ts +42 -0
- package/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.ts +136 -6
- package/Server/Views/AcknowledgeUserOnCallNotification.ejs +11 -9
- package/Server/Views/Partials/Head.ejs +9 -9
- package/Server/Views/Partials/OnCallNotificationDetails.ejs +48 -0
- package/Server/Views/ViewMessage.ejs +11 -9
- package/Tests/App/Accounts/LoginTwoFactorRecovery.test.tsx +972 -0
- package/Tests/App/Dashboard/AddNeighborToMonitoringModal.test.tsx +401 -0
- package/Tests/App/Dashboard/DiscoveryScanEditForm.test.tsx +707 -0
- package/Tests/App/Dashboard/DiscoveryScanWizardValidation.test.tsx +1908 -18
- package/Tests/App/Dashboard/ResourceFeed.test.tsx +230 -0
- package/Tests/App/Dashboard/ResourceFeedPageWiring.test.ts +216 -0
- package/Tests/App/Dashboard/TopologyAddToMonitoring.test.tsx +192 -0
- package/Tests/App/Dashboard/WorkspaceNotificationRuleConditions.test.tsx +439 -0
- package/Tests/Models/DatabaseModels/DateColumnDeserialization.test.ts +182 -0
- package/Tests/Models/DatabaseModels/RelationColumnModelTypeCoverage.test.ts +82 -0
- package/Tests/Models/DatabaseModels/ResourceFeedModels.test.ts +398 -0
- package/Tests/Models/DiscoveryScanNameColumn.test.ts +151 -16
- package/Tests/Models/DiscoveryScanSnmpEnabledColumn.test.ts +593 -0
- package/Tests/Models/NetworkDeviceCreateContract.test.ts +102 -0
- package/Tests/Server/API/AIGenerationProjectAIToggle.test.ts +607 -0
- package/Tests/Server/API/AIGenerationRequestBudget.test.ts +355 -0
- package/Tests/Server/API/AIKillSwitchBackstop.test.ts +602 -0
- package/Tests/Server/API/BaseAPIUpdateDateColumns.test.ts +154 -0
- package/Tests/Server/API/MicrosoftTeamsBotTestEndpoint.test.ts +335 -0
- package/Tests/Server/API/UserOnCallLogTimelineAcknowledgePage.test.ts +611 -0
- package/Tests/Server/API/UserTotpAuthAPI.test.ts +498 -4
- package/Tests/Server/API/UserWebAuthnBackupCodeMinting.test.ts +682 -0
- package/Tests/Server/Infrastructure/ExampleDockerfiles.test.ts +595 -0
- package/Tests/Server/Services/AIServiceDailyBudget.test.ts +9 -0
- package/Tests/Server/Services/AIServiceProjectAccess.test.ts +6 -0
- package/Tests/Server/Services/AutoImportScanCredentialSelect.test.ts +18 -0
- package/Tests/Server/Services/DatabaseServiceAggregateBy.test.ts +590 -0
- package/Tests/Server/Services/DatabaseServiceUpdateWriteRouting.test.ts +12 -0
- package/Tests/Server/Services/DiscoveryScanClaimHookFreeSafety.test.ts +162 -26
- package/Tests/Server/Services/EnterpriseLicenseServiceCreate.test.ts +292 -0
- package/Tests/Server/Services/FeedRetentionConsistency.test.ts +119 -12
- package/Tests/Server/Services/LogAggregationAttributeOperators.test.ts +109 -0
- package/Tests/Server/Services/MetricAggregationAttributeOperators.test.ts +170 -0
- package/Tests/Server/Services/MonitorTemplateServiceNetworkDeviceSync.test.ts +383 -0
- package/Tests/Server/Services/NetworkDeviceAutoImportRuleEngineService.test.ts +997 -3
- package/Tests/Server/Services/NetworkDeviceAutoImportRuleService.test.ts +830 -0
- package/Tests/Server/Services/NetworkDeviceAutoMonitorLifecycle.test.ts +528 -0
- package/Tests/Server/Services/NetworkDeviceDiscoveryScanService.test.ts +3141 -1
- package/Tests/Server/Services/NetworkDeviceRegisteredHostnames.test.ts +1023 -0
- package/Tests/Server/Services/NetworkDeviceSiteAssignmentRuleSkip.test.ts +728 -0
- package/Tests/Server/Services/NetworkInterfaceServiceUpsert.test.ts +795 -0
- package/Tests/Server/Services/NetworkSiteRollupPolicyAndMaintenance.test.ts +903 -0
- package/Tests/Server/Services/NetworkSiteService.test.ts +165 -24
- package/Tests/Server/Services/ProjectServiceChangePlan.test.ts +5 -3
- package/Tests/Server/Services/ProjectServiceCreateSubscriptionStarted.test.ts +5 -2
- package/Tests/Server/Services/ResourceCreationFeedWrites.test.ts +304 -0
- package/Tests/Server/Services/ResourceFeedServices.test.ts +269 -0
- package/Tests/Server/Services/ResourceOwnerFeedWrites.test.ts +245 -0
- package/Tests/Server/Services/SecurityEventLastErrorColumnWidth.test.ts +792 -0
- package/Tests/Server/Services/TelemetrySourceMapService.test.ts +483 -0
- package/Tests/Server/Services/ThreatIntelFeedService.test.ts +351 -0
- package/Tests/Server/Services/ThreatIntelIndicatorService.test.ts +366 -0
- package/Tests/Server/Services/TraceAggregationAttributeOperators.test.ts +507 -0
- package/Tests/Server/Services/UserTwoFactorBackupCodeGenerateIfNone.test.ts +705 -0
- package/Tests/Server/Services/WorkspaceNotificationRuleOnCallDutyPolicy.test.ts +306 -0
- package/Tests/Server/Types/Database/AggregateResultUtil.test.ts +386 -0
- package/Tests/Server/Types/Database/Permissions/SelectRejectionMessageContract.test.ts +424 -0
- package/Tests/Server/Types/Database/QueryHelperWildcard.test.ts +142 -0
- package/Tests/Server/Types/Workflow/Components/ApiComponentPrivateNetwork.test.ts +163 -0
- package/Tests/Server/Types/Workflow/Components/JavaScriptPrivateNetwork.test.ts +124 -0
- package/Tests/Server/Utils/AI/CodeFixAgentCompletion.test.ts +5 -0
- package/Tests/Server/Utils/AI/InvestigationGrader.test.ts +39 -1
- package/Tests/Server/Utils/AnalyticsDatabase/AttributeFilterStatement.test.ts +338 -0
- package/Tests/Server/Utils/AnalyticsDatabase/StatementGeneratorWildcard.test.ts +383 -0
- package/Tests/Server/Utils/Marketing/EmittedMarketingEvent.ts +23 -0
- package/Tests/Server/Utils/Marketing/MarketingEventUtil.test.ts +51 -0
- package/Tests/Server/Utils/Monitor/Criteria/SyntheticMonitorCriteria.test.ts +259 -0
- package/Tests/Server/Utils/Monitor/MonitorCriteriaEvaluatorPerSeriesFanout.test.ts +557 -0
- package/Tests/Server/Utils/Monitor/MonitorDependencySuppressionCreatorSkip.test.ts +12 -2
- package/Tests/Server/Utils/Monitor/NetworkDeviceWalkLogWritePath.test.ts +404 -0
- package/Tests/Server/Utils/Monitor/NetworkDeviceWalkUtil.test.ts +8 -2
- package/Tests/Server/Utils/Monitor/NetworkInventoryUtil.test.ts +125 -98
- package/Tests/Server/Utils/Monitor/PerEntityCriteriaFanOut.test.ts +444 -0
- package/Tests/Server/Utils/Monitor/PerSeriesSecondEntityAlerting.test.ts +1112 -0
- package/Tests/Server/Utils/NetworkDevice/DeviceHealthAggregation.test.ts +717 -0
- package/Tests/Server/Utils/NetworkDevice/RulePatternValidator.test.ts +78 -0
- package/Tests/Server/Utils/NetworkSite/NetworkSiteMaintenanceSuppression.test.ts +363 -0
- package/Tests/Server/Utils/OfflineAssetHygiene.test.ts +35 -0
- package/Tests/Server/Utils/OnCallNotificationContext.test.ts +908 -0
- package/Tests/Server/Utils/PrivateNetworkWebhookConfig.test.ts +423 -0
- package/Tests/Server/Utils/ResourceFeed/ResourceFeedUtil.test.ts +191 -0
- package/Tests/Server/Utils/SSRFProtectionPrivateNetwork.test.ts +597 -0
- package/Tests/Server/Utils/SecurityEvent/ConnectorErrorMessage.test.ts +819 -0
- package/Tests/Server/Utils/SecurityEvent/DetectionRuleEvaluator.test.ts +381 -0
- package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsPoller.test.ts +417 -0
- package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsPollerFailureTaxonomy.test.ts +819 -0
- package/Tests/Server/Utils/SecurityEvent/SecurityEventAlerting.test.ts +246 -0
- package/Tests/Server/Utils/SecurityEvent/ThreatIntel/TaxiiClient.test.ts +282 -0
- package/Tests/Server/Utils/SecurityEvent/ThreatIntel/ThreatIntelEnricher.test.ts +312 -0
- package/Tests/Server/Utils/SecurityEvent/ThreatIntel/ThreatIntelFeedPoller.test.ts +854 -0
- package/Tests/Server/Utils/SecurityEvent/ThreatIntel/ThreatIntelMatcher.test.ts +437 -0
- package/Tests/Server/Utils/StartServerErrorStatus.test.ts +225 -0
- package/Tests/Server/Utils/StatusPage/MonitorRulePatternValidator.test.ts +62 -0
- package/Tests/Server/Utils/StatusPageSubscriberWebhookPrivateNetwork.test.ts +119 -0
- package/Tests/Server/Utils/Telemetry/SourceMapResolver.test.ts +542 -0
- package/Tests/Server/Utils/TwoFactorBackupCodeNotification.test.ts +272 -0
- package/Tests/Server/Utils/VM/VMRunnerPrivateNetworkWiring.test.ts +111 -0
- package/Tests/Server/Utils/VendorAssets.test.ts +117 -0
- package/Tests/Server/Utils/Workspace/MicrosoftTeamsChannelSend.test.ts +101 -4
- package/Tests/Server/Utils/Workspace/MicrosoftTeamsInstallStateDiagnostics.test.ts +922 -0
- package/Tests/Server/Utils/Workspace/MicrosoftTeamsRosterDiagnosticMessages.test.ts +642 -0
- package/Tests/Server/Views/OnCallAcknowledgePage.test.ts +430 -0
- package/Tests/Types/API/URLQueryString.test.ts +472 -0
- package/Tests/Types/BaseDatabase/Wildcard.test.ts +163 -0
- package/Tests/Types/BaseDatabase/WildcardPattern.test.ts +149 -0
- package/Tests/Types/Database/DateColumnValue.test.ts +265 -0
- package/Tests/Types/DateToIsoStringOrNull.test.ts +67 -0
- package/Tests/Types/Log/LogQueryToFilter.test.ts +218 -43
- package/Tests/Types/Monitor/KubernetesTemplateGroupByKeys.test.ts +225 -0
- package/Tests/Types/Monitor/TemplateGroupByKeys.test.ts +296 -0
- package/Tests/Types/NetworkAutomation/RuleRunResult.test.ts +102 -0
- package/Tests/Types/NetworkAutomation/RuleRunResultDescribe.test.ts +145 -0
- package/Tests/Types/NetworkSite/SiteHealthRollupPolicy.test.ts +58 -0
- package/Tests/Types/SerializableObjectDictionaryImportCycle.test.ts +15 -0
- package/Tests/Types/Telemetry/TelemetrySearchQuery.test.ts +620 -0
- package/Tests/Types/WhatsApp/WhatsAppTemplates.test.ts +110 -0
- package/Tests/Types/Workspace/NotificationRuleConditionUtil.test.ts +76 -6
- package/Tests/Types/Workspace/NotificationRules/NotificationRuleCondition.test.ts +16 -4
- package/Tests/Types/Workspace/NotificationRules/OnCallDutyPolicyConditions.test.ts +669 -0
- package/Tests/UI/Components/DictionaryFilterOperatorWildcard.test.ts +175 -0
- package/Tests/UI/Components/IconOpticalSize.test.tsx +377 -0
- package/Tests/UI/MicrosoftTeams/MicrosoftTeamsChatsCardInstallGuidance.test.tsx +332 -0
- package/Tests/UI/MicrosoftTeams/MicrosoftTeamsInstallGuidanceContent.test.tsx +643 -0
- package/Tests/Utils/Monitor/InterfaceInventoryUtil.test.ts +824 -0
- package/Tests/Utils/Monitor/NetworkDeviceMonitorTemplateUtil.test.ts +626 -0
- package/Tests/Utils/Monitor/NetworkTopologyUtil.test.ts +718 -0
- package/Tests/Utils/NetworkDevice/DeviceHealthStateUtil.test.ts +59 -0
- package/Tests/Utils/NetworkDiscovery/DiscoveredDeviceBuilder.test.ts +287 -2
- package/Tests/Utils/NetworkDiscovery/DiscoveryImportEligibility.test.ts +73 -0
- package/Tests/Utils/NetworkDiscovery/PingMonitorBuilder.test.ts +317 -0
- package/Tests/Utils/NetworkDiscovery/RescanIntervalUtil.test.ts +262 -0
- package/Tests/Utils/NetworkDiscovery/ScanModeUtil.test.ts +474 -0
- package/Tests/Utils/NetworkDiscovery/SnmpScanConfigUtil.test.ts +2442 -0
- package/Tests/Utils/NetworkSite/SiteMaintenanceUtil.test.ts +188 -0
- package/Tests/Utils/NetworkSite/SiteStatusRollupUtil.test.ts +522 -0
- package/Tests/Utils/NetworkSite/SiteUptimeUtil.test.ts +694 -0
- package/Tests/Utils/SecurityEvent/ThreatIntel/StixPatternParser.test.ts +281 -0
- package/Tests/Utils/Telemetry/CrossSignalScope.test.ts +87 -67
- package/Types/API/URL.ts +45 -10
- package/Types/AnalyticsDatabase/AnalyticsTableName.ts +8 -0
- package/Types/BaseDatabase/NotWildcard.ts +86 -0
- package/Types/BaseDatabase/Wildcard.ts +89 -0
- package/Types/BaseDatabase/WildcardPattern.ts +176 -0
- package/Types/Database/DateColumnValue.ts +184 -0
- package/Types/Database/TableColumn.ts +40 -5
- package/Types/Date.ts +37 -0
- package/Types/Email/EmailTemplateType.ts +1 -0
- package/Types/JSON.ts +8 -0
- package/Types/Log/LogQueryToFilter.ts +167 -129
- package/Types/Monitor/DockerAlertTemplates.ts +43 -12
- package/Types/Monitor/HostAlertTemplates.ts +31 -3
- package/Types/Monitor/KubernetesAlertTemplates.ts +98 -0
- package/Types/Monitor/MonitorStep.ts +49 -0
- package/Types/Monitor/PodmanAlertTemplates.ts +39 -12
- package/Types/Monitor/SnmpMonitor/CdpNeighbor.ts +14 -0
- package/Types/Monitor/SnmpMonitor/LldpNeighbor.ts +11 -0
- package/Types/Monitor/SnmpMonitor/NetworkTopology.ts +11 -4
- package/Types/NetworkAutomation/RuleRunResult.ts +191 -2
- package/Types/NetworkSite/SiteHealthRollupPolicy.ts +96 -0
- package/Types/Permission.ts +411 -0
- package/Types/Probe/ProbeApiIngestResponse.ts +42 -0
- package/Types/SecurityEvent/ThreatIntelConstants.ts +118 -0
- package/Types/SerializableObjectDictionary.ts +8 -0
- package/Types/Telemetry/SourceMap.ts +56 -0
- package/Types/Telemetry/TelemetrySearchQuery.ts +949 -0
- package/Types/Workspace/NotificationRules/NotificationRuleCondition.ts +12 -1
- package/UI/Components/Dictionary/DictionaryFilterOperator.ts +83 -0
- package/UI/Components/Icon/Icon.tsx +28 -1
- package/UI/Components/LogsViewer/components/LogSearchBar.tsx +26 -4
- package/UI/Components/LogsViewer/components/LogSearchHelp.tsx +34 -16
- package/UI/Components/TelemetryViewer/components/TelemetrySearchBar.tsx +15 -2
- package/Utils/Metrics/MetricExplorerUrl.ts +77 -15
- package/Utils/Monitor/InterfaceInventoryUtil.ts +251 -0
- package/Utils/Monitor/NetworkDeviceMonitorTemplateUtil.ts +333 -0
- package/Utils/Monitor/NetworkTopologyUtil.ts +249 -28
- package/Utils/NetworkDevice/DeviceHealthStateUtil.ts +14 -6
- package/Utils/NetworkDiscovery/AutoImportRuleMatcher.ts +2 -0
- package/Utils/NetworkDiscovery/DiscoveredDeviceBuilder.ts +49 -18
- package/Utils/NetworkDiscovery/PingMonitorBuilder.ts +215 -0
- package/Utils/NetworkDiscovery/RescanIntervalUtil.ts +148 -0
- package/Utils/NetworkDiscovery/ScanModeUtil.ts +105 -0
- package/Utils/NetworkDiscovery/SnmpScanConfigUtil.ts +827 -0
- package/Utils/NetworkSite/SiteMaintenanceUtil.ts +110 -0
- package/Utils/NetworkSite/SiteStatusRollupUtil.ts +350 -19
- package/Utils/NetworkSite/SiteUptimeUtil.ts +422 -21
- package/Utils/SecurityEvent/ThreatIntel/StixPatternParser.ts +383 -0
- package/Utils/Telemetry/CrossSignalScope.ts +37 -39
- package/build/dist/Models/AnalyticsModels/Index.js +2 -0
- package/build/dist/Models/AnalyticsModels/Index.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/ThreatIntelIndicator.js +325 -0
- package/build/dist/Models/AnalyticsModels/ThreatIntelIndicator.js.map +1 -0
- package/build/dist/Models/DatabaseModels/AlertSeverity.js +4 -1
- package/build/dist/Models/DatabaseModels/AlertSeverity.js.map +1 -1
- package/build/dist/Models/DatabaseModels/CephClusterFeed.js +648 -0
- package/build/dist/Models/DatabaseModels/CephClusterFeed.js.map +1 -0
- package/build/dist/Models/DatabaseModels/CloudResourceFeed.js +648 -0
- package/build/dist/Models/DatabaseModels/CloudResourceFeed.js.map +1 -0
- package/build/dist/Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel.js +11 -0
- package/build/dist/Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel.js.map +1 -1
- package/build/dist/Models/DatabaseModels/DetectionRule.js +9 -3
- package/build/dist/Models/DatabaseModels/DetectionRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/DockerHostFeed.js +648 -0
- package/build/dist/Models/DatabaseModels/DockerHostFeed.js.map +1 -0
- package/build/dist/Models/DatabaseModels/DockerSwarmClusterFeed.js +648 -0
- package/build/dist/Models/DatabaseModels/DockerSwarmClusterFeed.js.map +1 -0
- package/build/dist/Models/DatabaseModels/GoogleSecOpsConnection.js +9 -3
- package/build/dist/Models/DatabaseModels/GoogleSecOpsConnection.js.map +1 -1
- package/build/dist/Models/DatabaseModels/HostFeed.js +648 -0
- package/build/dist/Models/DatabaseModels/HostFeed.js.map +1 -0
- package/build/dist/Models/DatabaseModels/IncidentSeverity.js +4 -1
- package/build/dist/Models/DatabaseModels/IncidentSeverity.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Index.js +22 -0
- package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
- package/build/dist/Models/DatabaseModels/KubernetesClusterFeed.js +648 -0
- package/build/dist/Models/DatabaseModels/KubernetesClusterFeed.js.map +1 -0
- package/build/dist/Models/DatabaseModels/Monitor.js +81 -0
- package/build/dist/Models/DatabaseModels/Monitor.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkDevice.js +103 -7
- package/build/dist/Models/DatabaseModels/NetworkDevice.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkDeviceAutoImportRule.js +91 -6
- package/build/dist/Models/DatabaseModels/NetworkDeviceAutoImportRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkDeviceDiscoveryScan.js +276 -31
- package/build/dist/Models/DatabaseModels/NetworkDeviceDiscoveryScan.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkSite.js +124 -1
- package/build/dist/Models/DatabaseModels/NetworkSite.js.map +1 -1
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyExecutionLog.js +1 -0
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyExecutionLog.js.map +1 -1
- package/build/dist/Models/DatabaseModels/PodmanHostFeed.js +648 -0
- package/build/dist/Models/DatabaseModels/PodmanHostFeed.js.map +1 -0
- package/build/dist/Models/DatabaseModels/ProxmoxClusterFeed.js +648 -0
- package/build/dist/Models/DatabaseModels/ProxmoxClusterFeed.js.map +1 -0
- package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js +66 -0
- package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ServiceFeed.js +648 -0
- package/build/dist/Models/DatabaseModels/ServiceFeed.js.map +1 -0
- package/build/dist/Models/DatabaseModels/TelemetrySourceMap.js +496 -0
- package/build/dist/Models/DatabaseModels/TelemetrySourceMap.js.map +1 -0
- package/build/dist/Models/DatabaseModels/ThreatIntelFeed.js +800 -0
- package/build/dist/Models/DatabaseModels/ThreatIntelFeed.js.map +1 -0
- package/build/dist/Models/DatabaseModels/UserOnCallLog.js +1 -0
- package/build/dist/Models/DatabaseModels/UserOnCallLog.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserTotpAuth.js +1 -0
- package/build/dist/Models/DatabaseModels/UserTotpAuth.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserWebAuthn.js +1 -0
- package/build/dist/Models/DatabaseModels/UserWebAuthn.js.map +1 -1
- package/build/dist/Server/API/AlertAPI.js +18 -1
- package/build/dist/Server/API/AlertAPI.js.map +1 -1
- package/build/dist/Server/API/BaseAPI.js +8 -1
- package/build/dist/Server/API/BaseAPI.js.map +1 -1
- package/build/dist/Server/API/IncidentAPI.js +35 -1
- package/build/dist/Server/API/IncidentAPI.js.map +1 -1
- package/build/dist/Server/API/IncidentEpisodeAPI.js +18 -1
- package/build/dist/Server/API/IncidentEpisodeAPI.js.map +1 -1
- package/build/dist/Server/API/MicrosoftTeamsAPI.js +30 -2
- package/build/dist/Server/API/MicrosoftTeamsAPI.js.map +1 -1
- package/build/dist/Server/API/ScheduledMaintenanceAPI.js +18 -1
- package/build/dist/Server/API/ScheduledMaintenanceAPI.js.map +1 -1
- package/build/dist/Server/API/SlackAPI.js +45 -0
- package/build/dist/Server/API/SlackAPI.js.map +1 -1
- package/build/dist/Server/API/TelemetryAPI.js +100 -35
- package/build/dist/Server/API/TelemetryAPI.js.map +1 -1
- package/build/dist/Server/API/UserOnCallLogTimelineAPI.js +64 -59
- package/build/dist/Server/API/UserOnCallLogTimelineAPI.js.map +1 -1
- package/build/dist/Server/API/UserTotpAuthAPI.js +65 -1
- package/build/dist/Server/API/UserTotpAuthAPI.js.map +1 -1
- package/build/dist/Server/API/UserWebAuthnAPI.js +42 -1
- package/build/dist/Server/API/UserWebAuthnAPI.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787923136162-MigrationName.js +26 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787923136162-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1789600000000-AddAutoProvisionedNetworkDeviceMonitors.js +22 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1789600000000-AddAutoProvisionedNetworkDeviceMonitors.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1789700000000-AddNetworkScaleIndexes.js +88 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1789700000000-AddNetworkScaleIndexes.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1789800000000-WidenSecurityEventLastErrorColumns.js +39 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1789800000000-WidenSecurityEventLastErrorColumns.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1789900000000-AddNetworkSiteRollupPolicyAndMaintenance.js +34 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1789900000000-AddNetworkSiteRollupPolicyAndMaintenance.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790000000000-AddTelemetrySourceMap.js +32 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790000000000-AddTelemetrySourceMap.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790000000001-AddSnmpConfigsToNetworkDeviceDiscoveryScan.js +61 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790000000001-AddSnmpConfigsToNetworkDeviceDiscoveryScan.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790003445000-AddSnmpEnabledToNetworkDeviceDiscoveryScan.js +23 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790003445000-AddSnmpEnabledToNetworkDeviceDiscoveryScan.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790100000000-AddResourceActivityFeeds.js +179 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790100000000-AddResourceActivityFeeds.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +18 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Middleware/IdentityRateLimit.js +40 -3
- package/build/dist/Server/Middleware/IdentityRateLimit.js.map +1 -1
- package/build/dist/Server/Services/AIService.js +177 -30
- package/build/dist/Server/Services/AIService.js.map +1 -1
- package/build/dist/Server/Services/CephClusterFeedService.js +89 -0
- package/build/dist/Server/Services/CephClusterFeedService.js.map +1 -0
- package/build/dist/Server/Services/CephClusterLabelRuleEngineService.js +27 -3
- package/build/dist/Server/Services/CephClusterLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/CephClusterOwnerRuleEngineService.js +21 -0
- package/build/dist/Server/Services/CephClusterOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/CephClusterOwnerTeamService.js +120 -0
- package/build/dist/Server/Services/CephClusterOwnerTeamService.js.map +1 -1
- package/build/dist/Server/Services/CephClusterOwnerUserService.js +113 -0
- package/build/dist/Server/Services/CephClusterOwnerUserService.js.map +1 -1
- package/build/dist/Server/Services/CephClusterService.js +175 -1
- package/build/dist/Server/Services/CephClusterService.js.map +1 -1
- package/build/dist/Server/Services/CloudResourceFeedService.js +89 -0
- package/build/dist/Server/Services/CloudResourceFeedService.js.map +1 -0
- package/build/dist/Server/Services/CloudResourceLabelRuleEngineService.js +27 -3
- package/build/dist/Server/Services/CloudResourceLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/CloudResourceOwnerRuleEngineService.js +28 -3
- package/build/dist/Server/Services/CloudResourceOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/CloudResourceOwnerTeamService.js +120 -0
- package/build/dist/Server/Services/CloudResourceOwnerTeamService.js.map +1 -1
- package/build/dist/Server/Services/CloudResourceOwnerUserService.js +113 -0
- package/build/dist/Server/Services/CloudResourceOwnerUserService.js.map +1 -1
- package/build/dist/Server/Services/CloudResourceService.js +177 -1
- package/build/dist/Server/Services/CloudResourceService.js.map +1 -1
- package/build/dist/Server/Services/DatabaseService.js +201 -0
- package/build/dist/Server/Services/DatabaseService.js.map +1 -1
- package/build/dist/Server/Services/DockerHostFeedService.js +89 -0
- package/build/dist/Server/Services/DockerHostFeedService.js.map +1 -0
- package/build/dist/Server/Services/DockerHostLabelRuleEngineService.js +27 -3
- package/build/dist/Server/Services/DockerHostLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/DockerHostOwnerRuleEngineService.js +21 -0
- package/build/dist/Server/Services/DockerHostOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/DockerHostOwnerTeamService.js +120 -0
- package/build/dist/Server/Services/DockerHostOwnerTeamService.js.map +1 -1
- package/build/dist/Server/Services/DockerHostOwnerUserService.js +113 -0
- package/build/dist/Server/Services/DockerHostOwnerUserService.js.map +1 -1
- package/build/dist/Server/Services/DockerHostService.js +177 -1
- package/build/dist/Server/Services/DockerHostService.js.map +1 -1
- package/build/dist/Server/Services/DockerSwarmClusterFeedService.js +90 -0
- package/build/dist/Server/Services/DockerSwarmClusterFeedService.js.map +1 -0
- package/build/dist/Server/Services/DockerSwarmClusterLabelRuleEngineService.js +27 -3
- package/build/dist/Server/Services/DockerSwarmClusterLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/DockerSwarmClusterOwnerRuleEngineService.js +21 -0
- package/build/dist/Server/Services/DockerSwarmClusterOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/DockerSwarmClusterOwnerTeamService.js +120 -0
- package/build/dist/Server/Services/DockerSwarmClusterOwnerTeamService.js.map +1 -1
- package/build/dist/Server/Services/DockerSwarmClusterOwnerUserService.js +113 -0
- package/build/dist/Server/Services/DockerSwarmClusterOwnerUserService.js.map +1 -1
- package/build/dist/Server/Services/DockerSwarmClusterService.js +175 -1
- package/build/dist/Server/Services/DockerSwarmClusterService.js.map +1 -1
- package/build/dist/Server/Services/EnterpriseLicenseService.js +40 -30
- package/build/dist/Server/Services/EnterpriseLicenseService.js.map +1 -1
- package/build/dist/Server/Services/ExceptionAggregationService.js +8 -2
- package/build/dist/Server/Services/ExceptionAggregationService.js.map +1 -1
- package/build/dist/Server/Services/HostFeedService.js +89 -0
- package/build/dist/Server/Services/HostFeedService.js.map +1 -0
- package/build/dist/Server/Services/HostLabelRuleEngineService.js +27 -3
- package/build/dist/Server/Services/HostLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/HostOwnerRuleEngineService.js +21 -0
- package/build/dist/Server/Services/HostOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/HostOwnerTeamService.js +120 -0
- package/build/dist/Server/Services/HostOwnerTeamService.js.map +1 -1
- package/build/dist/Server/Services/HostOwnerUserService.js +113 -0
- package/build/dist/Server/Services/HostOwnerUserService.js.map +1 -1
- package/build/dist/Server/Services/HostService.js +175 -1
- package/build/dist/Server/Services/HostService.js.map +1 -1
- package/build/dist/Server/Services/IncidentService.js +10 -0
- package/build/dist/Server/Services/IncidentService.js.map +1 -1
- package/build/dist/Server/Services/Index.js +24 -0
- package/build/dist/Server/Services/Index.js.map +1 -1
- package/build/dist/Server/Services/KubernetesClusterFeedService.js +89 -0
- package/build/dist/Server/Services/KubernetesClusterFeedService.js.map +1 -0
- package/build/dist/Server/Services/KubernetesClusterLabelRuleEngineService.js +27 -3
- package/build/dist/Server/Services/KubernetesClusterLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/KubernetesClusterOwnerRuleEngineService.js +21 -0
- package/build/dist/Server/Services/KubernetesClusterOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/KubernetesClusterOwnerTeamService.js +120 -0
- package/build/dist/Server/Services/KubernetesClusterOwnerTeamService.js.map +1 -1
- package/build/dist/Server/Services/KubernetesClusterOwnerUserService.js +113 -0
- package/build/dist/Server/Services/KubernetesClusterOwnerUserService.js.map +1 -1
- package/build/dist/Server/Services/KubernetesClusterService.js +177 -1
- package/build/dist/Server/Services/KubernetesClusterService.js.map +1 -1
- package/build/dist/Server/Services/LogAggregationService.js +19 -196
- package/build/dist/Server/Services/LogAggregationService.js.map +1 -1
- package/build/dist/Server/Services/MetricAggregationService.js +59 -0
- package/build/dist/Server/Services/MetricAggregationService.js.map +1 -1
- package/build/dist/Server/Services/MonitorService.js +115 -13
- package/build/dist/Server/Services/MonitorService.js.map +1 -1
- package/build/dist/Server/Services/MonitorTemplateService.js +86 -0
- package/build/dist/Server/Services/MonitorTemplateService.js.map +1 -1
- package/build/dist/Server/Services/NetworkDeviceAutoImportRuleEngineService.js +561 -67
- package/build/dist/Server/Services/NetworkDeviceAutoImportRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/NetworkDeviceAutoImportRuleService.js +130 -16
- package/build/dist/Server/Services/NetworkDeviceAutoImportRuleService.js.map +1 -1
- package/build/dist/Server/Services/NetworkDeviceDiscoveryScanService.js +850 -8
- package/build/dist/Server/Services/NetworkDeviceDiscoveryScanService.js.map +1 -1
- package/build/dist/Server/Services/NetworkDeviceService.js +594 -5
- package/build/dist/Server/Services/NetworkDeviceService.js.map +1 -1
- package/build/dist/Server/Services/NetworkInterfaceService.js +306 -0
- package/build/dist/Server/Services/NetworkInterfaceService.js.map +1 -1
- package/build/dist/Server/Services/NetworkSiteService.js +408 -47
- package/build/dist/Server/Services/NetworkSiteService.js.map +1 -1
- package/build/dist/Server/Services/PodmanHostFeedService.js +89 -0
- package/build/dist/Server/Services/PodmanHostFeedService.js.map +1 -0
- package/build/dist/Server/Services/PodmanHostLabelRuleEngineService.js +27 -3
- package/build/dist/Server/Services/PodmanHostLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/PodmanHostOwnerRuleEngineService.js +21 -0
- package/build/dist/Server/Services/PodmanHostOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/PodmanHostOwnerTeamService.js +120 -0
- package/build/dist/Server/Services/PodmanHostOwnerTeamService.js.map +1 -1
- package/build/dist/Server/Services/PodmanHostOwnerUserService.js +113 -0
- package/build/dist/Server/Services/PodmanHostOwnerUserService.js.map +1 -1
- package/build/dist/Server/Services/PodmanHostService.js +177 -1
- package/build/dist/Server/Services/PodmanHostService.js.map +1 -1
- package/build/dist/Server/Services/ProjectService.js +40 -30
- package/build/dist/Server/Services/ProjectService.js.map +1 -1
- package/build/dist/Server/Services/ProxmoxClusterFeedService.js +89 -0
- package/build/dist/Server/Services/ProxmoxClusterFeedService.js.map +1 -0
- package/build/dist/Server/Services/ProxmoxClusterLabelRuleEngineService.js +27 -3
- package/build/dist/Server/Services/ProxmoxClusterLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/ProxmoxClusterOwnerRuleEngineService.js +21 -0
- package/build/dist/Server/Services/ProxmoxClusterOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/ProxmoxClusterOwnerTeamService.js +120 -0
- package/build/dist/Server/Services/ProxmoxClusterOwnerTeamService.js.map +1 -1
- package/build/dist/Server/Services/ProxmoxClusterOwnerUserService.js +113 -0
- package/build/dist/Server/Services/ProxmoxClusterOwnerUserService.js.map +1 -1
- package/build/dist/Server/Services/ProxmoxClusterService.js +175 -1
- package/build/dist/Server/Services/ProxmoxClusterService.js.map +1 -1
- package/build/dist/Server/Services/ScheduledMaintenanceStateTimelineService.js +56 -0
- package/build/dist/Server/Services/ScheduledMaintenanceStateTimelineService.js.map +1 -1
- package/build/dist/Server/Services/ServiceFeedService.js +89 -0
- package/build/dist/Server/Services/ServiceFeedService.js.map +1 -0
- package/build/dist/Server/Services/ServiceLabelRuleEngineService.js +27 -3
- package/build/dist/Server/Services/ServiceLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/ServiceOwnerRuleEngineService.js +24 -0
- package/build/dist/Server/Services/ServiceOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/ServiceOwnerTeamService.js +120 -0
- package/build/dist/Server/Services/ServiceOwnerTeamService.js.map +1 -1
- package/build/dist/Server/Services/ServiceOwnerUserService.js +113 -0
- package/build/dist/Server/Services/ServiceOwnerUserService.js.map +1 -1
- package/build/dist/Server/Services/ServiceService.js +173 -2
- package/build/dist/Server/Services/ServiceService.js.map +1 -1
- package/build/dist/Server/Services/StatusPageSubscriberService.js +7 -0
- package/build/dist/Server/Services/StatusPageSubscriberService.js.map +1 -1
- package/build/dist/Server/Services/TelemetryAttributeService.js +9 -3
- package/build/dist/Server/Services/TelemetryAttributeService.js.map +1 -1
- package/build/dist/Server/Services/TelemetrySourceMapService.js +265 -0
- package/build/dist/Server/Services/TelemetrySourceMapService.js.map +1 -0
- package/build/dist/Server/Services/ThreatIntelFeedService.js +157 -0
- package/build/dist/Server/Services/ThreatIntelFeedService.js.map +1 -0
- package/build/dist/Server/Services/ThreatIntelIndicatorService.js +276 -0
- package/build/dist/Server/Services/ThreatIntelIndicatorService.js.map +1 -0
- package/build/dist/Server/Services/TraceAggregationService.js +62 -6
- package/build/dist/Server/Services/TraceAggregationService.js.map +1 -1
- package/build/dist/Server/Services/UserService.js +22 -13
- package/build/dist/Server/Services/UserService.js.map +1 -1
- package/build/dist/Server/Services/UserTwoFactorBackupCodeService.js +120 -0
- package/build/dist/Server/Services/UserTwoFactorBackupCodeService.js.map +1 -1
- package/build/dist/Server/Services/UserWebhookService.js +11 -2
- package/build/dist/Server/Services/UserWebhookService.js.map +1 -1
- package/build/dist/Server/Types/AnalyticsDatabase/ModelPermission.js +12 -1
- package/build/dist/Server/Types/AnalyticsDatabase/ModelPermission.js.map +1 -1
- package/build/dist/Server/Types/Database/AggregateBy.js +2 -0
- package/build/dist/Server/Types/Database/AggregateBy.js.map +1 -0
- package/build/dist/Server/Types/Database/AggregateResultUtil.js +90 -0
- package/build/dist/Server/Types/Database/AggregateResultUtil.js.map +1 -0
- package/build/dist/Server/Types/Database/JSONColumnQuery.js +14 -0
- package/build/dist/Server/Types/Database/JSONColumnQuery.js.map +1 -1
- package/build/dist/Server/Types/Database/QueryHelper.js +42 -0
- package/build/dist/Server/Types/Database/QueryHelper.js.map +1 -1
- package/build/dist/Server/Types/Database/QueryUtil.js +18 -0
- package/build/dist/Server/Types/Database/QueryUtil.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/API/Utils.js +10 -1
- package/build/dist/Server/Types/Workflow/Components/API/Utils.js.map +1 -1
- package/build/dist/Server/Types/Workflow/Components/JavaScript.js +8 -0
- package/build/dist/Server/Types/Workflow/Components/JavaScript.js.map +1 -1
- package/build/dist/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.js +8 -0
- package/build/dist/Server/Utils/AI/CodeFix/CodeFixAgentCompletion.js.map +1 -1
- package/build/dist/Server/Utils/AI/SRE/InvestigationGrader.js +15 -0
- package/build/dist/Server/Utils/AI/SRE/InvestigationGrader.js.map +1 -1
- package/build/dist/Server/Utils/AnalyticsDatabase/AttributeFilterStatement.js +266 -0
- package/build/dist/Server/Utils/AnalyticsDatabase/AttributeFilterStatement.js.map +1 -0
- package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js +134 -0
- package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js.map +1 -1
- package/build/dist/Server/Utils/DataSource/HttpFetch.js +8 -0
- package/build/dist/Server/Utils/DataSource/HttpFetch.js.map +1 -1
- package/build/dist/Server/Utils/Database/RelationIdUtil.js +31 -0
- package/build/dist/Server/Utils/Database/RelationIdUtil.js.map +1 -1
- package/build/dist/Server/Utils/Marketing/MarketingEventUtil.js +26 -8
- package/build/dist/Server/Utils/Marketing/MarketingEventUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/ServerMonitorCriteria.js +42 -17
- package/build/dist/Server/Utils/Monitor/Criteria/ServerMonitorCriteria.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.js +9 -1
- package/build/dist/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/SyntheticMonitor.js +15 -2
- package/build/dist/Server/Utils/Monitor/Criteria/SyntheticMonitor.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorAlert.js +386 -271
- package/build/dist/Server/Utils/Monitor/MonitorAlert.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +278 -64
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorIncident.js +469 -350
- package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorResource.js +183 -44
- package/build/dist/Server/Utils/Monitor/MonitorResource.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/NetworkDeviceWalkUtil.js +46 -3
- package/build/dist/Server/Utils/Monitor/NetworkDeviceWalkUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js +18 -91
- package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/PerEntityCriteriaFanOut.js +194 -0
- package/build/dist/Server/Utils/Monitor/PerEntityCriteriaFanOut.js.map +1 -0
- package/build/dist/Server/Utils/NetworkDevice/DeviceHealthAggregation.js +332 -0
- package/build/dist/Server/Utils/NetworkDevice/DeviceHealthAggregation.js.map +1 -0
- package/build/dist/Server/Utils/NetworkSite/NetworkSiteMaintenanceSuppression.js +279 -0
- package/build/dist/Server/Utils/NetworkSite/NetworkSiteMaintenanceSuppression.js.map +1 -0
- package/build/dist/Server/Utils/OnCallNotificationContext.js +415 -0
- package/build/dist/Server/Utils/OnCallNotificationContext.js.map +1 -0
- package/build/dist/Server/Utils/PrivateNetworkWebhookConfig.js +424 -0
- package/build/dist/Server/Utils/PrivateNetworkWebhookConfig.js.map +1 -0
- package/build/dist/Server/Utils/ResourceFeed/ResourceFeedUtil.js +108 -0
- package/build/dist/Server/Utils/ResourceFeed/ResourceFeedUtil.js.map +1 -0
- package/build/dist/Server/Utils/Response.js +12 -1
- package/build/dist/Server/Utils/Response.js.map +1 -1
- package/build/dist/Server/Utils/SSRFProtection.js +160 -58
- package/build/dist/Server/Utils/SSRFProtection.js.map +1 -1
- package/build/dist/Server/Utils/SecurityEvent/ConnectorErrorMessage.js +89 -0
- package/build/dist/Server/Utils/SecurityEvent/ConnectorErrorMessage.js.map +1 -0
- package/build/dist/Server/Utils/SecurityEvent/DetectionRuleEvaluator.js +75 -234
- package/build/dist/Server/Utils/SecurityEvent/DetectionRuleEvaluator.js.map +1 -1
- package/build/dist/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsPoller.js +41 -16
- package/build/dist/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsPoller.js.map +1 -1
- package/build/dist/Server/Utils/SecurityEvent/SecurityEventAlerting.js +217 -0
- package/build/dist/Server/Utils/SecurityEvent/SecurityEventAlerting.js.map +1 -0
- package/build/dist/Server/Utils/SecurityEvent/ThreatIntel/TaxiiClient.js +103 -0
- package/build/dist/Server/Utils/SecurityEvent/ThreatIntel/TaxiiClient.js.map +1 -0
- package/build/dist/Server/Utils/SecurityEvent/ThreatIntel/ThreatIntelEnricher.js +168 -0
- package/build/dist/Server/Utils/SecurityEvent/ThreatIntel/ThreatIntelEnricher.js.map +1 -0
- package/build/dist/Server/Utils/SecurityEvent/ThreatIntel/ThreatIntelFeedPoller.js +527 -0
- package/build/dist/Server/Utils/SecurityEvent/ThreatIntel/ThreatIntelFeedPoller.js.map +1 -0
- package/build/dist/Server/Utils/SecurityEvent/ThreatIntel/ThreatIntelMatcher.js +376 -0
- package/build/dist/Server/Utils/SecurityEvent/ThreatIntel/ThreatIntelMatcher.js.map +1 -0
- package/build/dist/Server/Utils/StartServer.js +70 -44
- package/build/dist/Server/Utils/StartServer.js.map +1 -1
- package/build/dist/Server/Utils/StatusPageSubscriberWebhook.js +3 -0
- package/build/dist/Server/Utils/StatusPageSubscriberWebhook.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/SourceMapResolver.js +327 -0
- package/build/dist/Server/Utils/Telemetry/SourceMapResolver.js.map +1 -0
- package/build/dist/Server/Utils/TwoFactorBackupCodeNotification.js +84 -0
- package/build/dist/Server/Utils/TwoFactorBackupCodeNotification.js.map +1 -0
- package/build/dist/Server/Utils/VM/VMAPI.js.map +1 -1
- package/build/dist/Server/Utils/VM/VMRunner.js +10 -1
- package/build/dist/Server/Utils/VM/VMRunner.js.map +1 -1
- package/build/dist/Server/Utils/VendorAssets.js +29 -0
- package/build/dist/Server/Utils/VendorAssets.js.map +1 -1
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js +121 -6
- package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js.map +1 -1
- package/build/dist/Types/API/URL.js +40 -10
- package/build/dist/Types/API/URL.js.map +1 -1
- package/build/dist/Types/AnalyticsDatabase/AnalyticsTableName.js +8 -0
- package/build/dist/Types/AnalyticsDatabase/AnalyticsTableName.js.map +1 -1
- package/build/dist/Types/BaseDatabase/NotWildcard.js +72 -0
- package/build/dist/Types/BaseDatabase/NotWildcard.js.map +1 -0
- package/build/dist/Types/BaseDatabase/Wildcard.js +75 -0
- package/build/dist/Types/BaseDatabase/Wildcard.js.map +1 -0
- package/build/dist/Types/BaseDatabase/WildcardPattern.js +137 -0
- package/build/dist/Types/BaseDatabase/WildcardPattern.js.map +1 -0
- package/build/dist/Types/Database/DateColumnValue.js +125 -0
- package/build/dist/Types/Database/DateColumnValue.js.map +1 -0
- package/build/dist/Types/Database/TableColumn.js +18 -2
- package/build/dist/Types/Database/TableColumn.js.map +1 -1
- package/build/dist/Types/Date.js +31 -0
- package/build/dist/Types/Date.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/JSON.js +2 -0
- package/build/dist/Types/JSON.js.map +1 -1
- package/build/dist/Types/Log/LogQueryToFilter.js +111 -108
- package/build/dist/Types/Log/LogQueryToFilter.js.map +1 -1
- package/build/dist/Types/Monitor/DockerAlertTemplates.js +40 -16
- package/build/dist/Types/Monitor/DockerAlertTemplates.js.map +1 -1
- package/build/dist/Types/Monitor/HostAlertTemplates.js +29 -7
- package/build/dist/Types/Monitor/HostAlertTemplates.js.map +1 -1
- package/build/dist/Types/Monitor/KubernetesAlertTemplates.js +98 -4
- package/build/dist/Types/Monitor/KubernetesAlertTemplates.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorStep.js +40 -0
- package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
- package/build/dist/Types/Monitor/PodmanAlertTemplates.js +36 -16
- package/build/dist/Types/Monitor/PodmanAlertTemplates.js.map +1 -1
- package/build/dist/Types/NetworkAutomation/RuleRunResult.js +90 -0
- package/build/dist/Types/NetworkAutomation/RuleRunResult.js.map +1 -1
- package/build/dist/Types/NetworkSite/SiteHealthRollupPolicy.js +84 -0
- package/build/dist/Types/NetworkSite/SiteHealthRollupPolicy.js.map +1 -0
- package/build/dist/Types/Permission.js +354 -0
- package/build/dist/Types/Permission.js.map +1 -1
- package/build/dist/Types/SecurityEvent/ThreatIntelConstants.js +100 -0
- package/build/dist/Types/SecurityEvent/ThreatIntelConstants.js.map +1 -0
- package/build/dist/Types/SerializableObjectDictionary.js +8 -0
- package/build/dist/Types/SerializableObjectDictionary.js.map +1 -1
- package/build/dist/Types/Telemetry/SourceMap.js +9 -0
- package/build/dist/Types/Telemetry/SourceMap.js.map +1 -0
- package/build/dist/Types/Telemetry/TelemetrySearchQuery.js +661 -0
- package/build/dist/Types/Telemetry/TelemetrySearchQuery.js.map +1 -0
- package/build/dist/Types/Workspace/NotificationRules/NotificationRuleCondition.js +12 -1
- package/build/dist/Types/Workspace/NotificationRules/NotificationRuleCondition.js.map +1 -1
- package/build/dist/UI/Components/Dictionary/DictionaryFilterOperator.js +67 -0
- package/build/dist/UI/Components/Dictionary/DictionaryFilterOperator.js.map +1 -1
- package/build/dist/UI/Components/Icon/Icon.js +28 -1
- package/build/dist/UI/Components/Icon/Icon.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/components/LogSearchBar.js +25 -4
- package/build/dist/UI/Components/LogsViewer/components/LogSearchBar.js.map +1 -1
- package/build/dist/UI/Components/LogsViewer/components/LogSearchHelp.js +36 -16
- package/build/dist/UI/Components/LogsViewer/components/LogSearchHelp.js.map +1 -1
- package/build/dist/UI/Components/TelemetryViewer/components/TelemetrySearchBar.js +14 -2
- package/build/dist/UI/Components/TelemetryViewer/components/TelemetrySearchBar.js.map +1 -1
- package/build/dist/Utils/Metrics/MetricExplorerUrl.js +54 -9
- package/build/dist/Utils/Metrics/MetricExplorerUrl.js.map +1 -1
- package/build/dist/Utils/Monitor/InterfaceInventoryUtil.js +128 -0
- package/build/dist/Utils/Monitor/InterfaceInventoryUtil.js.map +1 -0
- package/build/dist/Utils/Monitor/NetworkDeviceMonitorTemplateUtil.js +190 -0
- package/build/dist/Utils/Monitor/NetworkDeviceMonitorTemplateUtil.js.map +1 -0
- package/build/dist/Utils/Monitor/NetworkTopologyUtil.js +206 -28
- package/build/dist/Utils/Monitor/NetworkTopologyUtil.js.map +1 -1
- package/build/dist/Utils/NetworkDevice/DeviceHealthStateUtil.js +14 -7
- package/build/dist/Utils/NetworkDevice/DeviceHealthStateUtil.js.map +1 -1
- package/build/dist/Utils/NetworkDiscovery/AutoImportRuleMatcher.js.map +1 -1
- package/build/dist/Utils/NetworkDiscovery/DiscoveredDeviceBuilder.js +34 -18
- package/build/dist/Utils/NetworkDiscovery/DiscoveredDeviceBuilder.js.map +1 -1
- package/build/dist/Utils/NetworkDiscovery/PingMonitorBuilder.js +163 -0
- package/build/dist/Utils/NetworkDiscovery/PingMonitorBuilder.js.map +1 -0
- package/build/dist/Utils/NetworkDiscovery/RescanIntervalUtil.js +99 -0
- package/build/dist/Utils/NetworkDiscovery/RescanIntervalUtil.js.map +1 -0
- package/build/dist/Utils/NetworkDiscovery/ScanModeUtil.js +85 -0
- package/build/dist/Utils/NetworkDiscovery/ScanModeUtil.js.map +1 -0
- package/build/dist/Utils/NetworkDiscovery/SnmpScanConfigUtil.js +560 -0
- package/build/dist/Utils/NetworkDiscovery/SnmpScanConfigUtil.js.map +1 -0
- package/build/dist/Utils/NetworkSite/SiteMaintenanceUtil.js +56 -0
- package/build/dist/Utils/NetworkSite/SiteMaintenanceUtil.js.map +1 -0
- package/build/dist/Utils/NetworkSite/SiteStatusRollupUtil.js +185 -10
- package/build/dist/Utils/NetworkSite/SiteStatusRollupUtil.js.map +1 -1
- package/build/dist/Utils/NetworkSite/SiteUptimeUtil.js +248 -21
- package/build/dist/Utils/NetworkSite/SiteUptimeUtil.js.map +1 -1
- package/build/dist/Utils/SecurityEvent/ThreatIntel/StixPatternParser.js +255 -0
- package/build/dist/Utils/SecurityEvent/ThreatIntel/StixPatternParser.js.map +1 -0
- package/build/dist/Utils/Telemetry/CrossSignalScope.js +27 -30
- package/build/dist/Utils/Telemetry/CrossSignalScope.js.map +1 -1
- package/package.json +2 -1
- package/Tests/Types/Log/LogQueryParser.test.ts +0 -186
- package/Types/Log/LogQueryParser.ts +0 -252
- package/build/dist/Types/Log/LogQueryParser.js +0 -200
- package/build/dist/Types/Log/LogQueryParser.js.map +0 -1
|
@@ -11,6 +11,7 @@ import ObjectID from "../../Types/ObjectID";
|
|
|
11
11
|
import UserNotificationStatus from "../../Types/UserNotification/UserNotificationStatus";
|
|
12
12
|
import UserOnCallLogTimeline from "../../Models/DatabaseModels/UserOnCallLogTimeline";
|
|
13
13
|
import Route from "../../Types/API/Route";
|
|
14
|
+
import { detailsToJSON, getOnCallNotificationContext, getResourceReference, } from "../Utils/OnCallNotificationContext";
|
|
14
15
|
export default class UserNotificationLogTimelineAPI extends BaseAPI {
|
|
15
16
|
constructor() {
|
|
16
17
|
var _a, _b, _c;
|
|
@@ -68,7 +69,7 @@ export default class UserNotificationLogTimelineAPI extends BaseAPI {
|
|
|
68
69
|
*/
|
|
69
70
|
this.router.get(`${(_b = new this.entityType()
|
|
70
71
|
.getCrudApiPath()) === null || _b === void 0 ? void 0 : _b.toString()}/acknowledge-page/:itemId`, async (req, res, next) => {
|
|
71
|
-
var _a, _b, _c, _d;
|
|
72
|
+
var _a, _b, _c, _d, _e, _f;
|
|
72
73
|
try {
|
|
73
74
|
req = req;
|
|
74
75
|
if (!req.params["itemId"]) {
|
|
@@ -83,22 +84,26 @@ export default class UserNotificationLogTimelineAPI extends BaseAPI {
|
|
|
83
84
|
triggeredByIncidentId: true,
|
|
84
85
|
triggeredByIncident: {
|
|
85
86
|
title: true,
|
|
86
|
-
description: true,
|
|
87
87
|
},
|
|
88
88
|
triggeredByAlertId: true,
|
|
89
89
|
triggeredByAlert: {
|
|
90
90
|
title: true,
|
|
91
|
-
description: true,
|
|
92
91
|
},
|
|
93
92
|
triggeredByAlertEpisodeId: true,
|
|
94
93
|
triggeredByAlertEpisode: {
|
|
95
94
|
title: true,
|
|
96
|
-
description: true,
|
|
97
95
|
},
|
|
98
96
|
triggeredByIncidentEpisodeId: true,
|
|
99
97
|
triggeredByIncidentEpisode: {
|
|
100
98
|
title: true,
|
|
101
|
-
|
|
99
|
+
},
|
|
100
|
+
/*
|
|
101
|
+
* The timestamps below are rendered in the recipient's own
|
|
102
|
+
* timezone. Formatting them in the container's zone would tell
|
|
103
|
+
* an on-call engineer nothing.
|
|
104
|
+
*/
|
|
105
|
+
user: {
|
|
106
|
+
timezone: true,
|
|
102
107
|
},
|
|
103
108
|
},
|
|
104
109
|
props: {
|
|
@@ -108,17 +113,26 @@ export default class UserNotificationLogTimelineAPI extends BaseAPI {
|
|
|
108
113
|
if (!timelineItem) {
|
|
109
114
|
return Response.sendErrorResponse(req, res, new BadDataException("Invalid item Id"));
|
|
110
115
|
}
|
|
111
|
-
const
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
116
|
+
const reference = getResourceReference(timelineItem);
|
|
117
|
+
const notificationType = reference
|
|
118
|
+
? reference.resourceType.toString()
|
|
119
|
+
: "Alert";
|
|
120
|
+
/*
|
|
121
|
+
* The context read is what puts severity, state, project, monitors
|
|
122
|
+
* and the time it was raised on the page. It is best effort on
|
|
123
|
+
* purpose: a deleted resource, or a resource this notification no
|
|
124
|
+
* longer points at, must still leave a page the engineer can
|
|
125
|
+
* acknowledge from.
|
|
126
|
+
*/
|
|
127
|
+
const context = await getOnCallNotificationContext({
|
|
128
|
+
timelineItem: timelineItem,
|
|
129
|
+
timezone: (_b = (_a = timelineItem.user) === null || _a === void 0 ? void 0 : _a.timezone) === null || _b === void 0 ? void 0 : _b.toString(),
|
|
130
|
+
});
|
|
131
|
+
const notificationTitle = (context === null || context === void 0 ? void 0 : context.resourceTitle) ||
|
|
132
|
+
((_c = timelineItem.triggeredByIncident) === null || _c === void 0 ? void 0 : _c.title) ||
|
|
133
|
+
((_d = timelineItem.triggeredByIncidentEpisode) === null || _d === void 0 ? void 0 : _d.title) ||
|
|
134
|
+
((_e = timelineItem.triggeredByAlertEpisode) === null || _e === void 0 ? void 0 : _e.title) ||
|
|
135
|
+
((_f = timelineItem.triggeredByAlert) === null || _f === void 0 ? void 0 : _f.title) ||
|
|
122
136
|
"";
|
|
123
137
|
const host = await DatabaseConfig.getHost();
|
|
124
138
|
const httpProtocol = await DatabaseConfig.getHttpProtocol();
|
|
@@ -129,6 +143,10 @@ export default class UserNotificationLogTimelineAPI extends BaseAPI {
|
|
|
129
143
|
acknowledgeUrl: new URL(httpProtocol, host, new Route(AppApiRoute.toString())
|
|
130
144
|
.addRoute(new UserOnCallLogTimeline().crudApiPath)
|
|
131
145
|
.addRoute("/acknowledge/" + itemId.toString())).toString(),
|
|
146
|
+
resourceNumber: (context === null || context === void 0 ? void 0 : context.resourceNumber) || "",
|
|
147
|
+
resourceTitle: notificationTitle,
|
|
148
|
+
resourceDescription: (context === null || context === void 0 ? void 0 : context.resourceDescription) || "",
|
|
149
|
+
details: detailsToJSON((context === null || context === void 0 ? void 0 : context.details) || []),
|
|
132
150
|
});
|
|
133
151
|
}
|
|
134
152
|
catch (error) {
|
|
@@ -138,7 +156,7 @@ export default class UserNotificationLogTimelineAPI extends BaseAPI {
|
|
|
138
156
|
// This is the link that actually acknowledges the notification.
|
|
139
157
|
this.router.get(`${(_c = new this.entityType()
|
|
140
158
|
.getCrudApiPath()) === null || _c === void 0 ? void 0 : _c.toString()}/acknowledge/:itemId`, async (req, res, next) => {
|
|
141
|
-
var _a, _b;
|
|
159
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
142
160
|
try {
|
|
143
161
|
req = req;
|
|
144
162
|
if (!req.params["itemId"]) {
|
|
@@ -168,6 +186,9 @@ export default class UserNotificationLogTimelineAPI extends BaseAPI {
|
|
|
168
186
|
},
|
|
169
187
|
acknowledgedAt: true,
|
|
170
188
|
isAcknowledged: true,
|
|
189
|
+
user: {
|
|
190
|
+
timezone: true,
|
|
191
|
+
},
|
|
171
192
|
},
|
|
172
193
|
props: {
|
|
173
194
|
isRoot: true,
|
|
@@ -178,52 +199,36 @@ export default class UserNotificationLogTimelineAPI extends BaseAPI {
|
|
|
178
199
|
}
|
|
179
200
|
const host = await DatabaseConfig.getHost();
|
|
180
201
|
const httpProtocol = await DatabaseConfig.getHttpProtocol();
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
title: ((_a = timelineItem.triggeredByIncident) === null || _a === void 0 ? void 0 : _a.title) || "",
|
|
189
|
-
};
|
|
190
|
-
}
|
|
191
|
-
if (timelineItem.triggeredByIncidentEpisodeId) {
|
|
192
|
-
return {
|
|
193
|
-
type: "Incident Episode",
|
|
194
|
-
path: "incidents/episodes",
|
|
195
|
-
id: timelineItem.triggeredByIncidentEpisodeId,
|
|
196
|
-
title: ((_b = timelineItem.triggeredByIncidentEpisode) === null || _b === void 0 ? void 0 : _b.title) || "",
|
|
197
|
-
};
|
|
198
|
-
}
|
|
199
|
-
if (timelineItem.triggeredByAlertEpisodeId) {
|
|
200
|
-
return {
|
|
201
|
-
type: "Alert Episode",
|
|
202
|
-
path: "alerts/episodes",
|
|
203
|
-
id: timelineItem.triggeredByAlertEpisodeId,
|
|
204
|
-
title: ((_c = timelineItem.triggeredByAlertEpisode) === null || _c === void 0 ? void 0 : _c.title) || "",
|
|
205
|
-
};
|
|
206
|
-
}
|
|
207
|
-
if (timelineItem.triggeredByAlertId) {
|
|
208
|
-
return {
|
|
209
|
-
type: "Alert",
|
|
210
|
-
path: "alerts",
|
|
211
|
-
id: timelineItem.triggeredByAlertId,
|
|
212
|
-
title: ((_d = timelineItem.triggeredByAlert) === null || _d === void 0 ? void 0 : _d.title) || "",
|
|
213
|
-
};
|
|
214
|
-
}
|
|
215
|
-
return { type: "", path: "", id: new ObjectID(""), title: "" };
|
|
216
|
-
};
|
|
217
|
-
const resourceInfo = getResourceInfo();
|
|
202
|
+
// Determine the resource type and ID for routing.
|
|
203
|
+
const reference = getResourceReference(timelineItem);
|
|
204
|
+
const fallbackTitle = ((_a = timelineItem.triggeredByIncident) === null || _a === void 0 ? void 0 : _a.title) ||
|
|
205
|
+
((_b = timelineItem.triggeredByIncidentEpisode) === null || _b === void 0 ? void 0 : _b.title) ||
|
|
206
|
+
((_c = timelineItem.triggeredByAlertEpisode) === null || _c === void 0 ? void 0 : _c.title) ||
|
|
207
|
+
((_d = timelineItem.triggeredByAlert) === null || _d === void 0 ? void 0 : _d.title) ||
|
|
208
|
+
"";
|
|
218
209
|
if (timelineItem.isAcknowledged) {
|
|
219
210
|
// already acknowledged. Then show already acknowledged page with view details button.
|
|
220
|
-
|
|
211
|
+
/*
|
|
212
|
+
* Same context the acknowledge page shows. Someone who follows the
|
|
213
|
+
* link twice - or whose colleague got there first - still needs to
|
|
214
|
+
* know what the page they are looking at is about.
|
|
215
|
+
*/
|
|
216
|
+
const context = await getOnCallNotificationContext({
|
|
217
|
+
timelineItem: timelineItem,
|
|
218
|
+
timezone: (_f = (_e = timelineItem.user) === null || _e === void 0 ? void 0 : _e.timezone) === null || _f === void 0 ? void 0 : _f.toString(),
|
|
219
|
+
});
|
|
220
|
+
const acknowledgedTitle = (context === null || context === void 0 ? void 0 : context.resourceTitle) || fallbackTitle;
|
|
221
|
+
const viewDetailsRoute = new Route(DashboardRoute.toString()).addRoute(`/${(_g = timelineItem.projectId) === null || _g === void 0 ? void 0 : _g.toString()}/${(reference === null || reference === void 0 ? void 0 : reference.dashboardPath) || ""}/${(reference === null || reference === void 0 ? void 0 : reference.resourceId.toString()) || ""}`);
|
|
221
222
|
const viewDetailsUrl = new URL(httpProtocol, host, viewDetailsRoute);
|
|
222
223
|
return Response.render(req, res, "/usr/src/Common/Server/Views/ViewMessage.ejs", {
|
|
223
|
-
title: `Notification Already Acknowledged - ${
|
|
224
|
+
title: `Notification Already Acknowledged - ${acknowledgedTitle}`,
|
|
224
225
|
message: `This notification has already been acknowledged.`,
|
|
225
|
-
viewDetailsText: `View ${
|
|
226
|
+
viewDetailsText: `View ${(reference === null || reference === void 0 ? void 0 : reference.resourceType.toString()) || ""}`,
|
|
226
227
|
viewDetailsUrl: viewDetailsUrl.toString(),
|
|
228
|
+
resourceNumber: (context === null || context === void 0 ? void 0 : context.resourceNumber) || "",
|
|
229
|
+
resourceTitle: acknowledgedTitle,
|
|
230
|
+
resourceDescription: (context === null || context === void 0 ? void 0 : context.resourceDescription) || "",
|
|
231
|
+
details: detailsToJSON((context === null || context === void 0 ? void 0 : context.details) || []),
|
|
227
232
|
});
|
|
228
233
|
}
|
|
229
234
|
await this.service.updateOneById({
|
|
@@ -239,8 +244,8 @@ export default class UserNotificationLogTimelineAPI extends BaseAPI {
|
|
|
239
244
|
},
|
|
240
245
|
});
|
|
241
246
|
// redirect to dashboard to the resource page.
|
|
242
|
-
if (
|
|
243
|
-
const resourceRoute = new Route(DashboardRoute.toString()).addRoute(`/${(
|
|
247
|
+
if (reference) {
|
|
248
|
+
const resourceRoute = new Route(DashboardRoute.toString()).addRoute(`/${(_h = timelineItem.projectId) === null || _h === void 0 ? void 0 : _h.toString()}/${reference.dashboardPath}/${reference.resourceId.toString()}`);
|
|
244
249
|
return Response.redirect(req, res, new URL(httpProtocol, host, resourceRoute));
|
|
245
250
|
}
|
|
246
251
|
return Response.sendErrorResponse(req, res, new BadDataException("Invalid item Id"));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserOnCallLogTimelineAPI.js","sourceRoot":"","sources":["../../../../Server/API/UserOnCallLogTimelineAPI.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,mBAAmB,CAAC;AAC/C,OAAO,sBAAsB,MAAM,sCAAsC,CAAC;AAC1E,OAAO,4BAEN,MAAM,0CAA0C,CAAC;AAOlD,OAAO,QAAQ,MAAM,mBAAmB,CAAC;AACzC,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGjE,OAAO,GAAG,MAAM,qBAAqB,CAAC;AACtC,OAAO,aAAa,MAAM,kBAAkB,CAAC;AAC7C,OAAO,gBAAgB,MAAM,wCAAwC,CAAC;AAEtE,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,sBAAsB,MAAM,qDAAqD,CAAC;AACzF,OAAO,qBAAqB,MAAM,mDAAmD,CAAC;AACtF,OAAO,KAAK,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"UserOnCallLogTimelineAPI.js","sourceRoot":"","sources":["../../../../Server/API/UserOnCallLogTimelineAPI.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,mBAAmB,CAAC;AAC/C,OAAO,sBAAsB,MAAM,sCAAsC,CAAC;AAC1E,OAAO,4BAEN,MAAM,0CAA0C,CAAC;AAOlD,OAAO,QAAQ,MAAM,mBAAmB,CAAC;AACzC,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGjE,OAAO,GAAG,MAAM,qBAAqB,CAAC;AACtC,OAAO,aAAa,MAAM,kBAAkB,CAAC;AAC7C,OAAO,gBAAgB,MAAM,wCAAwC,CAAC;AAEtE,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,sBAAsB,MAAM,qDAAqD,CAAC;AACzF,OAAO,qBAAqB,MAAM,mDAAmD,CAAC;AACtF,OAAO,KAAK,MAAM,uBAAuB,CAAC;AAC1C,OAAO,EAGL,aAAa,EACb,4BAA4B,EAC5B,oBAAoB,GACrB,MAAM,oCAAoC,CAAC;AAE5C,MAAM,CAAC,OAAO,OAAO,8BAA+B,SAAQ,OAG3D;IACC;;QACE,KAAK,CAAC,qBAAqB,EAAE,4BAA4B,CAAC,CAAC;QAE3D,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,GAAG,MAAA,IAAI,IAAI,CAAC,UAAU,EAAE;aACrB,cAAc,EAAE,0CACf,QAAQ,EAAE,4BAA4B,EAC1C,sBAAsB,CAAC,8BAA8B,EACrD,KAAK,EAAE,GAAmB,EAAE,GAAoB,EAAE,IAAkB,EAAE,EAAE;YACtE,IAAI,CAAC;gBACH,GAAG,GAAG,GAAuB,CAAC;gBAE9B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC1B,OAAO,QAAQ,CAAC,iBAAiB,CAC/B,GAAG,EACH,GAAG,EACH,IAAI,gBAAgB,CAAC,iBAAiB,CAAC,CACxC,CAAC;gBACJ,CAAC;gBAED,MAAM,KAAK,GAAgB,GAAW,CAAC,aAAa,CAAC;gBAErD,MAAM,MAAM,GAAa,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAE5D,MAAM,YAAY,GAChB,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;oBAC7B,EAAE,EAAE,MAAM;oBACV,MAAM,EAAE;wBACN,GAAG,EAAE,IAAI;wBACT,SAAS,EAAE,IAAI;wBACf,qBAAqB,EAAE,IAAI;wBAC3B,kBAAkB,EAAE,IAAI;qBACzB;oBACD,KAAK,EAAE;wBACL,MAAM,EAAE,IAAI;qBACb;iBACF,CAAC,CAAC;gBAEL,IAAI,CAAC,YAAY,EAAE,CAAC;oBAClB,OAAO,QAAQ,CAAC,iBAAiB,CAC/B,GAAG,EACH,GAAG,EACH,IAAI,gBAAgB,CAAC,iBAAiB,CAAC,CACxC,CAAC;gBACJ,CAAC;gBAED,gBAAgB;gBAEhB,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,EAAE,CAAC;oBAC/B,oBAAoB;oBACpB,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;wBAC/B,EAAE,EAAE,MAAM;wBACV,IAAI,EAAE;4BACJ,cAAc,EAAE,aAAa,CAAC,cAAc,EAAE;4BAC9C,cAAc,EAAE,IAAI;4BACpB,MAAM,EAAE,sBAAsB,CAAC,YAAY;4BAC3C,aAAa,EAAE,2BAA2B;yBAC3C;wBACD,KAAK,EAAE;4BACL,MAAM,EAAE,IAAI;yBACb;qBACF,CAAC,CAAC;gBACL,CAAC;gBAED,OAAO,sBAAsB,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,KAAY,CAAC,CAAC;YACrE,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC;QACH,CAAC,CACF,CAAC;QAEF;;;;WAIG;QACH,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,GAAG,MAAA,IAAI,IAAI,CAAC,UAAU,EAAE;aACrB,cAAc,EAAE,0CACf,QAAQ,EAAE,2BAA2B,EACzC,KAAK,EAAE,GAAmB,EAAE,GAAoB,EAAE,IAAkB,EAAE,EAAE;;YACtE,IAAI,CAAC;gBACH,GAAG,GAAG,GAAuB,CAAC;gBAE9B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC1B,OAAO,QAAQ,CAAC,iBAAiB,CAC/B,GAAG,EACH,GAAG,EACH,IAAI,gBAAgB,CAAC,qBAAqB,CAAC,CAC5C,CAAC;gBACJ,CAAC;gBAED,MAAM,MAAM,GAAa,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAE5D,MAAM,YAAY,GAChB,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;oBAC7B,EAAE,EAAE,MAAM;oBACV,MAAM,EAAE;wBACN,GAAG,EAAE,IAAI;wBACT,SAAS,EAAE,IAAI;wBACf,qBAAqB,EAAE,IAAI;wBAC3B,mBAAmB,EAAE;4BACnB,KAAK,EAAE,IAAI;yBACZ;wBACD,kBAAkB,EAAE,IAAI;wBACxB,gBAAgB,EAAE;4BAChB,KAAK,EAAE,IAAI;yBACZ;wBACD,yBAAyB,EAAE,IAAI;wBAC/B,uBAAuB,EAAE;4BACvB,KAAK,EAAE,IAAI;yBACZ;wBACD,4BAA4B,EAAE,IAAI;wBAClC,0BAA0B,EAAE;4BAC1B,KAAK,EAAE,IAAI;yBACZ;wBACD;;;;2BAIG;wBACH,IAAI,EAAE;4BACJ,QAAQ,EAAE,IAAI;yBACf;qBACF;oBACD,KAAK,EAAE;wBACL,MAAM,EAAE,IAAI;qBACb;iBACF,CAAC,CAAC;gBAEL,IAAI,CAAC,YAAY,EAAE,CAAC;oBAClB,OAAO,QAAQ,CAAC,iBAAiB,CAC/B,GAAG,EACH,GAAG,EACH,IAAI,gBAAgB,CAAC,iBAAiB,CAAC,CACxC,CAAC;gBACJ,CAAC;gBAED,MAAM,SAAS,GACb,oBAAoB,CAAC,YAAY,CAAC,CAAC;gBAErC,MAAM,gBAAgB,GAAW,SAAS;oBACxC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,EAAE;oBACnC,CAAC,CAAC,OAAO,CAAC;gBAEZ;;;;;;mBAMG;gBACH,MAAM,OAAO,GACX,MAAM,4BAA4B,CAAC;oBACjC,YAAY,EAAE,YAAY;oBAC1B,QAAQ,EAAE,MAAA,MAAA,YAAY,CAAC,IAAI,0CAAE,QAAQ,0CAAE,QAAQ,EAAE;iBAClD,CAAC,CAAC;gBAEL,MAAM,iBAAiB,GACrB,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,aAAa;qBACtB,MAAA,YAAY,CAAC,mBAAmB,0CAAE,KAAK,CAAA;qBACvC,MAAA,YAAY,CAAC,0BAA0B,0CAAE,KAAK,CAAA;qBAC9C,MAAA,YAAY,CAAC,uBAAuB,0CAAE,KAAK,CAAA;qBAC3C,MAAA,YAAY,CAAC,gBAAgB,0CAAE,KAAK,CAAA;oBACpC,EAAE,CAAC;gBAEL,MAAM,IAAI,GAAa,MAAM,cAAc,CAAC,OAAO,EAAE,CAAC;gBACtD,MAAM,YAAY,GAAa,MAAM,cAAc,CAAC,eAAe,EAAE,CAAC;gBAEtE,OAAO,QAAQ,CAAC,MAAM,CACpB,GAAG,EACH,GAAG,EACH,oEAAoE,EACpE;oBACE,KAAK,EAAE,eAAe,gBAAgB,MAAM,iBAAiB,EAAE;oBAC/D,OAAO,EAAE,mCAAmC,gBAAgB,GAAG;oBAC/D,eAAe,EAAE,eAAe,gBAAgB,EAAE;oBAClD,cAAc,EAAE,IAAI,GAAG,CACrB,YAAY,EACZ,IAAI,EACJ,IAAI,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;yBAC9B,QAAQ,CAAC,IAAI,qBAAqB,EAAE,CAAC,WAAY,CAAC;yBAClD,QAAQ,CAAC,eAAe,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,CACjD,CAAC,QAAQ,EAAE;oBACZ,cAAc,EAAE,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,cAAc,KAAI,EAAE;oBAC7C,aAAa,EAAE,iBAAiB;oBAChC,mBAAmB,EAAE,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,mBAAmB,KAAI,EAAE;oBACvD,OAAO,EAAE,aAAa,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,KAAI,EAAE,CAAC;iBAC/C,CACF,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC;QACH,CAAC,CACF,CAAC;QAEF,gEAAgE;QAChE,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,GAAG,MAAA,IAAI,IAAI,CAAC,UAAU,EAAE;aACrB,cAAc,EAAE,0CACf,QAAQ,EAAE,sBAAsB,EACpC,KAAK,EAAE,GAAmB,EAAE,GAAoB,EAAE,IAAkB,EAAE,EAAE;;YACtE,IAAI,CAAC;gBACH,GAAG,GAAG,GAAuB,CAAC;gBAE9B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC1B,OAAO,QAAQ,CAAC,iBAAiB,CAC/B,GAAG,EACH,GAAG,EACH,IAAI,gBAAgB,CAAC,qBAAqB,CAAC,CAC5C,CAAC;gBACJ,CAAC;gBAED,MAAM,MAAM,GAAa,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAE5D,MAAM,YAAY,GAChB,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;oBAC7B,EAAE,EAAE,MAAM;oBACV,MAAM,EAAE;wBACN,GAAG,EAAE,IAAI;wBACT,SAAS,EAAE,IAAI;wBACf,qBAAqB,EAAE,IAAI;wBAC3B,kBAAkB,EAAE,IAAI;wBACxB,yBAAyB,EAAE,IAAI;wBAC/B,4BAA4B,EAAE,IAAI;wBAClC,gBAAgB,EAAE;4BAChB,KAAK,EAAE,IAAI;yBACZ;wBACD,mBAAmB,EAAE;4BACnB,KAAK,EAAE,IAAI;yBACZ;wBACD,uBAAuB,EAAE;4BACvB,KAAK,EAAE,IAAI;yBACZ;wBACD,0BAA0B,EAAE;4BAC1B,KAAK,EAAE,IAAI;yBACZ;wBACD,cAAc,EAAE,IAAI;wBACpB,cAAc,EAAE,IAAI;wBACpB,IAAI,EAAE;4BACJ,QAAQ,EAAE,IAAI;yBACf;qBACF;oBACD,KAAK,EAAE;wBACL,MAAM,EAAE,IAAI;qBACb;iBACF,CAAC,CAAC;gBAEL,IAAI,CAAC,YAAY,EAAE,CAAC;oBAClB,OAAO,QAAQ,CAAC,iBAAiB,CAC/B,GAAG,EACH,GAAG,EACH,IAAI,gBAAgB,CAAC,iBAAiB,CAAC,CACxC,CAAC;gBACJ,CAAC;gBAED,MAAM,IAAI,GAAa,MAAM,cAAc,CAAC,OAAO,EAAE,CAAC;gBACtD,MAAM,YAAY,GAAa,MAAM,cAAc,CAAC,eAAe,EAAE,CAAC;gBAEtE,kDAAkD;gBAClD,MAAM,SAAS,GACb,oBAAoB,CAAC,YAAY,CAAC,CAAC;gBAErC,MAAM,aAAa,GACjB,CAAA,MAAA,YAAY,CAAC,mBAAmB,0CAAE,KAAK;qBACvC,MAAA,YAAY,CAAC,0BAA0B,0CAAE,KAAK,CAAA;qBAC9C,MAAA,YAAY,CAAC,uBAAuB,0CAAE,KAAK,CAAA;qBAC3C,MAAA,YAAY,CAAC,gBAAgB,0CAAE,KAAK,CAAA;oBACpC,EAAE,CAAC;gBAEL,IAAI,YAAY,CAAC,cAAc,EAAE,CAAC;oBAChC,sFAAsF;oBAEtF;;;;uBAIG;oBACH,MAAM,OAAO,GACX,MAAM,4BAA4B,CAAC;wBACjC,YAAY,EAAE,YAAY;wBAC1B,QAAQ,EAAE,MAAA,MAAA,YAAY,CAAC,IAAI,0CAAE,QAAQ,0CAAE,QAAQ,EAAE;qBAClD,CAAC,CAAC;oBAEL,MAAM,iBAAiB,GACrB,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,aAAa,KAAI,aAAa,CAAC;oBAE1C,MAAM,gBAAgB,GAAU,IAAI,KAAK,CACvC,cAAc,CAAC,QAAQ,EAAE,CAC1B,CAAC,QAAQ,CACR,IAAI,MAAA,YAAY,CAAC,SAAS,0CAAE,QAAQ,EAAE,IAAI,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,aAAa,KAAI,EAAE,IAAI,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,UAAU,CAAC,QAAQ,EAAE,KAAI,EAAE,EAAE,CACrH,CAAC;oBAEF,MAAM,cAAc,GAAQ,IAAI,GAAG,CACjC,YAAY,EACZ,IAAI,EACJ,gBAAgB,CACjB,CAAC;oBAEF,OAAO,QAAQ,CAAC,MAAM,CACpB,GAAG,EACH,GAAG,EACH,8CAA8C,EAC9C;wBACE,KAAK,EAAE,uCAAuC,iBAAiB,EAAE;wBACjE,OAAO,EAAE,kDAAkD;wBAC3D,eAAe,EAAE,QAAQ,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,YAAY,CAAC,QAAQ,EAAE,KAAI,EAAE,EAAE;wBACnE,cAAc,EAAE,cAAc,CAAC,QAAQ,EAAE;wBACzC,cAAc,EAAE,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,cAAc,KAAI,EAAE;wBAC7C,aAAa,EAAE,iBAAiB;wBAChC,mBAAmB,EAAE,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,mBAAmB,KAAI,EAAE;wBACvD,OAAO,EAAE,aAAa,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,KAAI,EAAE,CAAC;qBAC/C,CACF,CAAC;gBACJ,CAAC;gBAED,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;oBAC/B,EAAE,EAAE,MAAM;oBACV,IAAI,EAAE;wBACJ,cAAc,EAAE,aAAa,CAAC,cAAc,EAAE;wBAC9C,cAAc,EAAE,IAAI;wBACpB,MAAM,EAAE,sBAAsB,CAAC,YAAY;wBAC3C,aAAa,EAAE,2BAA2B;qBAC3C;oBACD,KAAK,EAAE;wBACL,MAAM,EAAE,IAAI;qBACb;iBACF,CAAC,CAAC;gBAEH,8CAA8C;gBAC9C,IAAI,SAAS,EAAE,CAAC;oBACd,MAAM,aAAa,GAAU,IAAI,KAAK,CACpC,cAAc,CAAC,QAAQ,EAAE,CAC1B,CAAC,QAAQ,CACR,IAAI,MAAA,YAAY,CAAC,SAAS,0CAAE,QAAQ,EAAE,IAAI,SAAS,CAAC,aAAa,IAAI,SAAS,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,CACvG,CAAC;oBAEF,OAAO,QAAQ,CAAC,QAAQ,CACtB,GAAG,EACH,GAAG,EACH,IAAI,GAAG,CAAC,YAAY,EAAE,IAAI,EAAE,aAAa,CAAC,CAC3C,CAAC;gBACJ,CAAC;gBAED,OAAO,QAAQ,CAAC,iBAAiB,CAC/B,GAAG,EACH,GAAG,EACH,IAAI,gBAAgB,CAAC,iBAAiB,CAAC,CACxC,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC;QACH,CAAC,CACF,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -5,8 +5,12 @@ import BaseAPI from "./BaseAPI";
|
|
|
5
5
|
import UserTotpAuth from "../../Models/DatabaseModels/UserTotpAuth";
|
|
6
6
|
import BadDataException from "../../Types/Exception/BadDataException";
|
|
7
7
|
import TotpAuth from "../Utils/TotpAuth";
|
|
8
|
+
import TwoFactorBackupCode from "../Utils/TwoFactorBackupCode";
|
|
8
9
|
import Response from "../Utils/Response";
|
|
9
10
|
import UserService from "../Services/UserService";
|
|
11
|
+
import UserTwoFactorBackupCodeService from "../Services/UserTwoFactorBackupCodeService";
|
|
12
|
+
import logger from "../Utils/Logger";
|
|
13
|
+
import TwoFactorBackupCodeNotification from "../Utils/TwoFactorBackupCodeNotification";
|
|
10
14
|
export default class UserTotpAuthAPI extends BaseAPI {
|
|
11
15
|
constructor() {
|
|
12
16
|
var _a;
|
|
@@ -68,7 +72,67 @@ export default class UserTotpAuthAPI extends BaseAPI {
|
|
|
68
72
|
isRoot: true,
|
|
69
73
|
},
|
|
70
74
|
});
|
|
71
|
-
|
|
75
|
+
/*
|
|
76
|
+
* The account now has a second factor, which means it now has
|
|
77
|
+
* something to lose. Mint the recovery codes here rather than
|
|
78
|
+
* leaving them to a button the user has to go and find: a set that
|
|
79
|
+
* is never generated is the same as no recovery route at all, which
|
|
80
|
+
* is the state this endpoint used to leave every account in.
|
|
81
|
+
*
|
|
82
|
+
* `generateForUserIfNone` and not a regeneration -- adding a SECOND
|
|
83
|
+
* authenticator app must not void the codes the user printed when
|
|
84
|
+
* they added the first. It returns null in that case and the
|
|
85
|
+
* response simply carries no codes.
|
|
86
|
+
*
|
|
87
|
+
* THE RESPONSE IS THE ONLY COPY. Only keyed digests are stored, so
|
|
88
|
+
* whatever is returned here is the one and only time these strings
|
|
89
|
+
* exist; the profile page is expected to raise the same
|
|
90
|
+
* acknowledge-before-closing modal it raises for a manual
|
|
91
|
+
* regeneration. That is also why nothing is minted anywhere the user
|
|
92
|
+
* is not looking at a screen that can show it.
|
|
93
|
+
*
|
|
94
|
+
* A failure to mint must not fail the validation. The factor IS
|
|
95
|
+
* verified by this point -- the row is written -- so throwing here
|
|
96
|
+
* would tell the user their authenticator did not work when it did,
|
|
97
|
+
* and send them round the enrolment loop again. The profile card
|
|
98
|
+
* already warns an account holding no codes, so the fallback is a
|
|
99
|
+
* state the product knows how to talk about.
|
|
100
|
+
*/
|
|
101
|
+
let backupCodes = null;
|
|
102
|
+
try {
|
|
103
|
+
backupCodes =
|
|
104
|
+
await UserTwoFactorBackupCodeService.generateForUserIfNone({
|
|
105
|
+
userId: userTotpAuth.userId,
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
catch (backupCodeError) {
|
|
109
|
+
logger.error(backupCodeError);
|
|
110
|
+
}
|
|
111
|
+
/*
|
|
112
|
+
* Tell the account holder, at their address rather than in this
|
|
113
|
+
* browser. Ten sign-in credentials have just come into existence on
|
|
114
|
+
* this account, and this route is authenticated by a session alone
|
|
115
|
+
* -- so a stolen session is enough to create them. The mail does not
|
|
116
|
+
* prevent that; it makes it visible to the person it was done to.
|
|
117
|
+
*/
|
|
118
|
+
if (backupCodes && backupCodes.length > 0) {
|
|
119
|
+
TwoFactorBackupCodeNotification.notifyCodesCreated({
|
|
120
|
+
userId: userTotpAuth.userId,
|
|
121
|
+
codeCount: backupCodes.length,
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
return Response.sendJsonObjectResponse(req, res, {
|
|
125
|
+
/*
|
|
126
|
+
* Hyphenated for the page to render as-is, exactly as the
|
|
127
|
+
* regenerate route does. The verify route normalizes whatever
|
|
128
|
+
* comes back.
|
|
129
|
+
*/
|
|
130
|
+
backupCodes: backupCodes
|
|
131
|
+
? backupCodes.map((code) => {
|
|
132
|
+
return TwoFactorBackupCode.formatForDisplay(code);
|
|
133
|
+
})
|
|
134
|
+
: [],
|
|
135
|
+
});
|
|
72
136
|
}
|
|
73
137
|
catch (err) {
|
|
74
138
|
next(err);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserTotpAuthAPI.js","sourceRoot":"","sources":["../../../../Server/API/UserTotpAuthAPI.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,cAAc,MAAM,iCAAiC,CAAC;AAC7D,OAAO,mBAEN,MAAM,iCAAiC,CAAC;AAOzC,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,OAAO,YAAY,MAAM,0CAA0C,CAAC;AACpE,OAAO,gBAAgB,MAAM,wCAAwC,CAAC;AACtE,OAAO,QAAQ,MAAM,mBAAmB,CAAC;AACzC,OAAO,QAAQ,MAAM,mBAAmB,CAAC;AAEzC,OAAO,WAAW,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"UserTotpAuthAPI.js","sourceRoot":"","sources":["../../../../Server/API/UserTotpAuthAPI.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,10 @@ import UserWebAuthn from "../../Models/DatabaseModels/UserWebAuthn";
|
|
|
5
5
|
import BadDataException from "../../Types/Exception/BadDataException";
|
|
6
6
|
import Response from "../Utils/Response";
|
|
7
7
|
import CommonAPI from "./CommonAPI";
|
|
8
|
+
import UserTwoFactorBackupCodeService from "../Services/UserTwoFactorBackupCodeService";
|
|
9
|
+
import TwoFactorBackupCode from "../Utils/TwoFactorBackupCode";
|
|
10
|
+
import logger from "../Utils/Logger";
|
|
11
|
+
import TwoFactorBackupCodeNotification from "../Utils/TwoFactorBackupCodeNotification";
|
|
8
12
|
export default class UserWebAuthnAPI extends BaseAPI {
|
|
9
13
|
constructor() {
|
|
10
14
|
var _a, _b, _c;
|
|
@@ -33,7 +37,44 @@ export default class UserWebAuthnAPI extends BaseAPI {
|
|
|
33
37
|
name: name,
|
|
34
38
|
props: databaseProps,
|
|
35
39
|
});
|
|
36
|
-
|
|
40
|
+
/*
|
|
41
|
+
* A security key is a second factor that can be left in a taxi, so
|
|
42
|
+
* registering one is a moment that needs a recovery route behind it.
|
|
43
|
+
* Minted here for the same reason -- and with the same
|
|
44
|
+
* only-if-there-are-none rule -- as on the TOTP validate route; see
|
|
45
|
+
* the note there. A key added ALONGSIDE an authenticator app finds
|
|
46
|
+
* codes already present and changes nothing.
|
|
47
|
+
*
|
|
48
|
+
* Never fatal to the registration: the credential is already saved
|
|
49
|
+
* at this point, so an error here would report a failure for work
|
|
50
|
+
* that succeeded.
|
|
51
|
+
*/
|
|
52
|
+
let backupCodes = null;
|
|
53
|
+
if (databaseProps.userId) {
|
|
54
|
+
try {
|
|
55
|
+
backupCodes =
|
|
56
|
+
await UserTwoFactorBackupCodeService.generateForUserIfNone({
|
|
57
|
+
userId: databaseProps.userId,
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
catch (backupCodeError) {
|
|
61
|
+
logger.error(backupCodeError);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/* See the note on the TOTP validate route. */
|
|
65
|
+
if (backupCodes && backupCodes.length > 0 && databaseProps.userId) {
|
|
66
|
+
TwoFactorBackupCodeNotification.notifyCodesCreated({
|
|
67
|
+
userId: databaseProps.userId,
|
|
68
|
+
codeCount: backupCodes.length,
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
return Response.sendJsonObjectResponse(req, res, {
|
|
72
|
+
backupCodes: backupCodes
|
|
73
|
+
? backupCodes.map((code) => {
|
|
74
|
+
return TwoFactorBackupCode.formatForDisplay(code);
|
|
75
|
+
})
|
|
76
|
+
: [],
|
|
77
|
+
});
|
|
37
78
|
}
|
|
38
79
|
catch (err) {
|
|
39
80
|
next(err);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserWebAuthnAPI.js","sourceRoot":"","sources":["../../../../Server/API/UserWebAuthnAPI.ts"],"names":[],"mappings":"AACA,OAAO,cAAc,MAAM,iCAAiC,CAAC;AAC7D,OAAO,mBAEN,MAAM,iCAAiC,CAAC;AAOzC,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,OAAO,YAAY,MAAM,0CAA0C,CAAC;AACpE,OAAO,gBAAgB,MAAM,wCAAwC,CAAC;AACtE,OAAO,QAAQ,MAAM,mBAAmB,CAAC;AAEzC,OAAO,SAAS,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"UserWebAuthnAPI.js","sourceRoot":"","sources":["../../../../Server/API/UserWebAuthnAPI.ts"],"names":[],"mappings":"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"}
|
package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787923136162-MigrationName.js
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export class MigrationName1787923136162 {
|
|
2
|
+
constructor() {
|
|
3
|
+
this.name = "MigrationName1787923136162";
|
|
4
|
+
}
|
|
5
|
+
async up(queryRunner) {
|
|
6
|
+
await queryRunner.query(`CREATE TABLE "ThreatIntelFeed" ("_id" uuid NOT NULL DEFAULT uuid_generate_v4(), "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(), "deletedAt" TIMESTAMP WITH TIME ZONE, "version" integer NOT NULL, "projectId" uuid NOT NULL, "name" character varying(50) NOT NULL, "description" character varying(500), "apiRootUrl" character varying(500) NOT NULL, "collectionId" character varying(100) NOT NULL, "apiToken" text, "basicAuthUsername" character varying(100), "basicAuthPassword" text, "isEnabled" boolean NOT NULL DEFAULT true, "pollIntervalInMinutes" integer NOT NULL DEFAULT '60', "minimumConfidence" integer NOT NULL DEFAULT '0', "shouldCreateAlert" boolean NOT NULL DEFAULT true, "shouldWriteDetectionFinding" boolean NOT NULL DEFAULT true, "shouldCreateIncident" boolean NOT NULL DEFAULT false, "alertSeverityId" uuid, "incidentSeverityId" uuid, "lastPolledAt" TIMESTAMP WITH TIME ZONE, "cursor" character varying(500), "nextPageToken" text, "lastPollSummary" character varying(500), "lastError" text, "lastEvaluatedAt" TIMESTAMP WITH TIME ZONE, "lastMatchAt" TIMESTAMP WITH TIME ZONE, "lastMatchError" text, "createdByUserId" uuid, "deletedByUserId" uuid, CONSTRAINT "PK_f439b1608d006621778c77a13de" PRIMARY KEY ("_id"))`);
|
|
7
|
+
await queryRunner.query(`CREATE INDEX "IDX_5cb2e4e831d2e3b78a636e8aa3" ON "ThreatIntelFeed" ("projectId") `);
|
|
8
|
+
await queryRunner.query(`CREATE INDEX "IDX_1a73c0779724e007780632b751" ON "ThreatIntelFeed" ("isEnabled") `);
|
|
9
|
+
await queryRunner.query(`ALTER TABLE "ThreatIntelFeed" ADD CONSTRAINT "FK_5cb2e4e831d2e3b78a636e8aa3c" FOREIGN KEY ("projectId") REFERENCES "Project"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`);
|
|
10
|
+
await queryRunner.query(`ALTER TABLE "ThreatIntelFeed" ADD CONSTRAINT "FK_2ffbb2319e575d9707009ef9621" FOREIGN KEY ("alertSeverityId") REFERENCES "AlertSeverity"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
|
|
11
|
+
await queryRunner.query(`ALTER TABLE "ThreatIntelFeed" ADD CONSTRAINT "FK_3fa2aadff928287f194db3bdbdd" FOREIGN KEY ("incidentSeverityId") REFERENCES "IncidentSeverity"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
|
|
12
|
+
await queryRunner.query(`ALTER TABLE "ThreatIntelFeed" ADD CONSTRAINT "FK_faced98393bfb0882cd8929ac8a" FOREIGN KEY ("createdByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
|
|
13
|
+
await queryRunner.query(`ALTER TABLE "ThreatIntelFeed" ADD CONSTRAINT "FK_fa32bd7c42ea2b291e649940c7f" FOREIGN KEY ("deletedByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
|
|
14
|
+
}
|
|
15
|
+
async down(queryRunner) {
|
|
16
|
+
await queryRunner.query(`ALTER TABLE "ThreatIntelFeed" DROP CONSTRAINT "FK_fa32bd7c42ea2b291e649940c7f"`);
|
|
17
|
+
await queryRunner.query(`ALTER TABLE "ThreatIntelFeed" DROP CONSTRAINT "FK_faced98393bfb0882cd8929ac8a"`);
|
|
18
|
+
await queryRunner.query(`ALTER TABLE "ThreatIntelFeed" DROP CONSTRAINT "FK_3fa2aadff928287f194db3bdbdd"`);
|
|
19
|
+
await queryRunner.query(`ALTER TABLE "ThreatIntelFeed" DROP CONSTRAINT "FK_2ffbb2319e575d9707009ef9621"`);
|
|
20
|
+
await queryRunner.query(`ALTER TABLE "ThreatIntelFeed" DROP CONSTRAINT "FK_5cb2e4e831d2e3b78a636e8aa3c"`);
|
|
21
|
+
await queryRunner.query(`DROP INDEX "public"."IDX_1a73c0779724e007780632b751"`);
|
|
22
|
+
await queryRunner.query(`DROP INDEX "public"."IDX_5cb2e4e831d2e3b78a636e8aa3"`);
|
|
23
|
+
await queryRunner.query(`DROP TABLE "ThreatIntelFeed"`);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=1787923136162-MigrationName.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"1787923136162-MigrationName.js","sourceRoot":"","sources":["../../../../../../Server/Infrastructure/Postgres/SchemaMigrations/1787923136162-MigrationName.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,0BAA0B;IAAvC;QACS,SAAI,GAAG,4BAA4B,CAAC;IAqD7C,CAAC;IAnDQ,KAAK,CAAC,EAAE,CAAC,WAAwB;QACtC,MAAM,WAAW,CAAC,KAAK,CACrB,gxCAAgxC,CACjxC,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,mFAAmF,CACpF,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,mFAAmF,CACpF,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,2KAA2K,CAC5K,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,wLAAwL,CACzL,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,8LAA8L,CAC/L,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,+KAA+K,CAChL,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,+KAA+K,CAChL,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,WAAwB;QACxC,MAAM,WAAW,CAAC,KAAK,CACrB,gFAAgF,CACjF,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,gFAAgF,CACjF,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,gFAAgF,CACjF,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,gFAAgF,CACjF,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,gFAAgF,CACjF,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,sDAAsD,CACvD,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,sDAAsD,CACvD,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAC1D,CAAC;CACF"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export class AddAutoProvisionedNetworkDeviceMonitors1789600000000 {
|
|
2
|
+
constructor() {
|
|
3
|
+
this.name = "AddAutoProvisionedNetworkDeviceMonitors1789600000000";
|
|
4
|
+
}
|
|
5
|
+
async up(queryRunner) {
|
|
6
|
+
await queryRunner.query(`ALTER TABLE "Monitor" ADD "autoProvisionedNetworkDeviceId" uuid`);
|
|
7
|
+
await queryRunner.query(`ALTER TABLE "NetworkDeviceAutoImportRule" ADD "monitorTemplateId" uuid`);
|
|
8
|
+
await queryRunner.query(`CREATE UNIQUE INDEX "IDX_monitor_auto_provisioned_device_template_unique" ON "Monitor" ("autoProvisionedNetworkDeviceId", "monitorTemplateId") WHERE "deletedAt" IS NULL AND "autoProvisionedNetworkDeviceId" IS NOT NULL AND "monitorTemplateId" IS NOT NULL`);
|
|
9
|
+
await queryRunner.query(`CREATE INDEX "IDX_network_device_auto_import_rule_monitorTemplateId" ON "NetworkDeviceAutoImportRule" ("monitorTemplateId") `);
|
|
10
|
+
await queryRunner.query(`ALTER TABLE "Monitor" ADD CONSTRAINT "FK_monitor_auto_provisioned_network_device" FOREIGN KEY ("autoProvisionedNetworkDeviceId") REFERENCES "NetworkDevice"("_id") ON DELETE RESTRICT ON UPDATE NO ACTION`);
|
|
11
|
+
await queryRunner.query(`ALTER TABLE "NetworkDeviceAutoImportRule" ADD CONSTRAINT "FK_nd_auto_import_rule_monitorTemplateId" FOREIGN KEY ("monitorTemplateId") REFERENCES "MonitorTemplate"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`);
|
|
12
|
+
}
|
|
13
|
+
async down(queryRunner) {
|
|
14
|
+
await queryRunner.query(`ALTER TABLE "NetworkDeviceAutoImportRule" DROP CONSTRAINT "FK_nd_auto_import_rule_monitorTemplateId"`);
|
|
15
|
+
await queryRunner.query(`ALTER TABLE "Monitor" DROP CONSTRAINT "FK_monitor_auto_provisioned_network_device"`);
|
|
16
|
+
await queryRunner.query(`DROP INDEX "public"."IDX_network_device_auto_import_rule_monitorTemplateId"`);
|
|
17
|
+
await queryRunner.query(`DROP INDEX "public"."IDX_monitor_auto_provisioned_device_template_unique"`);
|
|
18
|
+
await queryRunner.query(`ALTER TABLE "NetworkDeviceAutoImportRule" DROP COLUMN "monitorTemplateId"`);
|
|
19
|
+
await queryRunner.query(`ALTER TABLE "Monitor" DROP COLUMN "autoProvisionedNetworkDeviceId"`);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=1789600000000-AddAutoProvisionedNetworkDeviceMonitors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"1789600000000-AddAutoProvisionedNetworkDeviceMonitors.js","sourceRoot":"","sources":["../../../../../../Server/Infrastructure/Postgres/SchemaMigrations/1789600000000-AddAutoProvisionedNetworkDeviceMonitors.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,oDAAoD;IAAjE;QAGS,SAAI,GAAW,sDAAsD,CAAC;IA2C/E,CAAC;IAzCQ,KAAK,CAAC,EAAE,CAAC,WAAwB;QACtC,MAAM,WAAW,CAAC,KAAK,CACrB,iEAAiE,CAClE,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,wEAAwE,CACzE,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,+PAA+P,CAChQ,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,8HAA8H,CAC/H,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,2MAA2M,CAC5M,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,kNAAkN,CACnN,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,WAAwB;QACxC,MAAM,WAAW,CAAC,KAAK,CACrB,sGAAsG,CACvG,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,oFAAoF,CACrF,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,6EAA6E,CAC9E,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,2EAA2E,CAC5E,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,2EAA2E,CAC5E,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,oEAAoE,CACrE,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* What a network estate of eighty thousand devices and a thousand-odd sites
|
|
3
|
+
* needs from Postgres.
|
|
4
|
+
*
|
|
5
|
+
* Before this, the hottest queries in the network product were sequential
|
|
6
|
+
* scans of the whole NetworkDevice table — including the polling claim loop,
|
|
7
|
+
* which every probe runs on every cycle and which had no index on `probeId` at
|
|
8
|
+
* all, a foreign key creating none in Postgres.
|
|
9
|
+
*
|
|
10
|
+
* Measured on a seeded 80,000-device fleet, before → after:
|
|
11
|
+
*
|
|
12
|
+
* device list, first page 14.4 ms → 0.10 ms
|
|
13
|
+
* device list, Status facet 13.7 ms → 0.12 ms
|
|
14
|
+
* probe claim (40,000 devices) 117 ms → 0.85 ms (2,702 → 86 buffers)
|
|
15
|
+
*/
|
|
16
|
+
export class AddNetworkScaleIndexes1789700000000 {
|
|
17
|
+
constructor() {
|
|
18
|
+
this.name = "AddNetworkScaleIndexes1789700000000";
|
|
19
|
+
}
|
|
20
|
+
async up(queryRunner) {
|
|
21
|
+
/*
|
|
22
|
+
* `nextPollAt` becomes NOT NULL, defaulting to now.
|
|
23
|
+
*
|
|
24
|
+
* NULL meant "poll as soon as possible", so the claim query had to read
|
|
25
|
+
* `(nextPollAt IS NULL OR nextPollAt <= now)` ordered `ASC NULLS FIRST`.
|
|
26
|
+
* A btree is ASC NULLS LAST, so that ordering could never be served by an
|
|
27
|
+
* index however the index was declared: every claim cycle sequentially
|
|
28
|
+
* scanned the probe's whole slice of the fleet and top-N sorted it, inside
|
|
29
|
+
* a transaction already holding FOR UPDATE row locks.
|
|
30
|
+
*
|
|
31
|
+
* `now()` says exactly what NULL said, in a value the index can order.
|
|
32
|
+
*
|
|
33
|
+
* The backfill runs first and must: SET NOT NULL rejects the statement
|
|
34
|
+
* outright if a single row still holds NULL. `createdAt` rather than
|
|
35
|
+
* `now()` for those rows, so a device that has been waiting to be polled
|
|
36
|
+
* since it was created keeps its place at the front of the queue instead
|
|
37
|
+
* of going to the back of it.
|
|
38
|
+
*/
|
|
39
|
+
await queryRunner.query(`UPDATE "NetworkDevice" SET "nextPollAt" = "createdAt" WHERE "nextPollAt" IS NULL`);
|
|
40
|
+
await queryRunner.query(`ALTER TABLE "NetworkDevice" ALTER COLUMN "nextPollAt" SET NOT NULL`);
|
|
41
|
+
await queryRunner.query(`ALTER TABLE "NetworkDevice" ALTER COLUMN "nextPollAt" SET DEFAULT now()`);
|
|
42
|
+
/*
|
|
43
|
+
* Superseded by IDX_15660584d280ed474504cb4021, which has it as a prefix.
|
|
44
|
+
* Keeping both would cost every insert and update a second index write for
|
|
45
|
+
* nothing — and this is a table every SNMP poll updates.
|
|
46
|
+
*/
|
|
47
|
+
await queryRunner.query(`DROP INDEX "public"."IDX_878d6fc3878837bb01e09b2f3f"`);
|
|
48
|
+
// The device list's default page, and every fleet-wide count over it.
|
|
49
|
+
await queryRunner.query(`CREATE INDEX "IDX_15660584d280ed474504cb4021" ON "NetworkDevice" ("projectId", "isArchived", "createdAt") `);
|
|
50
|
+
/*
|
|
51
|
+
* The Status facet and the summary strip's three counts, plus the
|
|
52
|
+
* Overview's "longest out of contact" list, which is what `lastSeenAt` is
|
|
53
|
+
* doing on the end.
|
|
54
|
+
*/
|
|
55
|
+
await queryRunner.query(`CREATE INDEX "IDX_87566f1ca6cc63ee3afd3aeaff" ON "NetworkDevice" ("projectId", "isArchived", "isReachable", "lastSeenAt") `);
|
|
56
|
+
// Every per-site rollup, the hierarchy drill-down, and the unassigned count.
|
|
57
|
+
await queryRunner.query(`CREATE INDEX "IDX_42360e479fb36f6d34c0e3c485" ON "NetworkDevice" ("projectId", "siteId") `);
|
|
58
|
+
/*
|
|
59
|
+
* PARTIAL: dark ports are a small minority of a healthy fleet, so this
|
|
60
|
+
* stays tiny and an interface flap only touches it when the count crosses
|
|
61
|
+
* zero. A full index on a column every SNMP walk rewrites would be write
|
|
62
|
+
* amplification for the sake of one eight-row list.
|
|
63
|
+
*/
|
|
64
|
+
await queryRunner.query(`CREATE INDEX "IDX_5767b485012a9b4b49d0f99b6a" ON "NetworkDevice" ("projectId", "interfacesDown") WHERE "interfacesDown" > 0 AND "isArchived" = false`);
|
|
65
|
+
// The polling claim loop. See the nextPollAt note above.
|
|
66
|
+
await queryRunner.query(`CREATE INDEX "IDX_52f8f551a9796060489ebaf31c" ON "NetworkDevice" ("probeId", "nextPollAt") `);
|
|
67
|
+
// The Sites summary strip's grouped status count, and the unhealthy list.
|
|
68
|
+
await queryRunner.query(`CREATE INDEX "IDX_387febc5598c05f9795463292c" ON "NetworkSite" ("projectId", "currentMonitorStatusId") `);
|
|
69
|
+
}
|
|
70
|
+
async down(queryRunner) {
|
|
71
|
+
await queryRunner.query(`DROP INDEX "public"."IDX_387febc5598c05f9795463292c"`);
|
|
72
|
+
await queryRunner.query(`DROP INDEX "public"."IDX_52f8f551a9796060489ebaf31c"`);
|
|
73
|
+
await queryRunner.query(`DROP INDEX "public"."IDX_5767b485012a9b4b49d0f99b6a"`);
|
|
74
|
+
await queryRunner.query(`DROP INDEX "public"."IDX_42360e479fb36f6d34c0e3c485"`);
|
|
75
|
+
await queryRunner.query(`DROP INDEX "public"."IDX_87566f1ca6cc63ee3afd3aeaff"`);
|
|
76
|
+
await queryRunner.query(`DROP INDEX "public"."IDX_15660584d280ed474504cb4021"`);
|
|
77
|
+
await queryRunner.query(`CREATE INDEX "IDX_878d6fc3878837bb01e09b2f3f" ON "NetworkDevice" ("projectId", "isArchived") `);
|
|
78
|
+
/*
|
|
79
|
+
* The rows the backfill filled in are indistinguishable from real
|
|
80
|
+
* schedules, so `down` restores the shape of the column and not its
|
|
81
|
+
* former NULLs. Nothing reads NULL as anything but "due now", which is
|
|
82
|
+
* what those rows already say.
|
|
83
|
+
*/
|
|
84
|
+
await queryRunner.query(`ALTER TABLE "NetworkDevice" ALTER COLUMN "nextPollAt" DROP DEFAULT`);
|
|
85
|
+
await queryRunner.query(`ALTER TABLE "NetworkDevice" ALTER COLUMN "nextPollAt" DROP NOT NULL`);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=1789700000000-AddNetworkScaleIndexes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"1789700000000-AddNetworkScaleIndexes.js","sourceRoot":"","sources":["../../../../../../Server/Infrastructure/Postgres/SchemaMigrations/1789700000000-AddNetworkScaleIndexes.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,mCAAmC;IAAhD;QACS,SAAI,GAAW,qCAAqC,CAAC;IA8G9D,CAAC;IA5GQ,KAAK,CAAC,EAAE,CAAC,WAAwB;QACtC;;;;;;;;;;;;;;;;;WAiBG;QACH,MAAM,WAAW,CAAC,KAAK,CACrB,kFAAkF,CACnF,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,oEAAoE,CACrE,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,yEAAyE,CAC1E,CAAC;QAEF;;;;WAIG;QACH,MAAM,WAAW,CAAC,KAAK,CACrB,sDAAsD,CACvD,CAAC;QAEF,sEAAsE;QACtE,MAAM,WAAW,CAAC,KAAK,CACrB,4GAA4G,CAC7G,CAAC;QACF;;;;WAIG;QACH,MAAM,WAAW,CAAC,KAAK,CACrB,4HAA4H,CAC7H,CAAC;QACF,6EAA6E;QAC7E,MAAM,WAAW,CAAC,KAAK,CACrB,2FAA2F,CAC5F,CAAC;QACF;;;;;WAKG;QACH,MAAM,WAAW,CAAC,KAAK,CACrB,sJAAsJ,CACvJ,CAAC;QACF,yDAAyD;QACzD,MAAM,WAAW,CAAC,KAAK,CACrB,6FAA6F,CAC9F,CAAC;QACF,0EAA0E;QAC1E,MAAM,WAAW,CAAC,KAAK,CACrB,yGAAyG,CAC1G,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,WAAwB;QACxC,MAAM,WAAW,CAAC,KAAK,CACrB,sDAAsD,CACvD,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,sDAAsD,CACvD,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,sDAAsD,CACvD,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,sDAAsD,CACvD,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,sDAAsD,CACvD,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,sDAAsD,CACvD,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,+FAA+F,CAChG,CAAC;QACF;;;;;WAKG;QACH,MAAM,WAAW,CAAC,KAAK,CACrB,oEAAoE,CACrE,CAAC;QACF,MAAM,WAAW,CAAC,KAAK,CACrB,qEAAqE,CACtE,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* lastError on both security-event connectors becomes unbounded text.
|
|
3
|
+
*
|
|
4
|
+
* Both columns were varchar(500), and both hold an error produced
|
|
5
|
+
* elsewhere: the Google SecOps client echoes up to 500 characters of the
|
|
6
|
+
* Chronicle response body behind a ~46 character prefix, and a ClickHouse
|
|
7
|
+
* error echoes the whole compiled query. Either overflows 500, and
|
|
8
|
+
* DatabaseService.checkMaxLengthOfFields turns that overflow into a
|
|
9
|
+
* BadDataException — thrown from inside the catch block that was trying to
|
|
10
|
+
* record the failure, which took the whole poll/evaluation tick down with
|
|
11
|
+
* it and left lastError and its lastPolledAt/lastEvaluatedAt stamp null.
|
|
12
|
+
*
|
|
13
|
+
* ALTER COLUMN ... TYPE rather than the DROP + ADD pair TypeORM generates
|
|
14
|
+
* for this change: varchar -> text is binary-coercible in Postgres, so
|
|
15
|
+
* this preserves whatever error is currently stored instead of discarding
|
|
16
|
+
* it on upgrade. Same end state, same shape as the MonitorSecret
|
|
17
|
+
* secretValue widening in 1720024126646.
|
|
18
|
+
*/
|
|
19
|
+
export class WidenSecurityEventLastErrorColumns1789800000000 {
|
|
20
|
+
constructor() {
|
|
21
|
+
this.name = "WidenSecurityEventLastErrorColumns1789800000000";
|
|
22
|
+
}
|
|
23
|
+
async up(queryRunner) {
|
|
24
|
+
await queryRunner.query(`ALTER TABLE "DetectionRule" ALTER COLUMN "lastError" TYPE text`);
|
|
25
|
+
await queryRunner.query(`ALTER TABLE "GoogleSecOpsConnection" ALTER COLUMN "lastError" TYPE text`);
|
|
26
|
+
}
|
|
27
|
+
/*
|
|
28
|
+
* Reversing narrows the column, so anything already stored past 500
|
|
29
|
+
* characters has to go somewhere: truncate it rather than let the ALTER
|
|
30
|
+
* fail on existing rows.
|
|
31
|
+
*/
|
|
32
|
+
async down(queryRunner) {
|
|
33
|
+
await queryRunner.query(`UPDATE "GoogleSecOpsConnection" SET "lastError" = LEFT("lastError", 500) WHERE LENGTH("lastError") > 500`);
|
|
34
|
+
await queryRunner.query(`ALTER TABLE "GoogleSecOpsConnection" ALTER COLUMN "lastError" TYPE character varying(500)`);
|
|
35
|
+
await queryRunner.query(`UPDATE "DetectionRule" SET "lastError" = LEFT("lastError", 500) WHERE LENGTH("lastError") > 500`);
|
|
36
|
+
await queryRunner.query(`ALTER TABLE "DetectionRule" ALTER COLUMN "lastError" TYPE character varying(500)`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=1789800000000-WidenSecurityEventLastErrorColumns.js.map
|