mirror of
https://github.com/jokob-sk/NetAlertX.git
synced 2026-04-12 21:21:36 -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.
|
||||
|
||||
---
|
||||
|
||||
### 1. Configure Scanner Plugin(s)
|
||||
|
||||
> [!TIP]
|
||||
> Enable additional plugins under **Settings → `LOADED_PLUGINS`**.
|
||||
> Make sure to **save** your changes and **reload the page** to activate them.
|
||||
> 
|
||||
|
||||
---
|
||||
|
||||
### 1. Configure Scanner Plugin(s)
|
||||
|
||||
**Initial configuration**: `ARPSCAN`, `INTRNT`
|
||||
|
||||
> [!NOTE]
|
||||
@@ -31,6 +31,8 @@ Get **NetAlertX** up and running in a few simple steps.
|
||||
|
||||
### 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.
|
||||
|
||||
> [!NOTE]
|
||||
@@ -41,6 +43,8 @@ Get **NetAlertX** up and running in a few simple steps.
|
||||
|
||||
### 4. Configure Notifications
|
||||
|
||||

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

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

|
||||
|
||||
**Initial configuration**: The `CSVBCKP` plugin creates a daily backup to `/config/devices.csv`.
|
||||
|
||||
> [!NOTE]
|
||||
@@ -70,6 +78,8 @@ Get **NetAlertX** up and running in a few simple steps.
|
||||
|
||||
### 7. (Optional) Create Custom Plugins
|
||||
|
||||
[](https://youtu.be/cdbxlwiWhv8)
|
||||
|
||||
**Initial configuration**: N/A
|
||||
|
||||
> [!NOTE]
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# Migration form PiAlert to NetAlertX
|
||||
|
||||
> [!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:
|
||||
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
# 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:
|
||||
|
||||
- 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;
|
||||
}
|
||||
|
||||
#notifications .notification-buttons{
|
||||
margin: 10px;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
#notificationData textarea{
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
@@ -848,7 +848,7 @@ function initializeDatatable (status) {
|
||||
{targets: [mapIndx(26)],
|
||||
'createdCell': function (td, cellData, rowData, row, col) {
|
||||
if (!emptyArr.includes(cellData)){
|
||||
$(td).html (`<span>${renderCustomProps(cellData, rowData[mapIndx(11)])}<span>`);
|
||||
$(td).html (`<span>${renderCustomProps(cellData, rowData[mapIndx(11)])}</span>`);
|
||||
} else {
|
||||
$(td).html ('');
|
||||
}
|
||||
|
||||
@@ -1534,7 +1534,7 @@ const handleFailure = (callName, callback) => {
|
||||
msg = `AJAX call ${callName} failed`
|
||||
console.error(msg);
|
||||
// Implement retry logic here if needed
|
||||
write_notification(msg, 'interrupt')
|
||||
// write_notification(msg, 'interrupt')
|
||||
};
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
@@ -433,7 +433,7 @@ function initListInteractionOptions(element) {
|
||||
if (clickCounter === 1) {
|
||||
// Single-click action
|
||||
showModalFieldInput(
|
||||
`<i class="fa-regular fa-pen-to-square"></i> ${getString(
|
||||
`<i class="fa fa-pen-to-square"></i> ${getString(
|
||||
"Gen_Update_Value"
|
||||
)}`,
|
||||
getString("settings_update_item_warning"),
|
||||
|
||||
@@ -200,9 +200,9 @@ function validateRegex(elem) {
|
||||
|
||||
// Validate against regex
|
||||
if (regex.test(value)) {
|
||||
iconSpan.html("<i class='fa-regular fa-check'></i>");
|
||||
iconSpan.html("<i class='fa fa-check'></i>");
|
||||
} else {
|
||||
iconSpan.html("<i class='fa-regular fa-xmark'></i>");
|
||||
iconSpan.html("<i class='fa fa-xmark'></i>");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -125,8 +125,7 @@
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<br>
|
||||
</table>
|
||||
<div id="assignedDevices" class="box-body no-padding">
|
||||
<div class="page-header">
|
||||
<h3>
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
|
||||
<!-- To the right -->
|
||||
<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://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>
|
||||
|
||||
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_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.",
|
||||
"Maintenance_InitCheck": "",
|
||||
"Maintenance_InitCheck_Checking": "",
|
||||
"Maintenance_InitCheck_QuickSetupGuide": "",
|
||||
"Maintenance_InitCheck_Success": "",
|
||||
"Maintenance_ReCheck": "",
|
||||
"Maintenance_InitCheck": "Controllo iniziale",
|
||||
"Maintenance_InitCheck_Checking": "Controllo in corso...",
|
||||
"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": "Applicazione inizializzata con successo!",
|
||||
"Maintenance_ReCheck": "Riprova controllo",
|
||||
"Maintenance_Running_Version": "Versione installata",
|
||||
"Maintenance_Status": "Stato",
|
||||
"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 = `
|
||||
<div class="enabled-disabled-icon">
|
||||
<i class="fa-regular fa-${onOff}"></i>
|
||||
<i class="fa fa-${onOff}"></i>
|
||||
</div>
|
||||
`
|
||||
}
|
||||
@@ -365,7 +365,7 @@ $settingsJSON_DB = json_encode($settings, JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX
|
||||
let pluginHtml = `
|
||||
<div class="row table_row docs">
|
||||
<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')}
|
||||
<a href="https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/${getPluginCodeName(pluginsData, prefix)}" target="_blank">
|
||||
${getString('Gen_ReadDocs')}
|
||||
|
||||
@@ -12,7 +12,7 @@ require 'php/templates/header.php';
|
||||
|
||||
<div id="notifications" class="content-wrapper">
|
||||
<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">
|
||||
<h3 class="box-title text-aqua"><?= lang('Notifications_All');?></h3>
|
||||
</div>
|
||||
@@ -33,9 +33,10 @@ require 'php/templates/header.php';
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
<button id="clearNotificationsBtn" class="btn btn-danger"><?= lang("Gen_DeleteAll");?></button>
|
||||
<button id="notificationsMarkAllRead" class="btn btn-default"><?= lang("Notifications_Mark_All_Read");?></button>
|
||||
<div class="notification-buttons">
|
||||
<button id="clearNotificationsBtn" class="btn btn-danger"><?= lang("Gen_DeleteAll");?></button>
|
||||
<button id="notificationsMarkAllRead" class="btn btn-default"><?= lang("Notifications_Mark_All_Read");?></button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
let workflows = [];
|
||||
|
||||
let fieldOptions = [
|
||||
"devName", "devOwner", "devType", "devVendor", "devFavorite",
|
||||
"devName", "devMac", "devOwner", "devType", "devVendor", "devFavorite",
|
||||
"devGroup", "devComments", "devFirstConnection", "devLastConnection",
|
||||
"devLastIP", "devStaticIP", "devScan", "devLogEvents", "devAlertEvents",
|
||||
"devAlertDown", "devSkipRepeated", "devLastNotification", "devPresentLastScan",
|
||||
@@ -144,7 +144,7 @@ function generateWorkflowUI(wf, wfIndex) {
|
||||
)
|
||||
|
||||
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 messaging.reporting import get_notifications
|
||||
from models.notification_instance import NotificationInstance
|
||||
from models.user_events_queue_instance import UserEventsQueueInstance
|
||||
from plugin import plugin_manager
|
||||
from scan.device_handling import update_devices_names
|
||||
from workflows.manager import WorkflowManager
|
||||
@@ -221,6 +222,15 @@ def main ():
|
||||
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
|
||||
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"]
|
||||
|
||||
# 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:
|
||||
endpoints += ["devices"]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user