Skip to content

Commit d7c7bd2

Browse files
committed
Enhance SQL templates to prevent duplicate notifications for 'Down Reconnected' devices in event section
1 parent b311113 commit d7c7bd2

File tree

2 files changed

+25
-5
lines changed

2 files changed

+25
-5
lines changed

server/messaging/notification_sections.py

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -83,15 +83,22 @@
8383
"down_reconnected": """
8484
SELECT
8585
devName,
86-
eveMac,
86+
reconnected_devices.eveMac,
8787
devVendor,
88-
eveIp,
89-
eveDateTime,
90-
eveEventType,
88+
reconnected_devices.eveIp,
89+
reconnected_devices.eveDateTime,
90+
reconnected_devices.eveEventType,
9191
devComments
9292
FROM Events_Devices AS reconnected_devices
9393
WHERE reconnected_devices.eveEventType = 'Down Reconnected'
9494
AND reconnected_devices.evePendingAlertEmail = 1
95+
AND NOT EXISTS (
96+
SELECT 1 FROM Events AS newer
97+
WHERE newer.eveMac = reconnected_devices.eveMac
98+
AND newer.eveEventType = 'Down Reconnected'
99+
AND newer.evePendingAlertEmail = 1
100+
AND newer.eveDateTime > reconnected_devices.eveDateTime
101+
)
95102
ORDER BY reconnected_devices.eveDateTime
96103
""",
97104
"events": """
@@ -105,7 +112,7 @@
105112
devComments
106113
FROM Events_Devices
107114
WHERE evePendingAlertEmail = 1
108-
AND eveEventType IN ('Connected', 'Down Reconnected', 'Disconnected','IP Changed') {condition}
115+
AND eveEventType IN ({event_types}) {condition}
109116
ORDER BY eveDateTime
110117
""",
111118
"plugins": """

server/messaging/reporting.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,13 +198,26 @@ def get_section_condition(section):
198198
format_vars = {"condition": safe_condition}
199199
if section == "down_devices":
200200
format_vars["alert_down_minutes"] = alert_down_minutes
201+
if section == "events":
202+
# 'Down Reconnected' has its own dedicated section; exclude it
203+
# from events when that section is also active to prevent the
204+
# same device appearing twice with different IP sources.
205+
if "down_reconnected" in sections:
206+
format_vars["event_types"] = "'Connected', 'Disconnected','IP Changed'"
207+
else:
208+
format_vars["event_types"] = "'Connected', 'Down Reconnected', 'Disconnected','IP Changed'"
201209
sqlQuery = template.format(**format_vars)
202210

203211
except Exception as e:
204212
mylog("verbose", [f"[Notification] Error building condition for {section}: ", e])
205213
fallback_vars = {"condition": ""}
206214
if section == "down_devices":
207215
fallback_vars["alert_down_minutes"] = alert_down_minutes
216+
if section == "events":
217+
if "down_reconnected" in sections:
218+
fallback_vars["event_types"] = "'Connected', 'Disconnected','IP Changed'"
219+
else:
220+
fallback_vars["event_types"] = "'Connected', 'Down Reconnected', 'Disconnected','IP Changed'"
208221
sqlQuery = template.format(**fallback_vars)
209222
parameters = {}
210223

0 commit comments

Comments
 (0)