@oneuptime/common 12.0.30 → 12.0.32
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/SecurityEvent.ts +48 -16
- package/Models/AnalyticsModels/ThreatIntelIndicator.ts +10 -5
- package/Models/DatabaseModels/AlertSeverity.ts +44 -0
- package/Models/DatabaseModels/AlertState.ts +0 -2
- package/Models/DatabaseModels/DetectionRule.ts +16 -5
- package/Models/DatabaseModels/Domain.ts +1 -1
- package/Models/DatabaseModels/GoogleSecOpsConnection.ts +14 -5
- package/Models/DatabaseModels/Incident.ts +1 -1
- package/Models/DatabaseModels/IncidentSeverity.ts +44 -0
- package/Models/DatabaseModels/IncidentTemplate.ts +1 -1
- package/Models/DatabaseModels/Index.ts +4 -0
- package/Models/DatabaseModels/MetricType.ts +0 -2
- package/Models/DatabaseModels/MonitorStatusTimeline.ts +0 -2
- package/Models/DatabaseModels/MonitorTest.ts +0 -2
- package/Models/DatabaseModels/NetworkDevice.ts +234 -5
- package/Models/DatabaseModels/NetworkDeviceAutoImportRule.ts +88 -0
- package/Models/DatabaseModels/NetworkDeviceDiscoveryScan.ts +22 -0
- package/Models/DatabaseModels/NetworkDeviceOidTemplate.ts +501 -0
- package/Models/DatabaseModels/NetworkDeviceRole.ts +648 -0
- package/Models/DatabaseModels/ScheduledMaintenance.ts +1 -1
- package/Models/DatabaseModels/ScheduledMaintenanceTemplate.ts +1 -1
- package/Models/DatabaseModels/StatusPageAnnouncement.ts +0 -2
- package/Models/DatabaseModels/StatusPageAnnouncementTemplate.ts +0 -2
- package/Models/DatabaseModels/StatusPagePrivateUser.ts +0 -2
- package/Models/DatabaseModels/StatusPageResource.ts +0 -2
- package/Models/DatabaseModels/StatusPageSubscriber.ts +0 -2
- package/Models/DatabaseModels/ThreatIntelFeed.ts +16 -5
- package/Server/API/GlobalConfigAPI.ts +362 -183
- package/Server/API/TelemetryAPI.ts +42 -4
- package/Server/EnvironmentConfig.ts +112 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1790500000000-AddNetworkDeviceOidTemplate.ts +59 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1790600000000-AddAutoImportRuleOidTemplate.ts +25 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1790800000000-AddNetworkDeviceRoleTable.ts +72 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +6 -0
- package/Server/Middleware/MultipartFormData.ts +118 -32
- package/Server/Services/AlertEpisodeLabelRuleEngineService.ts +9 -1
- package/Server/Services/AlertEpisodeOnCallRuleEngineService.ts +9 -1
- package/Server/Services/AlertEpisodeOwnerRuleEngineService.ts +9 -1
- package/Server/Services/AlertEpisodePrivacyRuleEngineService.ts +9 -1
- package/Server/Services/AlertGroupingEngineService.ts +9 -1
- package/Server/Services/AlertLabelRuleEngineService.ts +9 -1
- package/Server/Services/AlertOnCallRuleEngineService.ts +9 -1
- package/Server/Services/AlertOwnerRuleEngineService.ts +9 -1
- package/Server/Services/AlertPrivacyRuleEngineService.ts +9 -1
- package/Server/Services/AlertReminderRuleService.ts +9 -1
- package/Server/Services/AutoRemediationRuleEngineService.ts +9 -1
- package/Server/Services/CephClusterLabelRuleEngineService.ts +9 -1
- package/Server/Services/CephClusterOwnerRuleEngineService.ts +9 -1
- package/Server/Services/CloudResourceLabelRuleEngineService.ts +9 -1
- package/Server/Services/CloudResourceOwnerRuleEngineService.ts +9 -1
- package/Server/Services/DashboardLabelRuleEngineService.ts +9 -1
- package/Server/Services/DashboardOwnerRuleEngineService.ts +9 -1
- package/Server/Services/DatabaseService.ts +39 -9
- package/Server/Services/DockerHostLabelRuleEngineService.ts +9 -1
- package/Server/Services/DockerHostOwnerRuleEngineService.ts +9 -1
- package/Server/Services/DockerSwarmClusterLabelRuleEngineService.ts +9 -1
- package/Server/Services/DockerSwarmClusterOwnerRuleEngineService.ts +9 -1
- package/Server/Services/HostLabelRuleEngineService.ts +9 -1
- package/Server/Services/HostOwnerRuleEngineService.ts +9 -1
- package/Server/Services/IncidentEpisodeLabelRuleEngineService.ts +9 -1
- package/Server/Services/IncidentEpisodeOnCallRuleEngineService.ts +9 -1
- package/Server/Services/IncidentEpisodeOwnerRuleEngineService.ts +9 -1
- package/Server/Services/IncidentEpisodePrivacyRuleEngineService.ts +9 -1
- package/Server/Services/IncidentGroupingEngineService.ts +9 -1
- package/Server/Services/IncidentLabelRuleEngineService.ts +9 -1
- package/Server/Services/IncidentOnCallRuleEngineService.ts +9 -1
- package/Server/Services/IncidentOwnerRuleEngineService.ts +9 -1
- package/Server/Services/IncidentPrivacyRuleEngineService.ts +9 -1
- package/Server/Services/IncidentReminderRuleService.ts +9 -1
- package/Server/Services/IncidentSlaRuleService.ts +9 -1
- package/Server/Services/IncomingCallPolicyLabelRuleEngineService.ts +9 -1
- package/Server/Services/IncomingCallPolicyOwnerRuleEngineService.ts +9 -1
- package/Server/Services/Index.ts +4 -0
- package/Server/Services/IoTFleetLabelRuleEngineService.ts +9 -1
- package/Server/Services/IoTFleetOwnerRuleEngineService.ts +9 -1
- package/Server/Services/KubernetesClusterLabelRuleEngineService.ts +9 -1
- package/Server/Services/KubernetesClusterOwnerRuleEngineService.ts +9 -1
- package/Server/Services/KubernetesResourceService.ts +5 -1
- package/Server/Services/MonitorLabelRuleEngineService.ts +9 -1
- package/Server/Services/MonitorOwnerRuleEngineService.ts +9 -1
- package/Server/Services/NetworkDeviceAutoImportRuleEngineService.ts +35 -0
- package/Server/Services/NetworkDeviceAutoImportRuleService.ts +96 -0
- package/Server/Services/NetworkDeviceLabelRuleEngineService.ts +9 -1
- package/Server/Services/NetworkDeviceOidTemplateService.ts +201 -0
- package/Server/Services/NetworkDeviceOwnerRuleEngineService.ts +9 -1
- package/Server/Services/NetworkDeviceRoleService.ts +90 -0
- package/Server/Services/NetworkDeviceService.ts +209 -1
- package/Server/Services/OnCallDutyPolicyLabelRuleEngineService.ts +9 -1
- package/Server/Services/OnCallDutyPolicyOwnerRuleEngineService.ts +9 -1
- package/Server/Services/OnCallDutyPolicyScheduleLabelRuleEngineService.ts +9 -1
- package/Server/Services/OnCallDutyPolicyScheduleOwnerRuleEngineService.ts +9 -1
- package/Server/Services/PodmanHostLabelRuleEngineService.ts +9 -1
- package/Server/Services/PodmanHostOwnerRuleEngineService.ts +9 -1
- package/Server/Services/ProjectService.ts +85 -0
- package/Server/Services/ProxmoxClusterLabelRuleEngineService.ts +9 -1
- package/Server/Services/ProxmoxClusterOwnerRuleEngineService.ts +9 -1
- package/Server/Services/RumApplicationLabelRuleEngineService.ts +9 -1
- package/Server/Services/RumApplicationOwnerRuleEngineService.ts +9 -1
- package/Server/Services/RunbookLabelRuleEngineService.ts +9 -1
- package/Server/Services/RunbookOwnerRuleEngineService.ts +9 -1
- package/Server/Services/RunbookRuleEngineService.ts +9 -1
- package/Server/Services/ScheduledMaintenanceLabelRuleEngineService.ts +9 -1
- package/Server/Services/ScheduledMaintenanceOwnerRuleEngineService.ts +9 -1
- package/Server/Services/ScheduledMaintenanceReminderRuleService.ts +9 -1
- package/Server/Services/ServerlessFunctionLabelRuleEngineService.ts +9 -1
- package/Server/Services/ServerlessFunctionOwnerRuleEngineService.ts +9 -1
- package/Server/Services/ServiceLabelRuleEngineService.ts +9 -1
- package/Server/Services/ServiceOwnerRuleEngineService.ts +9 -1
- package/Server/Services/StatusPageLabelRuleEngineService.ts +9 -1
- package/Server/Services/StatusPageMonitorRuleEngineService.ts +7 -0
- package/Server/Services/StatusPageOwnerRuleEngineService.ts +9 -1
- package/Server/Services/TelemetrySourceMapService.ts +266 -23
- package/Server/Services/UserNotificationSettingService.ts +0 -6
- package/Server/Services/UserService.ts +27 -0
- package/Server/Services/WorkflowLabelRuleEngineService.ts +9 -1
- package/Server/Services/WorkflowOwnerRuleEngineService.ts +9 -1
- package/Server/Utils/EnterpriseLicense/EnterpriseLicenseSeatUtil.ts +186 -0
- package/Server/Utils/Monitor/CapturedMetricAttributeUtil.ts +245 -0
- package/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.ts +21 -2
- package/Server/Utils/Monitor/MonitorMetricUtil.ts +55 -21
- package/Server/Utils/Monitor/MonitorTemplateUtil.ts +32 -0
- package/Server/Utils/Monitor/NetworkDeviceMetricUtil.ts +15 -2
- package/Server/Utils/Monitor/NetworkDeviceWalkUtil.ts +18 -1
- package/Server/Utils/Monitor/NetworkInventoryUtil.ts +10 -0
- package/Server/Utils/Monitor/SeriesResourceLabels.ts +34 -0
- package/Server/Utils/Rules/RuleEngineRuleRead.ts +48 -0
- package/Server/Utils/Telemetry/ExceptionSanitizer.ts +14 -1
- package/Server/Utils/Telemetry/LogExceptionExtractor.ts +14 -2
- package/Server/Utils/Telemetry/SourceMapResolver.ts +16 -5
- package/Server/Utils/Telemetry/StackTraceParser.ts +399 -0
- package/Tests/App/Dashboard/AddNeighborToMonitoringModal.test.tsx +31 -1
- package/Tests/App/Dashboard/DashboardChartWidgetZoom.test.tsx +35 -8
- package/Tests/App/Dashboard/DashboardCommandPalette.test.tsx +107 -3
- package/Tests/App/Dashboard/DashboardWideChartZoom.test.tsx +401 -0
- package/Tests/App/Dashboard/EventOverlayHook.test.tsx +125 -0
- package/Tests/App/Dashboard/HeaderImageAssets.test.tsx +93 -0
- package/Tests/App/Dashboard/MonitorTemplateColumnAndFacet.test.tsx +318 -0
- package/Tests/App/Dashboard/NetworkDeviceBulkDelete.test.tsx +357 -0
- package/Tests/App/Dashboard/NetworkSideMenu.test.tsx +590 -0
- package/Tests/App/Dashboard/OnCallReadinessSurfaces.test.tsx +3 -3
- package/Tests/App/Dashboard/SideMenuHarness.tsx +11 -3
- package/Tests/App/Dashboard/UserElementEmail.test.tsx +12 -4
- package/Tests/App/Dashboard/UserEmailCallSites.test.tsx +1 -1
- package/Tests/Models/DatabaseModels/DomainRoleTierCoverage.test.ts +14 -0
- package/Tests/Models/DatabaseModels/ModelRegistryInvariants.test.ts +543 -0
- package/Tests/Models/SecurityDomainAccessControl.test.ts +429 -0
- package/Tests/Server/API/GlobalConfigLicense.test.ts +657 -0
- package/Tests/Server/API/SecurityEventAttributesAPI.test.ts +84 -6
- package/Tests/Server/API/TelemetryResolveStackTraceAPI.test.ts +805 -0
- package/Tests/Server/Infrastructure/Postgres/AddOnCallCalendarFeedsMigration.test.ts +32 -7
- package/Tests/Server/Infrastructure/Postgres/NetworkDeviceRoleTableMigration.test.ts +476 -0
- package/Tests/Server/Middleware/IdentityRateLimit.test.ts +1144 -0
- package/Tests/Server/Middleware/MultipartFormData.test.ts +618 -3
- package/Tests/Server/Services/DatabaseServiceGenerateSlug.test.ts +215 -0
- package/Tests/Server/Services/MonitorLabelRuleEngineScale.test.ts +520 -0
- package/Tests/Server/Services/NetworkDeviceOidTemplateService.test.ts +332 -0
- package/Tests/Server/Services/NetworkDeviceOidTemplateWriteGuards.test.ts +409 -0
- package/Tests/Server/Services/NetworkDeviceRoleModel.test.ts +672 -0
- package/Tests/Server/Services/NetworkDeviceRuleEngines.test.ts +1 -1
- package/Tests/Server/Services/ProjectServiceCreateSubscriptionStarted.test.ts +67 -4
- package/Tests/Server/Services/RuleEngineRuleFetchLimit.test.ts +239 -0
- package/Tests/Server/Services/ScheduledMaintenanceSubscriberEndTime.test.ts +369 -0
- package/Tests/Server/Services/TelemetrySourceMapService.test.ts +1210 -2
- package/Tests/Server/Services/UserNotificationSettingMonitorDefaults.test.ts +248 -0
- package/Tests/Server/Services/UserNotificationSettingWorkspaceChannels.test.ts +43 -2
- package/Tests/Server/Services/UserServiceSeatLimit.test.ts +182 -0
- package/Tests/Server/Types/AnalyticsDatabase/SecurityEventModelPermission.test.ts +255 -0
- package/Tests/Server/Types/Database/Permissions/ReadBlockPermission.test.ts +212 -0
- package/Tests/Server/Types/Database/Permissions/SecurityRoleAccess.test.ts +413 -0
- package/Tests/Server/Utils/BasicCron.test.ts +283 -0
- package/Tests/Server/Utils/CodeRepository.test.ts +689 -0
- package/Tests/Server/Utils/EnterpriseLicense/EnterpriseLicenseSeatUtil.test.ts +495 -0
- package/Tests/Server/Utils/ExceptionSanitizer.test.ts +77 -0
- package/Tests/Server/Utils/IncomingCallPhoneNumber.test.ts +174 -0
- package/Tests/Server/Utils/Monitor/CapturedMetricAttributeUtil.test.ts +284 -0
- package/Tests/Server/Utils/Monitor/MonitorCustomMetricAttributes.test.ts +503 -0
- package/Tests/Server/Utils/Monitor/MonitorTemplatePrototypePollution.test.ts +106 -0
- package/Tests/Server/Utils/Monitor/NetworkDeviceWalkLogWritePath.test.ts +33 -4
- package/Tests/Server/Utils/Monitor/NetworkDeviceWalkUtil.test.ts +14 -4
- package/Tests/Server/Utils/Monitor/NetworkInventoryUtil.test.ts +44 -0
- package/Tests/Server/Utils/OpenAPISpec.test.ts +536 -0
- package/Tests/Server/Utils/Rules/RuleEngineRuleRead.test.ts +115 -0
- package/Tests/Server/Utils/StackTraceParser.test.ts +610 -0
- package/Tests/Server/Utils/Telemetry/LogExceptionExtractor.test.ts +0 -0
- package/Tests/Server/Utils/Telemetry/SourceMapLimits.test.ts +656 -0
- package/Tests/Server/Utils/Telemetry/SourceMapResolver.test.ts +100 -0
- package/Tests/Types/Monitor/SnmpMonitor/SnmpOidListUtil.test.ts +454 -0
- package/Tests/Types/NetworkDevice/DefaultNetworkDeviceRole.test.ts +417 -0
- package/Tests/Types/SecurityRolePermissions.test.ts +193 -0
- package/Tests/UI/Components/Charts/AnnotationLayout.test.ts +773 -0
- package/Tests/UI/Components/Charts/ChartAnnotationRail.test.tsx +789 -0
- package/Tests/UI/Components/Charts/ChartBucketIdentity.test.ts +254 -0
- package/Tests/UI/Components/Charts/ChartClickDoubleClickDisambiguation.test.tsx +221 -0
- package/Tests/UI/Components/Charts/ChartDoubleClickReset.test.tsx +220 -0
- package/Tests/UI/Components/Charts/TimeAnnotation.test.ts +471 -0
- package/Tests/UI/Components/EditionLabelLicenseRefresh.test.tsx +405 -0
- package/Tests/UI/Components/ErrorMessageRefreshControl.test.tsx +83 -0
- package/Tests/UI/Components/MarkdownConverters.test.ts +686 -0
- package/Tests/UI/Components/ModelTable/BaseModelTableBulkDelete.test.tsx +751 -0
- package/Tests/UI/Components/ModelTable/BaseModelTableColumnCustomization.test.tsx +475 -43
- package/Tests/UI/Components/ModelTable/BaseModelTableDeleteAndEmptyStates.test.tsx +341 -0
- package/Tests/UI/Components/ModelTable/ColumnPreference.test.ts +89 -0
- package/Tests/UI/Components/NavBarCommandKGating.test.tsx +103 -8
- package/Tests/UI/Components/OrderedStatesList.test.tsx +5 -5
- package/Tests/UI/Components/PendingProjectInvitations.test.tsx +1 -1
- package/Tests/UI/Components/SideMenuItem.test.tsx +30 -0
- package/Tests/UI/Components/TableSortAndMobileColumns.test.tsx +195 -0
- package/Tests/UI/Components/XAxis.test.ts +270 -5
- package/Tests/UI/Components/XAxisDaylightSaving.test.ts +113 -0
- package/Tests/UI/Styles/ChartFocusRing.test.ts +153 -0
- package/Tests/UI/Styles/ChartFocusRingCoverage.test.tsx +377 -0
- package/Tests/UI/Styles/ThemeStylesheet.ts +162 -0
- package/Tests/UI/Utils/TableColumnsToCsv.test.ts +30 -0
- package/Tests/UI/Utils/UseDashboardTimeRangeZoom.test.tsx +187 -0
- package/Tests/Utils/Dashboard/DashboardResourceListSharedArgs.test.ts +302 -0
- package/Tests/Utils/Dashboard/DashboardTimeRangeZoom.test.ts +242 -0
- package/Tests/Utils/EnterpriseLicenseSeats.test.ts +507 -0
- package/Tests/Utils/Monitor/NetworkDeviceRoleCatalog.test.ts +981 -0
- package/Tests/Utils/Monitor/NetworkTopologyRoleCatalog.test.ts +865 -0
- package/Tests/Utils/NetworkDevice/DeviceRoleKeyUtil.test.ts +538 -0
- package/Tests/Utils/NetworkDiscovery/DiscoveredDeviceBuilder.test.ts +951 -1
- package/Tests/Utils/NetworkDiscovery/DiscoveredHostUtil.test.ts +238 -0
- package/Tests/Utils/NetworkDiscovery/DiscoveryReverseDnsChain.test.ts +1056 -0
- package/Tests/Utils/NetworkDiscovery/ReverseDnsNameUtil.test.ts +882 -0
- package/Tests/Utils/Slo/SloEvaluation.test.ts +171 -0
- package/Tests/Utils/Slug.test.ts +61 -1
- package/Tests/jest.setup.ts +19 -0
- package/Types/Date.ts +39 -0
- package/Types/Monitor/SnmpMonitor/NetworkTopology.ts +61 -0
- package/Types/Monitor/SnmpMonitor/SnmpOidListUtil.ts +333 -0
- package/Types/NetworkDevice/DefaultNetworkDeviceRole.ts +145 -0
- package/Types/Permission.ts +141 -0
- package/Types/Rum/SessionReplay.ts +21 -0
- package/Types/Telemetry/SourceMap.ts +8 -0
- package/UI/Components/Charts/Area/AreaChart.tsx +7 -0
- package/UI/Components/Charts/Bar/BarChart.tsx +6 -0
- package/UI/Components/Charts/ChartGroup/ChartGroup.tsx +9 -1
- package/UI/Components/Charts/ChartLibrary/Annotations/AnnotationHoverCard.tsx +176 -0
- package/UI/Components/Charts/ChartLibrary/Annotations/AnnotationLayout.ts +745 -0
- package/UI/Components/Charts/ChartLibrary/Annotations/ChartAnnotationLayer.tsx +576 -0
- package/UI/Components/Charts/ChartLibrary/Annotations/UseChartAnnotations.tsx +204 -0
- package/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.tsx +554 -545
- package/UI/Components/Charts/ChartLibrary/BarChart/BarChart.tsx +337 -371
- package/UI/Components/Charts/ChartLibrary/LineChart/LineChart.tsx +549 -540
- package/UI/Components/Charts/ChartLibrary/Types/FormattedReferenceRegion.ts +7 -3
- package/UI/Components/Charts/ChartLibrary/Types/FormattedTimeReferenceLine.ts +14 -3
- package/UI/Components/Charts/ChartLibrary/Utils/DoubleClick.ts +13 -0
- package/UI/Components/Charts/Line/LineChart.tsx +7 -0
- package/UI/Components/Charts/Types/ChartEventKind.ts +13 -0
- package/UI/Components/Charts/Types/ReferenceRegionProps.ts +6 -0
- package/UI/Components/Charts/Types/TimeReferenceLineProps.ts +20 -3
- package/UI/Components/Charts/Utils/TimeAnnotation.ts +69 -35
- package/UI/Components/Charts/Utils/XAxis.ts +125 -18
- package/UI/Components/EditionLabel/EditionLabel.tsx +280 -26
- package/UI/Components/ErrorMessage/ErrorMessage.tsx +21 -10
- package/UI/Components/Feed/FeedItem.tsx +4 -5
- package/UI/Components/Header/HeaderIconDropdownButton.tsx +1 -2
- package/UI/Components/Header/UserProfile/UserProfile.tsx +1 -2
- package/UI/Components/Image/Image.tsx +20 -3
- package/UI/Components/Markdown.tsx/MarkdownConverters.ts +0 -0
- package/UI/Components/MemberRoleAssignment/MemberRoleAssignment.tsx +1 -2
- package/UI/Components/ModelTable/BaseModelTable.tsx +200 -39
- package/UI/Components/Navbar/NavBar.tsx +62 -13
- package/UI/Components/Navbar/NavBarMenuModal.tsx +7 -2
- package/UI/Components/SideMenu/CountModelSideMenuItem.tsx +2 -0
- package/UI/Components/SideMenu/SideMenu.tsx +12 -2
- package/UI/Components/SideMenu/SideMenuItem.tsx +4 -1
- package/UI/Components/SideMenu/SideMenuSection.tsx +14 -2
- package/UI/Components/Table/TableHeader.tsx +64 -48
- package/UI/Components/Table/TableRow.tsx +13 -3
- package/UI/Styles/Theme.css +38 -0
- package/UI/Utils/UseDashboardTimeRangeZoom.ts +77 -0
- package/Utils/Dashboard/DashboardTimeRangeZoom.ts +118 -0
- package/Utils/EnterpriseLicense/EnterpriseLicenseSeats.ts +271 -0
- package/Utils/Monitor/NetworkDeviceRoleCatalog.ts +232 -0
- package/Utils/Monitor/NetworkDeviceRoleUtil.ts +2 -1
- package/Utils/Monitor/NetworkTopologyUtil.ts +116 -33
- package/Utils/NetworkDevice/DeviceRoleKeyUtil.ts +137 -0
- package/Utils/NetworkDiscovery/AutoImportRuleMatcher.ts +6 -0
- package/Utils/NetworkDiscovery/DiscoveredDeviceBuilder.ts +141 -10
- package/Utils/NetworkDiscovery/DiscoveredHostUtil.ts +55 -3
- package/Utils/NetworkDiscovery/ReverseDnsNameUtil.ts +151 -0
- package/Utils/Rules/RuleEngineLimits.ts +32 -0
- package/Utils/Rules/RulePatternMatchUtil.ts +1 -1
- package/Utils/Slug.ts +34 -1
- package/build/dist/Models/AnalyticsModels/SecurityEvent.js +48 -16
- package/build/dist/Models/AnalyticsModels/SecurityEvent.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/ThreatIntelIndicator.js +10 -5
- package/build/dist/Models/AnalyticsModels/ThreatIntelIndicator.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AlertSeverity.js +46 -1
- package/build/dist/Models/DatabaseModels/AlertSeverity.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AlertState.js +0 -2
- package/build/dist/Models/DatabaseModels/AlertState.js.map +1 -1
- package/build/dist/Models/DatabaseModels/DetectionRule.js +16 -5
- package/build/dist/Models/DatabaseModels/DetectionRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Domain.js +1 -1
- package/build/dist/Models/DatabaseModels/Domain.js.map +1 -1
- package/build/dist/Models/DatabaseModels/GoogleSecOpsConnection.js +14 -5
- package/build/dist/Models/DatabaseModels/GoogleSecOpsConnection.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Incident.js +1 -1
- package/build/dist/Models/DatabaseModels/Incident.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentSeverity.js +46 -1
- package/build/dist/Models/DatabaseModels/IncidentSeverity.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentTemplate.js +1 -1
- package/build/dist/Models/DatabaseModels/IncidentTemplate.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Index.js +4 -0
- package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
- package/build/dist/Models/DatabaseModels/MetricType.js +0 -2
- package/build/dist/Models/DatabaseModels/MetricType.js.map +1 -1
- package/build/dist/Models/DatabaseModels/MonitorStatusTimeline.js +0 -2
- package/build/dist/Models/DatabaseModels/MonitorStatusTimeline.js.map +1 -1
- package/build/dist/Models/DatabaseModels/MonitorTest.js +0 -2
- package/build/dist/Models/DatabaseModels/MonitorTest.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkDevice.js +239 -6
- package/build/dist/Models/DatabaseModels/NetworkDevice.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkDeviceAutoImportRule.js +88 -0
- package/build/dist/Models/DatabaseModels/NetworkDeviceAutoImportRule.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkDeviceDiscoveryScan.js.map +1 -1
- package/build/dist/Models/DatabaseModels/NetworkDeviceOidTemplate.js +521 -0
- package/build/dist/Models/DatabaseModels/NetworkDeviceOidTemplate.js.map +1 -0
- package/build/dist/Models/DatabaseModels/NetworkDeviceRole.js +677 -0
- package/build/dist/Models/DatabaseModels/NetworkDeviceRole.js.map +1 -0
- package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js +1 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceTemplate.js +1 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceTemplate.js.map +1 -1
- package/build/dist/Models/DatabaseModels/StatusPageAnnouncement.js +0 -2
- package/build/dist/Models/DatabaseModels/StatusPageAnnouncement.js.map +1 -1
- package/build/dist/Models/DatabaseModels/StatusPageAnnouncementTemplate.js +0 -2
- package/build/dist/Models/DatabaseModels/StatusPageAnnouncementTemplate.js.map +1 -1
- package/build/dist/Models/DatabaseModels/StatusPagePrivateUser.js +0 -2
- package/build/dist/Models/DatabaseModels/StatusPagePrivateUser.js.map +1 -1
- package/build/dist/Models/DatabaseModels/StatusPageResource.js +0 -2
- package/build/dist/Models/DatabaseModels/StatusPageResource.js.map +1 -1
- package/build/dist/Models/DatabaseModels/StatusPageSubscriber.js +0 -2
- package/build/dist/Models/DatabaseModels/StatusPageSubscriber.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ThreatIntelFeed.js +16 -5
- package/build/dist/Models/DatabaseModels/ThreatIntelFeed.js.map +1 -1
- package/build/dist/Server/API/GlobalConfigAPI.js +293 -176
- package/build/dist/Server/API/GlobalConfigAPI.js.map +1 -1
- package/build/dist/Server/API/TelemetryAPI.js +31 -3
- package/build/dist/Server/API/TelemetryAPI.js.map +1 -1
- package/build/dist/Server/EnvironmentConfig.js +83 -0
- package/build/dist/Server/EnvironmentConfig.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790500000000-AddNetworkDeviceOidTemplate.js +26 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790500000000-AddNetworkDeviceOidTemplate.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790600000000-AddAutoImportRuleOidTemplate.js +14 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790600000000-AddAutoImportRuleOidTemplate.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790800000000-AddNetworkDeviceRoleTable.js +39 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790800000000-AddNetworkDeviceRoleTable.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +6 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Middleware/MultipartFormData.js +93 -28
- package/build/dist/Server/Middleware/MultipartFormData.js.map +1 -1
- package/build/dist/Server/Services/AlertEpisodeLabelRuleEngineService.js +8 -1
- package/build/dist/Server/Services/AlertEpisodeLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/AlertEpisodeOnCallRuleEngineService.js +8 -1
- package/build/dist/Server/Services/AlertEpisodeOnCallRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/AlertEpisodeOwnerRuleEngineService.js +8 -1
- package/build/dist/Server/Services/AlertEpisodeOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/AlertEpisodePrivacyRuleEngineService.js +8 -1
- package/build/dist/Server/Services/AlertEpisodePrivacyRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/AlertGroupingEngineService.js +8 -1
- package/build/dist/Server/Services/AlertGroupingEngineService.js.map +1 -1
- package/build/dist/Server/Services/AlertLabelRuleEngineService.js +8 -1
- package/build/dist/Server/Services/AlertLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/AlertOnCallRuleEngineService.js +8 -1
- package/build/dist/Server/Services/AlertOnCallRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/AlertOwnerRuleEngineService.js +8 -1
- package/build/dist/Server/Services/AlertOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/AlertPrivacyRuleEngineService.js +8 -1
- package/build/dist/Server/Services/AlertPrivacyRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/AlertReminderRuleService.js +8 -1
- package/build/dist/Server/Services/AlertReminderRuleService.js.map +1 -1
- package/build/dist/Server/Services/AutoRemediationRuleEngineService.js +8 -1
- package/build/dist/Server/Services/AutoRemediationRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/CephClusterLabelRuleEngineService.js +8 -1
- package/build/dist/Server/Services/CephClusterLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/CephClusterOwnerRuleEngineService.js +8 -1
- package/build/dist/Server/Services/CephClusterOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/CloudResourceLabelRuleEngineService.js +8 -1
- package/build/dist/Server/Services/CloudResourceLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/CloudResourceOwnerRuleEngineService.js +8 -1
- package/build/dist/Server/Services/CloudResourceOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/DashboardLabelRuleEngineService.js +8 -1
- package/build/dist/Server/Services/DashboardLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/DashboardOwnerRuleEngineService.js +8 -1
- package/build/dist/Server/Services/DashboardOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/DatabaseService.js +31 -5
- package/build/dist/Server/Services/DatabaseService.js.map +1 -1
- package/build/dist/Server/Services/DockerHostLabelRuleEngineService.js +8 -1
- package/build/dist/Server/Services/DockerHostLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/DockerHostOwnerRuleEngineService.js +8 -1
- package/build/dist/Server/Services/DockerHostOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/DockerSwarmClusterLabelRuleEngineService.js +8 -1
- package/build/dist/Server/Services/DockerSwarmClusterLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/DockerSwarmClusterOwnerRuleEngineService.js +8 -1
- package/build/dist/Server/Services/DockerSwarmClusterOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/HostLabelRuleEngineService.js +8 -1
- package/build/dist/Server/Services/HostLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/HostOwnerRuleEngineService.js +8 -1
- package/build/dist/Server/Services/HostOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/IncidentEpisodeLabelRuleEngineService.js +8 -1
- package/build/dist/Server/Services/IncidentEpisodeLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/IncidentEpisodeOnCallRuleEngineService.js +8 -1
- package/build/dist/Server/Services/IncidentEpisodeOnCallRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/IncidentEpisodeOwnerRuleEngineService.js +8 -1
- package/build/dist/Server/Services/IncidentEpisodeOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/IncidentEpisodePrivacyRuleEngineService.js +8 -1
- package/build/dist/Server/Services/IncidentEpisodePrivacyRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/IncidentGroupingEngineService.js +8 -1
- package/build/dist/Server/Services/IncidentGroupingEngineService.js.map +1 -1
- package/build/dist/Server/Services/IncidentLabelRuleEngineService.js +8 -1
- package/build/dist/Server/Services/IncidentLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/IncidentOnCallRuleEngineService.js +8 -1
- package/build/dist/Server/Services/IncidentOnCallRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/IncidentOwnerRuleEngineService.js +8 -1
- package/build/dist/Server/Services/IncidentOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/IncidentPrivacyRuleEngineService.js +8 -1
- package/build/dist/Server/Services/IncidentPrivacyRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/IncidentReminderRuleService.js +8 -1
- package/build/dist/Server/Services/IncidentReminderRuleService.js.map +1 -1
- package/build/dist/Server/Services/IncidentSlaRuleService.js +8 -1
- package/build/dist/Server/Services/IncidentSlaRuleService.js.map +1 -1
- package/build/dist/Server/Services/IncomingCallPolicyLabelRuleEngineService.js +8 -1
- package/build/dist/Server/Services/IncomingCallPolicyLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/IncomingCallPolicyOwnerRuleEngineService.js +8 -1
- package/build/dist/Server/Services/IncomingCallPolicyOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/Index.js +4 -0
- package/build/dist/Server/Services/Index.js.map +1 -1
- package/build/dist/Server/Services/IoTFleetLabelRuleEngineService.js +8 -1
- package/build/dist/Server/Services/IoTFleetLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/IoTFleetOwnerRuleEngineService.js +8 -1
- package/build/dist/Server/Services/IoTFleetOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/KubernetesClusterLabelRuleEngineService.js +8 -1
- package/build/dist/Server/Services/KubernetesClusterLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/KubernetesClusterOwnerRuleEngineService.js +8 -1
- package/build/dist/Server/Services/KubernetesClusterOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/KubernetesResourceService.js +5 -1
- package/build/dist/Server/Services/KubernetesResourceService.js.map +1 -1
- package/build/dist/Server/Services/MonitorLabelRuleEngineService.js +8 -1
- package/build/dist/Server/Services/MonitorLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/MonitorOwnerRuleEngineService.js +8 -1
- package/build/dist/Server/Services/MonitorOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/NetworkDeviceAutoImportRuleEngineService.js +30 -21
- package/build/dist/Server/Services/NetworkDeviceAutoImportRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/NetworkDeviceAutoImportRuleService.js +64 -0
- package/build/dist/Server/Services/NetworkDeviceAutoImportRuleService.js.map +1 -1
- package/build/dist/Server/Services/NetworkDeviceLabelRuleEngineService.js +8 -1
- package/build/dist/Server/Services/NetworkDeviceLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/NetworkDeviceOidTemplateService.js +180 -0
- package/build/dist/Server/Services/NetworkDeviceOidTemplateService.js.map +1 -0
- package/build/dist/Server/Services/NetworkDeviceOwnerRuleEngineService.js +8 -1
- package/build/dist/Server/Services/NetworkDeviceOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/NetworkDeviceRoleService.js +70 -0
- package/build/dist/Server/Services/NetworkDeviceRoleService.js.map +1 -0
- package/build/dist/Server/Services/NetworkDeviceService.js +154 -1
- package/build/dist/Server/Services/NetworkDeviceService.js.map +1 -1
- package/build/dist/Server/Services/OnCallDutyPolicyLabelRuleEngineService.js +8 -1
- package/build/dist/Server/Services/OnCallDutyPolicyLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/OnCallDutyPolicyOwnerRuleEngineService.js +8 -1
- package/build/dist/Server/Services/OnCallDutyPolicyOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/OnCallDutyPolicyScheduleLabelRuleEngineService.js +8 -1
- package/build/dist/Server/Services/OnCallDutyPolicyScheduleLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/OnCallDutyPolicyScheduleOwnerRuleEngineService.js +8 -1
- package/build/dist/Server/Services/OnCallDutyPolicyScheduleOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/PodmanHostLabelRuleEngineService.js +8 -1
- package/build/dist/Server/Services/PodmanHostLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/PodmanHostOwnerRuleEngineService.js +8 -1
- package/build/dist/Server/Services/PodmanHostOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/ProjectService.js +65 -0
- package/build/dist/Server/Services/ProjectService.js.map +1 -1
- package/build/dist/Server/Services/ProxmoxClusterLabelRuleEngineService.js +8 -1
- package/build/dist/Server/Services/ProxmoxClusterLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/ProxmoxClusterOwnerRuleEngineService.js +8 -1
- package/build/dist/Server/Services/ProxmoxClusterOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/RumApplicationLabelRuleEngineService.js +8 -1
- package/build/dist/Server/Services/RumApplicationLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/RumApplicationOwnerRuleEngineService.js +8 -1
- package/build/dist/Server/Services/RumApplicationOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/RunbookLabelRuleEngineService.js +8 -1
- package/build/dist/Server/Services/RunbookLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/RunbookOwnerRuleEngineService.js +8 -1
- package/build/dist/Server/Services/RunbookOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/RunbookRuleEngineService.js +8 -1
- package/build/dist/Server/Services/RunbookRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/ScheduledMaintenanceLabelRuleEngineService.js +8 -1
- package/build/dist/Server/Services/ScheduledMaintenanceLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/ScheduledMaintenanceOwnerRuleEngineService.js +8 -1
- package/build/dist/Server/Services/ScheduledMaintenanceOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/ScheduledMaintenanceReminderRuleService.js +8 -1
- package/build/dist/Server/Services/ScheduledMaintenanceReminderRuleService.js.map +1 -1
- package/build/dist/Server/Services/ServerlessFunctionLabelRuleEngineService.js +8 -1
- package/build/dist/Server/Services/ServerlessFunctionLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/ServerlessFunctionOwnerRuleEngineService.js +8 -1
- package/build/dist/Server/Services/ServerlessFunctionOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/ServiceLabelRuleEngineService.js +8 -1
- package/build/dist/Server/Services/ServiceLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/ServiceOwnerRuleEngineService.js +8 -1
- package/build/dist/Server/Services/ServiceOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/StatusPageLabelRuleEngineService.js +8 -1
- package/build/dist/Server/Services/StatusPageLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/StatusPageMonitorRuleEngineService.js +6 -0
- package/build/dist/Server/Services/StatusPageMonitorRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/StatusPageOwnerRuleEngineService.js +8 -1
- package/build/dist/Server/Services/StatusPageOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/TelemetrySourceMapService.js +213 -19
- package/build/dist/Server/Services/TelemetrySourceMapService.js.map +1 -1
- package/build/dist/Server/Services/UserNotificationSettingService.js +0 -1
- package/build/dist/Server/Services/UserNotificationSettingService.js.map +1 -1
- package/build/dist/Server/Services/UserService.js +25 -0
- package/build/dist/Server/Services/UserService.js.map +1 -1
- package/build/dist/Server/Services/WorkflowLabelRuleEngineService.js +8 -1
- package/build/dist/Server/Services/WorkflowLabelRuleEngineService.js.map +1 -1
- package/build/dist/Server/Services/WorkflowOwnerRuleEngineService.js +8 -1
- package/build/dist/Server/Services/WorkflowOwnerRuleEngineService.js.map +1 -1
- package/build/dist/Server/Utils/EnterpriseLicense/EnterpriseLicenseSeatUtil.js +145 -0
- package/build/dist/Server/Utils/EnterpriseLicense/EnterpriseLicenseSeatUtil.js.map +1 -0
- package/build/dist/Server/Utils/Monitor/CapturedMetricAttributeUtil.js +201 -0
- package/build/dist/Server/Utils/Monitor/CapturedMetricAttributeUtil.js.map +1 -0
- package/build/dist/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.js +19 -2
- package/build/dist/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js +42 -23
- package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js +29 -0
- package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/NetworkDeviceMetricUtil.js +11 -2
- package/build/dist/Server/Utils/Monitor/NetworkDeviceMetricUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/NetworkDeviceWalkUtil.js +16 -1
- package/build/dist/Server/Utils/Monitor/NetworkDeviceWalkUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js +10 -0
- package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/SeriesResourceLabels.js +33 -0
- package/build/dist/Server/Utils/Monitor/SeriesResourceLabels.js.map +1 -1
- package/build/dist/Server/Utils/Rules/RuleEngineRuleRead.js +37 -0
- package/build/dist/Server/Utils/Rules/RuleEngineRuleRead.js.map +1 -0
- package/build/dist/Server/Utils/Telemetry/ExceptionSanitizer.js +12 -1
- package/build/dist/Server/Utils/Telemetry/ExceptionSanitizer.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/LogExceptionExtractor.js +14 -2
- package/build/dist/Server/Utils/Telemetry/LogExceptionExtractor.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/SourceMapResolver.js +15 -5
- package/build/dist/Server/Utils/Telemetry/SourceMapResolver.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/StackTraceParser.js +307 -0
- package/build/dist/Server/Utils/Telemetry/StackTraceParser.js.map +1 -1
- package/build/dist/Types/Date.js +27 -0
- package/build/dist/Types/Date.js.map +1 -1
- package/build/dist/Types/Monitor/SnmpMonitor/SnmpOidListUtil.js +253 -0
- package/build/dist/Types/Monitor/SnmpMonitor/SnmpOidListUtil.js.map +1 -0
- package/build/dist/Types/NetworkDevice/DefaultNetworkDeviceRole.js +105 -0
- package/build/dist/Types/NetworkDevice/DefaultNetworkDeviceRole.js.map +1 -0
- package/build/dist/Types/Permission.js +126 -0
- package/build/dist/Types/Permission.js.map +1 -1
- package/build/dist/Types/Rum/SessionReplay.js +19 -0
- package/build/dist/Types/Rum/SessionReplay.js.map +1 -1
- package/build/dist/UI/Components/Charts/Area/AreaChart.js +1 -1
- package/build/dist/UI/Components/Charts/Area/AreaChart.js.map +1 -1
- package/build/dist/UI/Components/Charts/Bar/BarChart.js +1 -1
- package/build/dist/UI/Components/Charts/Bar/BarChart.js.map +1 -1
- package/build/dist/UI/Components/Charts/ChartGroup/ChartGroup.js +6 -1
- package/build/dist/UI/Components/Charts/ChartGroup/ChartGroup.js.map +1 -1
- package/build/dist/UI/Components/Charts/ChartLibrary/Annotations/AnnotationHoverCard.js +83 -0
- package/build/dist/UI/Components/Charts/ChartLibrary/Annotations/AnnotationHoverCard.js.map +1 -0
- package/build/dist/UI/Components/Charts/ChartLibrary/Annotations/AnnotationLayout.js +531 -0
- package/build/dist/UI/Components/Charts/ChartLibrary/Annotations/AnnotationLayout.js.map +1 -0
- package/build/dist/UI/Components/Charts/ChartLibrary/Annotations/ChartAnnotationLayer.js +264 -0
- package/build/dist/UI/Components/Charts/ChartLibrary/Annotations/ChartAnnotationLayer.js.map +1 -0
- package/build/dist/UI/Components/Charts/ChartLibrary/Annotations/UseChartAnnotations.js +122 -0
- package/build/dist/UI/Components/Charts/ChartLibrary/Annotations/UseChartAnnotations.js.map +1 -0
- package/build/dist/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.js +262 -234
- package/build/dist/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.js.map +1 -1
- package/build/dist/UI/Components/Charts/ChartLibrary/BarChart/BarChart.js +146 -153
- package/build/dist/UI/Components/Charts/ChartLibrary/BarChart/BarChart.js.map +1 -1
- package/build/dist/UI/Components/Charts/ChartLibrary/LineChart/LineChart.js +261 -233
- package/build/dist/UI/Components/Charts/ChartLibrary/LineChart/LineChart.js.map +1 -1
- package/build/dist/UI/Components/Charts/ChartLibrary/Utils/DoubleClick.js +14 -0
- package/build/dist/UI/Components/Charts/ChartLibrary/Utils/DoubleClick.js.map +1 -0
- package/build/dist/UI/Components/Charts/Line/LineChart.js +1 -1
- package/build/dist/UI/Components/Charts/Line/LineChart.js.map +1 -1
- package/build/dist/UI/Components/Charts/Types/ChartEventKind.js +14 -0
- package/build/dist/UI/Components/Charts/Types/ChartEventKind.js.map +1 -0
- package/build/dist/UI/Components/Charts/Utils/TimeAnnotation.js +57 -28
- package/build/dist/UI/Components/Charts/Utils/TimeAnnotation.js.map +1 -1
- package/build/dist/UI/Components/Charts/Utils/XAxis.js +103 -17
- package/build/dist/UI/Components/Charts/Utils/XAxis.js.map +1 -1
- package/build/dist/UI/Components/EditionLabel/EditionLabel.js +198 -23
- package/build/dist/UI/Components/EditionLabel/EditionLabel.js.map +1 -1
- package/build/dist/UI/Components/ErrorMessage/ErrorMessage.js +15 -5
- package/build/dist/UI/Components/ErrorMessage/ErrorMessage.js.map +1 -1
- package/build/dist/UI/Components/Feed/FeedItem.js +4 -5
- package/build/dist/UI/Components/Feed/FeedItem.js.map +1 -1
- package/build/dist/UI/Components/Header/HeaderIconDropdownButton.js +1 -2
- package/build/dist/UI/Components/Header/HeaderIconDropdownButton.js.map +1 -1
- package/build/dist/UI/Components/Header/UserProfile/UserProfile.js.map +1 -1
- package/build/dist/UI/Components/Image/Image.js +6 -1
- package/build/dist/UI/Components/Image/Image.js.map +1 -1
- package/build/dist/UI/Components/Markdown.tsx/MarkdownConverters.js +0 -0
- package/build/dist/UI/Components/Markdown.tsx/MarkdownConverters.js.map +1 -1
- package/build/dist/UI/Components/MemberRoleAssignment/MemberRoleAssignment.js +1 -2
- package/build/dist/UI/Components/MemberRoleAssignment/MemberRoleAssignment.js.map +1 -1
- package/build/dist/UI/Components/ModelTable/BaseModelTable.js +143 -36
- package/build/dist/UI/Components/ModelTable/BaseModelTable.js.map +1 -1
- package/build/dist/UI/Components/Navbar/NavBar.js +44 -9
- package/build/dist/UI/Components/Navbar/NavBar.js.map +1 -1
- package/build/dist/UI/Components/Navbar/NavBarMenuModal.js +2 -2
- package/build/dist/UI/Components/Navbar/NavBarMenuModal.js.map +1 -1
- package/build/dist/UI/Components/SideMenu/CountModelSideMenuItem.js +1 -1
- package/build/dist/UI/Components/SideMenu/CountModelSideMenuItem.js.map +1 -1
- package/build/dist/UI/Components/SideMenu/SideMenu.js +9 -6
- package/build/dist/UI/Components/SideMenu/SideMenu.js.map +1 -1
- package/build/dist/UI/Components/SideMenu/SideMenuItem.js +1 -1
- package/build/dist/UI/Components/SideMenu/SideMenuItem.js.map +1 -1
- package/build/dist/UI/Components/SideMenu/SideMenuSection.js +7 -2
- package/build/dist/UI/Components/SideMenu/SideMenuSection.js.map +1 -1
- package/build/dist/UI/Components/Table/TableHeader.js +20 -22
- package/build/dist/UI/Components/Table/TableHeader.js.map +1 -1
- package/build/dist/UI/Components/Table/TableRow.js +13 -4
- package/build/dist/UI/Components/Table/TableRow.js.map +1 -1
- package/build/dist/UI/Utils/UseDashboardTimeRangeZoom.js +42 -0
- package/build/dist/UI/Utils/UseDashboardTimeRangeZoom.js.map +1 -0
- package/build/dist/Utils/Dashboard/DashboardTimeRangeZoom.js +74 -0
- package/build/dist/Utils/Dashboard/DashboardTimeRangeZoom.js.map +1 -0
- package/build/dist/Utils/EnterpriseLicense/EnterpriseLicenseSeats.js +153 -0
- package/build/dist/Utils/EnterpriseLicense/EnterpriseLicenseSeats.js.map +1 -0
- package/build/dist/Utils/Monitor/NetworkDeviceRoleCatalog.js +126 -0
- package/build/dist/Utils/Monitor/NetworkDeviceRoleCatalog.js.map +1 -0
- package/build/dist/Utils/Monitor/NetworkDeviceRoleUtil.js +2 -1
- package/build/dist/Utils/Monitor/NetworkDeviceRoleUtil.js.map +1 -1
- package/build/dist/Utils/Monitor/NetworkTopologyUtil.js +67 -32
- package/build/dist/Utils/Monitor/NetworkTopologyUtil.js.map +1 -1
- package/build/dist/Utils/NetworkDevice/DeviceRoleKeyUtil.js +114 -0
- package/build/dist/Utils/NetworkDevice/DeviceRoleKeyUtil.js.map +1 -0
- package/build/dist/Utils/NetworkDiscovery/AutoImportRuleMatcher.js.map +1 -1
- package/build/dist/Utils/NetworkDiscovery/DiscoveredDeviceBuilder.js +127 -7
- package/build/dist/Utils/NetworkDiscovery/DiscoveredDeviceBuilder.js.map +1 -1
- package/build/dist/Utils/NetworkDiscovery/DiscoveredHostUtil.js +50 -3
- package/build/dist/Utils/NetworkDiscovery/DiscoveredHostUtil.js.map +1 -1
- package/build/dist/Utils/NetworkDiscovery/ReverseDnsNameUtil.js +132 -0
- package/build/dist/Utils/NetworkDiscovery/ReverseDnsNameUtil.js.map +1 -0
- package/build/dist/Utils/Rules/RuleEngineLimits.js +31 -0
- package/build/dist/Utils/Rules/RuleEngineLimits.js.map +1 -0
- package/build/dist/Utils/Rules/RulePatternMatchUtil.js +1 -1
- package/build/dist/Utils/Slug.js +31 -1
- package/build/dist/Utils/Slug.js.map +1 -1
- package/jest.config.json +1 -0
- package/package.json +2 -2
|
@@ -14,7 +14,9 @@ import DatabaseCommonInteractionProps from "../../Types/BaseDatabase/DatabaseCom
|
|
|
14
14
|
import TelemetryType from "../../Types/Telemetry/TelemetryType";
|
|
15
15
|
import TelemetryAttributeService from "../Services/TelemetryAttributeService";
|
|
16
16
|
import TelemetrySourceMapService from "../Services/TelemetrySourceMapService";
|
|
17
|
-
import SourceMapResolver
|
|
17
|
+
import SourceMapResolver, {
|
|
18
|
+
MAX_FRAMES_PER_RESOLVE_REQUEST,
|
|
19
|
+
} from "../Utils/Telemetry/SourceMapResolver";
|
|
18
20
|
import {
|
|
19
21
|
MinifiedStackFrame,
|
|
20
22
|
ResolveStackTraceResult,
|
|
@@ -214,10 +216,28 @@ const requireProfileReadAccess: Array<RequestHandler> =
|
|
|
214
216
|
|
|
215
217
|
/*
|
|
216
218
|
* Mirrors the read access control declared on the SecurityEvent analytics
|
|
217
|
-
* model.
|
|
219
|
+
* model - which, unlike every other signal above, is NOT the telemetry list.
|
|
220
|
+
* Security events read through the Security tiers only, so this route cannot
|
|
221
|
+
* be built from createTelemetryReadAccessGuard: doing so would leave the
|
|
222
|
+
* attribute endpoints open to ProjectMember and the Telemetry tiers while the
|
|
223
|
+
* model-backed CRUD API refused them, and the attribute keys and values of a
|
|
224
|
+
* SIEM table are themselves the sensitive part - usernames, hostnames, source
|
|
225
|
+
* IPs, and every value seen for them.
|
|
218
226
|
*/
|
|
219
|
-
const requireSecurityEventReadAccess: Array<RequestHandler> =
|
|
220
|
-
|
|
227
|
+
const requireSecurityEventReadAccess: Array<RequestHandler> = [
|
|
228
|
+
UserMiddleware.getUserMiddleware,
|
|
229
|
+
UserMiddleware.requireUserAuthentication,
|
|
230
|
+
UserMiddleware.requirePermission({
|
|
231
|
+
permissions: [
|
|
232
|
+
Permission.ProjectOwner,
|
|
233
|
+
Permission.ProjectAdmin,
|
|
234
|
+
Permission.SecurityAdmin,
|
|
235
|
+
Permission.SecurityMember,
|
|
236
|
+
Permission.SecurityViewer,
|
|
237
|
+
Permission.ReadSecurityEvent,
|
|
238
|
+
],
|
|
239
|
+
}),
|
|
240
|
+
];
|
|
221
241
|
|
|
222
242
|
router.post(
|
|
223
243
|
"/telemetry/metrics/get-attributes",
|
|
@@ -346,6 +366,24 @@ router.post(
|
|
|
346
366
|
);
|
|
347
367
|
}
|
|
348
368
|
|
|
369
|
+
/*
|
|
370
|
+
* Bound the array before sanitizing it. sanitizeMinifiedStackFrames
|
|
371
|
+
* never throws and never truncates, so without this the only limit on
|
|
372
|
+
* the work a caller can ask for is the body-size cap.
|
|
373
|
+
*/
|
|
374
|
+
if (
|
|
375
|
+
(body["frames"] as Array<unknown>).length >
|
|
376
|
+
MAX_FRAMES_PER_RESOLVE_REQUEST
|
|
377
|
+
) {
|
|
378
|
+
return Response.sendErrorResponse(
|
|
379
|
+
req,
|
|
380
|
+
res,
|
|
381
|
+
new BadDataException(
|
|
382
|
+
`frames must contain at most ${MAX_FRAMES_PER_RESOLVE_REQUEST} stack frames.`,
|
|
383
|
+
),
|
|
384
|
+
);
|
|
385
|
+
}
|
|
386
|
+
|
|
349
387
|
const frames: Array<MinifiedStackFrame> =
|
|
350
388
|
SourceMapResolver.sanitizeMinifiedStackFrames(body["frames"]);
|
|
351
389
|
|
|
@@ -15,6 +15,7 @@ import Route from "../Types/API/Route";
|
|
|
15
15
|
import SubscriptionPlan from "../Types/Billing/SubscriptionPlan";
|
|
16
16
|
import Email from "../Types/Email";
|
|
17
17
|
import { JSONObject } from "../Types/JSON";
|
|
18
|
+
import LIMIT_MAX from "../Types/Database/LimitMax";
|
|
18
19
|
import ObjectID from "../Types/ObjectID";
|
|
19
20
|
import Port from "../Types/Port";
|
|
20
21
|
import Hostname from "../Types/API/Hostname";
|
|
@@ -130,6 +131,20 @@ const parsePositiveIntegerFromEnv: (
|
|
|
130
131
|
return parsedValue;
|
|
131
132
|
};
|
|
132
133
|
|
|
134
|
+
/*
|
|
135
|
+
* parsePositiveIntegerFromEnv with a ceiling the rest of the system can
|
|
136
|
+
* actually honour. A configured value the app would silently fail to enforce
|
|
137
|
+
* is worse than a visibly clamped one -- so this clamps rather than trusting
|
|
138
|
+
* the operator, and every call site documents WHY its ceiling exists.
|
|
139
|
+
*/
|
|
140
|
+
const parseClampedIntegerFromEnv: (
|
|
141
|
+
envKey: string,
|
|
142
|
+
fallback: number,
|
|
143
|
+
ceiling: number,
|
|
144
|
+
) => number = (envKey: string, fallback: number, ceiling: number): number => {
|
|
145
|
+
return Math.min(parsePositiveIntegerFromEnv(envKey, fallback), ceiling);
|
|
146
|
+
};
|
|
147
|
+
|
|
133
148
|
export const IsBillingEnabled: boolean = BillingConfig.IsBillingEnabled;
|
|
134
149
|
export const BillingPublicKey: string = BillingConfig.BillingPublicKey;
|
|
135
150
|
export const BillingPrivateKey: string = BillingConfig.BillingPrivateKey;
|
|
@@ -863,6 +878,103 @@ export const OnCallCalendarFeedRateLimitPerIpPerWindow: number =
|
|
|
863
878
|
3000,
|
|
864
879
|
);
|
|
865
880
|
|
|
881
|
+
/*
|
|
882
|
+
* Source map ingestion and resolution limits.
|
|
883
|
+
*
|
|
884
|
+
* These were fixed constants, sized on the assumption that "a build rarely
|
|
885
|
+
* emits more than a few dozen chunks with maps". That assumption does not
|
|
886
|
+
* survive route-level code splitting: a Nuxt/Vite/Next app with a hundred
|
|
887
|
+
* routes emits hundreds of chunk .map files per release, and the maps that
|
|
888
|
+
* did not fit simply never resolved. They are operator knobs now, and the
|
|
889
|
+
* Helm chart exposes each one.
|
|
890
|
+
*
|
|
891
|
+
* The division of labour matters, because it is what makes raising the
|
|
892
|
+
* ceiling safe:
|
|
893
|
+
*
|
|
894
|
+
* - SourceMapMaxMapsPerRelease is purely a WRITE gate. An upload past it is
|
|
895
|
+
* rejected with a 400 that names the limit. It is no longer the
|
|
896
|
+
* resolver's read limit, so raising it can never turn stored maps into
|
|
897
|
+
* maps that store fine and then silently never resolve.
|
|
898
|
+
* - SourceMapMaxBytesPerResolve is what bounds the READ path. Resolution
|
|
899
|
+
* loads whole maps into memory, so a byte budget -- not a row count -- is
|
|
900
|
+
* the invariant that actually protects the process.
|
|
901
|
+
*/
|
|
902
|
+
|
|
903
|
+
/*
|
|
904
|
+
* Distinct bundles one (project, service, release) may hold.
|
|
905
|
+
*
|
|
906
|
+
* Clamped to LIMIT_MAX because the gate reads the release's existing bundle
|
|
907
|
+
* paths with LIMIT_MAX; a configured value above that could not be enforced
|
|
908
|
+
* and would be a lie.
|
|
909
|
+
*/
|
|
910
|
+
export const SourceMapMaxMapsPerRelease: number = parseClampedIntegerFromEnv(
|
|
911
|
+
"SOURCE_MAP_MAX_MAPS_PER_RELEASE",
|
|
912
|
+
1000,
|
|
913
|
+
LIMIT_MAX,
|
|
914
|
+
);
|
|
915
|
+
|
|
916
|
+
/*
|
|
917
|
+
* How long uploaded maps are kept. A map is only useful while exceptions from
|
|
918
|
+
* its release are still within telemetry retention, and the default
|
|
919
|
+
* comfortably exceeds it.
|
|
920
|
+
*/
|
|
921
|
+
export const SourceMapRetentionInDays: number = parsePositiveIntegerFromEnv(
|
|
922
|
+
"SOURCE_MAP_RETENTION_DAYS",
|
|
923
|
+
90,
|
|
924
|
+
);
|
|
925
|
+
|
|
926
|
+
/*
|
|
927
|
+
* Hard ceiling on ONE map, enforced on the raw upload and again on the
|
|
928
|
+
* decoded string.
|
|
929
|
+
*
|
|
930
|
+
* The ceiling is MAX_MULTIPART_FILE_BYTES from
|
|
931
|
+
* Common/Server/Middleware/MultipartFormData.ts, repeated as a literal
|
|
932
|
+
* because that module pulls in multer and express and has no business being
|
|
933
|
+
* imported by config. The two are pinned to each other by
|
|
934
|
+
* Common/Tests/Server/Utils/Telemetry/SourceMapLimits.test.ts. Configuring
|
|
935
|
+
* past it would not raise anything: multer aborts the request first, turning
|
|
936
|
+
* the 400 this ceiling is meant to give into a confusing 413.
|
|
937
|
+
*/
|
|
938
|
+
export const SourceMapMaxFileSizeInBytes: number = parseClampedIntegerFromEnv(
|
|
939
|
+
"SOURCE_MAP_MAX_FILE_SIZE_BYTES",
|
|
940
|
+
50 * 1024 * 1024,
|
|
941
|
+
50 * 1024 * 1024,
|
|
942
|
+
);
|
|
943
|
+
|
|
944
|
+
/*
|
|
945
|
+
* Source map files accepted in ONE upload request.
|
|
946
|
+
*
|
|
947
|
+
* Separate from the per-release ceiling: a release may hold far more maps
|
|
948
|
+
* than any single request may carry, and CI splits the upload. Clamped to
|
|
949
|
+
* MAX_MULTIPART_FILES, which is the shared middleware default and runs
|
|
950
|
+
* BEFORE authentication on every route that mounts it -- so this knob only
|
|
951
|
+
* ever narrows the source map route, never widens the pre-auth surface that
|
|
952
|
+
* Pyroscope and inbound email sit behind.
|
|
953
|
+
*/
|
|
954
|
+
export const SourceMapMaxFilesPerRequest: number = parseClampedIntegerFromEnv(
|
|
955
|
+
"SOURCE_MAP_MAX_FILES_PER_REQUEST",
|
|
956
|
+
50,
|
|
957
|
+
50,
|
|
958
|
+
);
|
|
959
|
+
|
|
960
|
+
/*
|
|
961
|
+
* Total map bytes one resolve request may pull into memory.
|
|
962
|
+
*
|
|
963
|
+
* This is the bound that used to be implied by the per-release count, and it
|
|
964
|
+
* is a much tighter one: resolution materialises whole maps, each up to
|
|
965
|
+
* SourceMapMaxFileSizeInBytes, and the set it loads is chosen by a
|
|
966
|
+
* caller-supplied frames array. Maps that do not fit the budget are skipped
|
|
967
|
+
* in match-quality order and REPORTED on the response, so a skip is visible
|
|
968
|
+
* rather than looking like "no map was uploaded".
|
|
969
|
+
*
|
|
970
|
+
* 512 MiB is roughly ten maps at the per-file ceiling, or every map of a
|
|
971
|
+
* realistically sized release many times over.
|
|
972
|
+
*/
|
|
973
|
+
export const SourceMapMaxBytesPerResolve: number = parsePositiveIntegerFromEnv(
|
|
974
|
+
"SOURCE_MAP_MAX_BYTES_PER_RESOLVE",
|
|
975
|
+
512 * 1024 * 1024,
|
|
976
|
+
);
|
|
977
|
+
|
|
866
978
|
export const EnableProfiling: boolean =
|
|
867
979
|
process.env["ENABLE_PROFILING"] === "true";
|
|
868
980
|
|
package/Server/Infrastructure/Postgres/SchemaMigrations/1790500000000-AddNetworkDeviceOidTemplate.ts
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { MigrationInterface, QueryRunner } from "typeorm";
|
|
2
|
+
|
|
3
|
+
export class AddNetworkDeviceOidTemplate1790500000000
|
|
4
|
+
implements MigrationInterface
|
|
5
|
+
{
|
|
6
|
+
public name: string = "AddNetworkDeviceOidTemplate1790500000000";
|
|
7
|
+
|
|
8
|
+
public async up(queryRunner: QueryRunner): Promise<void> {
|
|
9
|
+
await queryRunner.query(
|
|
10
|
+
`CREATE TABLE "NetworkDeviceOidTemplate" ("_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(100) NOT NULL, "slug" character varying(100) NOT NULL, "description" character varying(500), "oids" jsonb, "createdByUserId" uuid, "deletedByUserId" uuid, CONSTRAINT "PK_ec94e3734230b1ed5d6ae2a125d" PRIMARY KEY ("_id"))`,
|
|
11
|
+
);
|
|
12
|
+
await queryRunner.query(
|
|
13
|
+
`CREATE INDEX "IDX_6bd61393f6b4438538eedbfad9" ON "NetworkDeviceOidTemplate" ("projectId") `,
|
|
14
|
+
);
|
|
15
|
+
await queryRunner.query(
|
|
16
|
+
`ALTER TABLE "NetworkDevice" ADD "oidTemplateId" uuid`,
|
|
17
|
+
);
|
|
18
|
+
await queryRunner.query(
|
|
19
|
+
`CREATE INDEX "IDX_3e408227ae81663555e1583ac8" ON "NetworkDevice" ("projectId", "oidTemplateId") `,
|
|
20
|
+
);
|
|
21
|
+
await queryRunner.query(
|
|
22
|
+
`ALTER TABLE "NetworkDeviceOidTemplate" ADD CONSTRAINT "FK_6bd61393f6b4438538eedbfad9c" FOREIGN KEY ("projectId") REFERENCES "Project"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`,
|
|
23
|
+
);
|
|
24
|
+
await queryRunner.query(
|
|
25
|
+
`ALTER TABLE "NetworkDeviceOidTemplate" ADD CONSTRAINT "FK_9d0cb53f1ee2e900434772c19a8" FOREIGN KEY ("createdByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`,
|
|
26
|
+
);
|
|
27
|
+
await queryRunner.query(
|
|
28
|
+
`ALTER TABLE "NetworkDeviceOidTemplate" ADD CONSTRAINT "FK_f74ffbb8d3cb49a27055c53697e" FOREIGN KEY ("deletedByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`,
|
|
29
|
+
);
|
|
30
|
+
await queryRunner.query(
|
|
31
|
+
`ALTER TABLE "NetworkDevice" ADD CONSTRAINT "FK_c7891e3a7597717e1b7ed86581e" FOREIGN KEY ("oidTemplateId") REFERENCES "NetworkDeviceOidTemplate"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`,
|
|
32
|
+
);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
public async down(queryRunner: QueryRunner): Promise<void> {
|
|
36
|
+
await queryRunner.query(
|
|
37
|
+
`ALTER TABLE "NetworkDevice" DROP CONSTRAINT "FK_c7891e3a7597717e1b7ed86581e"`,
|
|
38
|
+
);
|
|
39
|
+
await queryRunner.query(
|
|
40
|
+
`ALTER TABLE "NetworkDeviceOidTemplate" DROP CONSTRAINT "FK_f74ffbb8d3cb49a27055c53697e"`,
|
|
41
|
+
);
|
|
42
|
+
await queryRunner.query(
|
|
43
|
+
`ALTER TABLE "NetworkDeviceOidTemplate" DROP CONSTRAINT "FK_9d0cb53f1ee2e900434772c19a8"`,
|
|
44
|
+
);
|
|
45
|
+
await queryRunner.query(
|
|
46
|
+
`ALTER TABLE "NetworkDeviceOidTemplate" DROP CONSTRAINT "FK_6bd61393f6b4438538eedbfad9c"`,
|
|
47
|
+
);
|
|
48
|
+
await queryRunner.query(
|
|
49
|
+
`DROP INDEX "public"."IDX_3e408227ae81663555e1583ac8"`,
|
|
50
|
+
);
|
|
51
|
+
await queryRunner.query(
|
|
52
|
+
`ALTER TABLE "NetworkDevice" DROP COLUMN "oidTemplateId"`,
|
|
53
|
+
);
|
|
54
|
+
await queryRunner.query(
|
|
55
|
+
`DROP INDEX "public"."IDX_6bd61393f6b4438538eedbfad9"`,
|
|
56
|
+
);
|
|
57
|
+
await queryRunner.query(`DROP TABLE "NetworkDeviceOidTemplate"`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { MigrationInterface, QueryRunner } from "typeorm";
|
|
2
|
+
|
|
3
|
+
export class AddAutoImportRuleOidTemplate1790600000000
|
|
4
|
+
implements MigrationInterface
|
|
5
|
+
{
|
|
6
|
+
public name: string = "AddAutoImportRuleOidTemplate1790600000000";
|
|
7
|
+
|
|
8
|
+
public async up(queryRunner: QueryRunner): Promise<void> {
|
|
9
|
+
await queryRunner.query(
|
|
10
|
+
`ALTER TABLE "NetworkDeviceAutoImportRule" ADD "oidTemplateId" uuid`,
|
|
11
|
+
);
|
|
12
|
+
await queryRunner.query(
|
|
13
|
+
`ALTER TABLE "NetworkDeviceAutoImportRule" ADD CONSTRAINT "FK_022aca601b5a2ce29cf82f9ba25" FOREIGN KEY ("oidTemplateId") REFERENCES "NetworkDeviceOidTemplate"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`,
|
|
14
|
+
);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
public async down(queryRunner: QueryRunner): Promise<void> {
|
|
18
|
+
await queryRunner.query(
|
|
19
|
+
`ALTER TABLE "NetworkDeviceAutoImportRule" DROP CONSTRAINT "FK_022aca601b5a2ce29cf82f9ba25"`,
|
|
20
|
+
);
|
|
21
|
+
await queryRunner.query(
|
|
22
|
+
`ALTER TABLE "NetworkDeviceAutoImportRule" DROP COLUMN "oidTemplateId"`,
|
|
23
|
+
);
|
|
24
|
+
}
|
|
25
|
+
}
|
package/Server/Infrastructure/Postgres/SchemaMigrations/1790800000000-AddNetworkDeviceRoleTable.ts
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { MigrationInterface, QueryRunner } from "typeorm";
|
|
2
|
+
|
|
3
|
+
/*
|
|
4
|
+
* Device roles become a per-project lookup instead of a fixed union.
|
|
5
|
+
*
|
|
6
|
+
* "deviceRole" (the inline string on NetworkDevice) is NOT touched here: the
|
|
7
|
+
* BackfillNetworkDeviceRoles data migration still reads it to point every
|
|
8
|
+
* device that has one at its new NetworkDeviceRole row. It is dropped in a
|
|
9
|
+
* follow-up once that backfill has run everywhere.
|
|
10
|
+
*
|
|
11
|
+
* networkDeviceRoleId is ON DELETE SET NULL on purpose. Deleting a role from
|
|
12
|
+
* the project's settings must not delete the devices using it - they simply go
|
|
13
|
+
* back to being classified from their own SNMP identity, which is exactly what
|
|
14
|
+
* a NULL role has always meant.
|
|
15
|
+
*/
|
|
16
|
+
export class AddNetworkDeviceRoleTable1790800000000
|
|
17
|
+
implements MigrationInterface
|
|
18
|
+
{
|
|
19
|
+
public name: string = "AddNetworkDeviceRoleTable1790800000000";
|
|
20
|
+
|
|
21
|
+
public async up(queryRunner: QueryRunner): Promise<void> {
|
|
22
|
+
await queryRunner.query(
|
|
23
|
+
`CREATE TABLE "NetworkDeviceRole" ("_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(100) NOT NULL, "slug" character varying(100) NOT NULL, "key" character varying(100) NOT NULL, "description" character varying(500), "topologyShape" character varying(100), "isCoreLayer" boolean NOT NULL DEFAULT false, "isSnmpWalkable" boolean NOT NULL DEFAULT true, "order" integer, "createdByUserId" uuid, "deletedByUserId" uuid, CONSTRAINT "PK_10fb79a5d66950e4a9c6d774d07" PRIMARY KEY ("_id"))`,
|
|
24
|
+
);
|
|
25
|
+
await queryRunner.query(
|
|
26
|
+
`CREATE INDEX "IDX_188009b80d1281f1d7ccecdf74" ON "NetworkDeviceRole" ("projectId") `,
|
|
27
|
+
);
|
|
28
|
+
await queryRunner.query(
|
|
29
|
+
`ALTER TABLE "NetworkDevice" ADD "networkDeviceRoleId" uuid`,
|
|
30
|
+
);
|
|
31
|
+
await queryRunner.query(
|
|
32
|
+
`CREATE INDEX "IDX_41f59fed52c5ec4ff6a2725ad9" ON "NetworkDevice" ("networkDeviceRoleId") `,
|
|
33
|
+
);
|
|
34
|
+
await queryRunner.query(
|
|
35
|
+
`ALTER TABLE "NetworkDeviceRole" ADD CONSTRAINT "FK_188009b80d1281f1d7ccecdf74d" FOREIGN KEY ("projectId") REFERENCES "Project"("_id") ON DELETE CASCADE ON UPDATE NO ACTION`,
|
|
36
|
+
);
|
|
37
|
+
await queryRunner.query(
|
|
38
|
+
`ALTER TABLE "NetworkDeviceRole" ADD CONSTRAINT "FK_9860e7a5b4d23cf1c4192c468cd" FOREIGN KEY ("createdByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`,
|
|
39
|
+
);
|
|
40
|
+
await queryRunner.query(
|
|
41
|
+
`ALTER TABLE "NetworkDeviceRole" ADD CONSTRAINT "FK_9dc66fa19636ba160af1521f45d" FOREIGN KEY ("deletedByUserId") REFERENCES "User"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`,
|
|
42
|
+
);
|
|
43
|
+
await queryRunner.query(
|
|
44
|
+
`ALTER TABLE "NetworkDevice" ADD CONSTRAINT "FK_41f59fed52c5ec4ff6a2725ad9a" FOREIGN KEY ("networkDeviceRoleId") REFERENCES "NetworkDeviceRole"("_id") ON DELETE SET NULL ON UPDATE NO ACTION`,
|
|
45
|
+
);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
public async down(queryRunner: QueryRunner): Promise<void> {
|
|
49
|
+
await queryRunner.query(
|
|
50
|
+
`ALTER TABLE "NetworkDevice" DROP CONSTRAINT "FK_41f59fed52c5ec4ff6a2725ad9a"`,
|
|
51
|
+
);
|
|
52
|
+
await queryRunner.query(
|
|
53
|
+
`ALTER TABLE "NetworkDeviceRole" DROP CONSTRAINT "FK_9dc66fa19636ba160af1521f45d"`,
|
|
54
|
+
);
|
|
55
|
+
await queryRunner.query(
|
|
56
|
+
`ALTER TABLE "NetworkDeviceRole" DROP CONSTRAINT "FK_9860e7a5b4d23cf1c4192c468cd"`,
|
|
57
|
+
);
|
|
58
|
+
await queryRunner.query(
|
|
59
|
+
`ALTER TABLE "NetworkDeviceRole" DROP CONSTRAINT "FK_188009b80d1281f1d7ccecdf74d"`,
|
|
60
|
+
);
|
|
61
|
+
await queryRunner.query(
|
|
62
|
+
`DROP INDEX "public"."IDX_41f59fed52c5ec4ff6a2725ad9"`,
|
|
63
|
+
);
|
|
64
|
+
await queryRunner.query(
|
|
65
|
+
`ALTER TABLE "NetworkDevice" DROP COLUMN "networkDeviceRoleId"`,
|
|
66
|
+
);
|
|
67
|
+
await queryRunner.query(
|
|
68
|
+
`DROP INDEX "public"."IDX_188009b80d1281f1d7ccecdf74"`,
|
|
69
|
+
);
|
|
70
|
+
await queryRunner.query(`DROP TABLE "NetworkDeviceRole"`);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
@@ -564,6 +564,9 @@ import { AddResourceActivityFeeds1790100000000 } from "./1790100000000-AddResour
|
|
|
564
564
|
import { AllowNullMonitorNameOnMonitorTemplate1790200000000 } from "./1790200000000-AllowNullMonitorNameOnMonitorTemplate";
|
|
565
565
|
import { AddCertificateReissueRequestedAtToDomains1790300000000 } from "./1790300000000-AddCertificateReissueRequestedAtToDomains";
|
|
566
566
|
import { AddOnCallCalendarFeeds1790400000000 } from "./1790400000000-AddOnCallCalendarFeeds";
|
|
567
|
+
import { AddNetworkDeviceOidTemplate1790500000000 } from "./1790500000000-AddNetworkDeviceOidTemplate";
|
|
568
|
+
import { AddAutoImportRuleOidTemplate1790600000000 } from "./1790600000000-AddAutoImportRuleOidTemplate";
|
|
569
|
+
import { AddNetworkDeviceRoleTable1790800000000 } from "./1790800000000-AddNetworkDeviceRoleTable";
|
|
567
570
|
|
|
568
571
|
export default [
|
|
569
572
|
InitialMigration,
|
|
@@ -1132,4 +1135,7 @@ export default [
|
|
|
1132
1135
|
AllowNullMonitorNameOnMonitorTemplate1790200000000,
|
|
1133
1136
|
AddCertificateReissueRequestedAtToDomains1790300000000,
|
|
1134
1137
|
AddOnCallCalendarFeeds1790400000000,
|
|
1138
|
+
AddNetworkDeviceOidTemplate1790500000000,
|
|
1139
|
+
AddAutoImportRuleOidTemplate1790600000000,
|
|
1140
|
+
AddNetworkDeviceRoleTable1790800000000,
|
|
1135
1141
|
];
|
|
@@ -31,26 +31,55 @@ export const MAX_MULTIPART_FIELD_BYTES: number = 25 * 1024 * 1024;
|
|
|
31
31
|
export const MAX_MULTIPART_FILES: number = 50;
|
|
32
32
|
export const MAX_MULTIPART_FIELDS: number = 200;
|
|
33
33
|
|
|
34
|
+
/*
|
|
35
|
+
* busboy's SIZE limits and its `parts` counter are EXCLUSIVE: each fires
|
|
36
|
+
* the moment the counter REACHES the limit, so handing it N admits only
|
|
37
|
+
* N-1. Its `files` and `fields` counters are INCLUSIVE -- N admits N.
|
|
38
|
+
*
|
|
39
|
+
* That asymmetry is undocumented and easy to lose, so the constants above
|
|
40
|
+
* stay the INCLUSIVE maxima this app documents and that callers
|
|
41
|
+
* range-check against (`file.buffer.length > MAX_SOURCE_MAP_SIZE_IN_BYTES`
|
|
42
|
+
* and friends), and only the three exclusive limits are converted here.
|
|
43
|
+
*
|
|
44
|
+
* Both halves of this were live bugs. A file of exactly 50 MiB -- a size
|
|
45
|
+
* the source map endpoint means to accept, and whose 400 message says it
|
|
46
|
+
* accepts -- was truncated by the parser into a 413 the endpoint never
|
|
47
|
+
* saw. And `parts`, whose whole job is to allow the file and field
|
|
48
|
+
* allowances in full, rejected a body carrying exactly both with
|
|
49
|
+
* LIMIT_PART_COUNT.
|
|
50
|
+
*/
|
|
51
|
+
const exclusive: (inclusiveMax: number) => number = (
|
|
52
|
+
inclusiveMax: number,
|
|
53
|
+
): number => {
|
|
54
|
+
return inclusiveMax + 1;
|
|
55
|
+
};
|
|
56
|
+
|
|
34
57
|
/*
|
|
35
58
|
* Configure multer for handling multipart/form-data
|
|
36
59
|
* Uses memory storage to store files in memory as Buffer objects
|
|
37
60
|
*/
|
|
38
|
-
const
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
61
|
+
const buildUploadAny: (maxFiles: number) => RequestHandler = (
|
|
62
|
+
maxFiles: number,
|
|
63
|
+
): RequestHandler => {
|
|
64
|
+
const upload: multer.Multer = multer({
|
|
65
|
+
storage: multer.memoryStorage(),
|
|
66
|
+
limits: {
|
|
67
|
+
fileSize: exclusive(MAX_MULTIPART_FILE_BYTES),
|
|
68
|
+
fieldSize: exclusive(MAX_MULTIPART_FIELD_BYTES),
|
|
69
|
+
files: maxFiles,
|
|
70
|
+
fields: MAX_MULTIPART_FIELDS,
|
|
71
|
+
/*
|
|
72
|
+
* Parts are files + fields, so this has to allow both in full or it
|
|
73
|
+
* would be the effective limit and the two above would never fire.
|
|
74
|
+
*/
|
|
75
|
+
parts: exclusive(maxFiles + MAX_MULTIPART_FIELDS),
|
|
76
|
+
},
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
return upload.any() as unknown as RequestHandler;
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
const uploadAny: RequestHandler = buildUploadAny(MAX_MULTIPART_FILES);
|
|
54
83
|
|
|
55
84
|
/*
|
|
56
85
|
* The LIMIT_* codes that mean "you sent too much". LIMIT_UNEXPECTED_FILE
|
|
@@ -68,15 +97,33 @@ const TOO_LARGE_CODES: Set<string> = new Set<string>([
|
|
|
68
97
|
"LIMIT_FIELD_COUNT",
|
|
69
98
|
]);
|
|
70
99
|
|
|
100
|
+
/*
|
|
101
|
+
* A limit breach must answer 413 rather than 500. multer signals every limit
|
|
102
|
+
* with a MulterError whose `code` is one of the LIMIT_* values, and nothing
|
|
103
|
+
* downstream knows what those mean - the generic error handler would turn a
|
|
104
|
+
* caller's oversized upload into a server error and page whoever is on call
|
|
105
|
+
* for it. Shared by every middleware this module builds.
|
|
106
|
+
*/
|
|
107
|
+
const handleMulterError: (err: unknown, next: NextFunction) => void = (
|
|
108
|
+
err: unknown,
|
|
109
|
+
next: NextFunction,
|
|
110
|
+
): void => {
|
|
111
|
+
if (err instanceof multer.MulterError) {
|
|
112
|
+
const message: string = `Multipart request rejected: ${err.code}.`;
|
|
113
|
+
|
|
114
|
+
return next(
|
|
115
|
+
TOO_LARGE_CODES.has(err.code)
|
|
116
|
+
? new PayloadTooLargeException(message)
|
|
117
|
+
: new BadRequestException(message),
|
|
118
|
+
);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
return next(err);
|
|
122
|
+
};
|
|
123
|
+
|
|
71
124
|
/*
|
|
72
125
|
* Middleware for handling any file uploads (multipart/form-data)
|
|
73
126
|
* This is useful for webhooks that send data as multipart/form-data (e.g., SendGrid inbound email)
|
|
74
|
-
*
|
|
75
|
-
* Wrapped so a limit breach answers 413 rather than 500. multer signals
|
|
76
|
-
* every limit with a MulterError whose `code` is one of the LIMIT_*
|
|
77
|
-
* values, and nothing downstream knows what those mean - the generic
|
|
78
|
-
* error handler would turn a caller's oversized upload into a server
|
|
79
|
-
* error and page whoever is on call for it.
|
|
80
127
|
*/
|
|
81
128
|
const MultipartFormDataMiddleware: RequestHandler = (
|
|
82
129
|
req: ExpressRequest,
|
|
@@ -84,18 +131,57 @@ const MultipartFormDataMiddleware: RequestHandler = (
|
|
|
84
131
|
next: NextFunction,
|
|
85
132
|
): void => {
|
|
86
133
|
uploadAny(req, res, (err: unknown): void => {
|
|
87
|
-
|
|
88
|
-
|
|
134
|
+
return handleMulterError(err, next);
|
|
135
|
+
});
|
|
136
|
+
};
|
|
89
137
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
138
|
+
/**
|
|
139
|
+
* A multipart middleware for a route that wants a LOWER file count than the
|
|
140
|
+
* shared default.
|
|
141
|
+
*
|
|
142
|
+
* Only downward: maxFiles is clamped to MAX_MULTIPART_FILES. Every route that
|
|
143
|
+
* mounts this middleware parses the body before its own auth check runs, so
|
|
144
|
+
* the shared ceiling is the limit an unauthenticated caller is held to across
|
|
145
|
+
* all of them. A per-route knob that could raise it would widen the pre-auth
|
|
146
|
+
* memory surface of every OTHER route's neighbours by proxy of a config
|
|
147
|
+
* change made for one — so it cannot.
|
|
148
|
+
*
|
|
149
|
+
* Routes that are happy with the default should keep using the default
|
|
150
|
+
* export; this builds a second multer instance, so call it once at module
|
|
151
|
+
* scope and never per request.
|
|
152
|
+
*/
|
|
153
|
+
export const getMultipartFormDataMiddleware: (options: {
|
|
154
|
+
maxFiles: number;
|
|
155
|
+
}) => RequestHandler = (options: { maxFiles: number }): RequestHandler => {
|
|
156
|
+
/*
|
|
157
|
+
* Clamp the DOMAIN as well as the range. busboy compares `files === limit`,
|
|
158
|
+
* which never matches a fractional or NaN limit — so a non-integer would
|
|
159
|
+
* not narrow anything, it would remove the file bound entirely and leave
|
|
160
|
+
* the pre-auth parse unbounded. That is the exact widening this function
|
|
161
|
+
* exists to prevent, so anything not a finite number falls back to the
|
|
162
|
+
* shared ceiling rather than being passed through.
|
|
163
|
+
*/
|
|
164
|
+
const requestedMaxFiles: number = options.maxFiles;
|
|
96
165
|
|
|
97
|
-
|
|
98
|
-
|
|
166
|
+
const maxFiles: number = Number.isFinite(requestedMaxFiles)
|
|
167
|
+
? Math.max(1, Math.min(Math.floor(requestedMaxFiles), MAX_MULTIPART_FILES))
|
|
168
|
+
: MAX_MULTIPART_FILES;
|
|
169
|
+
|
|
170
|
+
if (maxFiles === MAX_MULTIPART_FILES) {
|
|
171
|
+
return MultipartFormDataMiddleware;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
const scopedUploadAny: RequestHandler = buildUploadAny(maxFiles);
|
|
175
|
+
|
|
176
|
+
return (
|
|
177
|
+
req: ExpressRequest,
|
|
178
|
+
res: ExpressResponse,
|
|
179
|
+
next: NextFunction,
|
|
180
|
+
): void => {
|
|
181
|
+
scopedUploadAny(req, res, (err: unknown): void => {
|
|
182
|
+
return handleMulterError(err, next);
|
|
183
|
+
});
|
|
184
|
+
};
|
|
99
185
|
};
|
|
100
186
|
|
|
101
187
|
export default MultipartFormDataMiddleware;
|
|
@@ -13,6 +13,8 @@ import LIMIT_MAX from "../../Types/Database/LimitMax";
|
|
|
13
13
|
import QueryHelper from "../Types/Database/QueryHelper";
|
|
14
14
|
import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
|
|
15
15
|
import logger, { LogAttributes } from "../Utils/Logger";
|
|
16
|
+
import { MAX_RULES_EVALUATED_PER_PROJECT } from "../../Utils/Rules/RuleEngineLimits";
|
|
17
|
+
import logIfRuleReadWasTruncated from "../Utils/Rules/RuleEngineRuleRead";
|
|
16
18
|
|
|
17
19
|
class AlertEpisodeLabelRuleEngineServiceClass {
|
|
18
20
|
/**
|
|
@@ -44,10 +46,16 @@ class AlertEpisodeLabelRuleEngineServiceClass {
|
|
|
44
46
|
episodeDescriptionPattern: true,
|
|
45
47
|
labelsToAdd: { _id: true },
|
|
46
48
|
},
|
|
47
|
-
limit:
|
|
49
|
+
limit: MAX_RULES_EVALUATED_PER_PROJECT,
|
|
48
50
|
skip: 0,
|
|
49
51
|
});
|
|
50
52
|
|
|
53
|
+
logIfRuleReadWasTruncated({
|
|
54
|
+
ruleKind: "AlertEpisodeLabelRule",
|
|
55
|
+
projectId: episode.projectId,
|
|
56
|
+
rulesRead: rules.length,
|
|
57
|
+
});
|
|
58
|
+
|
|
51
59
|
if (rules.length === 0) {
|
|
52
60
|
return;
|
|
53
61
|
}
|
|
@@ -14,6 +14,8 @@ import LIMIT_MAX from "../../Types/Database/LimitMax";
|
|
|
14
14
|
import QueryHelper from "../Types/Database/QueryHelper";
|
|
15
15
|
import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
|
|
16
16
|
import logger, { LogAttributes } from "../Utils/Logger";
|
|
17
|
+
import { MAX_RULES_EVALUATED_PER_PROJECT } from "../../Utils/Rules/RuleEngineLimits";
|
|
18
|
+
import logIfRuleReadWasTruncated from "../Utils/Rules/RuleEngineRuleRead";
|
|
17
19
|
|
|
18
20
|
class AlertEpisodeOnCallRuleEngineServiceClass {
|
|
19
21
|
/**
|
|
@@ -44,10 +46,16 @@ class AlertEpisodeOnCallRuleEngineServiceClass {
|
|
|
44
46
|
episodeDescriptionPattern: true,
|
|
45
47
|
onCallDutyPolicies: { _id: true },
|
|
46
48
|
},
|
|
47
|
-
limit:
|
|
49
|
+
limit: MAX_RULES_EVALUATED_PER_PROJECT,
|
|
48
50
|
skip: 0,
|
|
49
51
|
});
|
|
50
52
|
|
|
53
|
+
logIfRuleReadWasTruncated({
|
|
54
|
+
ruleKind: "AlertEpisodeOnCallRule",
|
|
55
|
+
projectId: episode.projectId,
|
|
56
|
+
rulesRead: rules.length,
|
|
57
|
+
});
|
|
58
|
+
|
|
51
59
|
if (rules.length === 0) {
|
|
52
60
|
return;
|
|
53
61
|
}
|
|
@@ -16,6 +16,8 @@ import LIMIT_MAX from "../../Types/Database/LimitMax";
|
|
|
16
16
|
import QueryHelper from "../Types/Database/QueryHelper";
|
|
17
17
|
import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
|
|
18
18
|
import logger, { LogAttributes } from "../Utils/Logger";
|
|
19
|
+
import { MAX_RULES_EVALUATED_PER_PROJECT } from "../../Utils/Rules/RuleEngineLimits";
|
|
20
|
+
import logIfRuleReadWasTruncated from "../Utils/Rules/RuleEngineRuleRead";
|
|
19
21
|
|
|
20
22
|
class AlertEpisodeOwnerRuleEngineServiceClass {
|
|
21
23
|
/**
|
|
@@ -48,10 +50,16 @@ class AlertEpisodeOwnerRuleEngineServiceClass {
|
|
|
48
50
|
ownerUsers: { _id: true },
|
|
49
51
|
ownerTeams: { _id: true },
|
|
50
52
|
},
|
|
51
|
-
limit:
|
|
53
|
+
limit: MAX_RULES_EVALUATED_PER_PROJECT,
|
|
52
54
|
skip: 0,
|
|
53
55
|
});
|
|
54
56
|
|
|
57
|
+
logIfRuleReadWasTruncated({
|
|
58
|
+
ruleKind: "AlertEpisodeOwnerRule",
|
|
59
|
+
projectId: episode.projectId,
|
|
60
|
+
rulesRead: rules.length,
|
|
61
|
+
});
|
|
62
|
+
|
|
55
63
|
if (rules.length === 0) {
|
|
56
64
|
return;
|
|
57
65
|
}
|
|
@@ -9,6 +9,8 @@ import { AlertEpisodeFeedEventType } from "../../Models/DatabaseModels/AlertEpis
|
|
|
9
9
|
import { Red500 } from "../../Types/BrandColors";
|
|
10
10
|
import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
|
|
11
11
|
import logger, { LogAttributes } from "../Utils/Logger";
|
|
12
|
+
import { MAX_RULES_EVALUATED_PER_PROJECT } from "../../Utils/Rules/RuleEngineLimits";
|
|
13
|
+
import logIfRuleReadWasTruncated from "../Utils/Rules/RuleEngineRuleRead";
|
|
12
14
|
|
|
13
15
|
class AlertEpisodePrivacyRuleEngineServiceClass {
|
|
14
16
|
/**
|
|
@@ -41,10 +43,16 @@ class AlertEpisodePrivacyRuleEngineServiceClass {
|
|
|
41
43
|
episodeTitlePattern: true,
|
|
42
44
|
episodeDescriptionPattern: true,
|
|
43
45
|
},
|
|
44
|
-
limit:
|
|
46
|
+
limit: MAX_RULES_EVALUATED_PER_PROJECT,
|
|
45
47
|
skip: 0,
|
|
46
48
|
});
|
|
47
49
|
|
|
50
|
+
logIfRuleReadWasTruncated({
|
|
51
|
+
ruleKind: "AlertEpisodePrivacyRule",
|
|
52
|
+
projectId: episode.projectId,
|
|
53
|
+
rulesRead: rules.length,
|
|
54
|
+
});
|
|
55
|
+
|
|
48
56
|
if (rules.length === 0) {
|
|
49
57
|
return false;
|
|
50
58
|
}
|