💠down_reconnected support v0.6 #611
This commit is contained in:
@@ -60,7 +60,7 @@ Get visibility of what's going on on your WIFI/LAN network. Schedule scans for d
|
|||||||
|-------------|-------------|
|
|-------------|-------------|
|
||||||
| 📥🐳 | [Docker instructions](https://github.com/jokob-sk/NetAlertX/blob/main/dockerfiles/README.md)
|
| 📥🐳 | [Docker instructions](https://github.com/jokob-sk/NetAlertX/blob/main/dockerfiles/README.md)
|
||||||
| 📥💻 | [HW install (experimental 🧪)](https://github.com/jokob-sk/NetAlertX/blob/main/docs/HW_INSTALL.md) |
|
| 📥💻 | [HW install (experimental 🧪)](https://github.com/jokob-sk/NetAlertX/blob/main/docs/HW_INSTALL.md) |
|
||||||
| 📥🟧 | [Unraid App 🧪)](https://unraid.net/community/apps) |
|
| 📥🟧 | [Unraid App](https://unraid.net/community/apps) |
|
||||||
| 📚 | [All Documentation](https://github.com/jokob-sk/NetAlertX/blob/main/docs/README.md) (App Usage and Configuration) |
|
| 📚 | [All Documentation](https://github.com/jokob-sk/NetAlertX/blob/main/docs/README.md) (App Usage and Configuration) |
|
||||||
|
|
||||||
> Other Alternatives
|
> Other Alternatives
|
||||||
|
|||||||
@@ -254,13 +254,13 @@ function getString (key) {
|
|||||||
case 'Norwegian':
|
case 'Norwegian':
|
||||||
lang_code = 'nb_no';
|
lang_code = 'nb_no';
|
||||||
break;
|
break;
|
||||||
case 'Polish':
|
case 'Polish (pl_pl)':
|
||||||
lang_code = 'pl_pl';
|
lang_code = 'pl_pl';
|
||||||
break;
|
break;
|
||||||
case 'Portuguese (Brazil)':
|
case 'Portuguese (pt_br)':
|
||||||
lang_code = 'pt_br';
|
lang_code = 'pt_br';
|
||||||
break;
|
break;
|
||||||
case 'Italian':
|
case 'Italian (it_it)':
|
||||||
lang_code = 'it_it';
|
lang_code = 'it_it';
|
||||||
break;
|
break;
|
||||||
case 'Russian':
|
case 'Russian':
|
||||||
|
|||||||
@@ -14,9 +14,9 @@ switch($result){
|
|||||||
case 'Spanish': $pia_lang_selected = 'es_es'; break;
|
case 'Spanish': $pia_lang_selected = 'es_es'; break;
|
||||||
case 'German': $pia_lang_selected = 'de_de'; break;
|
case 'German': $pia_lang_selected = 'de_de'; break;
|
||||||
case 'Norwegian': $pia_lang_selected = 'nb_no'; break;
|
case 'Norwegian': $pia_lang_selected = 'nb_no'; break;
|
||||||
case 'Polish': $pia_lang_selected = 'pl_pl'; break;
|
case 'Polish (pl_pl)': $pia_lang_selected = 'pl_pl'; break;
|
||||||
case 'Portuguese (Brazil)': $pia_lang_selected = 'pt_br'; break;
|
case 'Portuguese (pt_br)': $pia_lang_selected = 'pt_br'; break;
|
||||||
case 'Italian': $pia_lang_selected = 'it_it'; break;
|
case 'Italian (it_it)': $pia_lang_selected = 'it_it'; break;
|
||||||
case 'Russian': $pia_lang_selected = 'ru_ru'; break;
|
case 'Russian': $pia_lang_selected = 'ru_ru'; break;
|
||||||
case 'French': $pia_lang_selected = 'fr_fr'; break;
|
case 'French': $pia_lang_selected = 'fr_fr'; break;
|
||||||
case 'Chinese (zh_cn)': $pia_lang_selected = 'zh_cn'; break;
|
case 'Chinese (zh_cn)': $pia_lang_selected = 'zh_cn'; break;
|
||||||
|
|||||||
@@ -89,7 +89,7 @@
|
|||||||
{
|
{
|
||||||
"function": "RUN_SCHD",
|
"function": "RUN_SCHD",
|
||||||
"type": "text",
|
"type": "text",
|
||||||
"default_value":"0 2 * * 3",
|
"default_value":"0 2 * * *",
|
||||||
"options": [],
|
"options": [],
|
||||||
"localized": ["name", "description"],
|
"localized": ["name", "description"],
|
||||||
"name" : [{
|
"name" : [{
|
||||||
|
|||||||
@@ -61,14 +61,14 @@
|
|||||||
<table width=100% bgcolor=#3c8dbc cellpadding=5px cellspacing=0 style="font-size: 13px; font-weight: bold; border-bottom-left-radius: 5px; border-bottom-right-radius: 5px;">
|
<table width=100% bgcolor=#3c8dbc cellpadding=5px cellspacing=0 style="font-size: 13px; font-weight: bold; border-bottom-left-radius: 5px; border-bottom-right-radius: 5px;">
|
||||||
<tr>
|
<tr>
|
||||||
<td width=50% style="text-align:center;color: white;" bgcolor="#3c8dbc">
|
<td width=50% style="text-align:center;color: white;" bgcolor="#3c8dbc">
|
||||||
<a href="https://github.com/jokob-sk/NetAlertX" target="_blank" style="color: white">NetAlertX</a>
|
<a href="https://github.com/jokob-sk/NetAlertX" target="_blank" style="color: white">NetAlertX</a>
|
||||||
<a href=".." target="_blank" style="color: white"> (<SERVER_NAME>)</a>
|
<a href=".." target="_blank" style="color: white"> (<SERVER_NAME>)</a>
|
||||||
<br><span style="display:inline-block;color: white; transform: rotate(180deg)">©</span>2020 Puche (2022+
|
<br><span style="display:inline-block;color: white; transform: rotate(180deg)">©</span>2022
|
||||||
<a style="color: white" href="mailto:jokob@duck.com?subject=NetAlertX">jokob-sk</a>) | <b>Built on: <BUILD_DATE> </b> | <b> Version: <BUILD_VERSION> </b> |
|
<a style="color: white" href="mailto:jokob@duck.com?subject=NetAlertX">jokob-sk</a> | <b>Built on: <BUILD_DATE> </b> | <b> Version: <BUILD_VERSION> </b> |
|
||||||
<a href="https://github.com/jokob-sk/NetAlertX/tree/main/docs" target="_blank" style="color: white">
|
<a href="https://github.com/jokob-sk/NetAlertX/tree/main/docs" target="_blank" style="color: white">
|
||||||
<span>Docs <i class="fa fa-circle-question"></i>
|
<span>Docs <i class="fa fa-circle-question"></i>
|
||||||
</a><span>
|
</a><span>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</td>
|
</td>
|
||||||
|
|||||||
@@ -67,8 +67,8 @@
|
|||||||
<td width=50% style="text-align:center;color: white;" bgcolor="#3c8dbc">
|
<td width=50% style="text-align:center;color: white;" bgcolor="#3c8dbc">
|
||||||
<a href="https://github.com/jokob-sk/NetAlertX" target="_blank" style="color: white">NetAlertX</a>
|
<a href="https://github.com/jokob-sk/NetAlertX" target="_blank" style="color: white">NetAlertX</a>
|
||||||
<a href=".." target="_blank" style="color: white"> (<SERVER_NAME>)</a>
|
<a href=".." target="_blank" style="color: white"> (<SERVER_NAME>)</a>
|
||||||
<br><span style="display:inline-block;color: white; transform: rotate(180deg)">©</span>2020 Puche (2022+
|
<br><span style="display:inline-block;color: white; transform: rotate(180deg)">©</span>2022
|
||||||
<a style="color: white" href="mailto:jokob@duck.com?subject=NetAlertX">jokob-sk</a>) | <b>Built on: <BUILD_DATE> </b> | <b> Version: <BUILD_VERSION> </b> |
|
<a style="color: white" href="mailto:jokob@duck.com?subject=NetAlertX">jokob-sk</a> | <b>Built on: <BUILD_DATE> </b> | <b> Version: <BUILD_VERSION> </b> |
|
||||||
<a href="https://github.com/jokob-sk/NetAlertX/tree/main/docs" target="_blank" style="color: white">
|
<a href="https://github.com/jokob-sk/NetAlertX/tree/main/docs" target="_blank" style="color: white">
|
||||||
<span>Docs <i class="fa fa-circle-question"></i>
|
<span>Docs <i class="fa fa-circle-question"></i>
|
||||||
</a><span>
|
</a><span>
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
"title_link": "",
|
"title_link": "",
|
||||||
"text": {
|
"text": {
|
||||||
"new_devices_meta": {
|
"new_devices_meta": {
|
||||||
"title": "New devices",
|
"title": "🆕New devices",
|
||||||
"columnNames": [
|
"columnNames": [
|
||||||
"MAC",
|
"MAC",
|
||||||
"Datetime",
|
"Datetime",
|
||||||
@@ -62,6 +62,27 @@
|
|||||||
"Comments"
|
"Comments"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"down_reconnected": [
|
||||||
|
{
|
||||||
|
"dev_Name": "Phone - Pixel",
|
||||||
|
"eve_MAC": "74:ac:74:ac:74:ac",
|
||||||
|
"dev_Vendor": "Google",
|
||||||
|
"eve_IP": "192.168.1.167",
|
||||||
|
"DownTime": "2024-05-26 09:06:56+10:00",
|
||||||
|
"ConnectedTime": "2024-05-26 09:13:24+10:00"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"down_reconnected_meta": {
|
||||||
|
"title": "🔁 Reconnected down devices",
|
||||||
|
"columnNames": [
|
||||||
|
"dev_Name",
|
||||||
|
"eve_MAC",
|
||||||
|
"dev_Vendor",
|
||||||
|
"eve_IP",
|
||||||
|
"DownTime",
|
||||||
|
"ConnectedTime"
|
||||||
|
]
|
||||||
|
},
|
||||||
"events": [
|
"events": [
|
||||||
{
|
{
|
||||||
"MAC": "74:ac:74:ac:74:ac",
|
"MAC": "74:ac:74:ac:74:ac",
|
||||||
|
|||||||
@@ -169,6 +169,7 @@ def main ():
|
|||||||
|
|
||||||
# run all enabled publisher gateways
|
# run all enabled publisher gateways
|
||||||
if notificationObj.HasNotifications:
|
if notificationObj.HasNotifications:
|
||||||
|
|
||||||
pluginsState = run_plugin_scripts(db, all_plugins, 'on_notification', pluginsState)
|
pluginsState = run_plugin_scripts(db, all_plugins, 'on_notification', pluginsState)
|
||||||
notification.setAllProcessed()
|
notification.setAllProcessed()
|
||||||
notification.clearPendingEmailFlag()
|
notification.clearPendingEmailFlag()
|
||||||
|
|||||||
@@ -381,6 +381,8 @@ class DB():
|
|||||||
|
|
||||||
self.commitDB()
|
self.commitDB()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
# CurrentScan table setup
|
# CurrentScan table setup
|
||||||
# -------------------------------------------------------------------------
|
# -------------------------------------------------------------------------
|
||||||
@@ -398,6 +400,33 @@ class DB():
|
|||||||
);
|
);
|
||||||
""")
|
""")
|
||||||
|
|
||||||
|
self.commitDB()
|
||||||
|
|
||||||
|
# -------------------------------------------------------------------------
|
||||||
|
# Create the LatestEventsPerMAC view
|
||||||
|
# -------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# Dynamically generated language strings
|
||||||
|
self.sql.execute(""" CREATE VIEW IF NOT EXISTS LatestEventsPerMAC AS
|
||||||
|
WITH RankedEvents AS (
|
||||||
|
SELECT
|
||||||
|
e.*,
|
||||||
|
ROW_NUMBER() OVER (PARTITION BY e.eve_MAC ORDER BY e.eve_DateTime DESC) AS row_num
|
||||||
|
FROM Events AS e
|
||||||
|
)
|
||||||
|
SELECT
|
||||||
|
e.*,
|
||||||
|
d.*,
|
||||||
|
c.*
|
||||||
|
FROM RankedEvents AS e
|
||||||
|
LEFT JOIN Devices AS d ON e.eve_MAC = d.dev_MAC
|
||||||
|
INNER JOIN CurrentScan AS c ON e.eve_MAC = c.cur_MAC
|
||||||
|
WHERE e.row_num = 1;
|
||||||
|
""")
|
||||||
|
|
||||||
|
self.commitDB()
|
||||||
|
|
||||||
|
|
||||||
# Init the AppEvent database table
|
# Init the AppEvent database table
|
||||||
AppEvent_obj(self)
|
AppEvent_obj(self)
|
||||||
|
|
||||||
|
|||||||
@@ -137,7 +137,7 @@ def importConfigs (db, all_plugins):
|
|||||||
conf.TIMEZONE = ccd('TIMEZONE', 'Europe/Berlin' , c_d, 'Time zone', 'text', '', 'General')
|
conf.TIMEZONE = ccd('TIMEZONE', 'Europe/Berlin' , c_d, 'Time zone', 'text', '', 'General')
|
||||||
conf.PLUGINS_KEEP_HIST = ccd('PLUGINS_KEEP_HIST', 250 , c_d, 'Keep history entries', 'integer', '', 'General')
|
conf.PLUGINS_KEEP_HIST = ccd('PLUGINS_KEEP_HIST', 250 , c_d, 'Keep history entries', 'integer', '', 'General')
|
||||||
conf.REPORT_DASHBOARD_URL = ccd('REPORT_DASHBOARD_URL', 'http://netalertx/' , c_d, 'NetAlertX URL', 'text', '', 'General')
|
conf.REPORT_DASHBOARD_URL = ccd('REPORT_DASHBOARD_URL', 'http://netalertx/' , c_d, 'NetAlertX URL', 'text', '', 'General')
|
||||||
conf.UI_LANG = ccd('UI_LANG', 'English' , c_d, 'Language Interface', 'text.select', "['English', 'French', 'German', 'Norwegian', 'Russian', 'Spanish', 'Italian', 'Portuguese (Brazil)', 'Polish', 'Chinese (zh_cn)' ]", 'General')
|
conf.UI_LANG = ccd('UI_LANG', 'English' , c_d, 'Language Interface', 'text.select', "['English', 'French', 'German', 'Norwegian', 'Russian', 'Spanish', 'Italian (it_it)', 'Portuguese (pt_br)', 'Polish (pl_pl)', 'Chinese (zh_cn)' ]", 'General')
|
||||||
conf.UI_PRESENCE = ccd('UI_PRESENCE', ['online', 'offline', 'archived'] , c_d, 'Include in presence', 'text.multiselect', "['online', 'offline', 'archived']", 'General')
|
conf.UI_PRESENCE = ccd('UI_PRESENCE', ['online', 'offline', 'archived'] , c_d, 'Include in presence', 'text.multiselect', "['online', 'offline', 'archived']", 'General')
|
||||||
conf.UI_DEV_SECTIONS = ccd('UI_DEV_SECTIONS', [] , c_d, 'Show sections', 'text.multiselect', "['Tile Cards', 'Device Presence']", 'General')
|
conf.UI_DEV_SECTIONS = ccd('UI_DEV_SECTIONS', [] , c_d, 'Show sections', 'text.multiselect', "['Tile Cards', 'Device Presence']", 'General')
|
||||||
conf.UI_MY_DEVICES = ccd('UI_MY_DEVICES', ['online', 'offline', 'archived', 'new', 'down'] , c_d, 'Include in My Devices', 'text.multiselect', "['online', 'offline', 'archived', 'new', 'down']", 'General')
|
conf.UI_MY_DEVICES = ccd('UI_MY_DEVICES', ['online', 'offline', 'archived', 'new', 'down'] , c_d, 'Include in My Devices', 'text.multiselect', "['online', 'offline', 'archived', 'new', 'down']", 'General')
|
||||||
|
|||||||
@@ -75,7 +75,7 @@ def void_ghost_disconnections (db):
|
|||||||
sql.execute("""UPDATE Events SET eve_PairEventRowid = Null,
|
sql.execute("""UPDATE Events SET eve_PairEventRowid = Null,
|
||||||
eve_EventType ='VOIDED - ' || eve_EventType
|
eve_EventType ='VOIDED - ' || eve_EventType
|
||||||
WHERE eve_MAC != 'Internet'
|
WHERE eve_MAC != 'Internet'
|
||||||
AND eve_EventType = 'Connected'
|
AND eve_EventType in ('Connected', 'Down Reconnected')
|
||||||
AND eve_DateTime = ?
|
AND eve_DateTime = ?
|
||||||
AND eve_MAC IN (
|
AND eve_MAC IN (
|
||||||
SELECT Events.eve_MAC
|
SELECT Events.eve_MAC
|
||||||
@@ -131,12 +131,12 @@ def pair_sessions_events (db):
|
|||||||
SET eve_PairEventRowid =
|
SET eve_PairEventRowid =
|
||||||
(SELECT ROWID
|
(SELECT ROWID
|
||||||
FROM Events AS EVE2
|
FROM Events AS EVE2
|
||||||
WHERE EVE2.eve_EventType IN ('New Device', 'Connected',
|
WHERE EVE2.eve_EventType IN ('New Device', 'Connected', 'Down Reconnected',
|
||||||
'Device Down', 'Disconnected')
|
'Device Down', 'Disconnected')
|
||||||
AND EVE2.eve_MAC = Events.eve_MAC
|
AND EVE2.eve_MAC = Events.eve_MAC
|
||||||
AND EVE2.eve_Datetime > Events.eve_DateTime
|
AND EVE2.eve_Datetime > Events.eve_DateTime
|
||||||
ORDER BY EVE2.eve_DateTime ASC LIMIT 1)
|
ORDER BY EVE2.eve_DateTime ASC LIMIT 1)
|
||||||
WHERE eve_EventType IN ('New Device', 'Connected')
|
WHERE eve_EventType IN ('New Device', 'Connected', 'Down Reconnected')
|
||||||
AND eve_PairEventRowid IS NULL
|
AND eve_PairEventRowid IS NULL
|
||||||
""" )
|
""" )
|
||||||
|
|
||||||
@@ -189,15 +189,23 @@ def insert_events (db):
|
|||||||
WHERE dev_MAC = cur_MAC
|
WHERE dev_MAC = cur_MAC
|
||||||
) """)
|
) """)
|
||||||
|
|
||||||
# Check new connections
|
# Check new Connections or Down Reconnections
|
||||||
mylog('debug','[Events] - 2 - New Connections')
|
mylog('debug','[Events] - 2 - New Connections')
|
||||||
sql.execute (f"""INSERT INTO Events (eve_MAC, eve_IP, eve_DateTime,
|
sql.execute (f""" INSERT INTO Events (eve_MAC, eve_IP, eve_DateTime,
|
||||||
eve_EventType, eve_AdditionalInfo,
|
eve_EventType, eve_AdditionalInfo,
|
||||||
eve_PendingAlertEmail)
|
eve_PendingAlertEmail)
|
||||||
SELECT cur_MAC, cur_IP, '{startTime}', 'Connected', '', dev_AlertEvents
|
SELECT DISTINCT c.cur_MAC, c.cur_IP, '{startTime}',
|
||||||
FROM Devices, CurrentScan
|
CASE
|
||||||
WHERE dev_MAC = cur_MAC
|
WHEN last_event.eve_EventType = 'Device Down' and last_event.eve_PendingAlertEmail = 0 THEN 'Down Reconnected'
|
||||||
AND dev_PresentLastScan = 0 """)
|
ELSE 'Connected'
|
||||||
|
END,
|
||||||
|
'',
|
||||||
|
d.dev_AlertEvents
|
||||||
|
FROM LatestEventsPerMAC AS d
|
||||||
|
JOIN CurrentScan AS c ON d.dev_MAC = c.cur_MAC
|
||||||
|
LEFT JOIN LatestEventsPerMAC AS last_event ON d.dev_MAC = last_event.eve_MAC
|
||||||
|
WHERE d.dev_PresentLastScan = 0
|
||||||
|
""")
|
||||||
|
|
||||||
# Check disconnections
|
# Check disconnections
|
||||||
mylog('debug','[Events] - 3 - Disconnections')
|
mylog('debug','[Events] - 3 - Disconnections')
|
||||||
|
|||||||
@@ -255,20 +255,6 @@ class Notification_obj:
|
|||||||
AND eve_DateTime < datetime('now', '-{get_setting_value('NTFPRCS_alert_down_time')} minutes', '{get_timezone_offset()}')
|
AND eve_DateTime < datetime('now', '-{get_setting_value('NTFPRCS_alert_down_time')} minutes', '{get_timezone_offset()}')
|
||||||
""")
|
""")
|
||||||
|
|
||||||
# Clear the pending email flag for reconnected devices
|
|
||||||
self.db.sql.execute(f"""UPDATE Events_Devices
|
|
||||||
SET eve_PendingAlertEmail = 0
|
|
||||||
WHERE eve_MAC IN (
|
|
||||||
SELECT down_events.eve_MAC
|
|
||||||
FROM Events_Devices AS down_events
|
|
||||||
INNER JOIN Events AS connected_events
|
|
||||||
ON connected_events.eve_MAC = down_events.eve_MAC
|
|
||||||
WHERE down_events.eve_EventType = 'Device Down'
|
|
||||||
AND connected_events.eve_EventType = 'Connected'
|
|
||||||
AND connected_events.eve_DateTime > down_events.eve_DateTime
|
|
||||||
)
|
|
||||||
AND eve_EventType = 'Device Down'
|
|
||||||
""")
|
|
||||||
|
|
||||||
# clear plugin events
|
# clear plugin events
|
||||||
self.db.sql.execute ("DELETE FROM Plugins_Events")
|
self.db.sql.execute ("DELETE FROM Plugins_Events")
|
||||||
|
|||||||
@@ -112,16 +112,11 @@ def get_notifications (db):
|
|||||||
# Compose Reconnected Down Section
|
# Compose Reconnected Down Section
|
||||||
# - select only Devices, that were previously down and now are Connected
|
# - select only Devices, that were previously down and now are Connected
|
||||||
sqlQuery = f"""
|
sqlQuery = f"""
|
||||||
SELECT down_events.dev_Name, down_events.eve_MAC, down_events.dev_Vendor, down_events.eve_IP,
|
SELECT dev_Name, eve_MAC, dev_Vendor, eve_IP, eve_DateTime, eve_EventType
|
||||||
down_events.eve_DateTime AS DownTime, connected_events.eve_DateTime AS ConnectedTime
|
FROM Events_Devices AS reconnected_devices
|
||||||
FROM Events_Devices AS down_events
|
WHERE reconnected_devices.eve_EventType = 'Down Reconnected'
|
||||||
INNER JOIN Events AS connected_events
|
AND reconnected_devices.eve_PendingAlertEmail = 1
|
||||||
ON connected_events.eve_MAC = down_events.eve_MAC
|
ORDER BY reconnected_devices.eve_DateTime;
|
||||||
WHERE down_events.eve_EventType = 'Device Down'
|
|
||||||
AND connected_events.eve_EventType = 'Connected'
|
|
||||||
AND connected_events.eve_DateTime > down_events.eve_DateTime
|
|
||||||
AND down_events.eve_PendingAlertEmail = 1
|
|
||||||
ORDER BY down_events.eve_DateTime;
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# Get the events as JSON
|
# Get the events as JSON
|
||||||
@@ -137,8 +132,7 @@ def get_notifications (db):
|
|||||||
# Compose Events Section
|
# Compose Events Section
|
||||||
sqlQuery = f"""SELECT eve_MAC as MAC, eve_DateTime as Datetime, dev_LastIP as IP, eve_EventType as "Event Type", dev_Name as "Device name", dev_Comments as Comments FROM Events_Devices
|
sqlQuery = f"""SELECT eve_MAC as MAC, eve_DateTime as Datetime, dev_LastIP as IP, eve_EventType as "Event Type", dev_Name as "Device name", dev_Comments as Comments FROM Events_Devices
|
||||||
WHERE eve_PendingAlertEmail = 1
|
WHERE eve_PendingAlertEmail = 1
|
||||||
AND eve_EventType IN ('Connected','Disconnected',
|
AND eve_EventType IN ('Connected', 'Down Reconnected', 'Disconnected','IP Changed')
|
||||||
'IP Changed')
|
|
||||||
{get_setting_value('NTFPRCS_event_condition').replace('{s-quote}',"'")}
|
{get_setting_value('NTFPRCS_event_condition').replace('{s-quote}',"'")}
|
||||||
ORDER BY eve_DateTime"""
|
ORDER BY eve_DateTime"""
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user