mirror of
https://github.com/jokob-sk/NetAlertX.git
synced 2026-04-15 14:41:38 -07:00
Compare commits
7 Commits
7dcec16152
...
v25.6.7
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6fd8c2fbd9 | ||
|
|
a3dba96908 | ||
|
|
ae6be2f525 | ||
|
|
16a45c7826 | ||
|
|
5676b50d5d | ||
|
|
7940038728 | ||
|
|
1e13bf6629 |
@@ -2,15 +2,15 @@
|
|||||||
|
|
||||||
Get **NetAlertX** up and running in a few simple steps.
|
Get **NetAlertX** up and running in a few simple steps.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 1. Configure Scanner Plugin(s)
|
||||||
|
|
||||||
> [!TIP]
|
> [!TIP]
|
||||||
> Enable additional plugins under **Settings → `LOADED_PLUGINS`**.
|
> Enable additional plugins under **Settings → `LOADED_PLUGINS`**.
|
||||||
> Make sure to **save** your changes and **reload the page** to activate them.
|
> Make sure to **save** your changes and **reload the page** to activate them.
|
||||||
> 
|
> 
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
### 1. Configure Scanner Plugin(s)
|
|
||||||
|
|
||||||
**Initial configuration**: `ARPSCAN`, `INTRNT`
|
**Initial configuration**: `ARPSCAN`, `INTRNT`
|
||||||
|
|
||||||
> [!NOTE]
|
> [!NOTE]
|
||||||
@@ -31,6 +31,8 @@ Get **NetAlertX** up and running in a few simple steps.
|
|||||||
|
|
||||||
### 3. Set Up a Network Topology Diagram
|
### 3. Set Up a Network Topology Diagram
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
**Initial configuration**: The app auto-selects a root node (MAC `internet`) and attempts to identify other network devices by vendor or name.
|
**Initial configuration**: The app auto-selects a root node (MAC `internet`) and attempts to identify other network devices by vendor or name.
|
||||||
|
|
||||||
> [!NOTE]
|
> [!NOTE]
|
||||||
@@ -41,6 +43,8 @@ Get **NetAlertX** up and running in a few simple steps.
|
|||||||
|
|
||||||
### 4. Configure Notifications
|
### 4. Configure Notifications
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
**Initial configuration**: Notifies on `new_devices`, `down_devices`, and `events` as defined in `NTFPRCS_INCLUDED_SECTIONS`.
|
**Initial configuration**: Notifies on `new_devices`, `down_devices`, and `events` as defined in `NTFPRCS_INCLUDED_SECTIONS`.
|
||||||
|
|
||||||
> [!NOTE]
|
> [!NOTE]
|
||||||
@@ -51,6 +55,8 @@ Get **NetAlertX** up and running in a few simple steps.
|
|||||||
|
|
||||||
### 5. Set Up Workflows
|
### 5. Set Up Workflows
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
**Initial configuration**: N/A
|
**Initial configuration**: N/A
|
||||||
|
|
||||||
> [!NOTE]
|
> [!NOTE]
|
||||||
@@ -61,6 +67,8 @@ Get **NetAlertX** up and running in a few simple steps.
|
|||||||
|
|
||||||
### 6. Backup Your Configuration
|
### 6. Backup Your Configuration
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
**Initial configuration**: The `CSVBCKP` plugin creates a daily backup to `/config/devices.csv`.
|
**Initial configuration**: The `CSVBCKP` plugin creates a daily backup to `/config/devices.csv`.
|
||||||
|
|
||||||
> [!NOTE]
|
> [!NOTE]
|
||||||
@@ -70,6 +78,8 @@ Get **NetAlertX** up and running in a few simple steps.
|
|||||||
|
|
||||||
### 7. (Optional) Create Custom Plugins
|
### 7. (Optional) Create Custom Plugins
|
||||||
|
|
||||||
|
[](https://youtu.be/cdbxlwiWhv8)
|
||||||
|
|
||||||
**Initial configuration**: N/A
|
**Initial configuration**: N/A
|
||||||
|
|
||||||
> [!NOTE]
|
> [!NOTE]
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
# Migration form PiAlert to NetAlertX
|
# Migration form PiAlert to NetAlertX
|
||||||
|
|
||||||
> [!WARNING]
|
> [!WARNING]
|
||||||
> Follow this guide only after you you downloaded and started NetAlert X at least once after previously using the PiAlert image.
|
> Follow this guide only after you you downloaded and started a version of NetAlertX prior to v25.6.7 (e.g. `docker pull ghcr.io/jokob-sk/netalertx:25.5.24`) at least once after previously using the PiAlert image. Later versions don't support migration and devices and settings will have to migrated manually, e.g. via [CSV import](./DEVICES_BULK_EDITING.md).
|
||||||
|
|
||||||
## STEPS:
|
## STEPS:
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
# Docker Update Strategies to upgrade NetAlertX
|
# Docker Update Strategies to upgrade NetAlertX
|
||||||
|
|
||||||
|
> [!WARNING]
|
||||||
|
> For versions prior to `v25.6.7` upgrade to version `v25.5.24` first (`docker pull ghcr.io/jokob-sk/netalertx:25.5.24`) as later versions don't support a full upgrade. Alternatovelly, devices and settings can be migrated manually, e.g. via [CSV import](./DEVICES_BULK_EDITING.md).
|
||||||
|
|
||||||
This guide outlines approaches for updating Docker containers, usually when upgrading to a newer version of NetAlertX. Each method offers different benefits depending on the situation. Here are the methods:
|
This guide outlines approaches for updating Docker containers, usually when upgrading to a newer version of NetAlertX. Each method offers different benefits depending on the situation. Here are the methods:
|
||||||
|
|
||||||
- Manual: Direct commands to stop, remove, and rebuild containers.
|
- Manual: Direct commands to stop, remove, and rebuild containers.
|
||||||
|
|||||||
BIN
docs/img/NETWORK_TREE/Network_tree_details.png
Executable file
BIN
docs/img/NETWORK_TREE/Network_tree_details.png
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 93 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 70 KiB After Width: | Height: | Size: 71 KiB |
@@ -875,6 +875,11 @@ height: 50px;
|
|||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#notifications .notification-buttons{
|
||||||
|
margin: 10px;
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
#notificationData textarea{
|
#notificationData textarea{
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -848,7 +848,7 @@ function initializeDatatable (status) {
|
|||||||
{targets: [mapIndx(26)],
|
{targets: [mapIndx(26)],
|
||||||
'createdCell': function (td, cellData, rowData, row, col) {
|
'createdCell': function (td, cellData, rowData, row, col) {
|
||||||
if (!emptyArr.includes(cellData)){
|
if (!emptyArr.includes(cellData)){
|
||||||
$(td).html (`<span>${renderCustomProps(cellData, rowData[mapIndx(11)])}<span>`);
|
$(td).html (`<span>${renderCustomProps(cellData, rowData[mapIndx(11)])}</span>`);
|
||||||
} else {
|
} else {
|
||||||
$(td).html ('');
|
$(td).html ('');
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1534,7 +1534,7 @@ const handleFailure = (callName, callback) => {
|
|||||||
msg = `AJAX call ${callName} failed`
|
msg = `AJAX call ${callName} failed`
|
||||||
console.error(msg);
|
console.error(msg);
|
||||||
// Implement retry logic here if needed
|
// Implement retry logic here if needed
|
||||||
write_notification(msg, 'interrupt')
|
// write_notification(msg, 'interrupt')
|
||||||
};
|
};
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -433,7 +433,7 @@ function initListInteractionOptions(element) {
|
|||||||
if (clickCounter === 1) {
|
if (clickCounter === 1) {
|
||||||
// Single-click action
|
// Single-click action
|
||||||
showModalFieldInput(
|
showModalFieldInput(
|
||||||
`<i class="fa-regular fa-pen-to-square"></i> ${getString(
|
`<i class="fa fa-pen-to-square"></i> ${getString(
|
||||||
"Gen_Update_Value"
|
"Gen_Update_Value"
|
||||||
)}`,
|
)}`,
|
||||||
getString("settings_update_item_warning"),
|
getString("settings_update_item_warning"),
|
||||||
|
|||||||
@@ -200,9 +200,9 @@ function validateRegex(elem) {
|
|||||||
|
|
||||||
// Validate against regex
|
// Validate against regex
|
||||||
if (regex.test(value)) {
|
if (regex.test(value)) {
|
||||||
iconSpan.html("<i class='fa-regular fa-check'></i>");
|
iconSpan.html("<i class='fa fa-check'></i>");
|
||||||
} else {
|
} else {
|
||||||
iconSpan.html("<i class='fa-regular fa-xmark'></i>");
|
iconSpan.html("<i class='fa fa-xmark'></i>");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -125,8 +125,7 @@
|
|||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<br>
|
|
||||||
<div id="assignedDevices" class="box-body no-padding">
|
<div id="assignedDevices" class="box-body no-padding">
|
||||||
<div class="page-header">
|
<div class="page-header">
|
||||||
<h3>
|
<h3>
|
||||||
|
|||||||
@@ -28,7 +28,7 @@
|
|||||||
|
|
||||||
<!-- To the right -->
|
<!-- To the right -->
|
||||||
<div class="pull-right no-hidden-xs">
|
<div class="pull-right no-hidden-xs">
|
||||||
| <a href="https://gurubase.io/g/netalertx" class="pointer" target="_blank" title="Ask AI"><i class="fa-regular fa-comment-dots fa-flip-horizontal"></i></a>
|
| <a href="https://gurubase.io/g/netalertx" class="pointer" target="_blank" title="Ask AI"><i class="fa fa-comment-dots fa-flip-horizontal"></i></a>
|
||||||
| <a href="https://jokob-sk.github.io/NetAlertX/" class="pointer" target="_blank" title="Documentation"><i class="fa fa-book"></i></a>
|
| <a href="https://jokob-sk.github.io/NetAlertX/" class="pointer" target="_blank" title="Documentation"><i class="fa fa-book"></i></a>
|
||||||
| <a href="https://github.com/jokob-sk/NetAlertX/issues" class="pointer" target="_blank"><i class="fa fa-bug" title="Report a bug"></i></a>
|
| <a href="https://github.com/jokob-sk/NetAlertX/issues" class="pointer" target="_blank"><i class="fa fa-bug" title="Report a bug"></i></a>
|
||||||
| <a href="https://discord.com/invite/NczTUTWyRr" class="pointer" target="_blank"><i class="fa-brands fa-discord" title="Join Discord"></i></a>
|
| <a href="https://discord.com/invite/NczTUTWyRr" class="pointer" target="_blank"><i class="fa-brands fa-discord" title="Join Discord"></i></a>
|
||||||
|
|||||||
0
front/php/templates/language/fr_fr.json
Normal file → Executable file
0
front/php/templates/language/fr_fr.json
Normal file → Executable file
10
front/php/templates/language/it_it.json
Executable file → Normal file
10
front/php/templates/language/it_it.json
Executable file → Normal file
@@ -359,11 +359,11 @@
|
|||||||
"Maint_PurgeLog": "Elimina log",
|
"Maint_PurgeLog": "Elimina log",
|
||||||
"Maint_RestartServer": "Riavvia server",
|
"Maint_RestartServer": "Riavvia server",
|
||||||
"Maint_Restart_Server_noti_text": "Sei sicuro di voler riavviare il server backend? Questo potrebbe causare incoerenze dell'app. Prima esegui il backup della tua configurazione. <br/> <br/> Nota: l'operazione potrebbe richiedere alcuni minuti.",
|
"Maint_Restart_Server_noti_text": "Sei sicuro di voler riavviare il server backend? Questo potrebbe causare incoerenze dell'app. Prima esegui il backup della tua configurazione. <br/> <br/> Nota: l'operazione potrebbe richiedere alcuni minuti.",
|
||||||
"Maintenance_InitCheck": "",
|
"Maintenance_InitCheck": "Controllo iniziale",
|
||||||
"Maintenance_InitCheck_Checking": "",
|
"Maintenance_InitCheck_Checking": "Controllo in corso...",
|
||||||
"Maintenance_InitCheck_QuickSetupGuide": "",
|
"Maintenance_InitCheck_QuickSetupGuide": "Assicurati di aver seguito la <a href=\"https://jokob-sk.github.io/NetAlertX/INITIAL_SETUP/\" target=\"_blank\">guida di configurazione rapida</a>.",
|
||||||
"Maintenance_InitCheck_Success": "",
|
"Maintenance_InitCheck_Success": "Applicazione inizializzata con successo!",
|
||||||
"Maintenance_ReCheck": "",
|
"Maintenance_ReCheck": "Riprova controllo",
|
||||||
"Maintenance_Running_Version": "Versione installata",
|
"Maintenance_Running_Version": "Versione installata",
|
||||||
"Maintenance_Status": "Stato",
|
"Maintenance_Status": "Stato",
|
||||||
"Maintenance_Title": "Strumenti di manutenzione",
|
"Maintenance_Title": "Strumenti di manutenzione",
|
||||||
|
|||||||
0
front/php/templates/language/uk_ua.json
Normal file → Executable file
0
front/php/templates/language/uk_ua.json
Normal file → Executable file
@@ -354,7 +354,7 @@ $settingsJSON_DB = json_encode($settings, JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX
|
|||||||
|
|
||||||
enabledHtml = `
|
enabledHtml = `
|
||||||
<div class="enabled-disabled-icon">
|
<div class="enabled-disabled-icon">
|
||||||
<i class="fa-regular fa-${onOff}"></i>
|
<i class="fa fa-${onOff}"></i>
|
||||||
</div>
|
</div>
|
||||||
`
|
`
|
||||||
}
|
}
|
||||||
@@ -365,7 +365,7 @@ $settingsJSON_DB = json_encode($settings, JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX
|
|||||||
let pluginHtml = `
|
let pluginHtml = `
|
||||||
<div class="row table_row docs">
|
<div class="row table_row docs">
|
||||||
<div class="table_cell bold">
|
<div class="table_cell bold">
|
||||||
<i class="fa-regular fa-book fa-sm"></i>
|
<i class="fa fa-book fa-sm"></i>
|
||||||
${getString(prefix+'_description')}
|
${getString(prefix+'_description')}
|
||||||
<a href="https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/${getPluginCodeName(pluginsData, prefix)}" target="_blank">
|
<a href="https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/${getPluginCodeName(pluginsData, prefix)}" target="_blank">
|
||||||
${getString('Gen_ReadDocs')}
|
${getString('Gen_ReadDocs')}
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ require 'php/templates/header.php';
|
|||||||
|
|
||||||
<div id="notifications" class="content-wrapper">
|
<div id="notifications" class="content-wrapper">
|
||||||
<section class="content">
|
<section class="content">
|
||||||
<div class="box box-gray col-xs-12" >
|
<div class="notification-box box box-gray col-xs-12" >
|
||||||
<div class="box-header">
|
<div class="box-header">
|
||||||
<h3 class="box-title text-aqua"><?= lang('Notifications_All');?></h3>
|
<h3 class="box-title text-aqua"><?= lang('Notifications_All');?></h3>
|
||||||
</div>
|
</div>
|
||||||
@@ -33,9 +33,10 @@ require 'php/templates/header.php';
|
|||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
<div class="notification-buttons">
|
||||||
<button id="clearNotificationsBtn" class="btn btn-danger"><?= lang("Gen_DeleteAll");?></button>
|
<button id="clearNotificationsBtn" class="btn btn-danger"><?= lang("Gen_DeleteAll");?></button>
|
||||||
<button id="notificationsMarkAllRead" class="btn btn-default"><?= lang("Notifications_Mark_All_Read");?></button>
|
<button id="notificationsMarkAllRead" class="btn btn-default"><?= lang("Notifications_Mark_All_Read");?></button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -39,7 +39,7 @@
|
|||||||
let workflows = [];
|
let workflows = [];
|
||||||
|
|
||||||
let fieldOptions = [
|
let fieldOptions = [
|
||||||
"devName", "devOwner", "devType", "devVendor", "devFavorite",
|
"devName", "devMac", "devOwner", "devType", "devVendor", "devFavorite",
|
||||||
"devGroup", "devComments", "devFirstConnection", "devLastConnection",
|
"devGroup", "devComments", "devFirstConnection", "devLastConnection",
|
||||||
"devLastIP", "devStaticIP", "devScan", "devLogEvents", "devAlertEvents",
|
"devLastIP", "devStaticIP", "devScan", "devLogEvents", "devAlertEvents",
|
||||||
"devAlertDown", "devSkipRepeated", "devLastNotification", "devPresentLastScan",
|
"devAlertDown", "devSkipRepeated", "devLastNotification", "devPresentLastScan",
|
||||||
@@ -144,7 +144,7 @@ function generateWorkflowUI(wf, wfIndex) {
|
|||||||
)
|
)
|
||||||
|
|
||||||
let $wfEnabledIcon = $("<i>", {
|
let $wfEnabledIcon = $("<i>", {
|
||||||
class: `alignRight fa-regular ${wfEnabled ? "fa-dot-circle" : "fa-circle" }`
|
class: `alignRight fa ${wfEnabled ? "fa-dot-circle" : "fa-circle" }`
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ from initialise import importConfigs
|
|||||||
from database import DB
|
from database import DB
|
||||||
from messaging.reporting import get_notifications
|
from messaging.reporting import get_notifications
|
||||||
from models.notification_instance import NotificationInstance
|
from models.notification_instance import NotificationInstance
|
||||||
|
from models.user_events_queue_instance import UserEventsQueueInstance
|
||||||
from plugin import plugin_manager
|
from plugin import plugin_manager
|
||||||
from scan.device_handling import update_devices_names
|
from scan.device_handling import update_devices_names
|
||||||
from workflows.manager import WorkflowManager
|
from workflows.manager import WorkflowManager
|
||||||
@@ -221,6 +222,15 @@ def main ():
|
|||||||
updateState("Workflows: End")
|
updateState("Workflows: End")
|
||||||
|
|
||||||
|
|
||||||
|
# check if devices list needs updating
|
||||||
|
userUpdatedDevices = UserEventsQueueInstance().has_update_devices()
|
||||||
|
|
||||||
|
mylog('debug', [f'[Plugins] Should I update API (userUpdatedDevices): {userUpdatedDevices}'])
|
||||||
|
|
||||||
|
if userUpdatedDevices:
|
||||||
|
|
||||||
|
update_api(db, all_plugins, True, ["devices"], userUpdatedDevices)
|
||||||
|
|
||||||
#loop
|
#loop
|
||||||
time.sleep(5) # wait for N seconds
|
time.sleep(5) # wait for N seconds
|
||||||
|
|
||||||
|
|||||||
@@ -562,7 +562,10 @@ def execute_plugin(db, all_plugins, plugin ):
|
|||||||
endpoints = ["plugins_events","plugins_objects", "plugins_history", "appevents"]
|
endpoints = ["plugins_events","plugins_objects", "plugins_history", "appevents"]
|
||||||
|
|
||||||
# check if we need to update devices api endpoint as well to prevent long user waits on Loading...
|
# check if we need to update devices api endpoint as well to prevent long user waits on Loading...
|
||||||
userUpdatedDevices = UserEventsQueueInstance().has_update_devices
|
userUpdatedDevices = UserEventsQueueInstance().has_update_devices()
|
||||||
|
|
||||||
|
mylog('verbose', [f'[Plugins] Should I update API (userUpdatedDevices): {userUpdatedDevices}'])
|
||||||
|
|
||||||
if userUpdatedDevices:
|
if userUpdatedDevices:
|
||||||
endpoints += ["devices"]
|
endpoints += ["devices"]
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user