From 631aae1158caec6c1b4a4e20ccd2d8f30a55898a Mon Sep 17 00:00:00 2001 From: Massimo Candela Date: Fri, 20 Oct 2023 01:25:40 +0200 Subject: [PATCH] improved performance of misconfig monitor --- src/monitors/monitorAS.js | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/src/monitors/monitorAS.js b/src/monitors/monitorAS.js index 6e3f51f5..304bef15 100644 --- a/src/monitors/monitorAS.js +++ b/src/monitors/monitorAS.js @@ -80,32 +80,34 @@ export default class MonitorAS extends Monitor { const messageOrigin = message.originAS; const messagePrefix = message.prefix; - const matchedRule = this.getMonitoredAsMatch(messageOrigin); + const matchedASRule = this.getMonitoredAsMatch(messageOrigin); - if (matchedRule) { + if (matchedASRule) { const matchedPrefixRules = this.getMoreSpecificMatches(messagePrefix, true, false); if (this.skipPrefixMatch) { - this.publishAlert(messageOrigin.getId().toString() + "-" + messagePrefix, - messageOrigin.getId(), - matchedRule, - message, - {}); - - for (let matchedPrefixRule of matchedPrefixRules) { - this.publishAlert(messageOrigin.getId().toString() + "-" + messagePrefix, - messageOrigin.getId(), - matchedPrefixRule, - message, - {}); + const skipMatches = matchedPrefixRules.map(i => i.group).flat(); + const goodMatches = matchedASRule.map(i => i.group).flat(); + + for (let g of goodMatches) { + if (!skipMatches.includes(g)) { + this.publishAlert(messageOrigin.getId().toString() + "-" + messagePrefix, + messageOrigin.getId(), + { + ...matchedASRule, + group: [g] + }, + message, + {}); + } } } else if (!matchedPrefixRules.length) { this.publishAlert(messageOrigin.getId().toString() + "-" + messagePrefix, messageOrigin.getId(), - matchedRule, + matchedASRule, message, {}); }