@oneuptime/common 12.0.30 → 12.0.31

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.
Files changed (489) hide show
  1. package/Models/AnalyticsModels/SecurityEvent.ts +48 -16
  2. package/Models/AnalyticsModels/ThreatIntelIndicator.ts +10 -5
  3. package/Models/DatabaseModels/AlertSeverity.ts +44 -0
  4. package/Models/DatabaseModels/DetectionRule.ts +16 -5
  5. package/Models/DatabaseModels/GoogleSecOpsConnection.ts +14 -5
  6. package/Models/DatabaseModels/IncidentSeverity.ts +44 -0
  7. package/Models/DatabaseModels/Index.ts +2 -0
  8. package/Models/DatabaseModels/NetworkDevice.ts +113 -3
  9. package/Models/DatabaseModels/NetworkDeviceAutoImportRule.ts +88 -0
  10. package/Models/DatabaseModels/NetworkDeviceDiscoveryScan.ts +22 -0
  11. package/Models/DatabaseModels/NetworkDeviceOidTemplate.ts +499 -0
  12. package/Models/DatabaseModels/ThreatIntelFeed.ts +16 -5
  13. package/Server/API/GlobalConfigAPI.ts +362 -183
  14. package/Server/API/TelemetryAPI.ts +42 -4
  15. package/Server/EnvironmentConfig.ts +112 -0
  16. package/Server/Infrastructure/Postgres/SchemaMigrations/1790500000000-AddNetworkDeviceOidTemplate.ts +59 -0
  17. package/Server/Infrastructure/Postgres/SchemaMigrations/1790600000000-AddAutoImportRuleOidTemplate.ts +25 -0
  18. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +4 -0
  19. package/Server/Middleware/MultipartFormData.ts +118 -32
  20. package/Server/Services/AlertEpisodeLabelRuleEngineService.ts +9 -1
  21. package/Server/Services/AlertEpisodeOnCallRuleEngineService.ts +9 -1
  22. package/Server/Services/AlertEpisodeOwnerRuleEngineService.ts +9 -1
  23. package/Server/Services/AlertEpisodePrivacyRuleEngineService.ts +9 -1
  24. package/Server/Services/AlertGroupingEngineService.ts +9 -1
  25. package/Server/Services/AlertLabelRuleEngineService.ts +9 -1
  26. package/Server/Services/AlertOnCallRuleEngineService.ts +9 -1
  27. package/Server/Services/AlertOwnerRuleEngineService.ts +9 -1
  28. package/Server/Services/AlertPrivacyRuleEngineService.ts +9 -1
  29. package/Server/Services/AlertReminderRuleService.ts +9 -1
  30. package/Server/Services/AutoRemediationRuleEngineService.ts +9 -1
  31. package/Server/Services/CephClusterLabelRuleEngineService.ts +9 -1
  32. package/Server/Services/CephClusterOwnerRuleEngineService.ts +9 -1
  33. package/Server/Services/CloudResourceLabelRuleEngineService.ts +9 -1
  34. package/Server/Services/CloudResourceOwnerRuleEngineService.ts +9 -1
  35. package/Server/Services/DashboardLabelRuleEngineService.ts +9 -1
  36. package/Server/Services/DashboardOwnerRuleEngineService.ts +9 -1
  37. package/Server/Services/DockerHostLabelRuleEngineService.ts +9 -1
  38. package/Server/Services/DockerHostOwnerRuleEngineService.ts +9 -1
  39. package/Server/Services/DockerSwarmClusterLabelRuleEngineService.ts +9 -1
  40. package/Server/Services/DockerSwarmClusterOwnerRuleEngineService.ts +9 -1
  41. package/Server/Services/HostLabelRuleEngineService.ts +9 -1
  42. package/Server/Services/HostOwnerRuleEngineService.ts +9 -1
  43. package/Server/Services/IncidentEpisodeLabelRuleEngineService.ts +9 -1
  44. package/Server/Services/IncidentEpisodeOnCallRuleEngineService.ts +9 -1
  45. package/Server/Services/IncidentEpisodeOwnerRuleEngineService.ts +9 -1
  46. package/Server/Services/IncidentEpisodePrivacyRuleEngineService.ts +9 -1
  47. package/Server/Services/IncidentGroupingEngineService.ts +9 -1
  48. package/Server/Services/IncidentLabelRuleEngineService.ts +9 -1
  49. package/Server/Services/IncidentOnCallRuleEngineService.ts +9 -1
  50. package/Server/Services/IncidentOwnerRuleEngineService.ts +9 -1
  51. package/Server/Services/IncidentPrivacyRuleEngineService.ts +9 -1
  52. package/Server/Services/IncidentReminderRuleService.ts +9 -1
  53. package/Server/Services/IncidentSlaRuleService.ts +9 -1
  54. package/Server/Services/IncomingCallPolicyLabelRuleEngineService.ts +9 -1
  55. package/Server/Services/IncomingCallPolicyOwnerRuleEngineService.ts +9 -1
  56. package/Server/Services/Index.ts +2 -0
  57. package/Server/Services/IoTFleetLabelRuleEngineService.ts +9 -1
  58. package/Server/Services/IoTFleetOwnerRuleEngineService.ts +9 -1
  59. package/Server/Services/KubernetesClusterLabelRuleEngineService.ts +9 -1
  60. package/Server/Services/KubernetesClusterOwnerRuleEngineService.ts +9 -1
  61. package/Server/Services/KubernetesResourceService.ts +5 -1
  62. package/Server/Services/MonitorLabelRuleEngineService.ts +9 -1
  63. package/Server/Services/MonitorOwnerRuleEngineService.ts +9 -1
  64. package/Server/Services/NetworkDeviceAutoImportRuleEngineService.ts +35 -0
  65. package/Server/Services/NetworkDeviceAutoImportRuleService.ts +96 -0
  66. package/Server/Services/NetworkDeviceLabelRuleEngineService.ts +9 -1
  67. package/Server/Services/NetworkDeviceOidTemplateService.ts +201 -0
  68. package/Server/Services/NetworkDeviceOwnerRuleEngineService.ts +9 -1
  69. package/Server/Services/NetworkDeviceService.ts +209 -1
  70. package/Server/Services/OnCallDutyPolicyLabelRuleEngineService.ts +9 -1
  71. package/Server/Services/OnCallDutyPolicyOwnerRuleEngineService.ts +9 -1
  72. package/Server/Services/OnCallDutyPolicyScheduleLabelRuleEngineService.ts +9 -1
  73. package/Server/Services/OnCallDutyPolicyScheduleOwnerRuleEngineService.ts +9 -1
  74. package/Server/Services/PodmanHostLabelRuleEngineService.ts +9 -1
  75. package/Server/Services/PodmanHostOwnerRuleEngineService.ts +9 -1
  76. package/Server/Services/ProxmoxClusterLabelRuleEngineService.ts +9 -1
  77. package/Server/Services/ProxmoxClusterOwnerRuleEngineService.ts +9 -1
  78. package/Server/Services/RumApplicationLabelRuleEngineService.ts +9 -1
  79. package/Server/Services/RumApplicationOwnerRuleEngineService.ts +9 -1
  80. package/Server/Services/RunbookLabelRuleEngineService.ts +9 -1
  81. package/Server/Services/RunbookOwnerRuleEngineService.ts +9 -1
  82. package/Server/Services/RunbookRuleEngineService.ts +9 -1
  83. package/Server/Services/ScheduledMaintenanceLabelRuleEngineService.ts +9 -1
  84. package/Server/Services/ScheduledMaintenanceOwnerRuleEngineService.ts +9 -1
  85. package/Server/Services/ScheduledMaintenanceReminderRuleService.ts +9 -1
  86. package/Server/Services/ServerlessFunctionLabelRuleEngineService.ts +9 -1
  87. package/Server/Services/ServerlessFunctionOwnerRuleEngineService.ts +9 -1
  88. package/Server/Services/ServiceLabelRuleEngineService.ts +9 -1
  89. package/Server/Services/ServiceOwnerRuleEngineService.ts +9 -1
  90. package/Server/Services/StatusPageLabelRuleEngineService.ts +9 -1
  91. package/Server/Services/StatusPageMonitorRuleEngineService.ts +7 -0
  92. package/Server/Services/StatusPageOwnerRuleEngineService.ts +9 -1
  93. package/Server/Services/TelemetrySourceMapService.ts +266 -23
  94. package/Server/Services/UserService.ts +27 -0
  95. package/Server/Services/WorkflowLabelRuleEngineService.ts +9 -1
  96. package/Server/Services/WorkflowOwnerRuleEngineService.ts +9 -1
  97. package/Server/Utils/EnterpriseLicense/EnterpriseLicenseSeatUtil.ts +186 -0
  98. package/Server/Utils/Monitor/CapturedMetricAttributeUtil.ts +245 -0
  99. package/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.ts +21 -2
  100. package/Server/Utils/Monitor/MonitorMetricUtil.ts +55 -21
  101. package/Server/Utils/Monitor/MonitorTemplateUtil.ts +32 -0
  102. package/Server/Utils/Monitor/NetworkDeviceMetricUtil.ts +15 -2
  103. package/Server/Utils/Monitor/NetworkDeviceWalkUtil.ts +18 -1
  104. package/Server/Utils/Monitor/NetworkInventoryUtil.ts +10 -0
  105. package/Server/Utils/Monitor/SeriesResourceLabels.ts +34 -0
  106. package/Server/Utils/Rules/RuleEngineRuleRead.ts +48 -0
  107. package/Server/Utils/Telemetry/ExceptionSanitizer.ts +14 -1
  108. package/Server/Utils/Telemetry/LogExceptionExtractor.ts +14 -2
  109. package/Server/Utils/Telemetry/SourceMapResolver.ts +16 -5
  110. package/Server/Utils/Telemetry/StackTraceParser.ts +399 -0
  111. package/Tests/App/Dashboard/EventOverlayHook.test.tsx +125 -0
  112. package/Tests/App/Dashboard/HeaderImageAssets.test.tsx +93 -0
  113. package/Tests/App/Dashboard/OnCallReadinessSurfaces.test.tsx +3 -3
  114. package/Tests/App/Dashboard/UserElementEmail.test.tsx +12 -4
  115. package/Tests/App/Dashboard/UserEmailCallSites.test.tsx +1 -1
  116. package/Tests/Models/DatabaseModels/DomainRoleTierCoverage.test.ts +14 -0
  117. package/Tests/Models/DatabaseModels/ModelRegistryInvariants.test.ts +469 -0
  118. package/Tests/Models/SecurityDomainAccessControl.test.ts +429 -0
  119. package/Tests/Server/API/GlobalConfigLicense.test.ts +657 -0
  120. package/Tests/Server/API/SecurityEventAttributesAPI.test.ts +84 -6
  121. package/Tests/Server/API/TelemetryResolveStackTraceAPI.test.ts +805 -0
  122. package/Tests/Server/Infrastructure/Postgres/AddOnCallCalendarFeedsMigration.test.ts +32 -7
  123. package/Tests/Server/Middleware/IdentityRateLimit.test.ts +1144 -0
  124. package/Tests/Server/Middleware/MultipartFormData.test.ts +618 -3
  125. package/Tests/Server/Services/MonitorLabelRuleEngineScale.test.ts +520 -0
  126. package/Tests/Server/Services/NetworkDeviceOidTemplateService.test.ts +332 -0
  127. package/Tests/Server/Services/NetworkDeviceOidTemplateWriteGuards.test.ts +409 -0
  128. package/Tests/Server/Services/RuleEngineRuleFetchLimit.test.ts +239 -0
  129. package/Tests/Server/Services/TelemetrySourceMapService.test.ts +1210 -2
  130. package/Tests/Server/Services/UserServiceSeatLimit.test.ts +182 -0
  131. package/Tests/Server/Types/AnalyticsDatabase/SecurityEventModelPermission.test.ts +255 -0
  132. package/Tests/Server/Types/Database/Permissions/ReadBlockPermission.test.ts +212 -0
  133. package/Tests/Server/Types/Database/Permissions/SecurityRoleAccess.test.ts +413 -0
  134. package/Tests/Server/Utils/CodeRepository.test.ts +689 -0
  135. package/Tests/Server/Utils/EnterpriseLicense/EnterpriseLicenseSeatUtil.test.ts +495 -0
  136. package/Tests/Server/Utils/ExceptionSanitizer.test.ts +77 -0
  137. package/Tests/Server/Utils/Monitor/CapturedMetricAttributeUtil.test.ts +284 -0
  138. package/Tests/Server/Utils/Monitor/MonitorCustomMetricAttributes.test.ts +503 -0
  139. package/Tests/Server/Utils/Monitor/MonitorTemplatePrototypePollution.test.ts +106 -0
  140. package/Tests/Server/Utils/Monitor/NetworkDeviceWalkLogWritePath.test.ts +33 -4
  141. package/Tests/Server/Utils/Monitor/NetworkDeviceWalkUtil.test.ts +14 -4
  142. package/Tests/Server/Utils/Monitor/NetworkInventoryUtil.test.ts +44 -0
  143. package/Tests/Server/Utils/OpenAPISpec.test.ts +536 -0
  144. package/Tests/Server/Utils/Rules/RuleEngineRuleRead.test.ts +115 -0
  145. package/Tests/Server/Utils/StackTraceParser.test.ts +610 -0
  146. package/Tests/Server/Utils/Telemetry/LogExceptionExtractor.test.ts +0 -0
  147. package/Tests/Server/Utils/Telemetry/SourceMapLimits.test.ts +656 -0
  148. package/Tests/Server/Utils/Telemetry/SourceMapResolver.test.ts +100 -0
  149. package/Tests/Types/Monitor/SnmpMonitor/SnmpOidListUtil.test.ts +454 -0
  150. package/Tests/Types/SecurityRolePermissions.test.ts +193 -0
  151. package/Tests/UI/Components/Charts/AnnotationLayout.test.ts +773 -0
  152. package/Tests/UI/Components/Charts/ChartAnnotationRail.test.tsx +789 -0
  153. package/Tests/UI/Components/Charts/ChartBucketIdentity.test.ts +254 -0
  154. package/Tests/UI/Components/Charts/TimeAnnotation.test.ts +471 -0
  155. package/Tests/UI/Components/EditionLabelLicenseRefresh.test.tsx +405 -0
  156. package/Tests/UI/Components/ErrorMessageRefreshControl.test.tsx +83 -0
  157. package/Tests/UI/Components/MarkdownConverters.test.ts +686 -0
  158. package/Tests/UI/Components/ModelTable/BaseModelTableDeleteAndEmptyStates.test.tsx +341 -0
  159. package/Tests/UI/Components/OrderedStatesList.test.tsx +5 -5
  160. package/Tests/UI/Components/PendingProjectInvitations.test.tsx +1 -1
  161. package/Tests/UI/Components/TableSortAndMobileColumns.test.tsx +195 -0
  162. package/Tests/UI/Components/XAxis.test.ts +270 -5
  163. package/Tests/UI/Components/XAxisDaylightSaving.test.ts +113 -0
  164. package/Tests/UI/Styles/ChartFocusRing.test.ts +153 -0
  165. package/Tests/UI/Styles/ChartFocusRingCoverage.test.tsx +377 -0
  166. package/Tests/UI/Styles/ThemeStylesheet.ts +162 -0
  167. package/Tests/Utils/EnterpriseLicenseSeats.test.ts +507 -0
  168. package/Tests/Utils/NetworkDiscovery/DiscoveredDeviceBuilder.test.ts +951 -1
  169. package/Tests/Utils/NetworkDiscovery/DiscoveredHostUtil.test.ts +238 -0
  170. package/Tests/Utils/NetworkDiscovery/DiscoveryReverseDnsChain.test.ts +1056 -0
  171. package/Tests/Utils/NetworkDiscovery/ReverseDnsNameUtil.test.ts +882 -0
  172. package/Types/Date.ts +39 -0
  173. package/Types/Monitor/SnmpMonitor/SnmpOidListUtil.ts +333 -0
  174. package/Types/Permission.ts +96 -0
  175. package/Types/Rum/SessionReplay.ts +21 -0
  176. package/Types/Telemetry/SourceMap.ts +8 -0
  177. package/UI/Components/Charts/ChartLibrary/Annotations/AnnotationHoverCard.tsx +176 -0
  178. package/UI/Components/Charts/ChartLibrary/Annotations/AnnotationLayout.ts +745 -0
  179. package/UI/Components/Charts/ChartLibrary/Annotations/ChartAnnotationLayer.tsx +576 -0
  180. package/UI/Components/Charts/ChartLibrary/Annotations/UseChartAnnotations.tsx +204 -0
  181. package/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.tsx +491 -544
  182. package/UI/Components/Charts/ChartLibrary/BarChart/BarChart.tsx +324 -372
  183. package/UI/Components/Charts/ChartLibrary/LineChart/LineChart.tsx +487 -540
  184. package/UI/Components/Charts/ChartLibrary/Types/FormattedReferenceRegion.ts +7 -3
  185. package/UI/Components/Charts/ChartLibrary/Types/FormattedTimeReferenceLine.ts +14 -3
  186. package/UI/Components/Charts/Types/ChartEventKind.ts +13 -0
  187. package/UI/Components/Charts/Types/ReferenceRegionProps.ts +6 -0
  188. package/UI/Components/Charts/Types/TimeReferenceLineProps.ts +20 -3
  189. package/UI/Components/Charts/Utils/TimeAnnotation.ts +69 -35
  190. package/UI/Components/Charts/Utils/XAxis.ts +125 -18
  191. package/UI/Components/EditionLabel/EditionLabel.tsx +280 -26
  192. package/UI/Components/ErrorMessage/ErrorMessage.tsx +21 -10
  193. package/UI/Components/Feed/FeedItem.tsx +4 -5
  194. package/UI/Components/Header/HeaderIconDropdownButton.tsx +1 -2
  195. package/UI/Components/Header/UserProfile/UserProfile.tsx +1 -2
  196. package/UI/Components/Image/Image.tsx +20 -3
  197. package/UI/Components/Markdown.tsx/MarkdownConverters.ts +0 -0
  198. package/UI/Components/MemberRoleAssignment/MemberRoleAssignment.tsx +1 -2
  199. package/UI/Components/ModelTable/BaseModelTable.tsx +150 -24
  200. package/UI/Components/Table/TableHeader.tsx +64 -48
  201. package/UI/Components/Table/TableRow.tsx +13 -3
  202. package/UI/Styles/Theme.css +38 -0
  203. package/Utils/EnterpriseLicense/EnterpriseLicenseSeats.ts +271 -0
  204. package/Utils/NetworkDiscovery/AutoImportRuleMatcher.ts +6 -0
  205. package/Utils/NetworkDiscovery/DiscoveredDeviceBuilder.ts +141 -10
  206. package/Utils/NetworkDiscovery/DiscoveredHostUtil.ts +55 -3
  207. package/Utils/NetworkDiscovery/ReverseDnsNameUtil.ts +151 -0
  208. package/Utils/Rules/RuleEngineLimits.ts +32 -0
  209. package/build/dist/Models/AnalyticsModels/SecurityEvent.js +48 -16
  210. package/build/dist/Models/AnalyticsModels/SecurityEvent.js.map +1 -1
  211. package/build/dist/Models/AnalyticsModels/ThreatIntelIndicator.js +10 -5
  212. package/build/dist/Models/AnalyticsModels/ThreatIntelIndicator.js.map +1 -1
  213. package/build/dist/Models/DatabaseModels/AlertSeverity.js +46 -1
  214. package/build/dist/Models/DatabaseModels/AlertSeverity.js.map +1 -1
  215. package/build/dist/Models/DatabaseModels/DetectionRule.js +16 -5
  216. package/build/dist/Models/DatabaseModels/DetectionRule.js.map +1 -1
  217. package/build/dist/Models/DatabaseModels/GoogleSecOpsConnection.js +14 -5
  218. package/build/dist/Models/DatabaseModels/GoogleSecOpsConnection.js.map +1 -1
  219. package/build/dist/Models/DatabaseModels/IncidentSeverity.js +46 -1
  220. package/build/dist/Models/DatabaseModels/IncidentSeverity.js.map +1 -1
  221. package/build/dist/Models/DatabaseModels/Index.js +2 -0
  222. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  223. package/build/dist/Models/DatabaseModels/NetworkDevice.js +115 -3
  224. package/build/dist/Models/DatabaseModels/NetworkDevice.js.map +1 -1
  225. package/build/dist/Models/DatabaseModels/NetworkDeviceAutoImportRule.js +88 -0
  226. package/build/dist/Models/DatabaseModels/NetworkDeviceAutoImportRule.js.map +1 -1
  227. package/build/dist/Models/DatabaseModels/NetworkDeviceDiscoveryScan.js.map +1 -1
  228. package/build/dist/Models/DatabaseModels/NetworkDeviceOidTemplate.js +519 -0
  229. package/build/dist/Models/DatabaseModels/NetworkDeviceOidTemplate.js.map +1 -0
  230. package/build/dist/Models/DatabaseModels/ThreatIntelFeed.js +16 -5
  231. package/build/dist/Models/DatabaseModels/ThreatIntelFeed.js.map +1 -1
  232. package/build/dist/Server/API/GlobalConfigAPI.js +293 -176
  233. package/build/dist/Server/API/GlobalConfigAPI.js.map +1 -1
  234. package/build/dist/Server/API/TelemetryAPI.js +31 -3
  235. package/build/dist/Server/API/TelemetryAPI.js.map +1 -1
  236. package/build/dist/Server/EnvironmentConfig.js +83 -0
  237. package/build/dist/Server/EnvironmentConfig.js.map +1 -1
  238. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790500000000-AddNetworkDeviceOidTemplate.js +26 -0
  239. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790500000000-AddNetworkDeviceOidTemplate.js.map +1 -0
  240. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790600000000-AddAutoImportRuleOidTemplate.js +14 -0
  241. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790600000000-AddAutoImportRuleOidTemplate.js.map +1 -0
  242. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +4 -0
  243. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  244. package/build/dist/Server/Middleware/MultipartFormData.js +93 -28
  245. package/build/dist/Server/Middleware/MultipartFormData.js.map +1 -1
  246. package/build/dist/Server/Services/AlertEpisodeLabelRuleEngineService.js +8 -1
  247. package/build/dist/Server/Services/AlertEpisodeLabelRuleEngineService.js.map +1 -1
  248. package/build/dist/Server/Services/AlertEpisodeOnCallRuleEngineService.js +8 -1
  249. package/build/dist/Server/Services/AlertEpisodeOnCallRuleEngineService.js.map +1 -1
  250. package/build/dist/Server/Services/AlertEpisodeOwnerRuleEngineService.js +8 -1
  251. package/build/dist/Server/Services/AlertEpisodeOwnerRuleEngineService.js.map +1 -1
  252. package/build/dist/Server/Services/AlertEpisodePrivacyRuleEngineService.js +8 -1
  253. package/build/dist/Server/Services/AlertEpisodePrivacyRuleEngineService.js.map +1 -1
  254. package/build/dist/Server/Services/AlertGroupingEngineService.js +8 -1
  255. package/build/dist/Server/Services/AlertGroupingEngineService.js.map +1 -1
  256. package/build/dist/Server/Services/AlertLabelRuleEngineService.js +8 -1
  257. package/build/dist/Server/Services/AlertLabelRuleEngineService.js.map +1 -1
  258. package/build/dist/Server/Services/AlertOnCallRuleEngineService.js +8 -1
  259. package/build/dist/Server/Services/AlertOnCallRuleEngineService.js.map +1 -1
  260. package/build/dist/Server/Services/AlertOwnerRuleEngineService.js +8 -1
  261. package/build/dist/Server/Services/AlertOwnerRuleEngineService.js.map +1 -1
  262. package/build/dist/Server/Services/AlertPrivacyRuleEngineService.js +8 -1
  263. package/build/dist/Server/Services/AlertPrivacyRuleEngineService.js.map +1 -1
  264. package/build/dist/Server/Services/AlertReminderRuleService.js +8 -1
  265. package/build/dist/Server/Services/AlertReminderRuleService.js.map +1 -1
  266. package/build/dist/Server/Services/AutoRemediationRuleEngineService.js +8 -1
  267. package/build/dist/Server/Services/AutoRemediationRuleEngineService.js.map +1 -1
  268. package/build/dist/Server/Services/CephClusterLabelRuleEngineService.js +8 -1
  269. package/build/dist/Server/Services/CephClusterLabelRuleEngineService.js.map +1 -1
  270. package/build/dist/Server/Services/CephClusterOwnerRuleEngineService.js +8 -1
  271. package/build/dist/Server/Services/CephClusterOwnerRuleEngineService.js.map +1 -1
  272. package/build/dist/Server/Services/CloudResourceLabelRuleEngineService.js +8 -1
  273. package/build/dist/Server/Services/CloudResourceLabelRuleEngineService.js.map +1 -1
  274. package/build/dist/Server/Services/CloudResourceOwnerRuleEngineService.js +8 -1
  275. package/build/dist/Server/Services/CloudResourceOwnerRuleEngineService.js.map +1 -1
  276. package/build/dist/Server/Services/DashboardLabelRuleEngineService.js +8 -1
  277. package/build/dist/Server/Services/DashboardLabelRuleEngineService.js.map +1 -1
  278. package/build/dist/Server/Services/DashboardOwnerRuleEngineService.js +8 -1
  279. package/build/dist/Server/Services/DashboardOwnerRuleEngineService.js.map +1 -1
  280. package/build/dist/Server/Services/DockerHostLabelRuleEngineService.js +8 -1
  281. package/build/dist/Server/Services/DockerHostLabelRuleEngineService.js.map +1 -1
  282. package/build/dist/Server/Services/DockerHostOwnerRuleEngineService.js +8 -1
  283. package/build/dist/Server/Services/DockerHostOwnerRuleEngineService.js.map +1 -1
  284. package/build/dist/Server/Services/DockerSwarmClusterLabelRuleEngineService.js +8 -1
  285. package/build/dist/Server/Services/DockerSwarmClusterLabelRuleEngineService.js.map +1 -1
  286. package/build/dist/Server/Services/DockerSwarmClusterOwnerRuleEngineService.js +8 -1
  287. package/build/dist/Server/Services/DockerSwarmClusterOwnerRuleEngineService.js.map +1 -1
  288. package/build/dist/Server/Services/HostLabelRuleEngineService.js +8 -1
  289. package/build/dist/Server/Services/HostLabelRuleEngineService.js.map +1 -1
  290. package/build/dist/Server/Services/HostOwnerRuleEngineService.js +8 -1
  291. package/build/dist/Server/Services/HostOwnerRuleEngineService.js.map +1 -1
  292. package/build/dist/Server/Services/IncidentEpisodeLabelRuleEngineService.js +8 -1
  293. package/build/dist/Server/Services/IncidentEpisodeLabelRuleEngineService.js.map +1 -1
  294. package/build/dist/Server/Services/IncidentEpisodeOnCallRuleEngineService.js +8 -1
  295. package/build/dist/Server/Services/IncidentEpisodeOnCallRuleEngineService.js.map +1 -1
  296. package/build/dist/Server/Services/IncidentEpisodeOwnerRuleEngineService.js +8 -1
  297. package/build/dist/Server/Services/IncidentEpisodeOwnerRuleEngineService.js.map +1 -1
  298. package/build/dist/Server/Services/IncidentEpisodePrivacyRuleEngineService.js +8 -1
  299. package/build/dist/Server/Services/IncidentEpisodePrivacyRuleEngineService.js.map +1 -1
  300. package/build/dist/Server/Services/IncidentGroupingEngineService.js +8 -1
  301. package/build/dist/Server/Services/IncidentGroupingEngineService.js.map +1 -1
  302. package/build/dist/Server/Services/IncidentLabelRuleEngineService.js +8 -1
  303. package/build/dist/Server/Services/IncidentLabelRuleEngineService.js.map +1 -1
  304. package/build/dist/Server/Services/IncidentOnCallRuleEngineService.js +8 -1
  305. package/build/dist/Server/Services/IncidentOnCallRuleEngineService.js.map +1 -1
  306. package/build/dist/Server/Services/IncidentOwnerRuleEngineService.js +8 -1
  307. package/build/dist/Server/Services/IncidentOwnerRuleEngineService.js.map +1 -1
  308. package/build/dist/Server/Services/IncidentPrivacyRuleEngineService.js +8 -1
  309. package/build/dist/Server/Services/IncidentPrivacyRuleEngineService.js.map +1 -1
  310. package/build/dist/Server/Services/IncidentReminderRuleService.js +8 -1
  311. package/build/dist/Server/Services/IncidentReminderRuleService.js.map +1 -1
  312. package/build/dist/Server/Services/IncidentSlaRuleService.js +8 -1
  313. package/build/dist/Server/Services/IncidentSlaRuleService.js.map +1 -1
  314. package/build/dist/Server/Services/IncomingCallPolicyLabelRuleEngineService.js +8 -1
  315. package/build/dist/Server/Services/IncomingCallPolicyLabelRuleEngineService.js.map +1 -1
  316. package/build/dist/Server/Services/IncomingCallPolicyOwnerRuleEngineService.js +8 -1
  317. package/build/dist/Server/Services/IncomingCallPolicyOwnerRuleEngineService.js.map +1 -1
  318. package/build/dist/Server/Services/Index.js +2 -0
  319. package/build/dist/Server/Services/Index.js.map +1 -1
  320. package/build/dist/Server/Services/IoTFleetLabelRuleEngineService.js +8 -1
  321. package/build/dist/Server/Services/IoTFleetLabelRuleEngineService.js.map +1 -1
  322. package/build/dist/Server/Services/IoTFleetOwnerRuleEngineService.js +8 -1
  323. package/build/dist/Server/Services/IoTFleetOwnerRuleEngineService.js.map +1 -1
  324. package/build/dist/Server/Services/KubernetesClusterLabelRuleEngineService.js +8 -1
  325. package/build/dist/Server/Services/KubernetesClusterLabelRuleEngineService.js.map +1 -1
  326. package/build/dist/Server/Services/KubernetesClusterOwnerRuleEngineService.js +8 -1
  327. package/build/dist/Server/Services/KubernetesClusterOwnerRuleEngineService.js.map +1 -1
  328. package/build/dist/Server/Services/KubernetesResourceService.js +5 -1
  329. package/build/dist/Server/Services/KubernetesResourceService.js.map +1 -1
  330. package/build/dist/Server/Services/MonitorLabelRuleEngineService.js +8 -1
  331. package/build/dist/Server/Services/MonitorLabelRuleEngineService.js.map +1 -1
  332. package/build/dist/Server/Services/MonitorOwnerRuleEngineService.js +8 -1
  333. package/build/dist/Server/Services/MonitorOwnerRuleEngineService.js.map +1 -1
  334. package/build/dist/Server/Services/NetworkDeviceAutoImportRuleEngineService.js +30 -21
  335. package/build/dist/Server/Services/NetworkDeviceAutoImportRuleEngineService.js.map +1 -1
  336. package/build/dist/Server/Services/NetworkDeviceAutoImportRuleService.js +64 -0
  337. package/build/dist/Server/Services/NetworkDeviceAutoImportRuleService.js.map +1 -1
  338. package/build/dist/Server/Services/NetworkDeviceLabelRuleEngineService.js +8 -1
  339. package/build/dist/Server/Services/NetworkDeviceLabelRuleEngineService.js.map +1 -1
  340. package/build/dist/Server/Services/NetworkDeviceOidTemplateService.js +180 -0
  341. package/build/dist/Server/Services/NetworkDeviceOidTemplateService.js.map +1 -0
  342. package/build/dist/Server/Services/NetworkDeviceOwnerRuleEngineService.js +8 -1
  343. package/build/dist/Server/Services/NetworkDeviceOwnerRuleEngineService.js.map +1 -1
  344. package/build/dist/Server/Services/NetworkDeviceService.js +154 -1
  345. package/build/dist/Server/Services/NetworkDeviceService.js.map +1 -1
  346. package/build/dist/Server/Services/OnCallDutyPolicyLabelRuleEngineService.js +8 -1
  347. package/build/dist/Server/Services/OnCallDutyPolicyLabelRuleEngineService.js.map +1 -1
  348. package/build/dist/Server/Services/OnCallDutyPolicyOwnerRuleEngineService.js +8 -1
  349. package/build/dist/Server/Services/OnCallDutyPolicyOwnerRuleEngineService.js.map +1 -1
  350. package/build/dist/Server/Services/OnCallDutyPolicyScheduleLabelRuleEngineService.js +8 -1
  351. package/build/dist/Server/Services/OnCallDutyPolicyScheduleLabelRuleEngineService.js.map +1 -1
  352. package/build/dist/Server/Services/OnCallDutyPolicyScheduleOwnerRuleEngineService.js +8 -1
  353. package/build/dist/Server/Services/OnCallDutyPolicyScheduleOwnerRuleEngineService.js.map +1 -1
  354. package/build/dist/Server/Services/PodmanHostLabelRuleEngineService.js +8 -1
  355. package/build/dist/Server/Services/PodmanHostLabelRuleEngineService.js.map +1 -1
  356. package/build/dist/Server/Services/PodmanHostOwnerRuleEngineService.js +8 -1
  357. package/build/dist/Server/Services/PodmanHostOwnerRuleEngineService.js.map +1 -1
  358. package/build/dist/Server/Services/ProxmoxClusterLabelRuleEngineService.js +8 -1
  359. package/build/dist/Server/Services/ProxmoxClusterLabelRuleEngineService.js.map +1 -1
  360. package/build/dist/Server/Services/ProxmoxClusterOwnerRuleEngineService.js +8 -1
  361. package/build/dist/Server/Services/ProxmoxClusterOwnerRuleEngineService.js.map +1 -1
  362. package/build/dist/Server/Services/RumApplicationLabelRuleEngineService.js +8 -1
  363. package/build/dist/Server/Services/RumApplicationLabelRuleEngineService.js.map +1 -1
  364. package/build/dist/Server/Services/RumApplicationOwnerRuleEngineService.js +8 -1
  365. package/build/dist/Server/Services/RumApplicationOwnerRuleEngineService.js.map +1 -1
  366. package/build/dist/Server/Services/RunbookLabelRuleEngineService.js +8 -1
  367. package/build/dist/Server/Services/RunbookLabelRuleEngineService.js.map +1 -1
  368. package/build/dist/Server/Services/RunbookOwnerRuleEngineService.js +8 -1
  369. package/build/dist/Server/Services/RunbookOwnerRuleEngineService.js.map +1 -1
  370. package/build/dist/Server/Services/RunbookRuleEngineService.js +8 -1
  371. package/build/dist/Server/Services/RunbookRuleEngineService.js.map +1 -1
  372. package/build/dist/Server/Services/ScheduledMaintenanceLabelRuleEngineService.js +8 -1
  373. package/build/dist/Server/Services/ScheduledMaintenanceLabelRuleEngineService.js.map +1 -1
  374. package/build/dist/Server/Services/ScheduledMaintenanceOwnerRuleEngineService.js +8 -1
  375. package/build/dist/Server/Services/ScheduledMaintenanceOwnerRuleEngineService.js.map +1 -1
  376. package/build/dist/Server/Services/ScheduledMaintenanceReminderRuleService.js +8 -1
  377. package/build/dist/Server/Services/ScheduledMaintenanceReminderRuleService.js.map +1 -1
  378. package/build/dist/Server/Services/ServerlessFunctionLabelRuleEngineService.js +8 -1
  379. package/build/dist/Server/Services/ServerlessFunctionLabelRuleEngineService.js.map +1 -1
  380. package/build/dist/Server/Services/ServerlessFunctionOwnerRuleEngineService.js +8 -1
  381. package/build/dist/Server/Services/ServerlessFunctionOwnerRuleEngineService.js.map +1 -1
  382. package/build/dist/Server/Services/ServiceLabelRuleEngineService.js +8 -1
  383. package/build/dist/Server/Services/ServiceLabelRuleEngineService.js.map +1 -1
  384. package/build/dist/Server/Services/ServiceOwnerRuleEngineService.js +8 -1
  385. package/build/dist/Server/Services/ServiceOwnerRuleEngineService.js.map +1 -1
  386. package/build/dist/Server/Services/StatusPageLabelRuleEngineService.js +8 -1
  387. package/build/dist/Server/Services/StatusPageLabelRuleEngineService.js.map +1 -1
  388. package/build/dist/Server/Services/StatusPageMonitorRuleEngineService.js +6 -0
  389. package/build/dist/Server/Services/StatusPageMonitorRuleEngineService.js.map +1 -1
  390. package/build/dist/Server/Services/StatusPageOwnerRuleEngineService.js +8 -1
  391. package/build/dist/Server/Services/StatusPageOwnerRuleEngineService.js.map +1 -1
  392. package/build/dist/Server/Services/TelemetrySourceMapService.js +213 -19
  393. package/build/dist/Server/Services/TelemetrySourceMapService.js.map +1 -1
  394. package/build/dist/Server/Services/UserService.js +25 -0
  395. package/build/dist/Server/Services/UserService.js.map +1 -1
  396. package/build/dist/Server/Services/WorkflowLabelRuleEngineService.js +8 -1
  397. package/build/dist/Server/Services/WorkflowLabelRuleEngineService.js.map +1 -1
  398. package/build/dist/Server/Services/WorkflowOwnerRuleEngineService.js +8 -1
  399. package/build/dist/Server/Services/WorkflowOwnerRuleEngineService.js.map +1 -1
  400. package/build/dist/Server/Utils/EnterpriseLicense/EnterpriseLicenseSeatUtil.js +145 -0
  401. package/build/dist/Server/Utils/EnterpriseLicense/EnterpriseLicenseSeatUtil.js.map +1 -0
  402. package/build/dist/Server/Utils/Monitor/CapturedMetricAttributeUtil.js +201 -0
  403. package/build/dist/Server/Utils/Monitor/CapturedMetricAttributeUtil.js.map +1 -0
  404. package/build/dist/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.js +19 -2
  405. package/build/dist/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.js.map +1 -1
  406. package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js +42 -23
  407. package/build/dist/Server/Utils/Monitor/MonitorMetricUtil.js.map +1 -1
  408. package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js +29 -0
  409. package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js.map +1 -1
  410. package/build/dist/Server/Utils/Monitor/NetworkDeviceMetricUtil.js +11 -2
  411. package/build/dist/Server/Utils/Monitor/NetworkDeviceMetricUtil.js.map +1 -1
  412. package/build/dist/Server/Utils/Monitor/NetworkDeviceWalkUtil.js +16 -1
  413. package/build/dist/Server/Utils/Monitor/NetworkDeviceWalkUtil.js.map +1 -1
  414. package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js +10 -0
  415. package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js.map +1 -1
  416. package/build/dist/Server/Utils/Monitor/SeriesResourceLabels.js +33 -0
  417. package/build/dist/Server/Utils/Monitor/SeriesResourceLabels.js.map +1 -1
  418. package/build/dist/Server/Utils/Rules/RuleEngineRuleRead.js +37 -0
  419. package/build/dist/Server/Utils/Rules/RuleEngineRuleRead.js.map +1 -0
  420. package/build/dist/Server/Utils/Telemetry/ExceptionSanitizer.js +12 -1
  421. package/build/dist/Server/Utils/Telemetry/ExceptionSanitizer.js.map +1 -1
  422. package/build/dist/Server/Utils/Telemetry/LogExceptionExtractor.js +14 -2
  423. package/build/dist/Server/Utils/Telemetry/LogExceptionExtractor.js.map +1 -1
  424. package/build/dist/Server/Utils/Telemetry/SourceMapResolver.js +15 -5
  425. package/build/dist/Server/Utils/Telemetry/SourceMapResolver.js.map +1 -1
  426. package/build/dist/Server/Utils/Telemetry/StackTraceParser.js +307 -0
  427. package/build/dist/Server/Utils/Telemetry/StackTraceParser.js.map +1 -1
  428. package/build/dist/Types/Date.js +27 -0
  429. package/build/dist/Types/Date.js.map +1 -1
  430. package/build/dist/Types/Monitor/SnmpMonitor/SnmpOidListUtil.js +253 -0
  431. package/build/dist/Types/Monitor/SnmpMonitor/SnmpOidListUtil.js.map +1 -0
  432. package/build/dist/Types/Permission.js +86 -0
  433. package/build/dist/Types/Permission.js.map +1 -1
  434. package/build/dist/Types/Rum/SessionReplay.js +19 -0
  435. package/build/dist/Types/Rum/SessionReplay.js.map +1 -1
  436. package/build/dist/UI/Components/Charts/ChartLibrary/Annotations/AnnotationHoverCard.js +83 -0
  437. package/build/dist/UI/Components/Charts/ChartLibrary/Annotations/AnnotationHoverCard.js.map +1 -0
  438. package/build/dist/UI/Components/Charts/ChartLibrary/Annotations/AnnotationLayout.js +531 -0
  439. package/build/dist/UI/Components/Charts/ChartLibrary/Annotations/AnnotationLayout.js.map +1 -0
  440. package/build/dist/UI/Components/Charts/ChartLibrary/Annotations/ChartAnnotationLayer.js +264 -0
  441. package/build/dist/UI/Components/Charts/ChartLibrary/Annotations/ChartAnnotationLayer.js.map +1 -0
  442. package/build/dist/UI/Components/Charts/ChartLibrary/Annotations/UseChartAnnotations.js +122 -0
  443. package/build/dist/UI/Components/Charts/ChartLibrary/Annotations/UseChartAnnotations.js.map +1 -0
  444. package/build/dist/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.js +213 -233
  445. package/build/dist/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.js.map +1 -1
  446. package/build/dist/UI/Components/Charts/ChartLibrary/BarChart/BarChart.js +139 -152
  447. package/build/dist/UI/Components/Charts/ChartLibrary/BarChart/BarChart.js.map +1 -1
  448. package/build/dist/UI/Components/Charts/ChartLibrary/LineChart/LineChart.js +212 -232
  449. package/build/dist/UI/Components/Charts/ChartLibrary/LineChart/LineChart.js.map +1 -1
  450. package/build/dist/UI/Components/Charts/Types/ChartEventKind.js +14 -0
  451. package/build/dist/UI/Components/Charts/Types/ChartEventKind.js.map +1 -0
  452. package/build/dist/UI/Components/Charts/Utils/TimeAnnotation.js +57 -28
  453. package/build/dist/UI/Components/Charts/Utils/TimeAnnotation.js.map +1 -1
  454. package/build/dist/UI/Components/Charts/Utils/XAxis.js +103 -17
  455. package/build/dist/UI/Components/Charts/Utils/XAxis.js.map +1 -1
  456. package/build/dist/UI/Components/EditionLabel/EditionLabel.js +198 -23
  457. package/build/dist/UI/Components/EditionLabel/EditionLabel.js.map +1 -1
  458. package/build/dist/UI/Components/ErrorMessage/ErrorMessage.js +15 -5
  459. package/build/dist/UI/Components/ErrorMessage/ErrorMessage.js.map +1 -1
  460. package/build/dist/UI/Components/Feed/FeedItem.js +4 -5
  461. package/build/dist/UI/Components/Feed/FeedItem.js.map +1 -1
  462. package/build/dist/UI/Components/Header/HeaderIconDropdownButton.js +1 -2
  463. package/build/dist/UI/Components/Header/HeaderIconDropdownButton.js.map +1 -1
  464. package/build/dist/UI/Components/Header/UserProfile/UserProfile.js.map +1 -1
  465. package/build/dist/UI/Components/Image/Image.js +6 -1
  466. package/build/dist/UI/Components/Image/Image.js.map +1 -1
  467. package/build/dist/UI/Components/Markdown.tsx/MarkdownConverters.js +0 -0
  468. package/build/dist/UI/Components/Markdown.tsx/MarkdownConverters.js.map +1 -1
  469. package/build/dist/UI/Components/MemberRoleAssignment/MemberRoleAssignment.js +1 -2
  470. package/build/dist/UI/Components/MemberRoleAssignment/MemberRoleAssignment.js.map +1 -1
  471. package/build/dist/UI/Components/ModelTable/BaseModelTable.js +104 -23
  472. package/build/dist/UI/Components/ModelTable/BaseModelTable.js.map +1 -1
  473. package/build/dist/UI/Components/Table/TableHeader.js +20 -22
  474. package/build/dist/UI/Components/Table/TableHeader.js.map +1 -1
  475. package/build/dist/UI/Components/Table/TableRow.js +13 -4
  476. package/build/dist/UI/Components/Table/TableRow.js.map +1 -1
  477. package/build/dist/Utils/EnterpriseLicense/EnterpriseLicenseSeats.js +153 -0
  478. package/build/dist/Utils/EnterpriseLicense/EnterpriseLicenseSeats.js.map +1 -0
  479. package/build/dist/Utils/NetworkDiscovery/AutoImportRuleMatcher.js.map +1 -1
  480. package/build/dist/Utils/NetworkDiscovery/DiscoveredDeviceBuilder.js +127 -7
  481. package/build/dist/Utils/NetworkDiscovery/DiscoveredDeviceBuilder.js.map +1 -1
  482. package/build/dist/Utils/NetworkDiscovery/DiscoveredHostUtil.js +50 -3
  483. package/build/dist/Utils/NetworkDiscovery/DiscoveredHostUtil.js.map +1 -1
  484. package/build/dist/Utils/NetworkDiscovery/ReverseDnsNameUtil.js +132 -0
  485. package/build/dist/Utils/NetworkDiscovery/ReverseDnsNameUtil.js.map +1 -0
  486. package/build/dist/Utils/Rules/RuleEngineLimits.js +31 -0
  487. package/build/dist/Utils/Rules/RuleEngineLimits.js.map +1 -0
  488. package/jest.config.json +1 -0
  489. package/package.json +2 -2
