@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
|
@@ -0,0 +1,333 @@
|
|
|
1
|
+
import BadDataException from "../../Exception/BadDataException";
|
|
2
|
+
import SnmpOid from "./SnmpOid";
|
|
3
|
+
|
|
4
|
+
/*
|
|
5
|
+
* The one place that decides what a network device actually polls.
|
|
6
|
+
*
|
|
7
|
+
* A device's health OIDs come from two places now: the OID Collection
|
|
8
|
+
* Template it is linked to, and its own `snmpOids` column. Nothing is ever
|
|
9
|
+
* copied between them — the two lists are merged fresh on every poll in
|
|
10
|
+
* NetworkDevicePoll, which is why editing a template changes collection for
|
|
11
|
+
* every linked device without a single write to NetworkDevice.
|
|
12
|
+
*
|
|
13
|
+
* That makes this file load-bearing in three places at once: the poll path
|
|
14
|
+
* that builds the probe payload, the two service validators that reject a
|
|
15
|
+
* bad list at save time, and the dashboard, which has to show an operator
|
|
16
|
+
* the same effective list the probe will receive. Keep it pure so all three
|
|
17
|
+
* can share it.
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
/*
|
|
21
|
+
* A numeric dotted OID: at least two arcs, digits only. Deliberately not a
|
|
22
|
+
* MIB-name parser — the probe issues these verbatim to net-snmp, which
|
|
23
|
+
* accepts nothing else, and a symbolic name that reaches it is a silent
|
|
24
|
+
* "no such object" rather than an error.
|
|
25
|
+
*/
|
|
26
|
+
const OID_SYNTAX: RegExp = /^\d+(\.\d+)+$/;
|
|
27
|
+
|
|
28
|
+
/*
|
|
29
|
+
* The three caps COMPOSE, and that is the whole point of the numbers.
|
|
30
|
+
*
|
|
31
|
+
* A template may hold 150 OIDs and a device may add 50 of its own, so the
|
|
32
|
+
* merged list can never exceed 200. Both write paths validate their own side
|
|
33
|
+
* against their own cap, and together they make the poll-time truncation
|
|
34
|
+
* further down unreachable - which matters because truncation drops from the
|
|
35
|
+
* END, and template entries are deliberately the stable prefix, so the
|
|
36
|
+
* entries lost would always be the operator's own device-specific ones.
|
|
37
|
+
* Somebody growing a shared template must never be able to silently stop a
|
|
38
|
+
* device collecting an OID they never touched.
|
|
39
|
+
*
|
|
40
|
+
* Validating each side independently against one 200 cap would NOT compose:
|
|
41
|
+
* 200 plus 200 is 400, and the operator who loses OIDs is not the operator
|
|
42
|
+
* who made the edit.
|
|
43
|
+
*/
|
|
44
|
+
export const MAX_OIDS_PER_TEMPLATE: number = 150;
|
|
45
|
+
export const MAX_DEVICE_SPECIFIC_OIDS: number = 50;
|
|
46
|
+
export const MAX_EFFECTIVE_OIDS_PER_DEVICE: number =
|
|
47
|
+
MAX_OIDS_PER_TEMPLATE + MAX_DEVICE_SPECIFIC_OIDS;
|
|
48
|
+
|
|
49
|
+
/*
|
|
50
|
+
* A name is carried to the probe and lands on every metric row as an
|
|
51
|
+
* attribute, so it is bounded here rather than left an unbounded string
|
|
52
|
+
* multiplied by every device in a poll batch.
|
|
53
|
+
*/
|
|
54
|
+
export const MAX_OID_NAME_LENGTH: number = 100;
|
|
55
|
+
|
|
56
|
+
/*
|
|
57
|
+
* Per-walk metric caps, previously a private const in
|
|
58
|
+
* NetworkDeviceMetricUtil and a bare literal in MonitorMetricUtil. Both now
|
|
59
|
+
* import these. The OID cap was 50 while nothing capped how many OIDs a
|
|
60
|
+
* device could be configured with, so a long list silently charted its first
|
|
61
|
+
* 50 in jsonb array order and warned to a log nobody reads.
|
|
62
|
+
*/
|
|
63
|
+
export const MAX_OID_METRIC_SERIES: number = MAX_EFFECTIVE_OIDS_PER_DEVICE;
|
|
64
|
+
export const MAX_INTERFACE_METRIC_SERIES: number = 200;
|
|
65
|
+
|
|
66
|
+
/*
|
|
67
|
+
* The specific OIDs the poll already turns into a real, per-port metric
|
|
68
|
+
* series - and ONLY those.
|
|
69
|
+
*
|
|
70
|
+
* Deliberately a short list of columns rather than the whole ifTable
|
|
71
|
+
* subtree. The walk parses twelve ifTable columns, but most of them go
|
|
72
|
+
* nowhere a user can reach: in and out errors are emitted only as a COMBINED
|
|
73
|
+
* rate, discards are parsed and dropped, and speed and admin status are
|
|
74
|
+
* stored on NetworkInterface without ever becoming metrics. For those,
|
|
75
|
+
* typing the OID by hand is currently the only way to get a series, so
|
|
76
|
+
* warning "this is already collected" would be false and would talk an
|
|
77
|
+
* operator out of the only thing that works.
|
|
78
|
+
*
|
|
79
|
+
* What IS listed here is the set behind issue #3507: the reporter was about
|
|
80
|
+
* to hand-type a hundred per-port OIDs for exactly these counters, which the
|
|
81
|
+
* interface walk already emits per port, keyed by interfaceName and
|
|
82
|
+
* interfaceIndex.
|
|
83
|
+
*/
|
|
84
|
+
const ALREADY_COLLECTED_OID_COLUMNS: Array<{
|
|
85
|
+
prefix: string;
|
|
86
|
+
collectedBy: string;
|
|
87
|
+
}> = [
|
|
88
|
+
{
|
|
89
|
+
// ifOperStatus
|
|
90
|
+
prefix: "1.3.6.1.2.1.2.2.1.8.",
|
|
91
|
+
collectedBy: "an up/down series for every port",
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
// ifInOctets
|
|
95
|
+
prefix: "1.3.6.1.2.1.2.2.1.10.",
|
|
96
|
+
collectedBy: "an inbound bits/second series for every port",
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
// ifOutOctets
|
|
100
|
+
prefix: "1.3.6.1.2.1.2.2.1.16.",
|
|
101
|
+
collectedBy: "an outbound bits/second series for every port",
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
// ifHCInOctets
|
|
105
|
+
prefix: "1.3.6.1.2.1.31.1.1.1.6.",
|
|
106
|
+
collectedBy: "an inbound bits/second series for every port",
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
// ifHCOutOctets
|
|
110
|
+
prefix: "1.3.6.1.2.1.31.1.1.1.10.",
|
|
111
|
+
collectedBy: "an outbound bits/second series for every port",
|
|
112
|
+
},
|
|
113
|
+
];
|
|
114
|
+
|
|
115
|
+
export interface ValidateOidListOptions {
|
|
116
|
+
max: number;
|
|
117
|
+
// Names the list in every error message: "OID Collection Template", etc.
|
|
118
|
+
label: string;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
export interface ResolveEffectiveOidsData {
|
|
122
|
+
deviceOids: Array<SnmpOid> | undefined;
|
|
123
|
+
templateOids: Array<SnmpOid> | undefined;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
export interface EffectiveOidResolution {
|
|
127
|
+
oids: Array<SnmpOid>;
|
|
128
|
+
// How many entries the cap removed. Zero on every well-formed list.
|
|
129
|
+
truncatedCount: number;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
export default class SnmpOidListUtil {
|
|
133
|
+
/**
|
|
134
|
+
* Canonical form of an OID string, for comparison and for storage.
|
|
135
|
+
*
|
|
136
|
+
* The single leading dot is the one that matters: ".1.3.6.1" and "1.3.6.1"
|
|
137
|
+
* are the same object, operators type both, and net-snmp answers with the
|
|
138
|
+
* dotless form. Storing the canonical form is what lets criteria compare
|
|
139
|
+
* a configured OID against a walk response with ===.
|
|
140
|
+
*/
|
|
141
|
+
public static normalizeOid(oid: string | undefined): string {
|
|
142
|
+
let normalized: string = (oid || "").trim();
|
|
143
|
+
|
|
144
|
+
if (normalized.startsWith(".")) {
|
|
145
|
+
normalized = normalized.slice(1);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
return normalized;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
public static isValidOid(oid: string | undefined): boolean {
|
|
152
|
+
return OID_SYNTAX.test(SnmpOidListUtil.normalizeOid(oid));
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* What the poll already collects this OID as, or undefined. Advisory only:
|
|
157
|
+
* the editor warns, it never blocks, because an operator may still want an
|
|
158
|
+
* undimensioned scalar series for one specific port.
|
|
159
|
+
*/
|
|
160
|
+
public static getAlreadyCollectedBy(
|
|
161
|
+
oid: string | undefined,
|
|
162
|
+
): string | undefined {
|
|
163
|
+
const normalized: string = SnmpOidListUtil.normalizeOid(oid);
|
|
164
|
+
|
|
165
|
+
for (const entry of ALREADY_COLLECTED_OID_COLUMNS) {
|
|
166
|
+
if (normalized.startsWith(entry.prefix)) {
|
|
167
|
+
return entry.collectedBy;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
return undefined;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* Sanitize an OID list at save time, refusing what an operator has to fix
|
|
176
|
+
* by hand and quietly dropping what is only an editor artifact.
|
|
177
|
+
*
|
|
178
|
+
* Both write paths use this: the template service and the device service.
|
|
179
|
+
* Nothing validated snmpOids before, which was survivable when one bad row
|
|
180
|
+
* broke one device; with a template it would break every device linked to
|
|
181
|
+
* it.
|
|
182
|
+
*
|
|
183
|
+
* The split between dropping and throwing is deliberate, and it is about
|
|
184
|
+
* NOT locking anyone out of a settings card they need. Blank rows are what
|
|
185
|
+
* SnmpOidEditor's "Add OID" button leaves behind when a user clicks it and
|
|
186
|
+
* changes their mind, and duplicates can already exist in data written
|
|
187
|
+
* before any of this validation did - both are dropped silently, because
|
|
188
|
+
* refusing them would mean a device carrying one legacy artifact could
|
|
189
|
+
* never be linked to a template until somebody hunted the row down. A
|
|
190
|
+
* genuinely malformed OID does throw: it has never collected anything, the
|
|
191
|
+
* message names it, and the editor that reports the error is on the same
|
|
192
|
+
* card.
|
|
193
|
+
*/
|
|
194
|
+
public static validateOidList(
|
|
195
|
+
oids: Array<SnmpOid> | undefined,
|
|
196
|
+
options: ValidateOidListOptions,
|
|
197
|
+
): Array<SnmpOid> {
|
|
198
|
+
const list: Array<SnmpOid> = oids || [];
|
|
199
|
+
|
|
200
|
+
const seen: Set<string> = new Set();
|
|
201
|
+
const sanitized: Array<SnmpOid> = [];
|
|
202
|
+
|
|
203
|
+
for (const entry of list) {
|
|
204
|
+
const normalized: string = SnmpOidListUtil.normalizeOid(entry.oid);
|
|
205
|
+
|
|
206
|
+
// Editor artifact, not user intent.
|
|
207
|
+
if (!normalized) {
|
|
208
|
+
continue;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
if (!OID_SYNTAX.test(normalized)) {
|
|
212
|
+
throw new BadDataException(
|
|
213
|
+
`${options.label}: "${entry.oid}" is not a numeric OID. Use dotted numbers, for example 1.3.6.1.2.1.1.3.0.`,
|
|
214
|
+
);
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
// Keep the first spelling of a duplicate, drop the rest.
|
|
218
|
+
if (seen.has(normalized)) {
|
|
219
|
+
continue;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
seen.add(normalized);
|
|
223
|
+
|
|
224
|
+
const name: string | undefined = entry.name?.trim()
|
|
225
|
+
? entry.name.trim().substring(0, MAX_OID_NAME_LENGTH)
|
|
226
|
+
: undefined;
|
|
227
|
+
|
|
228
|
+
sanitized.push({
|
|
229
|
+
...entry,
|
|
230
|
+
oid: normalized,
|
|
231
|
+
...(name === undefined ? {} : { name: name }),
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
/*
|
|
236
|
+
* Counted AFTER sanitizing, so blank rows and duplicates cannot push a
|
|
237
|
+
* legitimate list over the limit.
|
|
238
|
+
*/
|
|
239
|
+
if (sanitized.length > options.max) {
|
|
240
|
+
throw new BadDataException(
|
|
241
|
+
`${options.label}: ${sanitized.length} OIDs is more than the limit of ${options.max}. Remove some, or move them to another template.`,
|
|
242
|
+
);
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
return sanitized;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
/**
|
|
249
|
+
* Merge a template's OIDs with a device's own into the list the probe
|
|
250
|
+
* receives.
|
|
251
|
+
*
|
|
252
|
+
* Template entries come FIRST, in template order, and that ordering is
|
|
253
|
+
* load-bearing rather than cosmetic: the effective cap truncates from the
|
|
254
|
+
* end, so the shared items a whole device type depends on have to be the
|
|
255
|
+
* stable prefix. If device additions came first, adding one local OID
|
|
256
|
+
* could silently push a template OID off the end of every device that has
|
|
257
|
+
* one.
|
|
258
|
+
*
|
|
259
|
+
* A duplicate resolves to the DEVICE's entry — it keeps whatever name and
|
|
260
|
+
* description the operator gave it — but it stays at the TEMPLATE's
|
|
261
|
+
* position, for the same reason.
|
|
262
|
+
*
|
|
263
|
+
* Malformed rows are dropped rather than thrown on, because this runs on
|
|
264
|
+
* the poll path against data that was already persisted. The validators
|
|
265
|
+
* above are where a bad row is refused; here, one bad row must not stop a
|
|
266
|
+
* device polling the other ninety-nine.
|
|
267
|
+
*/
|
|
268
|
+
public static mergeOidLists(
|
|
269
|
+
templateOids: Array<SnmpOid> | undefined,
|
|
270
|
+
deviceOids: Array<SnmpOid> | undefined,
|
|
271
|
+
): Array<SnmpOid> {
|
|
272
|
+
const merged: Array<SnmpOid> = [];
|
|
273
|
+
const indexByOid: Map<string, number> = new Map();
|
|
274
|
+
|
|
275
|
+
const all: Array<SnmpOid> = [
|
|
276
|
+
...(templateOids || []),
|
|
277
|
+
...(deviceOids || []),
|
|
278
|
+
];
|
|
279
|
+
|
|
280
|
+
for (const entry of all) {
|
|
281
|
+
const normalized: string = SnmpOidListUtil.normalizeOid(entry.oid);
|
|
282
|
+
|
|
283
|
+
if (!normalized || !OID_SYNTAX.test(normalized)) {
|
|
284
|
+
continue;
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
const normalizedEntry: SnmpOid = {
|
|
288
|
+
...entry,
|
|
289
|
+
oid: normalized,
|
|
290
|
+
};
|
|
291
|
+
|
|
292
|
+
const existingIndex: number | undefined = indexByOid.get(normalized);
|
|
293
|
+
|
|
294
|
+
if (existingIndex === undefined) {
|
|
295
|
+
indexByOid.set(normalized, merged.length);
|
|
296
|
+
merged.push(normalizedEntry);
|
|
297
|
+
continue;
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
// Device entry wins on content, template keeps the position.
|
|
301
|
+
merged[existingIndex] = normalizedEntry;
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
return merged;
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
/**
|
|
308
|
+
* What this device polls, capped. The cap should be unreachable — both
|
|
309
|
+
* write paths reject an over-cap list with an error the operator can see —
|
|
310
|
+
* so this is the backstop for a template that grew after devices linked to
|
|
311
|
+
* it.
|
|
312
|
+
*/
|
|
313
|
+
public static resolveEffectiveOids(
|
|
314
|
+
data: ResolveEffectiveOidsData,
|
|
315
|
+
): EffectiveOidResolution {
|
|
316
|
+
const merged: Array<SnmpOid> = SnmpOidListUtil.mergeOidLists(
|
|
317
|
+
data.templateOids,
|
|
318
|
+
data.deviceOids,
|
|
319
|
+
);
|
|
320
|
+
|
|
321
|
+
if (merged.length <= MAX_EFFECTIVE_OIDS_PER_DEVICE) {
|
|
322
|
+
return {
|
|
323
|
+
oids: merged,
|
|
324
|
+
truncatedCount: 0,
|
|
325
|
+
};
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
return {
|
|
329
|
+
oids: merged.slice(0, MAX_EFFECTIVE_OIDS_PER_DEVICE),
|
|
330
|
+
truncatedCount: merged.length - MAX_EFFECTIVE_OIDS_PER_DEVICE,
|
|
331
|
+
};
|
|
332
|
+
}
|
|
333
|
+
}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import {
|
|
2
|
+
NetworkTopologyDeviceRole,
|
|
3
|
+
NetworkTopologyNodeShape,
|
|
4
|
+
} from "../Monitor/SnmpMonitor/NetworkTopology";
|
|
5
|
+
|
|
6
|
+
/*
|
|
7
|
+
* The device roles seeded into every project.
|
|
8
|
+
*
|
|
9
|
+
* Device roles used to be a fixed union (NetworkTopologyDeviceRole) with the
|
|
10
|
+
* label, the silhouette and the "is this a core device?" flag each hardcoded
|
|
11
|
+
* in a different module. They are now the per-project NetworkDeviceRole
|
|
12
|
+
* lookup table, so a project can rename "Wireless AP" to "Access Point",
|
|
13
|
+
* change what a firewall is drawn as, or add a role of its own.
|
|
14
|
+
*
|
|
15
|
+
* This file is the single source of truth for the DEFAULTS, shared by
|
|
16
|
+
* ProjectService (which seeds new projects) and the BackfillNetworkDeviceRoles
|
|
17
|
+
* data migration (which seeds projects that predate the table), so the two can
|
|
18
|
+
* never disagree about what a fresh project starts with.
|
|
19
|
+
*
|
|
20
|
+
* `key` is deliberately the built-in NetworkTopologyDeviceRole value. The SNMP
|
|
21
|
+
* classifier speaks that vocabulary and always will — it is evidence-driven
|
|
22
|
+
* and cannot invent a project's custom role — so matching its answer back to a
|
|
23
|
+
* configured row is a lookup by this key. That is also why the key is stable
|
|
24
|
+
* and the name is not: renaming a role must not stop the classifier finding it.
|
|
25
|
+
*/
|
|
26
|
+
export interface DefaultNetworkDeviceRole {
|
|
27
|
+
key: NetworkTopologyDeviceRole;
|
|
28
|
+
name: string;
|
|
29
|
+
description: string;
|
|
30
|
+
topologyShape: NetworkTopologyNodeShape;
|
|
31
|
+
isCoreLayer: boolean;
|
|
32
|
+
isSnmpWalkable: boolean;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/*
|
|
36
|
+
* Ordered exactly as the map legend lists them, because the seeded `order`
|
|
37
|
+
* column is this array's index — a fresh project's settings page and its map
|
|
38
|
+
* legend therefore read in the same sequence.
|
|
39
|
+
*
|
|
40
|
+
* The shapes reproduce the renderer's historical SHAPE_BY_ROLE map and the
|
|
41
|
+
* isCoreLayer flags reproduce its CORE_DEVICE_ROLES set, so a project seeded
|
|
42
|
+
* from this list draws exactly the map it drew before roles were configurable.
|
|
43
|
+
*
|
|
44
|
+
* "unknown" is not here on purpose. It is not a role an operator assigns; it
|
|
45
|
+
* is the classifier saying it has no answer, and offering it as a choice would
|
|
46
|
+
* mean "stop classifying this device forever" rather than "I don't know".
|
|
47
|
+
*/
|
|
48
|
+
export const DEFAULT_NETWORK_DEVICE_ROLES: ReadonlyArray<DefaultNetworkDeviceRole> =
|
|
49
|
+
[
|
|
50
|
+
{
|
|
51
|
+
key: "router",
|
|
52
|
+
name: "Router",
|
|
53
|
+
description:
|
|
54
|
+
"Moves traffic between networks. Sits at the top of the topology with the other core devices.",
|
|
55
|
+
topologyShape: "circle",
|
|
56
|
+
isCoreLayer: true,
|
|
57
|
+
isSnmpWalkable: true,
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
key: "switch",
|
|
61
|
+
name: "Switch",
|
|
62
|
+
description:
|
|
63
|
+
"Access or distribution switching. Endpoints hang off it, and it hangs off a core device.",
|
|
64
|
+
topologyShape: "rounded-square",
|
|
65
|
+
isCoreLayer: false,
|
|
66
|
+
isSnmpWalkable: true,
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
key: "firewall",
|
|
70
|
+
name: "Firewall",
|
|
71
|
+
description:
|
|
72
|
+
"Security appliance at a network boundary. Drawn at core level.",
|
|
73
|
+
topologyShape: "diamond",
|
|
74
|
+
isCoreLayer: true,
|
|
75
|
+
isSnmpWalkable: true,
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
key: "wirelessAccessPoint",
|
|
79
|
+
name: "Wireless AP",
|
|
80
|
+
description: "Wireless access point serving client devices.",
|
|
81
|
+
topologyShape: "triangle",
|
|
82
|
+
isCoreLayer: false,
|
|
83
|
+
isSnmpWalkable: true,
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
key: "loadBalancer",
|
|
87
|
+
name: "Load balancer",
|
|
88
|
+
description:
|
|
89
|
+
"Distributes traffic across a pool of servers. Drawn at core level.",
|
|
90
|
+
topologyShape: "hexagon",
|
|
91
|
+
isCoreLayer: true,
|
|
92
|
+
isSnmpWalkable: true,
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
key: "server",
|
|
96
|
+
name: "Server",
|
|
97
|
+
description: "A general purpose server or compute node.",
|
|
98
|
+
topologyShape: "tower",
|
|
99
|
+
isCoreLayer: false,
|
|
100
|
+
isSnmpWalkable: true,
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
key: "storage",
|
|
104
|
+
name: "Storage",
|
|
105
|
+
description: "A NAS, SAN or other storage appliance.",
|
|
106
|
+
topologyShape: "cylinder",
|
|
107
|
+
isCoreLayer: false,
|
|
108
|
+
isSnmpWalkable: true,
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
key: "printer",
|
|
112
|
+
name: "Printer",
|
|
113
|
+
description: "A network printer or multifunction device.",
|
|
114
|
+
topologyShape: "rect",
|
|
115
|
+
isCoreLayer: false,
|
|
116
|
+
isSnmpWalkable: false,
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
key: "camera",
|
|
120
|
+
name: "Camera",
|
|
121
|
+
description: "An IP camera or other video endpoint.",
|
|
122
|
+
topologyShape: "rect",
|
|
123
|
+
isCoreLayer: false,
|
|
124
|
+
isSnmpWalkable: false,
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
key: "phone",
|
|
128
|
+
name: "IP phone",
|
|
129
|
+
description: "A VoIP handset or conference phone.",
|
|
130
|
+
topologyShape: "rect",
|
|
131
|
+
isCoreLayer: false,
|
|
132
|
+
isSnmpWalkable: false,
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
key: "host",
|
|
136
|
+
name: "Host",
|
|
137
|
+
description:
|
|
138
|
+
"Anything plugged into an access port that is not one of the roles above.",
|
|
139
|
+
topologyShape: "rect",
|
|
140
|
+
isCoreLayer: false,
|
|
141
|
+
isSnmpWalkable: false,
|
|
142
|
+
},
|
|
143
|
+
];
|
|
144
|
+
|
|
145
|
+
export default DEFAULT_NETWORK_DEVICE_ROLES;
|
package/Types/Permission.ts
CHANGED
|
@@ -101,6 +101,25 @@ enum Permission {
|
|
|
101
101
|
TelemetryMember = "TelemetryMember",
|
|
102
102
|
TelemetryViewer = "TelemetryViewer",
|
|
103
103
|
|
|
104
|
+
/*
|
|
105
|
+
* SIEM data is its own domain, not a fourth telemetry signal. Security
|
|
106
|
+
* events, the Sigma detection rules over them, the threat-intel feeds and
|
|
107
|
+
* their indicators, and the SecOps connector credentials all read through
|
|
108
|
+
* these three tiers and through nothing else that is handed out broadly -
|
|
109
|
+
* not ProjectMember, not the project-wide Viewer, not the Telemetry tiers.
|
|
110
|
+
*
|
|
111
|
+
* That exclusion is the whole point of the family. A SIEM holds authentication
|
|
112
|
+
* failures, privilege escalations and the analyst's own investigation trail;
|
|
113
|
+
* "everyone who can open a dashboard can read it" is not an access policy an
|
|
114
|
+
* organisation deploying one can accept. Whoever should see it is given a
|
|
115
|
+
* Security tier deliberately, the same way BillingViewer is given
|
|
116
|
+
* deliberately, and everybody else - including a Telemetry Admin with the run
|
|
117
|
+
* of every log, metric and trace in the project - sees nothing.
|
|
118
|
+
*/
|
|
119
|
+
SecurityAdmin = "SecurityAdmin",
|
|
120
|
+
SecurityMember = "SecurityMember",
|
|
121
|
+
SecurityViewer = "SecurityViewer",
|
|
122
|
+
|
|
104
123
|
SettingsAdmin = "SettingsAdmin",
|
|
105
124
|
SettingsMember = "SettingsMember",
|
|
106
125
|
SettingsViewer = "SettingsViewer",
|
|
@@ -617,6 +636,11 @@ enum Permission {
|
|
|
617
636
|
EditNetworkDeviceAutoImportRule = "EditNetworkDeviceAutoImportRule",
|
|
618
637
|
ReadNetworkDeviceAutoImportRule = "ReadNetworkDeviceAutoImportRule",
|
|
619
638
|
|
|
639
|
+
CreateNetworkDeviceOidTemplate = "CreateNetworkDeviceOidTemplate",
|
|
640
|
+
DeleteNetworkDeviceOidTemplate = "DeleteNetworkDeviceOidTemplate",
|
|
641
|
+
EditNetworkDeviceOidTemplate = "EditNetworkDeviceOidTemplate",
|
|
642
|
+
ReadNetworkDeviceOidTemplate = "ReadNetworkDeviceOidTemplate",
|
|
643
|
+
|
|
620
644
|
// Podman Host Label Rule Permissions
|
|
621
645
|
CreatePodmanHostLabelRule = "CreatePodmanHostLabelRule",
|
|
622
646
|
DeletePodmanHostLabelRule = "DeletePodmanHostLabelRule",
|
|
@@ -1369,6 +1393,11 @@ enum Permission {
|
|
|
1369
1393
|
EditNetworkSiteType = "EditNetworkSiteType",
|
|
1370
1394
|
ReadNetworkSiteType = "ReadNetworkSiteType",
|
|
1371
1395
|
|
|
1396
|
+
CreateNetworkDeviceRole = "CreateNetworkDeviceRole",
|
|
1397
|
+
DeleteNetworkDeviceRole = "DeleteNetworkDeviceRole",
|
|
1398
|
+
EditNetworkDeviceRole = "EditNetworkDeviceRole",
|
|
1399
|
+
ReadNetworkDeviceRole = "ReadNetworkDeviceRole",
|
|
1400
|
+
|
|
1372
1401
|
CreateRecommendationDismissal = "CreateRecommendationDismissal",
|
|
1373
1402
|
DeleteRecommendationDismissal = "DeleteRecommendationDismissal",
|
|
1374
1403
|
EditRecommendationDismissal = "EditRecommendationDismissal",
|
|
@@ -2371,6 +2400,36 @@ export class PermissionHelper {
|
|
|
2371
2400
|
isRolePermission: true,
|
|
2372
2401
|
group: PermissionGroup.Telemetry,
|
|
2373
2402
|
},
|
|
2403
|
+
{
|
|
2404
|
+
permission: Permission.SecurityAdmin,
|
|
2405
|
+
title: "Security Admin",
|
|
2406
|
+
description:
|
|
2407
|
+
"Full control over the SIEM: security events, Sigma detection rules, threat intelligence feeds and indicators, and Google SecOps connections. Security data is not readable through any other role.",
|
|
2408
|
+
isAssignableToTenant: true,
|
|
2409
|
+
isAccessControlPermission: false,
|
|
2410
|
+
isRolePermission: true,
|
|
2411
|
+
group: PermissionGroup.Security,
|
|
2412
|
+
},
|
|
2413
|
+
{
|
|
2414
|
+
permission: Permission.SecurityMember,
|
|
2415
|
+
title: "Security Member",
|
|
2416
|
+
description:
|
|
2417
|
+
"Can read security events and threat intelligence, and create, edit, and delete detection rules and threat intel feeds. Cannot configure Google SecOps connections.",
|
|
2418
|
+
isAssignableToTenant: true,
|
|
2419
|
+
isAccessControlPermission: false,
|
|
2420
|
+
isRolePermission: true,
|
|
2421
|
+
group: PermissionGroup.Security,
|
|
2422
|
+
},
|
|
2423
|
+
{
|
|
2424
|
+
permission: Permission.SecurityViewer,
|
|
2425
|
+
title: "Security Viewer",
|
|
2426
|
+
description:
|
|
2427
|
+
"Read-only access to security events, detection rules, threat intelligence feeds, and indicators.",
|
|
2428
|
+
isAssignableToTenant: true,
|
|
2429
|
+
isAccessControlPermission: false,
|
|
2430
|
+
isRolePermission: true,
|
|
2431
|
+
group: PermissionGroup.Security,
|
|
2432
|
+
},
|
|
2374
2433
|
{
|
|
2375
2434
|
permission: Permission.SettingsAdmin,
|
|
2376
2435
|
title: "Settings Admin",
|
|
@@ -8518,6 +8577,46 @@ export class PermissionHelper {
|
|
|
8518
8577
|
isRolePermission: false,
|
|
8519
8578
|
group: PermissionGroup.Monitor,
|
|
8520
8579
|
},
|
|
8580
|
+
{
|
|
8581
|
+
permission: Permission.CreateNetworkDeviceRole,
|
|
8582
|
+
title: "Create Network Device Role",
|
|
8583
|
+
description:
|
|
8584
|
+
"This permission can create Network Device Role in this project.",
|
|
8585
|
+
isAssignableToTenant: true,
|
|
8586
|
+
isAccessControlPermission: false,
|
|
8587
|
+
isRolePermission: false,
|
|
8588
|
+
group: PermissionGroup.Monitor,
|
|
8589
|
+
},
|
|
8590
|
+
{
|
|
8591
|
+
permission: Permission.DeleteNetworkDeviceRole,
|
|
8592
|
+
title: "Delete Network Device Role",
|
|
8593
|
+
description:
|
|
8594
|
+
"This permission can delete Network Device Role of this project.",
|
|
8595
|
+
isAssignableToTenant: true,
|
|
8596
|
+
isAccessControlPermission: true,
|
|
8597
|
+
isRolePermission: false,
|
|
8598
|
+
group: PermissionGroup.Monitor,
|
|
8599
|
+
},
|
|
8600
|
+
{
|
|
8601
|
+
permission: Permission.EditNetworkDeviceRole,
|
|
8602
|
+
title: "Edit Network Device Role",
|
|
8603
|
+
description:
|
|
8604
|
+
"This permission can edit Network Device Role of this project.",
|
|
8605
|
+
isAssignableToTenant: true,
|
|
8606
|
+
isAccessControlPermission: true,
|
|
8607
|
+
isRolePermission: false,
|
|
8608
|
+
group: PermissionGroup.Monitor,
|
|
8609
|
+
},
|
|
8610
|
+
{
|
|
8611
|
+
permission: Permission.ReadNetworkDeviceRole,
|
|
8612
|
+
title: "Read Network Device Role",
|
|
8613
|
+
description:
|
|
8614
|
+
"This permission can read Network Device Role of this project.",
|
|
8615
|
+
isAssignableToTenant: true,
|
|
8616
|
+
isAccessControlPermission: true,
|
|
8617
|
+
isRolePermission: false,
|
|
8618
|
+
group: PermissionGroup.Monitor,
|
|
8619
|
+
},
|
|
8521
8620
|
{
|
|
8522
8621
|
permission: Permission.CreateRecommendationDismissal,
|
|
8523
8622
|
title: "Create Recommendation Dismissal",
|
|
@@ -12341,6 +12440,48 @@ export class PermissionHelper {
|
|
|
12341
12440
|
group: PermissionGroup.Telemetry,
|
|
12342
12441
|
},
|
|
12343
12442
|
|
|
12443
|
+
// OID Collection Template Permissions
|
|
12444
|
+
{
|
|
12445
|
+
permission: Permission.CreateNetworkDeviceOidTemplate,
|
|
12446
|
+
title: "Create OID Collection Template",
|
|
12447
|
+
description:
|
|
12448
|
+
"This permission can create OID Collection Templates in this project.",
|
|
12449
|
+
isAssignableToTenant: true,
|
|
12450
|
+
isAccessControlPermission: false,
|
|
12451
|
+
isRolePermission: false,
|
|
12452
|
+
group: PermissionGroup.Telemetry,
|
|
12453
|
+
},
|
|
12454
|
+
{
|
|
12455
|
+
permission: Permission.DeleteNetworkDeviceOidTemplate,
|
|
12456
|
+
title: "Delete OID Collection Template",
|
|
12457
|
+
description:
|
|
12458
|
+
"This permission can delete OID Collection Templates of this project.",
|
|
12459
|
+
isAssignableToTenant: true,
|
|
12460
|
+
isAccessControlPermission: false,
|
|
12461
|
+
isRolePermission: false,
|
|
12462
|
+
group: PermissionGroup.Telemetry,
|
|
12463
|
+
},
|
|
12464
|
+
{
|
|
12465
|
+
permission: Permission.EditNetworkDeviceOidTemplate,
|
|
12466
|
+
title: "Edit OID Collection Template",
|
|
12467
|
+
description:
|
|
12468
|
+
"This permission can edit OID Collection Templates of this project. Editing a template changes what every linked device collects on its next poll.",
|
|
12469
|
+
isAssignableToTenant: true,
|
|
12470
|
+
isAccessControlPermission: false,
|
|
12471
|
+
isRolePermission: false,
|
|
12472
|
+
group: PermissionGroup.Telemetry,
|
|
12473
|
+
},
|
|
12474
|
+
{
|
|
12475
|
+
permission: Permission.ReadNetworkDeviceOidTemplate,
|
|
12476
|
+
title: "Read OID Collection Template",
|
|
12477
|
+
description:
|
|
12478
|
+
"This permission can read OID Collection Templates of this project.",
|
|
12479
|
+
isAssignableToTenant: true,
|
|
12480
|
+
isAccessControlPermission: false,
|
|
12481
|
+
isRolePermission: false,
|
|
12482
|
+
group: PermissionGroup.Telemetry,
|
|
12483
|
+
},
|
|
12484
|
+
|
|
12344
12485
|
// Podman Host Label Rule Permissions
|
|
12345
12486
|
{
|
|
12346
12487
|
permission: Permission.CreatePodmanHostLabelRule,
|
|
@@ -35,6 +35,27 @@ export const MAX_SESSION_REPLAY_CHUNK_BYTES: number = 2 * 1024 * 1024;
|
|
|
35
35
|
/* Frames a single catch-up request may concatenate. */
|
|
36
36
|
export const MAX_SESSION_REPLAY_CHUNKS_PER_REQUEST: number = 8;
|
|
37
37
|
|
|
38
|
+
/*
|
|
39
|
+
* Largest DECOMPRESSED payload the ingest worker will inflate for one frame,
|
|
40
|
+
* and therefore the largest single indivisible rrweb event the recorder may
|
|
41
|
+
* put on the wire.
|
|
42
|
+
*
|
|
43
|
+
* The two numbers have to be the same number, which is why this lives in
|
|
44
|
+
* Common rather than in either side. A FullSnapshot is one rrweb event: it
|
|
45
|
+
* cannot be cut in half and still parse, so when it is bigger than the flush
|
|
46
|
+
* threshold the recorder posts it whole in a chunk of its own rather than
|
|
47
|
+
* cutting it. That is only safe while the recorder's ceiling is exactly the
|
|
48
|
+
* worker's — a recorder willing to send more than the worker will inflate
|
|
49
|
+
* produces a chunk that is accepted, queued, and then dropped at decode time,
|
|
50
|
+
* leaving a hole in the chunk sequence with nothing anywhere reporting it.
|
|
51
|
+
*
|
|
52
|
+
* Compression is what makes the number affordable: a snapshot this size gzips
|
|
53
|
+
* to a small fraction of MAX_SESSION_REPLAY_CHUNK_BYTES, which is the cap on
|
|
54
|
+
* the bytes actually posted.
|
|
55
|
+
*/
|
|
56
|
+
export const SESSION_REPLAY_MAX_DECOMPRESSED_FRAME_BYTES: number =
|
|
57
|
+
8 * 1024 * 1024;
|
|
58
|
+
|
|
38
59
|
/*
|
|
39
60
|
* Hard stop per session. At the 15s flush cadence this is ~2 hours of
|
|
40
61
|
* continuous recording, comfortably past the 4-hour session cap once
|
|
@@ -53,4 +53,12 @@ export interface ResolveStackTraceResult {
|
|
|
53
53
|
resolvedCount: number;
|
|
54
54
|
/** Number of source maps found for the (service, release) pair. */
|
|
55
55
|
sourceMapCount: number;
|
|
56
|
+
/**
|
|
57
|
+
* Maps that a frame matched but that were not loaded, because loading them
|
|
58
|
+
* would have exceeded the resolver's per-request byte budget
|
|
59
|
+
* (SOURCE_MAP_MAX_BYTES_PER_RESOLVE). Non-zero means symbols are missing
|
|
60
|
+
* for a reason an operator can fix by raising the budget — as opposed to
|
|
61
|
+
* the maps simply never having been uploaded.
|
|
62
|
+
*/
|
|
63
|
+
sourceMapsSkippedForSize: number;
|
|
56
64
|
}
|