mirror of
https://github.com/jokob-sk/NetAlertX.git
synced 2025-12-07 01:26:11 -08:00
miss match work #1119
This commit is contained in:
@@ -43,51 +43,50 @@ NetAlertX supports additional plugins to extend its functionality, each with its
|
|||||||
|
|
||||||
Device-detecting plugins insert values into the `CurrentScan` database table. The plugins that are not required are safe to ignore, however, it makes sense to have at least some device-detecting plugins enabled, such as `ARPSCAN` or `NMAPDEV`.
|
Device-detecting plugins insert values into the `CurrentScan` database table. The plugins that are not required are safe to ignore, however, it makes sense to have at least some device-detecting plugins enabled, such as `ARPSCAN` or `NMAPDEV`.
|
||||||
|
|
||||||
|
| ID | Plugin docs | Type | Description | Features | Required |
|
||||||
| ID | Type | Description | Features | Required | Data source | Detailed docs |
|
| --------------- | ------------------------------------------------------------------------------------------------------------------ | -------- | ----------------------------------------- | -------- | -------- |
|
||||||
|---------------|---------|--------------------------------------------|----------|----------|--------------|---------------------------------------------------------------------|
|
| `APPRISE` | [_publisher_apprise](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/_publisher_apprise/) | ▶️ | Apprise notification proxy | | |
|
||||||
| `APPRISE` | ▶️ | Apprise notification proxy | | | Script | [_publisher_apprise](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/_publisher_apprise/) |
|
| `ARPSCAN` | [arp_scan](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/arp_scan/) | 🔍 | ARP-scan on current network | | |
|
||||||
| `ARPSCAN` | 🔍 | ARP-scan on current network | | | Script | [arp_scan](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/arp_scan/) |
|
| `AVAHISCAN` | [avahi_scan](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/avahi_scan/) | 🆎 | Avahi (mDNS-based) name resolution | | |
|
||||||
| `AVAHISCAN` | 🆎 | Avahi (mDNS-based) name resolution | | | Script | [avahi_scan](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/avahi_scan/) |
|
| `ASUSWRT` | [asuswrt_import](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/asuswrt_import/) | 🔍 | Import connected devices from AsusWRT | | |
|
||||||
| `ASUSWRT` | 🔍 | Import connected devices from AsusWRT | | | Script | [asuswrt_import](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/asuswrt_import/) |
|
| `CSVBCKP` | [csv_backup](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/csv_backup/) | ⚙ | CSV devices backup | | |
|
||||||
| `CSVBCKP` | ⚙ | CSV devices backup | | | Script | [csv_backup](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/csv_backup/) |
|
| `CUSTPROP` | [custom_props](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/custom_props/) | ⚙ | Managing custom device properties values | | Yes |
|
||||||
| `CUSTPROP` | ⚙ | Managing custom device properties values | | Yes | Template | [custom_props](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/custom_props/) |
|
| `DBCLNP` | [db_cleanup](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/db_cleanup/) | ⚙ | Database cleanup | | Yes\* |
|
||||||
| `DBCLNP` | ⚙ | Database cleanup | | Yes* | Script | [db_cleanup](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/db_cleanup/) |
|
| `DDNS` | [ddns_update](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/ddns_update/) | ⚙ | DDNS update | | |
|
||||||
| `DDNS` | ⚙ | DDNS update | | | Script | [ddns_update](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/ddns_update/) |
|
| `DHCPLSS` | [dhcp_leases](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/dhcp_leases/) | 🔍/📥/🆎 | Import devices from DHCP leases | | |
|
||||||
| `DHCPLSS` | 🔍/📥/🆎| Import devices from DHCP leases | | | Script | [dhcp_leases](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/dhcp_leases/) |
|
| `DHCPSRVS` | [dhcp_servers](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/dhcp_servers/) | ♻ | DHCP servers | | |
|
||||||
| `DHCPSRVS` | ♻ | DHCP servers | | | Script | [dhcp_servers](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/dhcp_servers/) |
|
| `DIGSCAN` | [dig_scan](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/dig_scan/) | 🆎 | Dig (DNS) Name resolution | | |
|
||||||
| `DIGSCAN` | 🆎 | Dig (DNS) Name resolution | | | Script | [dig_scan](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/dig_scan/) |
|
| `FREEBOX` | [freebox](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/freebox/) | 🔍/♻/🆎 | Pull data and names from Freebox/Iliadbox | | |
|
||||||
| `FREEBOX` | 🔍/♻/🆎| Pull data and names from Freebox/Iliadbox | | | Script | [freebox](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/freebox/) |
|
| `ICMP` | [icmp_scan](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/icmp_scan/) | ♻ | ICMP (ping) status checker | | |
|
||||||
| `ICMP` | ♻ | ICMP (ping) status checker | | | Script | [icmp_scan](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/icmp_scan/) |
|
| `INTRNT` | [internet_ip](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/internet_ip/) | 🔍 | Internet IP scanner | | |
|
||||||
| `INTRNT` | 🔍 | Internet IP scanner | | | Script | [internet_ip](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/internet_ip/) |
|
| `INTRSPD` | [internet_speedtest](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/internet_speedtest/) | ♻ | Internet speed test | | |
|
||||||
| `INTRSPD` | ♻ | Internet speed test | | | Script | [internet_speedtest](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/internet_speedtest/) |
|
| `IPNEIGH` | [ipneigh](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/ipneigh/) | 🔍 | Scan ARP (IPv4) and NDP (IPv6) tables | | |
|
||||||
| `IPNEIGH` | 🔍 | Scan ARP (IPv4) and NDP (IPv6) tables | | | Script | [ipneigh](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/ipneigh/) |
|
| `LUCIRPC` | [luci_import](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/luci_import/) | 🔍 | Import connected devices from OpenWRT | | |
|
||||||
| `LUCIRPC` | 🔍 | Import connected devices from OpenWRT | | | Script | [luci_import](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/luci_import/) |
|
| `MAINT` | [maintenance](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/maintenance/) | ⚙ | Maintenance of logs, etc. | | |
|
||||||
| `MAINT` | ⚙ | Maintenance of logs, etc. | | | Script | [maintenance](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/maintenance/) |
|
| `MQTT` | [_publisher_mqtt](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/_publisher_mqtt/) | ▶️ | MQTT for synching to Home Assistant | | |
|
||||||
| `MQTT` | ▶️ | MQTT for synching to Home Assistant | | | Script | [_publisher_mqtt](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/_publisher_mqtt/) |
|
| `NBTSCAN` | [nbtscan_scan](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/nbtscan_scan/) | 🆎 | Nbtscan (NetBIOS-based) name resolution | | |
|
||||||
| `NBTSCAN` | 🆎 | Nbtscan (NetBIOS-based) name resolution | | | Script | [nbtscan_scan](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/nbtscan_scan/) |
|
| `NEWDEV` | [newdev_template](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/newdev_template/) | ⚙ | New device template | | Yes |
|
||||||
| `NEWDEV` | ⚙ | New device template | | Yes | Template | [newdev_template](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/newdev_template/) |
|
| `NMAP` | [nmap_scan](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/nmap_scan/) | ♻ | Nmap port scanning & discovery | | |
|
||||||
| `NMAP` | ♻ | Nmap port scanning & discovery | | | Script | [nmap_scan](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/nmap_scan/) |
|
| `NMAPDEV` | [nmap_dev_scan](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/nmap_dev_scan/) | 🔍 | Nmap dev scan on current network | | |
|
||||||
| `NMAPDEV` | 🔍 | Nmap dev scan on current network | | | Script | [nmap_dev_scan](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/nmap_dev_scan/) |
|
| `NSLOOKUP` | [nslookup_scan](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/nslookup_scan/) | 🆎 | NSLookup (DNS-based) name resolution | | |
|
||||||
| `NSLOOKUP` | 🆎 | NSLookup (DNS-based) name resolution | | | Script | [nslookup_scan](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/nslookup_scan/) |
|
| `NTFPRCS` | [notification_processing](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/notification_processing/) | ⚙ | Notification processing | | Yes |
|
||||||
| `NTFPRCS` | ⚙ | Notification processing | | Yes | Template | [notification_processing](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/notification_processing/)|
|
| `NTFY` | [_publisher_ntfy](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/_publisher_ntfy/) | ▶️ | NTFY notifications | | |
|
||||||
| `NTFY` | ▶️ | NTFY notifications | | | Script | [_publisher_ntfy](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/_publisher_ntfy/) |
|
| `OMDSDN` | [omada_sdn_imp](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/omada_sdn_imp/) | 📥/🆎 ❌ | UNMAINTAINED use `OMDSDNOPENAPI` | 🖧 🔄 | |
|
||||||
| `OMDSDN` | 📥/🆎 ❌ | UNMAINTAINED use `OMDSDNOPENAPI` | 🖧 🔄 | | Script | [omada_sdn_imp](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/omada_sdn_imp/) |
|
| `OMDSDNOPENAPI` | [omada_sdn_openapi](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/omada_sdn_openapi/) | 📥/🆎 | OMADA TP-Link import via OpenAPI | 🖧 | |
|
||||||
| `OMDSDNOPENAPI`| 📥/🆎 | OMADA TP-Link import via OpenAPI | 🖧 | | Script | [omada_sdn_openapi](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/omada_sdn_openapi/) |
|
| `PIHOLE` | [pihole_scan](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/pihole_scan/) | 🔍/🆎/📥 | Pi-hole device import & sync | | |
|
||||||
| `PIHOLE` | 🔍/🆎/📥| Pi-hole device import & sync | | | SQLite DB | [pihole_scan](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/pihole_scan/) |
|
| `PUSHSAFER` | [_publisher_pushsafer](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/_publisher_pushsafer/) | ▶️ | Pushsafer notifications | | |
|
||||||
| `PUSHSAFER` | ▶️ | Pushsafer notifications | | | Script | [_publisher_pushsafer](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/_publisher_pushsafer/) |
|
| `PUSHOVER` | [_publisher_pushover](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/_publisher_pushover/) | ▶️ | Pushover notifications | | |
|
||||||
| `PUSHOVER` | ▶️ | Pushover notifications | | | Script | [_publisher_pushover](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/_publisher_pushover/) |
|
| `SETPWD` | [set_password](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/set_password/) | ⚙ | Set password | | Yes |
|
||||||
| `SETPWD` | ⚙ | Set password | | Yes | Template | [set_password](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/set_password/) |
|
| `SMTP` | [_publisher_email](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/_publisher_email/) | ▶️ | Email notifications | | |
|
||||||
| `SMTP` | ▶️ | Email notifications | | | Script | [_publisher_email](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/_publisher_email/) |
|
| `SNMPDSC` | [snmp_discovery](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/snmp_discovery/) | 🔍/📥 | SNMP device import & sync | | |
|
||||||
| `SNMPDSC` | 🔍/📥 | SNMP device import & sync | | | Script | [snmp_discovery](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/snmp_discovery/) |
|
| `SYNC` | [sync](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/sync/) | 🔍/⚙/📥 | Sync & import from NetAlertX instances | 🖧 🔄 | Yes |
|
||||||
| `SYNC` | 🔍/⚙/📥| Sync & import from NetAlertX instances | 🖧 🔄 | Yes | Script | [sync](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/sync/) |
|
| `TELEGRAM` | [_publisher_telegram](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/_publisher_telegram/) | ▶️ | Telegram notifications | | |
|
||||||
| `TELEGRAM` | ▶️ | Telegram notifications | | | Script | [_publisher_telegram](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/_publisher_telegram/) |
|
| `UI` | [ui_settings](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/ui_settings/) | ♻ | UI specific settings | | Yes |
|
||||||
| `UI` | ♻ | UI specific settings | | Yes | Template | [ui_settings](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/ui_settings/) |
|
| `UNFIMP` | [unifi_import](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/unifi_import/) | 🔍/📥/🆎 | UniFi device import & sync | 🖧 | |
|
||||||
| `UNFIMP` | 🔍/📥/🆎| UniFi device import & sync | 🖧 | | Script | [unifi_import](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/unifi_import/) |
|
| `VNDRPDT` | [vendor_update](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/vendor_update/) | ⚙ | Vendor database update | | |
|
||||||
| `VNDRPDT` | ⚙ | Vendor database update | | | Script | [vendor_update](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/vendor_update/) |
|
| `WEBHOOK` | [_publisher_webhook](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/_publisher_webhook/) | ▶️ | Webhook notifications | | |
|
||||||
| `WEBHOOK` | ▶️ | Webhook notifications | | | Script | [_publisher_webhook](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/_publisher_webhook/) |
|
| `WEBMON` | [website_monitor](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/website_monitor/) | ♻ | Website down monitoring | | |
|
||||||
| `WEBMON` | ♻ | Website down monitoring | | | Script | [website_monitor](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/website_monitor/) |
|
| `WOL` | [wake_on_lan](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/wake_on_lan/) | ♻ | Automatic wake-on-lan | | |
|
||||||
| `WOL` | ♻ | Automatic wake-on-lan | | | Script | [wake_on_lan](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/wake_on_lan/) |
|
|
||||||
|
|
||||||
|
|
||||||
> \* The database cleanup plugin (`DBCLNP`) is not _required_ but the app will become unusable after a while if not executed.
|
> \* The database cleanup plugin (`DBCLNP`) is not _required_ but the app will become unusable after a while if not executed.
|
||||||
|
|||||||
@@ -1704,6 +1704,10 @@ input[readonly] {
|
|||||||
/* NETWORK page */
|
/* NETWORK page */
|
||||||
/* ----------------------------------------------------------------- */
|
/* ----------------------------------------------------------------- */
|
||||||
|
|
||||||
|
.hide-node-names .node-name {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
#toggleFilters
|
#toggleFilters
|
||||||
{
|
{
|
||||||
display: block;
|
display: block;
|
||||||
|
|||||||
@@ -107,6 +107,7 @@
|
|||||||
const nodes = JSON.parse(data);
|
const nodes = JSON.parse(data);
|
||||||
renderNetworkTabs(nodes);
|
renderNetworkTabs(nodes);
|
||||||
loadUnassignedDevices();
|
loadUnassignedDevices();
|
||||||
|
checkTabsOverflow();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -187,7 +188,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="mb-3 row">
|
<div class="mb-3 row">
|
||||||
<label class="col-sm-3 col-form-label fw-bold">${getString('Network_Table_State')}</label>
|
<label class="col-sm-3 col-form-label fw-bold">${getString('Device_TableHead_Status')}</label>
|
||||||
<div class="col-sm-9">${badgeHtml}</div>
|
<div class="col-sm-9">${badgeHtml}</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -195,7 +196,7 @@
|
|||||||
<label class="col-sm-3 col-form-label fw-bold">${getString('Network_Parent')}</label>
|
<label class="col-sm-3 col-form-label fw-bold">${getString('Network_Parent')}</label>
|
||||||
<div class="col-sm-9">
|
<div class="col-sm-9">
|
||||||
${isRootNode ? '' : `<a class="anonymize" href="#">`}
|
${isRootNode ? '' : `<a class="anonymize" href="#">`}
|
||||||
<span my-data-mac="${node.parent_mac}" data-mac="${node.parent_mac}" onclick="handleNodeClick(this)">
|
<span my-data-mac="${node.parent_mac}" data-mac="${node.parent_mac}" data-devIsNetworkNodeDynamic="1" onclick="handleNodeClick(this)">
|
||||||
${isRootNode ? getString('Network_Root') : getNameByMacAddress(node.parent_mac)}
|
${isRootNode ? getString('Network_Root') : getNameByMacAddress(node.parent_mac)}
|
||||||
</span>
|
</span>
|
||||||
${isRootNode ? '' : `</a>`}
|
${isRootNode ? '' : `</a>`}
|
||||||
@@ -264,16 +265,17 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: getString('Network_Table_State'),
|
title: getString('Device_TableHead_Status'),
|
||||||
data: 'devStatus',
|
data: 'devStatus',
|
||||||
width: '15%',
|
width: '15%',
|
||||||
render: function (_, type, device) {
|
render: function (_, type, device) {
|
||||||
const badge = getStatusBadgeParts(
|
const badge = getStatusBadgeParts(
|
||||||
device.devPresentLastScan,
|
device.devPresentLastScan,
|
||||||
device.devAlertDown,
|
device.devAlertDown,
|
||||||
device.devMac
|
device.devMac,
|
||||||
|
device.devStatus
|
||||||
);
|
);
|
||||||
return `<a href="${badge.url}" class="badge ${badge.cssClass}">${badge.iconHtml} ${badge.status}</a>`;
|
return `<a href="${badge.url}" class="badge ${badge.cssClass}">${badge.iconHtml} ${badge.text}</a>`;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -287,6 +289,11 @@
|
|||||||
data: 'devLastIP',
|
data: 'devLastIP',
|
||||||
width: '5%'
|
width: '5%'
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
title: getString('Device_TableHead_Port'),
|
||||||
|
data: 'devParentPort',
|
||||||
|
width: '5%'
|
||||||
|
},
|
||||||
{
|
{
|
||||||
title: getString('Device_TableHead_Vendor'),
|
title: getString('Device_TableHead_Vendor'),
|
||||||
data: 'devVendor',
|
data: 'devVendor',
|
||||||
@@ -319,7 +326,7 @@
|
|||||||
// ----------------------------------------------------
|
// ----------------------------------------------------
|
||||||
function loadUnassignedDevices() {
|
function loadUnassignedDevices() {
|
||||||
const sql = `
|
const sql = `
|
||||||
SELECT devMac, devPresentLastScan, devName, devLastIP, devVendor, devAlertDown
|
SELECT devMac, devPresentLastScan, devName, devLastIP, devVendor, devAlertDown, devParentPort
|
||||||
FROM Devices
|
FROM Devices
|
||||||
WHERE (devParentMAC IS NULL OR devParentMAC IN ("", " ", "undefined", "null"))
|
WHERE (devParentMAC IS NULL OR devParentMAC IN ("", " ", "undefined", "null"))
|
||||||
AND devMac NOT LIKE "%internet%"
|
AND devMac NOT LIKE "%internet%"
|
||||||
@@ -348,14 +355,17 @@
|
|||||||
// ----------------------------------------------------
|
// ----------------------------------------------------
|
||||||
function loadConnectedDevices(node_mac) {
|
function loadConnectedDevices(node_mac) {
|
||||||
const sql = `
|
const sql = `
|
||||||
SELECT devName, devMac, devLastIP, devVendor, devPresentLastScan, devAlertDown,
|
SELECT devName, devMac, devLastIP, devVendor, devPresentLastScan, devAlertDown, devParentPort,
|
||||||
CASE
|
CASE
|
||||||
WHEN devAlertDown != 0 AND devPresentLastScan = 0 THEN "Down"
|
WHEN devIsNew = 1 THEN 'New'
|
||||||
WHEN devPresentLastScan = 1 THEN "On-line"
|
WHEN devPresentLastScan = 1 THEN 'On-line'
|
||||||
ELSE "Off-line"
|
WHEN devPresentLastScan = 0 AND devAlertDown != 0 THEN 'Down'
|
||||||
END as devStatus
|
WHEN devIsArchived = 1 THEN 'Archived'
|
||||||
|
WHEN devPresentLastScan = 0 THEN 'Off-line'
|
||||||
|
ELSE 'Unknown status'
|
||||||
|
END AS devStatus
|
||||||
FROM Devices
|
FROM Devices
|
||||||
WHERE devIsArchived = 0 AND devParentMac = '${node_mac}'`;
|
WHERE devParentMac = '${node_mac}'`;
|
||||||
|
|
||||||
const id = node_mac.replace(/:/g, '_');
|
const id = node_mac.replace(/:/g, '_');
|
||||||
|
|
||||||
@@ -895,6 +905,66 @@ function updateLeaf(leafMac, action) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------------------
|
||||||
|
// showing icons or device names in tabs depending on available screen size
|
||||||
|
function checkTabsOverflow() {
|
||||||
|
const $ul = $('.nav-tabs');
|
||||||
|
const $lis = $ul.find('li');
|
||||||
|
|
||||||
|
// First measure widths with current state
|
||||||
|
let totalWidth = 0;
|
||||||
|
$lis.each(function () {
|
||||||
|
totalWidth += $(this).outerWidth(true);
|
||||||
|
});
|
||||||
|
|
||||||
|
const ulWidth = $ul.width();
|
||||||
|
const isOverflowing = totalWidth > ulWidth;
|
||||||
|
|
||||||
|
if (isOverflowing) {
|
||||||
|
if (!$ul.hasClass('hide-node-names')) {
|
||||||
|
$ul.addClass('hide-node-names');
|
||||||
|
|
||||||
|
// Re-check: did hiding fix it?
|
||||||
|
requestAnimationFrame(() => {
|
||||||
|
let newTotal = 0;
|
||||||
|
$lis.each(function () {
|
||||||
|
newTotal += $(this).outerWidth(true);
|
||||||
|
});
|
||||||
|
|
||||||
|
if (newTotal > $ul.width()) {
|
||||||
|
// Still overflowing — do nothing, keep class
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if ($ul.hasClass('hide-node-names')) {
|
||||||
|
$ul.removeClass('hide-node-names');
|
||||||
|
|
||||||
|
// Re-check: did un-hiding break it?
|
||||||
|
requestAnimationFrame(() => {
|
||||||
|
let newTotal = 0;
|
||||||
|
$lis.each(function () {
|
||||||
|
newTotal += $(this).outerWidth(true);
|
||||||
|
});
|
||||||
|
|
||||||
|
if (newTotal > $ul.width()) {
|
||||||
|
// Oops, that broke it — re-hide
|
||||||
|
$ul.addClass('hide-node-names');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let resizeTimeout;
|
||||||
|
$(window).on('resize', function () {
|
||||||
|
clearTimeout(resizeTimeout);
|
||||||
|
resizeTimeout = setTimeout(() => {
|
||||||
|
checkTabsOverflow();
|
||||||
|
}, 100);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
// init pop up hover boxes for device details
|
// init pop up hover boxes for device details
|
||||||
initHoverNodeInfo();
|
initHoverNodeInfo();
|
||||||
|
|
||||||
|
|||||||
@@ -107,7 +107,7 @@
|
|||||||
"DevDetail_Network_Node_hover": "Select the parent network device the current device is connected to, to populate the Network tree.",
|
"DevDetail_Network_Node_hover": "Select the parent network device the current device is connected to, to populate the Network tree.",
|
||||||
"DevDetail_Network_Port_hover": "The port this device is connected to on the parent network device. If left empty a wifi icon is displayed in the Network tree.",
|
"DevDetail_Network_Port_hover": "The port this device is connected to on the parent network device. If left empty a wifi icon is displayed in the Network tree.",
|
||||||
"DevDetail_Nmap_Scans": "Manual Nmap Scans",
|
"DevDetail_Nmap_Scans": "Manual Nmap Scans",
|
||||||
"DevDetail_Nmap_Scans_desc": "Here you can execute manual NMAP scans. You can also schedule regular automatic NMAP scans via the Services & Ports (NMAP) plugin. Head to <a href=\"/settings.php\" target=\"_blank\">Settings</a> to find out more",
|
"DevDetail_Nmap_Scans_desc": "Here you can execute manual NMAP scans. You can also schedule regular automatic NMAP scans via the Services & Ports (NMAP) plugin. Head to <a href=\"https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/nmap_scan\" target=\"_blank\">Docs</a> to find out more",
|
||||||
"DevDetail_Nmap_buttonDefault": "Default Scan",
|
"DevDetail_Nmap_buttonDefault": "Default Scan",
|
||||||
"DevDetail_Nmap_buttonDefault_text": "Default Scan: Nmap scans the top 1,000 ports for each scan protocol requested. This catches roughly 93% of the TCP ports and 49% of the UDP ports. (about 5 seconds)",
|
"DevDetail_Nmap_buttonDefault_text": "Default Scan: Nmap scans the top 1,000 ports for each scan protocol requested. This catches roughly 93% of the TCP ports and 49% of the UDP ports. (about 5 seconds)",
|
||||||
"DevDetail_Nmap_buttonDetail": "Detailed Scan",
|
"DevDetail_Nmap_buttonDetail": "Detailed Scan",
|
||||||
|
|||||||
@@ -131,38 +131,51 @@ def void_ghost_disconnections (db):
|
|||||||
|
|
||||||
#-------------------------------------------------------------------------------
|
#-------------------------------------------------------------------------------
|
||||||
def pair_sessions_events (db):
|
def pair_sessions_events (db):
|
||||||
|
# db.commitDB()
|
||||||
|
|
||||||
sql = db.sql #TO-DO
|
sql = db.sql #TO-DO
|
||||||
|
mylog('debug', '[Pair Session] - START')
|
||||||
|
|
||||||
# Pair Connection / New Device events
|
# Step 1: Pair connection-related events with future unpaired disconnections
|
||||||
mylog('debug','[Pair Session] - 1 Connections / New Devices')
|
mylog('debug', '[Pair Session] - 1: Pair Connections → Disconnections')
|
||||||
sql.execute ("""UPDATE Events
|
sql.execute("""
|
||||||
SET eve_PairEventRowid =
|
UPDATE Events
|
||||||
(SELECT ROWID
|
SET eve_PairEventRowid = (
|
||||||
FROM Events AS EVE2
|
SELECT E2.ROWID
|
||||||
WHERE EVE2.eve_EventType IN ('New Device', 'Connected', 'Down Reconnected',
|
FROM Events AS E2
|
||||||
'Device Down', 'Disconnected')
|
WHERE E2.eve_EventType IN ('Disconnected', 'Device Down')
|
||||||
AND EVE2.eve_MAC = Events.eve_MAC
|
AND E2.eve_MAC = Events.eve_MAC
|
||||||
AND EVE2.eve_Datetime > Events.eve_DateTime
|
AND E2.eve_PairEventRowid IS NULL
|
||||||
ORDER BY EVE2.eve_DateTime ASC LIMIT 1)
|
AND E2.eve_DateTime > Events.eve_DateTime
|
||||||
WHERE eve_EventType IN ('New Device', 'Connected', 'Down Reconnected')
|
ORDER BY E2.eve_DateTime ASC
|
||||||
AND eve_PairEventRowid IS NULL
|
LIMIT 1
|
||||||
""" )
|
)
|
||||||
|
WHERE eve_EventType IN ('New Device', 'Connected', 'Down Reconnected')
|
||||||
|
AND eve_PairEventRowid IS NULL
|
||||||
|
""")
|
||||||
|
|
||||||
# Pair Disconnection / Device Down
|
# Step 2: Pair disconnection-related events with previous unpaired connections
|
||||||
mylog('debug','[Pair Session] - 2 Disconnections')
|
mylog('debug', '[Pair Session] - 2: Pair Disconnections → Connections')
|
||||||
sql.execute ("""UPDATE Events
|
sql.execute("""
|
||||||
SET eve_PairEventRowid =
|
UPDATE Events
|
||||||
(SELECT ROWID
|
SET eve_PairEventRowid = (
|
||||||
FROM Events AS EVE2
|
SELECT E2.ROWID
|
||||||
WHERE EVE2.eve_PairEventRowid = Events.ROWID)
|
FROM Events AS E2
|
||||||
WHERE eve_EventType IN ('Device Down', 'Disconnected')
|
WHERE E2.eve_EventType IN ('New Device', 'Connected', 'Down Reconnected')
|
||||||
AND eve_PairEventRowid IS NULL
|
AND E2.eve_MAC = Events.eve_MAC
|
||||||
""" )
|
AND E2.eve_PairEventRowid IS NULL
|
||||||
mylog('debug','[Pair Session] Pair session end')
|
AND E2.eve_DateTime < Events.eve_DateTime
|
||||||
|
ORDER BY E2.eve_DateTime DESC
|
||||||
|
LIMIT 1
|
||||||
|
)
|
||||||
|
WHERE eve_EventType IN ('Disconnected', 'Device Down')
|
||||||
|
AND eve_PairEventRowid IS NULL
|
||||||
|
""")
|
||||||
|
|
||||||
|
mylog('debug', '[Pair Session] - END')
|
||||||
db.commitDB()
|
db.commitDB()
|
||||||
|
|
||||||
|
|
||||||
#-------------------------------------------------------------------------------
|
#-------------------------------------------------------------------------------
|
||||||
def create_sessions_snapshot (db):
|
def create_sessions_snapshot (db):
|
||||||
sql = db.sql #TO-DO
|
sql = db.sql #TO-DO
|
||||||
|
|||||||
Reference in New Issue
Block a user