@@ -1,4 +1,5 @@
1
1
  import MonitorTemplate from "./MonitorTemplate";
2
+ import NetworkDeviceOidTemplate from "./NetworkDeviceOidTemplate";
2
3
  import Project from "./Project";
3
4
  import User from "./User";
4
5
  import BaseModel from "./DatabaseBaseModel/DatabaseBaseModel";
@@ -551,6 +552,93 @@ export default class NetworkDeviceAutoImportRule extends BaseModel {
551
552
  })
552
553
  public monitorTemplateId?: ObjectID = undefined;
553
554
 
555
+ @ColumnAccessControl({
556
+ create: [
557
+ Permission.ProjectOwner,
558
+ Permission.ProjectAdmin,
559
+ Permission.CreateNetworkDeviceAutoImportRule,
560
+ ],
561
+ read: [
562
+ Permission.ProjectOwner,
563
+ Permission.ProjectAdmin,
564
+ Permission.ProjectMember,
565
+ Permission.Viewer,
566
+ Permission.ReadNetworkDeviceOidTemplate,
567
+ ],
568
+ update: [
569
+ Permission.ProjectOwner,
570
+ Permission.ProjectAdmin,
571
+ Permission.EditNetworkDeviceAutoImportRule,
572
+ ],
573
+ })
574
+ /*
575
+ * The collect half of the pair, sitting beside the alert half above.
576
+ *
577
+ * Without it a template is only reachable by hand: a discovery scan would
578
+ * import a device, the vendor auto-apply would write a two-to-six OID copy
579
+ * onto it, and somebody would have to go back and bulk-assign the real
580
+ * template - after every scan, forever. That is the same per-device chore
581
+ * issue #3507 is about, just moved one step later. This is the OneUptime
582
+ * shape of Zabbix's "link template on host discovery" action.
583
+ */
584
+ @TableColumn({
585
+ manyToOneRelationColumn: "oidTemplateId",
586
+ type: TableColumnType.Entity,
587
+ modelType: NetworkDeviceOidTemplate,
588
+ title: "OID Collection Template",
589
+ description:
590
+ "Optional OID Collection Template to link to devices imported by this rule. The Monitor Template decides what those devices are ALERTED on; this decides what they COLLECT.",
591
+ })
592
+ @ManyToOne(
593
+ () => {
594
+ return NetworkDeviceOidTemplate;
595
+ },
596
+ {
597
+ eager: false,
598
+ nullable: true,
599
+ onDelete: "SET NULL",
600
+ orphanedRowAction: "nullify",
601
+ },
602
+ )
603
+ @JoinColumn({
604
+ name: "oidTemplateId",
605
+ })
606
+ public oidTemplate?: NetworkDeviceOidTemplate = undefined;
607
+
608
+ @ColumnAccessControl({
609
+ create: [
610
+ Permission.ProjectOwner,
611
+ Permission.ProjectAdmin,
612
+ Permission.CreateNetworkDeviceAutoImportRule,
613
+ ],
614
+ read: [
615
+ Permission.ProjectOwner,
616
+ Permission.ProjectAdmin,
617
+ Permission.ProjectMember,
618
+ Permission.Viewer,
619
+ Permission.ReadNetworkDeviceOidTemplate,
620
+ ],
621
+ update: [
622
+ Permission.ProjectOwner,
623
+ Permission.ProjectAdmin,
624
+ Permission.EditNetworkDeviceAutoImportRule,
625
+ ],
626
+ })
627
+ @TableColumn({
628
+ type: TableColumnType.ObjectID,
629
+ required: false,
630
+ canReadOnRelationQuery: true,
631
+ title: "OID Collection Template ID",
632
+ description:
633
+ "ID of the optional OID Collection Template to link to devices imported by this rule",
634
+ })
635
+ @Column({
636
+ type: ColumnType.ObjectID,
637
+ nullable: true,
638
+ transformer: ObjectID.getDatabaseTransformer(),
639
+ })
640
+ public oidTemplateId?: ObjectID = undefined;
641
+
554
642
  @ColumnAccessControl({
555
643
  create: [
556
644
  Permission.ProjectOwner,
@@ -34,6 +34,28 @@ export interface DiscoveredNetworkDevice {
34
34
  sysLocation?: string | undefined;
35
35
  sysContact?: string | undefined;
36
36
  sysUpTimeSeconds?: number | undefined;
37
+ /*
38
+ * The host's reverse-DNS (PTR) name, resolved by the probe against the
39
+ * scanned network's own resolvers (OneUptime issue #3529).
40
+ *
41
+ * This is what a ping-only host is NAMED by. Before it existed the Review
42
+ * dialog could only show such a host as its address, which is what the
43
+ * issue reported: an estate with DNS records for everything still read as
44
+ * a list of bare IPs.
45
+ *
46
+ * Optional in three different ways that all mean "no name": the address has
47
+ * no PTR record, the probe has no usable resolver, or the row was stored
48
+ * before this field existed / by an older probe. Every reader falls back to
49
+ * the address, so none of the three needs telling apart.
50
+ *
51
+ * ATTACKER-INFLUENCED. Its value is chosen by whoever runs DNS for the
52
+ * scanned subnet, which on a discovery scan is frequently not this project,
53
+ * and it is stored here verbatim in jsonb. Never render or store it without
54
+ * ReverseDnsNameUtil.normalizeReverseDnsName — normalizeDiscoveredHosts and
55
+ * buildDeviceName both apply it, which covers every path that reaches a
56
+ * screen or a name column.
57
+ */
58
+ dnsHostname?: string | undefined;
37
59
  isAlreadyRegistered?: boolean | undefined;
38
60
  /*
39
61
  * False when the host answered ping but not SNMP — such hosts cannot be
@@ -0,0 +1,499 @@
1
+ import Project from "./Project";
2
+ import User from "./User";
3
+ import BaseModel from "./DatabaseBaseModel/DatabaseBaseModel";
4
+ import Route from "../../Types/API/Route";
5
+ import SnmpOid from "../../Types/Monitor/SnmpMonitor/SnmpOid";
6
+ import ColumnAccessControl from "../../Types/Database/AccessControl/ColumnAccessControl";
7
+ import TableAccessControl from "../../Types/Database/AccessControl/TableAccessControl";
8
+ import ColumnLength from "../../Types/Database/ColumnLength";
9
+ import ColumnType from "../../Types/Database/ColumnType";
10
+ import CrudApiEndpoint from "../../Types/Database/CrudApiEndpoint";
11
+ import EnableDocumentation from "../../Types/Database/EnableDocumentation";
12
+ import EnableWorkflow from "../../Types/Database/EnableWorkflow";
13
+ import SlugifyColumn from "../../Types/Database/SlugifyColumn";
14
+ import TableColumn from "../../Types/Database/TableColumn";
15
+ import TableColumnType from "../../Types/Database/TableColumnType";
16
+ import TableMetadata from "../../Types/Database/TableMetadata";
17
+ import TenantColumn from "../../Types/Database/TenantColumn";
18
+ import UniqueColumnBy from "../../Types/Database/UniqueColumnBy";
19
+ import IconProp from "../../Types/Icon/IconProp";
20
+ import ObjectID from "../../Types/ObjectID";
21
+ import Permission from "../../Types/Permission";
22
+ import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
23
+
24
+ /*
25
+ * A reusable set of SNMP health OIDs, shared by every network device linked
26
+ * to it (issue #3507).
27
+ *
28
+ * The link is LIVE, not a copy. Nothing here is ever written onto a device:
29
+ * NetworkDevicePoll merges a device's template OIDs with its own on every
30
+ * poll, so editing this row changes what every linked device collects on its
31
+ * next poll, with no fan-out and no write to NetworkDevice. That deliberately
32
+ * inverts the MonitorTemplate precedent, which pushes on an explicit button
33
+ * press - because that template carries ALERTING config, where a silent
34
+ * fleet-wide change is dangerous, and this one carries COLLECTION config,
35
+ * where adding an OID raises nothing by itself and editing the row back
36
+ * undoes it.
37
+ *
38
+ * The template's NAME is the device type. There is no NetworkDeviceType
39
+ * model and every candidate matching key was defective: labels double as the
40
+ * row-level ACL column, deviceRole is unconstrained free text, and
41
+ * vendor/sysObjectId are probe-managed and NULL until the first successful
42
+ * walk. Devices link by an explicit FK the operator sets, in bulk from the
43
+ * device list.
44
+ */
45
+ @EnableDocumentation()
46
+ @TenantColumn("projectId")
47
+ @TableAccessControl({
48
+ create: [
49
+ Permission.ProjectOwner,
50
+ Permission.ProjectAdmin,
51
+ Permission.ProjectMember,
52
+ Permission.SettingsAdmin,
53
+ Permission.SettingsMember,
54
+ Permission.CreateNetworkDeviceOidTemplate,
55
+ ],
56
+ read: [
57
+ Permission.ProjectOwner,
58
+ Permission.ProjectAdmin,
59
+ Permission.ProjectMember,
60
+ Permission.Viewer,
61
+ Permission.SettingsAdmin,
62
+ Permission.SettingsMember,
63
+ Permission.SettingsViewer,
64
+ Permission.ReadNetworkDeviceOidTemplate,
65
+ ],
66
+ delete: [
67
+ Permission.ProjectOwner,
68
+ Permission.ProjectAdmin,
69
+ Permission.ProjectMember,
70
+ Permission.SettingsAdmin,
71
+ Permission.SettingsMember,
72
+ Permission.DeleteNetworkDeviceOidTemplate,
73
+ ],
74
+ update: [
75
+ Permission.ProjectOwner,
76
+ Permission.ProjectAdmin,
77
+ Permission.ProjectMember,
78
+ Permission.SettingsAdmin,
79
+ Permission.SettingsMember,
80
+ Permission.EditNetworkDeviceOidTemplate,
81
+ ],
82
+ })
83
+ @CrudApiEndpoint(new Route("/network-device-oid-template"))
84
+ @SlugifyColumn("name", "slug")
85
+ @TableMetadata({
86
+ tableName: "NetworkDeviceOidTemplate",
87
+ singularName: "OID Collection Template",
88
+ pluralName: "OID Collection Templates",
89
+ icon: IconProp.List,
90
+ tableDescription:
91
+ "A reusable set of SNMP health OIDs. Every network device linked to a template collects its OIDs, and editing the template changes what every linked device collects on its next poll.",
92
+ })
93
+ @Entity({
94
+ name: "NetworkDeviceOidTemplate",
95
+ })
96
+ @EnableWorkflow({
97
+ create: true,
98
+ delete: true,
99
+ update: true,
100
+ read: true,
101
+ })
102
+ export default class NetworkDeviceOidTemplate extends BaseModel {
103
+ @ColumnAccessControl({
104
+ create: [
105
+ Permission.ProjectOwner,
106
+ Permission.ProjectAdmin,
107
+ Permission.ProjectMember,
108
+ Permission.SettingsAdmin,
109
+ Permission.SettingsMember,
110
+ Permission.CreateNetworkDeviceOidTemplate,
111
+ ],
112
+ read: [
113
+ Permission.ProjectOwner,
114
+ Permission.ProjectAdmin,
115
+ Permission.ProjectMember,
116
+ Permission.Viewer,
117
+ Permission.SettingsAdmin,
118
+ Permission.SettingsMember,
119
+ Permission.SettingsViewer,
120
+ Permission.ReadNetworkDeviceOidTemplate,
121
+ ],
122
+ update: [],
123
+ })
124
+ @TableColumn({
125
+ manyToOneRelationColumn: "projectId",
126
+ type: TableColumnType.Entity,
127
+ modelType: Project,
128
+ title: "Project",
129
+ description: "Relation to Project Resource in which this object belongs",
130
+ })
131
+ @ManyToOne(
132
+ () => {
133
+ return Project;
134
+ },
135
+ {
136
+ eager: false,
137
+ nullable: true,
138
+ onDelete: "CASCADE",
139
+ orphanedRowAction: "nullify",
140
+ },
141
+ )
142
+ @JoinColumn({ name: "projectId" })
143
+ public project?: Project = undefined;
144
+
145
+ @ColumnAccessControl({
146
+ create: [
147
+ Permission.ProjectOwner,
148
+ Permission.ProjectAdmin,
149
+ Permission.ProjectMember,
150
+ Permission.SettingsAdmin,
151
+ Permission.SettingsMember,
152
+ Permission.CreateNetworkDeviceOidTemplate,
153
+ ],
154
+ read: [
155
+ Permission.ProjectOwner,
156
+ Permission.ProjectAdmin,
157
+ Permission.ProjectMember,
158
+ Permission.Viewer,
159
+ Permission.SettingsAdmin,
160
+ Permission.SettingsMember,
161
+ Permission.SettingsViewer,
162
+ Permission.ReadNetworkDeviceOidTemplate,
163
+ ],
164
+ update: [],
165
+ })
166
+ @Index()
167
+ @TableColumn({
168
+ type: TableColumnType.ObjectID,
169
+ required: true,
170
+ canReadOnRelationQuery: true,
171
+ title: "Project ID",
172
+ description: "ID of your OneUptime Project in which this object belongs",
173
+ })
174
+ @Column({
175
+ type: ColumnType.ObjectID,
176
+ nullable: false,
177
+ transformer: ObjectID.getDatabaseTransformer(),
178
+ })
179
+ public projectId?: ObjectID = undefined;
180
+
181
+ @ColumnAccessControl({
182
+ create: [
183
+ Permission.ProjectOwner,
184
+ Permission.ProjectAdmin,
185
+ Permission.ProjectMember,
186
+ Permission.SettingsAdmin,
187
+ Permission.SettingsMember,
188
+ Permission.CreateNetworkDeviceOidTemplate,
189
+ ],
190
+ read: [
191
+ Permission.ProjectOwner,
192
+ Permission.ProjectAdmin,
193
+ Permission.ProjectMember,
194
+ Permission.Viewer,
195
+ Permission.SettingsAdmin,
196
+ Permission.SettingsMember,
197
+ Permission.SettingsViewer,
198
+ Permission.ReadNetworkDeviceOidTemplate,
199
+ ],
200
+ update: [
201
+ Permission.ProjectOwner,
202
+ Permission.ProjectAdmin,
203
+ Permission.ProjectMember,
204
+ Permission.SettingsAdmin,
205
+ Permission.SettingsMember,
206
+ Permission.EditNetworkDeviceOidTemplate,
207
+ ],
208
+ })
209
+ @TableColumn({
210
+ required: true,
211
+ type: TableColumnType.ShortText,
212
+ canReadOnRelationQuery: true,
213
+ title: "Name",
214
+ description:
215
+ "The device type this template describes. Devices linked to it all collect the same OIDs.",
216
+ example: "Cisco Catalyst 9300",
217
+ })
218
+ @Column({
219
+ nullable: false,
220
+ type: ColumnType.ShortText,
221
+ length: ColumnLength.ShortText,
222
+ })
223
+ @UniqueColumnBy("projectId")
224
+ public name?: string = undefined;
225
+
226
+ @ColumnAccessControl({
227
+ create: [],
228
+ read: [
229
+ Permission.ProjectOwner,
230
+ Permission.ProjectAdmin,
231
+ Permission.ProjectMember,
232
+ Permission.Viewer,
233
+ Permission.SettingsAdmin,
234
+ Permission.SettingsMember,
235
+ Permission.SettingsViewer,
236
+ Permission.ReadNetworkDeviceOidTemplate,
237
+ ],
238
+ update: [],
239
+ })
240
+ @TableColumn({
241
+ required: true,
242
+ unique: true,
243
+ type: TableColumnType.Slug,
244
+ computed: true,
245
+ title: "Slug",
246
+ description: "Friendly globally unique name for your object",
247
+ })
248
+ @Column({
249
+ nullable: false,
250
+ type: ColumnType.Slug,
251
+ length: ColumnLength.Slug,
252
+ })
253
+ public slug?: string = undefined;
254
+
255
+ @ColumnAccessControl({
256
+ create: [
257
+ Permission.ProjectOwner,
258
+ Permission.ProjectAdmin,
259
+ Permission.ProjectMember,
260
+ Permission.SettingsAdmin,
261
+ Permission.SettingsMember,
262
+ Permission.CreateNetworkDeviceOidTemplate,
263
+ ],
264
+ read: [
265
+ Permission.ProjectOwner,
266
+ Permission.ProjectAdmin,
267
+ Permission.ProjectMember,
268
+ Permission.Viewer,
269
+ Permission.SettingsAdmin,
270
+ Permission.SettingsMember,
271
+ Permission.SettingsViewer,
272
+ Permission.ReadNetworkDeviceOidTemplate,
273
+ ],
274
+ update: [
275
+ Permission.ProjectOwner,
276
+ Permission.ProjectAdmin,
277
+ Permission.ProjectMember,
278
+ Permission.SettingsAdmin,
279
+ Permission.SettingsMember,
280
+ Permission.EditNetworkDeviceOidTemplate,
281
+ ],
282
+ })
283
+ @TableColumn({
284
+ required: false,
285
+ type: TableColumnType.LongText,
286
+ title: "Description",
287
+ description: "Friendly description that will help you remember",
288
+ example: "Branch routers: CPU, memory pool and chassis temperature.",
289
+ })
290
+ @Column({
291
+ nullable: true,
292
+ type: ColumnType.LongText,
293
+ length: ColumnLength.LongText,
294
+ })
295
+ public description?: string = undefined;
296
+
297
+ @ColumnAccessControl({
298
+ create: [
299
+ Permission.ProjectOwner,
300
+ Permission.ProjectAdmin,
301
+ Permission.ProjectMember,
302
+ Permission.SettingsAdmin,
303
+ Permission.SettingsMember,
304
+ Permission.CreateNetworkDeviceOidTemplate,
305
+ ],
306
+ read: [
307
+ Permission.ProjectOwner,
308
+ Permission.ProjectAdmin,
309
+ Permission.ProjectMember,
310
+ Permission.Viewer,
311
+ Permission.SettingsAdmin,
312
+ Permission.SettingsMember,
313
+ Permission.SettingsViewer,
314
+ Permission.ReadNetworkDeviceOidTemplate,
315
+ ],
316
+ update: [
317
+ Permission.ProjectOwner,
318
+ Permission.ProjectAdmin,
319
+ Permission.ProjectMember,
320
+ Permission.SettingsAdmin,
321
+ Permission.SettingsMember,
322
+ Permission.EditNetworkDeviceOidTemplate,
323
+ ],
324
+ })
325
+ /*
326
+ * The same element type as NetworkDevice.snmpOids, deliberately. Sharing
327
+ * it means the same editor, the same merge and the same probe wire format
328
+ * serve both, and "template OIDs plus device OIDs" is a legal list needing
329
+ * no conversion anywhere.
330
+ */
331
+ @TableColumn({
332
+ required: false,
333
+ type: TableColumnType.JSON,
334
+ /*
335
+ * Readable through a device's `oidTemplate` relation, because the
336
+ * dashboard has to show the EFFECTIVE OID list - the template's plus the
337
+ * device's own - in two places that only hold a device: the criteria OID
338
+ * picker, and the device's own settings card. Live resolution means the
339
+ * device row alone no longer says what it collects, so without this the
340
+ * operator has no way to see it.
341
+ *
342
+ * Safe specifically because NetworkDeviceService now refuses to link a
343
+ * device to a template from another project (assertOidTemplateBelongsTo-
344
+ * Project). Nested relation selects are NOT tenant-checked - only the root
345
+ * query is - so that write-time guard is what makes this read-time flag
346
+ * sound.
347
+ */
348
+ canReadOnRelationQuery: true,
349
+ title: "OIDs",
350
+ description:
351
+ "SNMP OIDs (CPU, memory, temperature, or any custom OID) collected by every device linked to this template. You do not need OIDs for interfaces - bits in/out, errors, utilization and up/down are walked for every port automatically.",
352
+ })
353
+ @Column({
354
+ type: ColumnType.JSON,
355
+ nullable: true,
356
+ })
357
+ public oids?: Array<SnmpOid> = undefined;
358
+
359
+ @ColumnAccessControl({
360
+ create: [
361
+ Permission.ProjectOwner,
362
+ Permission.ProjectAdmin,
363
+ Permission.ProjectMember,
364
+ Permission.SettingsAdmin,
365
+ Permission.SettingsMember,
366
+ Permission.CreateNetworkDeviceOidTemplate,
367
+ ],
368
+ read: [
369
+ Permission.ProjectOwner,
370
+ Permission.ProjectAdmin,
371
+ Permission.ProjectMember,
372
+ Permission.Viewer,
373
+ Permission.SettingsAdmin,
374
+ Permission.SettingsMember,
375
+ Permission.SettingsViewer,
376
+ Permission.ReadNetworkDeviceOidTemplate,
377
+ ],
378
+ update: [],
379
+ })
380
+ @TableColumn({
381
+ manyToOneRelationColumn: "createdByUserId",
382
+ type: TableColumnType.Entity,
383
+ modelType: User,
384
+ title: "Created by User",
385
+ description:
386
+ "Relation to User who created this object (if this object was created by a User)",
387
+ })
388
+ @ManyToOne(
389
+ () => {
390
+ return User;
391
+ },
392
+ {
393
+ eager: false,
394
+ nullable: true,
395
+ onDelete: "SET NULL",
396
+ orphanedRowAction: "nullify",
397
+ },
398
+ )
399
+ @JoinColumn({ name: "createdByUserId" })
400
+ public createdByUser?: User = undefined;
401
+
402
+ @ColumnAccessControl({
403
+ create: [
404
+ Permission.ProjectOwner,
405
+ Permission.ProjectAdmin,
406
+ Permission.ProjectMember,
407
+ Permission.SettingsAdmin,
408
+ Permission.SettingsMember,
409
+ Permission.CreateNetworkDeviceOidTemplate,
410
+ ],
411
+ read: [
412
+ Permission.ProjectOwner,
413
+ Permission.ProjectAdmin,
414
+ Permission.ProjectMember,
415
+ Permission.Viewer,
416
+ Permission.SettingsAdmin,
417
+ Permission.SettingsMember,
418
+ Permission.SettingsViewer,
419
+ Permission.ReadNetworkDeviceOidTemplate,
420
+ ],
421
+ update: [],
422
+ })
423
+ @TableColumn({
424
+ type: TableColumnType.ObjectID,
425
+ title: "Created by User ID",
426
+ description:
427
+ "User ID who created this object (if this object was created by a User)",
428
+ })
429
+ @Column({
430
+ type: ColumnType.ObjectID,
431
+ nullable: true,
432
+ transformer: ObjectID.getDatabaseTransformer(),
433
+ })
434
+ public createdByUserId?: ObjectID = undefined;
435
+
436
+ @ColumnAccessControl({
437
+ create: [],
438
+ read: [
439
+ Permission.ProjectOwner,
440
+ Permission.ProjectAdmin,
441
+ Permission.ProjectMember,
442
+ Permission.Viewer,
443
+ Permission.SettingsAdmin,
444
+ Permission.SettingsMember,
445
+ Permission.SettingsViewer,
446
+ Permission.ReadNetworkDeviceOidTemplate,
447
+ ],
448
+ update: [],
449
+ })
450
+ @TableColumn({
451
+ manyToOneRelationColumn: "deletedByUserId",
452
+ type: TableColumnType.Entity,
453
+ title: "Deleted by User",
454
+ modelType: User,
455
+ description:
456
+ "Relation to User who deleted this object (if this object was deleted by a User)",
457
+ })
458
+ @ManyToOne(
459
+ () => {
460
+ return User;
461
+ },
462
+ {
463
+ cascade: false,
464
+ eager: false,
465
+ nullable: true,
466
+ onDelete: "SET NULL",
467
+ orphanedRowAction: "nullify",
468
+ },
469
+ )
470
+ @JoinColumn({ name: "deletedByUserId" })
471
+ public deletedByUser?: User = undefined;
472
+
473
+ @ColumnAccessControl({
474
+ create: [],
475
+ read: [
476
+ Permission.ProjectOwner,
477
+ Permission.ProjectAdmin,
478
+ Permission.ProjectMember,
479
+ Permission.Viewer,
480
+ Permission.SettingsAdmin,
481
+ Permission.SettingsMember,
482
+ Permission.SettingsViewer,
483
+ Permission.ReadNetworkDeviceOidTemplate,
484
+ ],
485
+ update: [],
486
+ })
487
+ @TableColumn({
488
+ type: TableColumnType.ObjectID,
489
+ title: "Deleted by User ID",
490
+ description:
491
+ "User ID who deleted this object (if this object was deleted by a User)",
492
+ })
493
+ @Column({
494
+ type: ColumnType.ObjectID,
495
+ nullable: true,
496
+ transformer: ObjectID.getDatabaseTransformer(),
497
+ })
498
+ public deletedByUserId?: ObjectID = undefined;
499
+ }
@@ -22,26 +22,35 @@ import Permission from "../../Types/Permission";
22
22
  import { PlanType } from "../../Types/Billing/SubscriptionPlan";
23
23
  import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
24
24
 
25
+ /*
26
+ * Part of the SIEM, so it reads and is administered through the Security
27
+ * tiers rather than the Telemetry ones it used to share a list with. A
28
+ * detection rule and a threat-intel subscription describe what a project is
29
+ * watching for and what it believes it is up against, which is security
30
+ * posture rather than observability configuration.
31
+ */
25
32
  const createPermissions: Array<Permission> = [
26
33
  Permission.ProjectOwner,
27
34
  Permission.ProjectAdmin,
35
+ Permission.SecurityAdmin,
36
+ Permission.SecurityMember,
28
37
  Permission.CreateProjectThreatIntelFeed,
29
38
  ];
30
39
 
31
40
  const readPermissions: Array<Permission> = [
32
41
  Permission.ProjectOwner,
33
42
  Permission.ProjectAdmin,
34
- Permission.ProjectMember,
35
- Permission.Viewer,
36
- Permission.TelemetryAdmin,
37
- Permission.TelemetryMember,
38
- Permission.TelemetryViewer,
43
+ Permission.SecurityAdmin,
44
+ Permission.SecurityMember,
45
+ Permission.SecurityViewer,
39
46
  Permission.ReadProjectThreatIntelFeed,
40
47
  ];
41
48
 
42
49
  const updatePermissions: Array<Permission> = [
43
50
  Permission.ProjectOwner,
44
51
  Permission.ProjectAdmin,
52
+ Permission.SecurityAdmin,
53
+ Permission.SecurityMember,
45
54
  Permission.EditProjectThreatIntelFeed,
46
55
  ];
47
56
 
@@ -86,6 +95,8 @@ const updatePermissions: Array<Permission> = [
86
95
  delete: [
87
96
  Permission.ProjectOwner,
88
97
  Permission.ProjectAdmin,
98
+ Permission.SecurityAdmin,
99
+ Permission.SecurityMember,
89
100
  Permission.DeleteProjectThreatIntelFeed,
90
101
  ],
91
102
  update: updatePermissions,