@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NetworkDeviceLabelRuleEngineService.js","sourceRoot":"","sources":["../../../../Server/Services/NetworkDeviceLabelRuleEngineService.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,KAAK,MAAM,mCAAmC,CAAC;AACtD,OAAO,aAAa,MAAM,2CAA2C,CAAC;AAEtE,OAAO,6BAA6B,MAAM,iCAAiC,CAAC;AAC5E,OAAO,oBAAoB,MAAM,wBAAwB,CAAC;AAC1D,OAAO,gBAAgB,MAAM,wCAAwC,CAAC;AACtE,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,SAAS,MAAM,oCAAoC,CAAC;AAE3D,OAAO,oBAAoB,MAAM,wCAAwC,CAAC;AAC1E,OAAO,WAAW,MAAM,gCAAgC,CAAC;AACzD,OAAO,MAAyB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"NetworkDeviceLabelRuleEngineService.js","sourceRoot":"","sources":["../../../../Server/Services/NetworkDeviceLabelRuleEngineService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import DatabaseService from "./DatabaseService";
|
|
11
|
+
import NetworkDeviceAutoImportRuleService from "./NetworkDeviceAutoImportRuleService";
|
|
12
|
+
import NetworkDeviceService from "./NetworkDeviceService";
|
|
13
|
+
import Model from "../../Models/DatabaseModels/NetworkDeviceOidTemplate";
|
|
14
|
+
import LIMIT_MAX from "../../Types/Database/LimitMax";
|
|
15
|
+
import BadDataException from "../../Types/Exception/BadDataException";
|
|
16
|
+
import SnmpOidListUtil, { MAX_OIDS_PER_TEMPLATE, } from "../../Types/Monitor/SnmpMonitor/SnmpOidListUtil";
|
|
17
|
+
import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
|
|
18
|
+
/*
|
|
19
|
+
* OID Collection Templates carry COLLECTION config for a whole device type,
|
|
20
|
+
* so this service has exactly three jobs and deliberately no fourth:
|
|
21
|
+
*
|
|
22
|
+
* 1. Refuse a malformed OID list at save time. Nothing validated snmpOids
|
|
23
|
+
* before, which was survivable when one bad row broke one device; with
|
|
24
|
+
* a template it would break every device linked to it.
|
|
25
|
+
* 2. Answer "how many devices use this?" for the UI.
|
|
26
|
+
* 3. Refuse to delete a template that devices are still using.
|
|
27
|
+
*
|
|
28
|
+
* There is no syncToDevices, no onUpdateSuccess, and no fan-out of any kind.
|
|
29
|
+
* The template is resolved live against each device at poll time in
|
|
30
|
+
* NetworkDevicePoll, so there is nothing to push and nothing to reconcile -
|
|
31
|
+
* see the model's class comment for why that inverts MonitorTemplate.
|
|
32
|
+
*/
|
|
33
|
+
export class Service extends DatabaseService {
|
|
34
|
+
constructor() {
|
|
35
|
+
super(Model);
|
|
36
|
+
}
|
|
37
|
+
async onBeforeCreate(createBy) {
|
|
38
|
+
if (createBy.data.oids !== undefined) {
|
|
39
|
+
createBy.data.oids = SnmpOidListUtil.validateOidList(createBy.data.oids, {
|
|
40
|
+
max: MAX_OIDS_PER_TEMPLATE,
|
|
41
|
+
label: "OID Collection Template",
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
return { createBy, carryForward: null };
|
|
45
|
+
}
|
|
46
|
+
async onBeforeUpdate(updateBy) {
|
|
47
|
+
/*
|
|
48
|
+
* `!== undefined` rather than a truthiness check: an explicit empty array
|
|
49
|
+
* is a legitimate "this template collects nothing" edit, and
|
|
50
|
+
* validateOidList accepts it.
|
|
51
|
+
*/
|
|
52
|
+
if (updateBy.data.oids !== undefined) {
|
|
53
|
+
updateBy.data.oids = SnmpOidListUtil.validateOidList(updateBy.data.oids, {
|
|
54
|
+
max: MAX_OIDS_PER_TEMPLATE,
|
|
55
|
+
label: "OID Collection Template",
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
return { updateBy, carryForward: null };
|
|
59
|
+
}
|
|
60
|
+
/*
|
|
61
|
+
* Deleting a template devices still use would silently drop OIDs from every
|
|
62
|
+
* one of them: the FK is ON DELETE SET NULL, so those devices just quietly
|
|
63
|
+
* fall back to their own lists on the next poll with nothing to tell
|
|
64
|
+
* anyone. Refuse, and say how many devices are in the way.
|
|
65
|
+
*
|
|
66
|
+
* Counting rather than keeping a rollup column is deliberate - a maintained
|
|
67
|
+
* counter would make this row hot under every device create and rebind, and
|
|
68
|
+
* MonitorTemplateService.countLinkedMonitors already set the precedent.
|
|
69
|
+
*/
|
|
70
|
+
async onBeforeDelete(deleteBy) {
|
|
71
|
+
const templatesToDelete = await this.findBy({
|
|
72
|
+
/*
|
|
73
|
+
* This hook runs BEFORE DatabaseService permission-checks the query, so
|
|
74
|
+
* a raw isRoot read of deleteBy.query would hand back other tenants'
|
|
75
|
+
* templates. Re-apply the caller's tenant, exactly as NetworkSiteService
|
|
76
|
+
* does for the same reason.
|
|
77
|
+
*/
|
|
78
|
+
query: this.scopeQueryToCallerTenant(deleteBy.query, deleteBy.props),
|
|
79
|
+
select: {
|
|
80
|
+
_id: true,
|
|
81
|
+
name: true,
|
|
82
|
+
projectId: true,
|
|
83
|
+
},
|
|
84
|
+
limit: LIMIT_MAX,
|
|
85
|
+
skip: 0,
|
|
86
|
+
props: {
|
|
87
|
+
isRoot: true,
|
|
88
|
+
},
|
|
89
|
+
});
|
|
90
|
+
for (const template of templatesToDelete) {
|
|
91
|
+
if (!template.id || !template.projectId) {
|
|
92
|
+
continue;
|
|
93
|
+
}
|
|
94
|
+
const linkedDeviceCount = await this.countLinkedDevices({
|
|
95
|
+
templateId: template.id,
|
|
96
|
+
projectId: template.projectId,
|
|
97
|
+
});
|
|
98
|
+
if (linkedDeviceCount > 0) {
|
|
99
|
+
throw new BadDataException(`${template.name || "This OID Collection Template"} is still used by ${linkedDeviceCount} network device(s). Move those devices to another template, or clear their template, before deleting it.`);
|
|
100
|
+
}
|
|
101
|
+
/*
|
|
102
|
+
* Auto-import rules count too, and for the same reason.
|
|
103
|
+
*
|
|
104
|
+
* The FK there is also ON DELETE SET NULL, so deleting a template a rule
|
|
105
|
+
* still names does not fail - it silently turns that rule back into one
|
|
106
|
+
* that imports devices collecting nothing, and the next discovery scan
|
|
107
|
+
* quietly produces a fleet nobody configured. A rule can hold the last
|
|
108
|
+
* reference to a template with zero devices linked yet (it was created
|
|
109
|
+
* ahead of the scan), which is exactly when the device count alone says
|
|
110
|
+
* the delete is safe.
|
|
111
|
+
*/
|
|
112
|
+
const linkedRuleCount = await NetworkDeviceAutoImportRuleService.countBy({
|
|
113
|
+
query: {
|
|
114
|
+
projectId: template.projectId,
|
|
115
|
+
oidTemplateId: template.id,
|
|
116
|
+
},
|
|
117
|
+
props: {
|
|
118
|
+
isRoot: true,
|
|
119
|
+
},
|
|
120
|
+
});
|
|
121
|
+
if (linkedRuleCount.toNumber() > 0) {
|
|
122
|
+
throw new BadDataException(`${template.name || "This OID Collection Template"} is still used by ${linkedRuleCount.toNumber()} auto-import rule(s). Clear it from those rules before deleting it, or devices they import will collect nothing.`);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return { deleteBy, carryForward: null };
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* How many devices collect this template's OIDs. Used by the template page
|
|
129
|
+
* and by the delete guard above.
|
|
130
|
+
*/
|
|
131
|
+
async countLinkedDevices(data) {
|
|
132
|
+
const count = await NetworkDeviceService.countBy({
|
|
133
|
+
query: {
|
|
134
|
+
projectId: data.projectId,
|
|
135
|
+
oidTemplateId: data.templateId,
|
|
136
|
+
},
|
|
137
|
+
props: {
|
|
138
|
+
isRoot: true,
|
|
139
|
+
},
|
|
140
|
+
});
|
|
141
|
+
return count.toNumber();
|
|
142
|
+
}
|
|
143
|
+
/*
|
|
144
|
+
* See NetworkSiteService for the full explanation: hooks run before
|
|
145
|
+
* ModelPermission scopes the caller's query, so anything a hook reads with
|
|
146
|
+
* isRoot has to be re-scoped by hand or it spans projects.
|
|
147
|
+
*/
|
|
148
|
+
scopeQueryToCallerTenant(query, props) {
|
|
149
|
+
if (props.isRoot || !props.tenantId) {
|
|
150
|
+
return query;
|
|
151
|
+
}
|
|
152
|
+
return Object.assign(Object.assign({}, query), { projectId: props.tenantId });
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
__decorate([
|
|
156
|
+
CaptureSpan(),
|
|
157
|
+
__metadata("design:type", Function),
|
|
158
|
+
__metadata("design:paramtypes", [Object]),
|
|
159
|
+
__metadata("design:returntype", Promise)
|
|
160
|
+
], Service.prototype, "onBeforeCreate", null);
|
|
161
|
+
__decorate([
|
|
162
|
+
CaptureSpan(),
|
|
163
|
+
__metadata("design:type", Function),
|
|
164
|
+
__metadata("design:paramtypes", [Object]),
|
|
165
|
+
__metadata("design:returntype", Promise)
|
|
166
|
+
], Service.prototype, "onBeforeUpdate", null);
|
|
167
|
+
__decorate([
|
|
168
|
+
CaptureSpan(),
|
|
169
|
+
__metadata("design:type", Function),
|
|
170
|
+
__metadata("design:paramtypes", [Object]),
|
|
171
|
+
__metadata("design:returntype", Promise)
|
|
172
|
+
], Service.prototype, "onBeforeDelete", null);
|
|
173
|
+
__decorate([
|
|
174
|
+
CaptureSpan(),
|
|
175
|
+
__metadata("design:type", Function),
|
|
176
|
+
__metadata("design:paramtypes", [Object]),
|
|
177
|
+
__metadata("design:returntype", Promise)
|
|
178
|
+
], Service.prototype, "countLinkedDevices", null);
|
|
179
|
+
export default new Service();
|
|
180
|
+
//# sourceMappingURL=NetworkDeviceOidTemplateService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NetworkDeviceOidTemplateService.js","sourceRoot":"","sources":["../../../../Server/Services/NetworkDeviceOidTemplateService.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,8 @@ import ObjectID from "../../Types/ObjectID";
|
|
|
18
18
|
import RulePatternMatchUtil from "../../Utils/Rules/RulePatternMatchUtil";
|
|
19
19
|
import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
|
|
20
20
|
import logger from "../Utils/Logger";
|
|
21
|
+
import { MAX_RULES_EVALUATED_PER_PROJECT } from "../../Utils/Rules/RuleEngineLimits";
|
|
22
|
+
import logIfRuleReadWasTruncated from "../Utils/Rules/RuleEngineRuleRead";
|
|
21
23
|
class NetworkDeviceOwnerRuleEngineServiceClass {
|
|
22
24
|
/**
|
|
23
25
|
* Evaluates NetworkDeviceOwnerRule rows for the given network device and adds matched
|
|
@@ -47,9 +49,14 @@ class NetworkDeviceOwnerRuleEngineServiceClass {
|
|
|
47
49
|
ownerUsers: { _id: true },
|
|
48
50
|
ownerTeams: { _id: true },
|
|
49
51
|
},
|
|
50
|
-
limit:
|
|
52
|
+
limit: MAX_RULES_EVALUATED_PER_PROJECT,
|
|
51
53
|
skip: 0,
|
|
52
54
|
});
|
|
55
|
+
logIfRuleReadWasTruncated({
|
|
56
|
+
ruleKind: "NetworkDeviceOwnerRule",
|
|
57
|
+
projectId: networkDevice.projectId,
|
|
58
|
+
rulesRead: rules.length,
|
|
59
|
+
});
|
|
53
60
|
if (rules.length === 0) {
|
|
54
61
|
return;
|
|
55
62
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NetworkDeviceOwnerRuleEngineService.js","sourceRoot":"","sources":["../../../../Server/Services/NetworkDeviceOwnerRuleEngineService.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,aAAa,MAAM,2CAA2C,CAAC;AAEtE,OAAO,sBAAsB,MAAM,oDAAoD,CAAC;AACxF,OAAO,sBAAsB,MAAM,oDAAoD,CAAC;AACxF,OAAO,6BAA6B,MAAM,iCAAiC,CAAC;AAC5E,OAAO,6BAA6B,MAAM,iCAAiC,CAAC;AAC5E,OAAO,6BAA6B,MAAM,iCAAiC,CAAC;AAC5E,OAAO,oBAAoB,MAAM,wBAAwB,CAAC;AAC1D,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,oBAAoB,MAAM,wCAAwC,CAAC;AAC1E,OAAO,WAAW,MAAM,gCAAgC,CAAC;AACzD,OAAO,MAAyB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"NetworkDeviceOwnerRuleEngineService.js","sourceRoot":"","sources":["../../../../Server/Services/NetworkDeviceOwnerRuleEngineService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import DatabaseService from "./DatabaseService";
|
|
2
|
+
import Model from "../../Models/DatabaseModels/NetworkDeviceRole";
|
|
3
|
+
import LIMIT_MAX from "../../Types/Database/LimitMax";
|
|
4
|
+
import BadDataException from "../../Types/Exception/BadDataException";
|
|
5
|
+
import { buildUniqueDeviceRoleKey } from "../../Utils/NetworkDevice/DeviceRoleKeyUtil";
|
|
6
|
+
export class Service extends DatabaseService {
|
|
7
|
+
constructor() {
|
|
8
|
+
super(Model);
|
|
9
|
+
}
|
|
10
|
+
/*
|
|
11
|
+
* Every role gets its stable key here, and only here.
|
|
12
|
+
*
|
|
13
|
+
* The key is not a form field - an operator names a role, they do not name
|
|
14
|
+
* its identifier - and it must never change afterwards, because it is what
|
|
15
|
+
* the SNMP classifier's answer and every stored topology payload match
|
|
16
|
+
* against. Deriving it at create time is therefore the whole of its
|
|
17
|
+
* lifecycle: the column's ColumnAccessControl grants create and update to
|
|
18
|
+
* nobody, so the API cannot set or move it either.
|
|
19
|
+
*
|
|
20
|
+
* The seeders pass an explicit key so the eleven built-in roles keep the
|
|
21
|
+
* exact identifiers the classifier emits ("wirelessAccessPoint" from
|
|
22
|
+
* "Wireless AP", which no derivation would produce). Anything else derives
|
|
23
|
+
* one from the name, de-duplicated against the keys the project already
|
|
24
|
+
* holds.
|
|
25
|
+
*/
|
|
26
|
+
async onBeforeCreate(createBy) {
|
|
27
|
+
if (!createBy.data.key) {
|
|
28
|
+
const projectId = createBy.data.projectId || createBy.props.tenantId || undefined;
|
|
29
|
+
if (!projectId) {
|
|
30
|
+
throw new BadDataException("Project ID is required to create a network device role.");
|
|
31
|
+
}
|
|
32
|
+
createBy.data.key = buildUniqueDeviceRoleKey(createBy.data.name || "", await this.getKeysInProject(projectId));
|
|
33
|
+
}
|
|
34
|
+
return {
|
|
35
|
+
createBy: createBy,
|
|
36
|
+
carryForward: undefined,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Every role key already in use in this project, for uniqueness checks.
|
|
41
|
+
*
|
|
42
|
+
* Read as root: a member who may create a role must get a key that does not
|
|
43
|
+
* collide with one they are not allowed to see, and a partial view of the
|
|
44
|
+
* project's keys would hand them a duplicate the database then rejects.
|
|
45
|
+
*/
|
|
46
|
+
async getKeysInProject(projectId) {
|
|
47
|
+
const existing = await this.findBy({
|
|
48
|
+
query: {
|
|
49
|
+
projectId: projectId,
|
|
50
|
+
},
|
|
51
|
+
select: {
|
|
52
|
+
key: true,
|
|
53
|
+
},
|
|
54
|
+
skip: 0,
|
|
55
|
+
limit: LIMIT_MAX,
|
|
56
|
+
props: {
|
|
57
|
+
isRoot: true,
|
|
58
|
+
},
|
|
59
|
+
});
|
|
60
|
+
const keys = new Set();
|
|
61
|
+
for (const role of existing) {
|
|
62
|
+
if (role.key) {
|
|
63
|
+
keys.add(role.key);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return keys;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
export default new Service();
|
|
70
|
+
//# sourceMappingURL=NetworkDeviceRoleService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NetworkDeviceRoleService.js","sourceRoot":"","sources":["../../../../Server/Services/NetworkDeviceRoleService.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,MAAM,+CAA+C,CAAC;AAGlE,OAAO,SAAS,MAAM,+BAA+B,CAAC;AAEtD,OAAO,gBAAgB,MAAM,wCAAwC,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,6CAA6C,CAAC;AAEvF,MAAM,OAAO,OAAQ,SAAQ,eAAsB;IACjD;QACE,KAAK,CAAC,KAAK,CAAC,CAAC;IACf,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACgB,KAAK,CAAC,cAAc,CACrC,QAAyB;QAEzB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACvB,MAAM,SAAS,GACb,QAAQ,CAAC,IAAI,CAAC,SAAS,IAAI,QAAQ,CAAC,KAAK,CAAC,QAAQ,IAAI,SAAS,CAAC;YAElE,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,MAAM,IAAI,gBAAgB,CACxB,yDAAyD,CAC1D,CAAC;YACJ,CAAC;YAED,QAAQ,CAAC,IAAI,CAAC,GAAG,GAAG,wBAAwB,CAC1C,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,EACxB,MAAM,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CACvC,CAAC;QACJ,CAAC;QAED,OAAO;YACL,QAAQ,EAAE,QAAQ;YAClB,YAAY,EAAE,SAAS;SACxB,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,gBAAgB,CAAC,SAAmB;QAC/C,MAAM,QAAQ,GAAiB,MAAM,IAAI,CAAC,MAAM,CAAC;YAC/C,KAAK,EAAE;gBACL,SAAS,EAAE,SAAS;aACrB;YACD,MAAM,EAAE;gBACN,GAAG,EAAE,IAAI;aACV;YACD,IAAI,EAAE,CAAC;YACP,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE;gBACL,MAAM,EAAE,IAAI;aACb;SACF,CAAC,CAAC;QAEH,MAAM,IAAI,GAAgB,IAAI,GAAG,EAAU,CAAC;QAE5C,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC5B,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED,eAAe,IAAI,OAAO,EAAE,CAAC"}
|
|
@@ -26,6 +26,8 @@ import OneUptimeDate from "../../Types/Date";
|
|
|
26
26
|
import CidrMatchUtil from "../../Utils/NetworkSite/CidrMatchUtil";
|
|
27
27
|
import { NetworkDeviceMonitoringMethodUtil } from "../../Types/NetworkDevice/NetworkDeviceMonitoringMethod";
|
|
28
28
|
import RelationIdUtil from "../Utils/Database/RelationIdUtil";
|
|
29
|
+
import NetworkDeviceOidTemplateService from "./NetworkDeviceOidTemplateService";
|
|
30
|
+
import SnmpOidListUtil, { MAX_DEVICE_SPECIFIC_OIDS, MAX_EFFECTIVE_OIDS_PER_DEVICE, } from "../../Types/Monitor/SnmpMonitor/SnmpOidListUtil";
|
|
29
31
|
import ModelPermission from "../Types/Database/Permissions/Index";
|
|
30
32
|
import QueryHelper from "../Types/Database/QueryHelper";
|
|
31
33
|
import AggregateResultUtil from "../Types/Database/AggregateResultUtil";
|
|
@@ -73,6 +75,22 @@ function readSiteIdFromData(data) {
|
|
|
73
75
|
}
|
|
74
76
|
// Both spellings of "the monitor that reports this device's health".
|
|
75
77
|
const MONITOR_KEYS = ["monitorId", "monitor"];
|
|
78
|
+
/*
|
|
79
|
+
* Both spellings of "the OID Collection Template this device collects". The
|
|
80
|
+
* settings page posts the `oidTemplate` relation and the bulk action posts
|
|
81
|
+
* the `oidTemplateId` column, so a guard that watched only one of them would
|
|
82
|
+
* be trivially bypassable from the UI.
|
|
83
|
+
*/
|
|
84
|
+
const OID_TEMPLATE_KEYS = ["oidTemplateId", "oidTemplate"];
|
|
85
|
+
function readOidTemplateIdFromData(data) {
|
|
86
|
+
/*
|
|
87
|
+
* readConsistent, not read: a payload that writes BOTH spellings with
|
|
88
|
+
* different ids would otherwise have one of them validated and the other
|
|
89
|
+
* persisted, which turns the cross-project guard below into something a
|
|
90
|
+
* caller can steer. It refuses the contradiction instead of picking.
|
|
91
|
+
*/
|
|
92
|
+
return RelationIdUtil.readConsistent(data, OID_TEMPLATE_KEYS, "OID Collection Template");
|
|
93
|
+
}
|
|
76
94
|
function readMonitorIdFromData(data) {
|
|
77
95
|
return RelationIdUtil.read(data, MONITOR_KEYS);
|
|
78
96
|
}
|
|
@@ -611,6 +629,38 @@ export class Service extends DatabaseService {
|
|
|
611
629
|
throw new BadDataException("Network site must belong to the same project.");
|
|
612
630
|
}
|
|
613
631
|
}
|
|
632
|
+
/*
|
|
633
|
+
* Same hole as siteId, and it matters more here: the FK behind
|
|
634
|
+
* oidTemplateId only requires the row to exist, not that it belongs to the
|
|
635
|
+
* device's project. Tenant scoping is applied to the ROOT query only, so a
|
|
636
|
+
* device pointed at another project's template would leak that template's
|
|
637
|
+
* name and OID list through every nested `select: { oidTemplate: ... }` the
|
|
638
|
+
* dashboard makes - and the poll would ship those OIDs to this project's
|
|
639
|
+
* probe. Refuse the link at the point it is written, rather than auditing
|
|
640
|
+
* it afterwards at poll time.
|
|
641
|
+
*/
|
|
642
|
+
async assertOidTemplateBelongsToProject(data) {
|
|
643
|
+
if (!data.projectId) {
|
|
644
|
+
return;
|
|
645
|
+
}
|
|
646
|
+
const oidTemplate = await NetworkDeviceOidTemplateService.findOneById({
|
|
647
|
+
id: data.oidTemplateId,
|
|
648
|
+
select: {
|
|
649
|
+
_id: true,
|
|
650
|
+
projectId: true,
|
|
651
|
+
},
|
|
652
|
+
props: {
|
|
653
|
+
isRoot: true,
|
|
654
|
+
},
|
|
655
|
+
});
|
|
656
|
+
if (!oidTemplate) {
|
|
657
|
+
throw new BadDataException("OID Collection Template not found.");
|
|
658
|
+
}
|
|
659
|
+
if (oidTemplate.projectId &&
|
|
660
|
+
oidTemplate.projectId.toString() !== data.projectId.toString()) {
|
|
661
|
+
throw new BadDataException("OID Collection Template must belong to the same project.");
|
|
662
|
+
}
|
|
663
|
+
}
|
|
614
664
|
/*
|
|
615
665
|
* onBeforeUpdate runs before DatabaseService permission-checks the query,
|
|
616
666
|
* so reading the raw client query as root would hand the hook rows from
|
|
@@ -635,6 +685,22 @@ export class Service extends DatabaseService {
|
|
|
635
685
|
projectId: createBy.data.projectId,
|
|
636
686
|
});
|
|
637
687
|
}
|
|
688
|
+
const createOidTemplateId = readOidTemplateIdFromData(createBy.data);
|
|
689
|
+
if (createOidTemplateId) {
|
|
690
|
+
await this.assertOidTemplateBelongsToProject({
|
|
691
|
+
oidTemplateId: createOidTemplateId,
|
|
692
|
+
projectId: createBy.data.projectId,
|
|
693
|
+
});
|
|
694
|
+
}
|
|
695
|
+
if (createBy.data.snmpOids !== undefined) {
|
|
696
|
+
// Same budget rule as onBeforeUpdate: the tight cap is what linking costs.
|
|
697
|
+
createBy.data.snmpOids = SnmpOidListUtil.validateOidList(createBy.data.snmpOids, {
|
|
698
|
+
max: createOidTemplateId
|
|
699
|
+
? MAX_DEVICE_SPECIFIC_OIDS
|
|
700
|
+
: MAX_EFFECTIVE_OIDS_PER_DEVICE,
|
|
701
|
+
label: "Device-Specific Health OIDs",
|
|
702
|
+
});
|
|
703
|
+
}
|
|
638
704
|
if (NetworkDeviceMonitoringMethodUtil.isMonitorBacked(createBy.data.monitoringMethod)) {
|
|
639
705
|
const monitorId = readMonitorIdFromData(createBy.data);
|
|
640
706
|
/*
|
|
@@ -802,7 +868,28 @@ export class Service extends DatabaseService {
|
|
|
802
868
|
const isIdentityChange = SITE_RULE_IDENTITY_COLUMNS.some((column) => {
|
|
803
869
|
return dataKeys.includes(column);
|
|
804
870
|
});
|
|
805
|
-
|
|
871
|
+
/*
|
|
872
|
+
* The OID writes have to get past this return too, and that is the whole
|
|
873
|
+
* reason they are named here.
|
|
874
|
+
*
|
|
875
|
+
* The early return exists so a write that changes neither site nor
|
|
876
|
+
* identity skips a read it does not need — but linking a template and
|
|
877
|
+
* editing snmpOids are EXACTLY such writes, so a guard placed below the
|
|
878
|
+
* return would be dead code on the only path it exists for. Both need the
|
|
879
|
+
* read: the tenancy check needs each matched device's projectId, and the
|
|
880
|
+
* OID cap needs to know whether the device is linked to a template.
|
|
881
|
+
*
|
|
882
|
+
* `!== undefined` rather than truthiness for the OID list: every poll
|
|
883
|
+
* writes device columns through this path (NetworkInventoryUtil), and an
|
|
884
|
+
* explicit empty array is a legitimate "collect nothing device-specific"
|
|
885
|
+
* edit.
|
|
886
|
+
*/
|
|
887
|
+
const isOidTemplateChange = RelationIdUtil.isWritten(dataKeys, OID_TEMPLATE_KEYS);
|
|
888
|
+
const isDeviceOidsChange = updateBy.data.snmpOids !== undefined;
|
|
889
|
+
if (!isSiteChange &&
|
|
890
|
+
!isIdentityChange &&
|
|
891
|
+
!isOidTemplateChange &&
|
|
892
|
+
!isDeviceOidsChange) {
|
|
806
893
|
return { updateBy, carryForward: null };
|
|
807
894
|
}
|
|
808
895
|
const previousDevices = await this.findBy({
|
|
@@ -814,6 +901,9 @@ export class Service extends DatabaseService {
|
|
|
814
901
|
hostname: true,
|
|
815
902
|
name: true,
|
|
816
903
|
sysName: true,
|
|
904
|
+
// Decide which OID budget applies below, and whether a link would truncate.
|
|
905
|
+
oidTemplateId: true,
|
|
906
|
+
snmpOids: true,
|
|
817
907
|
},
|
|
818
908
|
limit: LIMIT_MAX,
|
|
819
909
|
skip: 0,
|
|
@@ -836,6 +926,69 @@ export class Service extends DatabaseService {
|
|
|
836
926
|
});
|
|
837
927
|
}
|
|
838
928
|
}
|
|
929
|
+
const newOidTemplateId = readOidTemplateIdFromData(updateBy.data);
|
|
930
|
+
/*
|
|
931
|
+
* Same shape as the site guard above: one check per distinct project in
|
|
932
|
+
* the matched set, because a single updateBy can span devices from more
|
|
933
|
+
* than one project when a root caller issues it.
|
|
934
|
+
*/
|
|
935
|
+
if (newOidTemplateId) {
|
|
936
|
+
const checkedTemplateProjectIds = new Set();
|
|
937
|
+
for (const previousDevice of previousDevices) {
|
|
938
|
+
if (!previousDevice.projectId ||
|
|
939
|
+
checkedTemplateProjectIds.has(previousDevice.projectId.toString())) {
|
|
940
|
+
continue;
|
|
941
|
+
}
|
|
942
|
+
checkedTemplateProjectIds.add(previousDevice.projectId.toString());
|
|
943
|
+
await this.assertOidTemplateBelongsToProject({
|
|
944
|
+
oidTemplateId: newOidTemplateId,
|
|
945
|
+
projectId: previousDevice.projectId,
|
|
946
|
+
});
|
|
947
|
+
}
|
|
948
|
+
}
|
|
949
|
+
/*
|
|
950
|
+
* How many OIDs a device may carry of its own.
|
|
951
|
+
*
|
|
952
|
+
* The tight budget is a consequence of ADOPTING a template, not a
|
|
953
|
+
* retroactive limit on every device that already exists. A device with no
|
|
954
|
+
* template collects only its own list, so its ceiling is the full
|
|
955
|
+
* per-device budget; the moment it links to one, template plus
|
|
956
|
+
* device-specific has to fit inside that same ceiling, and the
|
|
957
|
+
* device-specific half is what gives.
|
|
958
|
+
*
|
|
959
|
+
* Enforcing the tight budget unconditionally would have been hostile in
|
|
960
|
+
* exactly the wrong direction: a device that predates this feature, with a
|
|
961
|
+
* long hand-built list, could no longer save ANY polling setting — the
|
|
962
|
+
* fleet in issue #3507 being the likeliest example.
|
|
963
|
+
*/
|
|
964
|
+
/*
|
|
965
|
+
* Linking a device whose STORED list already exceeds the device-specific
|
|
966
|
+
* budget would leave the merge over the effective ceiling, and truncation
|
|
967
|
+
* drops from the end — so the operator's own OIDs would silently stop
|
|
968
|
+
* being polled, on a write that never mentioned them. Refuse the link and
|
|
969
|
+
* say what to trim, rather than accepting it and losing data at poll time.
|
|
970
|
+
*/
|
|
971
|
+
if (isOidTemplateChange && newOidTemplateId && !isDeviceOidsChange) {
|
|
972
|
+
for (const previousDevice of previousDevices) {
|
|
973
|
+
const storedOidCount = (previousDevice.snmpOids || []).length;
|
|
974
|
+
if (storedOidCount > MAX_DEVICE_SPECIFIC_OIDS) {
|
|
975
|
+
throw new BadDataException(`This device has ${storedOidCount} device-specific Health OIDs, and a device linked to an OID Collection Template may keep at most ${MAX_DEVICE_SPECIFIC_OIDS} of its own. Remove ${storedOidCount - MAX_DEVICE_SPECIFIC_OIDS} of them - or move them onto the template - before linking it.`);
|
|
976
|
+
}
|
|
977
|
+
}
|
|
978
|
+
}
|
|
979
|
+
if (isDeviceOidsChange) {
|
|
980
|
+
const becomesLinked = isOidTemplateChange
|
|
981
|
+
? Boolean(newOidTemplateId)
|
|
982
|
+
: previousDevices.some((previousDevice) => {
|
|
983
|
+
return Boolean(previousDevice.oidTemplateId);
|
|
984
|
+
});
|
|
985
|
+
updateBy.data.snmpOids = SnmpOidListUtil.validateOidList(updateBy.data.snmpOids, {
|
|
986
|
+
max: becomesLinked
|
|
987
|
+
? MAX_DEVICE_SPECIFIC_OIDS
|
|
988
|
+
: MAX_EFFECTIVE_OIDS_PER_DEVICE,
|
|
989
|
+
label: "Device-Specific Health OIDs",
|
|
990
|
+
});
|
|
991
|
+
}
|
|
839
992
|
return {
|
|
840
993
|
updateBy,
|
|
841
994
|
carryForward: {
|