diff --git a/docs/BACKUPS.md b/docs/BACKUPS.md index 1950f393..217eab1e 100755 --- a/docs/BACKUPS.md +++ b/docs/BACKUPS.md @@ -4,20 +4,21 @@ > To backup 99% of your configuration backup at least the `/app/config` folder. Please read the whole page (or at least "Scenario 2: Corrupted database") for details. > Note that database definitions might change over time. The safest way is to restore your older backups into the **same version** of the app they were taken from and then gradually upgarde between releases to the latest version. -There are 3 artifacts that can be used to backup the application: +There are 4 artifacts that can be used to backup the application: | File | Description | Limitations | |-----------------------|-------------------------------|-------------------------------| | `/db/app.db` | Database file(s) | The database file might be in an uncommitted state or corrupted | | `/config/app.conf` | Configuration file | Can be overridden with the [`APP_CONF_OVERRIDE` env variable](https://github.com/jokob-sk/NetAlertX/tree/main/dockerfiles#docker-environment-variables). | | `/config/devices.csv` | CSV file containing device information | Doesn't contain historical data | +| `/config/workflows.json` | A JSON file containing your workflows | N/A | ## Backup strategies -The safest approach to backups is to backup everything, by taking regular file system backups (I use [Kopia](https://github.com/kopia/kopia)). +The safest approach to backups is to backup everything, by taking regular file system backups of the `/db` and `/config` folders (I use [Kopia](https://github.com/kopia/kopia)). -Arguably, the most time is spent setting up the device list, so if only one file is kept I'd recommend to have a latest backup of the `devices_.csv` or `devices.csv` file, followed by the `app.conf` file. You can also download `app.conf` and `devices.csv` file in the Maintenance section: +Arguably, the most time is spent setting up the device list, so if only one file is kept I'd recommend to have a latest backup of the `devices_.csv` or `devices.csv` file, followed by the `app.conf` and `workflows.json` files. You can also download `app.conf` and `devices.csv` file in the Maintenance section: ![Backup and Restore Section in Maintenance](./img/BACKUPS/Maintenance_Backup_Restore.png) @@ -29,6 +30,7 @@ End-result: Full restore - `/app/db/app.db` (uncorrupted) - `/app/config/app.conf` +- `/app/config/workflows.json` #### 📥 Recovery: @@ -43,12 +45,13 @@ End-result: Partial restore (historical data and some plugin data will be missin - `/app/config/app.conf` - `/app/config/devices_.csv` or `/app/config/devices.csv` +- `/app/config/workflows.json` #### 📥 Recovery: Even with a corrupted database you can recover what I would argue is 99% of the configuration. -- upload the `app.conf` file into the mounted `/app/config/` folder as described in the [Setup documentation](https://github.com/jokob-sk/NetAlertX/blob/main/dockerfiles/README.md#docker-paths). +- upload the `app.conf` and `workflows.json` files into the mounted `/app/config/` folder as described in the [Setup documentation](https://github.com/jokob-sk/NetAlertX/blob/main/dockerfiles/README.md#docker-paths). - rename the `devices_.csv` to `devices.csv` and place it in the `/app/config` folder - Restore the `devices.csv` backup via the [Maintenance section](./DEVICES_BULK_EDITING.md) diff --git a/docs/NOTIFICATIONS.md b/docs/NOTIFICATIONS.md index 656a3ac7..60db3f04 100755 --- a/docs/NOTIFICATIONS.md +++ b/docs/NOTIFICATIONS.md @@ -17,8 +17,8 @@ There are 4 ways how to influence notifications: There are 4 settings on the device for influencing notifications. You can: -1. **Alert Events** - Enables alerts of connections, disconnections, IP changes. -2. **Alert Down** - Alerts when a device goes down. This setting overrides a disabled **Alert Events** setting, so you will get a notification of a device going down even if you don't have **Alert Events** ticked. +1. **Alert Events** - Enables alerts of connections, disconnections, IP changes (down and down reconnected notifications are still sent even if this is disabled). +2. **Alert Down** - Alerts when a device goes down. This setting overrides a disabled **Alert Events** setting, so you will get a notification of a device going down even if you don't have **Alert Events** ticked. Disabling this will disable down and down reconnected notifications on the device. 3. **Skip repeated notifications**, if for example you know there is a temporary issue and want to pause the same notification for this device for a given time. ## Plugin settings 🔌 @@ -38,7 +38,7 @@ Click the **Read more in the docs.** Link at the top of each plugin to get more In Notification Processing settings, you can specify blanket rules. These allow you to specify exceptions to the Plugin and Device settings and will override those. -1. Notify on (`NTFPRCS_INCLUDED_SECTIONS`) allows you to specify which events trigger notifications. Usual setups will have `new_devices`, `down_devices`, and possibly `down_reconnected` set. Including `plugin` (dependenton the Plugin `_WATCH` and `_REPORT_ON` settings) and `events` (dependent on the on-device **Alert Events** setting) might be too noisy for most setups. More info in the [NTFPRCS plugin](/front/plugins/notification_processing/README.md) +1. Notify on (`NTFPRCS_INCLUDED_SECTIONS`) allows you to specify which events trigger notifications. Usual setups will have `new_devices`, `down_devices`, and possibly `down_reconnected` set. Including `plugin` (dependenton the Plugin `_WATCH` and `_REPORT_ON` settings) and `events` (dependent on the on-device **Alert Events** setting) might be too noisy for most setups. More info in the [NTFPRCS plugin](/front/plugins/notification_processing/README.md) on what events these selections include. 2. Alert down after (`NTFPRCS_alert_down_time`) is useful if you want to wait for some time before the system sends out a down notification for a device. This is related to the on-device **Alert down** setting and only devices with this checked will trigger a down notification. 3. A filter to allow you to set device-specific exceptions to New devices being added to the app. 4. A filter to allow you to set device-specific exceptions to generated Events. diff --git a/docs/WORKFLOWS.md b/docs/WORKFLOWS.md index e68e7d58..2fecf72b 100755 --- a/docs/WORKFLOWS.md +++ b/docs/WORKFLOWS.md @@ -56,7 +56,7 @@ Below you can find a couple of configuration examples. ### Trigger: - **Object Type**: `Devices` -- **Event Type**: `insert` +- **Event Type**: `create` ### Conditions: - **Logic**: `AND` diff --git a/front/css/app.css b/front/css/app.css index b697f8d3..68057e05 100755 --- a/front/css/app.css +++ b/front/css/app.css @@ -1141,14 +1141,14 @@ input[readonly] { .settings-sticky-bottom-section { position: fixed; z-index: 999; - background-color: #5B5B66; + /* background-color: #5B5B66; */ /* opacity: 0.8; */ bottom: 30px; border-radius: 5px; /* margin:1px; */ - border-width: 1px; + /* border-width: 1px; border-style: solid; - border-color: inherit; + border-color: inherit; */ /* width: 87%; */ padding: 10px; } @@ -1530,13 +1530,13 @@ input[readonly] { justify-content:center; display: inline-grid; } -.networkHelpIcon +.helpIcon { - padding: 5px; - margin-left: 5px; - top: 55px; - position: absolute; - z-index:5; + padding: 5px; + margin-left: 0px; + top: 47px; + position: absolute; + z-index: 5; } #networkTree .netNodeText { @@ -1975,8 +1975,6 @@ input[readonly] { right: 0.1em; } - - .workflows .remove-condition { z-index: 1; diff --git a/front/maintenance.php b/front/maintenance.php index 30b21e72..34df64d5 100755 --- a/front/maintenance.php +++ b/front/maintenance.php @@ -209,7 +209,13 @@ $db->close();
- + +
+
+ +
+
+
@@ -429,6 +435,15 @@ function DownloadConfig() openInNewTab("php/server/query_config.php?file=app.conf&download=true") } +// ----------------------------------------------------------- +// Download Workflows + +function DownloadWorkflows() +{ + // Execute + openInNewTab("php/server/query_config.php?file=workflows.json&download=true") +} + // ----------------------------------------------------------- diff --git a/front/network.php b/front/network.php index 152af707..a563c675 100755 --- a/front/network.php +++ b/front/network.php @@ -22,7 +22,7 @@
- +
diff --git a/front/php/templates/language/ar_ar.json b/front/php/templates/language/ar_ar.json index ee232896..11fb93dc 100755 --- a/front/php/templates/language/ar_ar.json +++ b/front/php/templates/language/ar_ar.json @@ -244,10 +244,6 @@ "Device_Tablelenght_all": "", "Device_Title": "", "Devices_Filters": "", - "Donations_Others": "", - "Donations_Platforms": "", - "Donations_Text": "", - "Donations_Title": "", "ENABLE_PLUGINS_description": "", "ENABLE_PLUGINS_name": "", "ENCRYPTION_KEY_description": "", @@ -367,6 +363,8 @@ "Maintenance_Title": "", "Maintenance_Tool_DownloadConfig": "", "Maintenance_Tool_DownloadConfig_text": "", + "Maintenance_Tool_DownloadWorkflows": "", + "Maintenance_Tool_DownloadWorkflows_text": "", "Maintenance_Tool_ExportCSV": "", "Maintenance_Tool_ExportCSV_noti": "", "Maintenance_Tool_ExportCSV_noti_text": "", @@ -672,6 +670,26 @@ "UI_REFRESH_name": "", "VERSION_description": "", "VERSION_name": "", + "WF_Action_Add": "", + "WF_Action_field": "", + "WF_Action_type": "", + "WF_Action_value": "", + "WF_Actions": "", + "WF_Add": "", + "WF_Add_Condition": "", + "WF_Add_Group": "", + "WF_Condition_field": "", + "WF_Condition_operator": "", + "WF_Condition_value": "", + "WF_Conditions": "", + "WF_Conditions_logic_rules": "", + "WF_Enabled": "", + "WF_Name": "", + "WF_Remove": "", + "WF_Save": "", + "WF_Trigger": "", + "WF_Trigger_event_type": "", + "WF_Trigger_type": "", "add_icon_event_icon": "", "add_icon_event_tooltip": "", "add_option_event_icon": "", diff --git a/front/php/templates/language/ca_ca.json b/front/php/templates/language/ca_ca.json index e6d539b2..41d95def 100755 --- a/front/php/templates/language/ca_ca.json +++ b/front/php/templates/language/ca_ca.json @@ -244,10 +244,6 @@ "Device_Tablelenght_all": "Tot", "Device_Title": "Dispositius", "Devices_Filters": "Filtres", - "Donations_Others": "Altres", - "Donations_Platforms": "Plataformes patrocinadores", - "Donations_Text": "Hola 👋!
Gràcies per fer clic en aquest element de menú 😅

Estic intentant recollir algunes donacions per fer un millor programari. També, m'ajudaria per cremar-me, i així recolzar aquesta aplicació més temps. Qualsevol petit (recurrent o no) patrocini em farà posar més esforç a aquesta aplicació.
M'agradaria escurçar la meva setmana de feina i en el temps restant enfocar-me en el NetAlertX. Així rebries més funcionalitat, una aplicació més neta i menys bugs.

Gràcies per llegir-ho - Agraeixo qualsevol suport ❤🙏

TL;DR: Pel teu suport reps:

  • Actualitzacions regulars per seguir les vostres dades i mantenir la família segura 🔄
  • Menys bugs 🐛🔫
  • Millor i més funcionalitat➕
  • Que no m'arribi el \"burn out\" 🔥🤯
  • Menys actualitzacions d'emergència 💨
  • Millors documentacions📚
  • Suport més ràpid i millor amb les incidències 🆘

📧Correu electrònic jokob@duck.com si vols contactar o si hauria d'afegir altres programes de patrocini.
", - "Donations_Title": "Donacions", "ENABLE_PLUGINS_description": "Habilita la connectors funcionalitat. Carregar els connectors requereix més recursos de maquinari així podries voler desactivar-los en un sistema de baixos recursos.", "ENABLE_PLUGINS_name": "Activa els connectors(Plugins)", "ENCRYPTION_KEY_description": "Clau de xifrat de dades.", @@ -367,6 +363,8 @@ "Maintenance_Title": "Eines de manteniment", "Maintenance_Tool_DownloadConfig": "Exportació de paràmetres", "Maintenance_Tool_DownloadConfig_text": "Descarregueu una còpia de seguretat completa de la vostra configuració de configuració emmagatzemada al fitxer app.conf.", + "Maintenance_Tool_DownloadWorkflows": "", + "Maintenance_Tool_DownloadWorkflows_text": "", "Maintenance_Tool_ExportCSV": "CSV Exportació de dispositius", "Maintenance_Tool_ExportCSV_noti": "CSV Exportació", "Maintenance_Tool_ExportCSV_noti_text": "Estàs segur que vols generar un fitxer CSV?", @@ -672,6 +670,26 @@ "UI_REFRESH_name": "Auto-refresc UI", "VERSION_description": "Versió o valor timestamp per comprovar si l'aplicació va ser actualitzada.", "VERSION_name": "Versió o timestamp", + "WF_Action_Add": "", + "WF_Action_field": "", + "WF_Action_type": "", + "WF_Action_value": "", + "WF_Actions": "", + "WF_Add": "", + "WF_Add_Condition": "", + "WF_Add_Group": "", + "WF_Condition_field": "", + "WF_Condition_operator": "", + "WF_Condition_value": "", + "WF_Conditions": "", + "WF_Conditions_logic_rules": "", + "WF_Enabled": "", + "WF_Name": "", + "WF_Remove": "", + "WF_Save": "", + "WF_Trigger": "", + "WF_Trigger_event_type": "", + "WF_Trigger_type": "", "add_icon_event_icon": "fa-square-plus", "add_icon_event_tooltip": "Afegir nova icona", "add_option_event_icon": "fa-square-plus", diff --git a/front/php/templates/language/cs_cz.json b/front/php/templates/language/cs_cz.json index ee232896..11fb93dc 100755 --- a/front/php/templates/language/cs_cz.json +++ b/front/php/templates/language/cs_cz.json @@ -244,10 +244,6 @@ "Device_Tablelenght_all": "", "Device_Title": "", "Devices_Filters": "", - "Donations_Others": "", - "Donations_Platforms": "", - "Donations_Text": "", - "Donations_Title": "", "ENABLE_PLUGINS_description": "", "ENABLE_PLUGINS_name": "", "ENCRYPTION_KEY_description": "", @@ -367,6 +363,8 @@ "Maintenance_Title": "", "Maintenance_Tool_DownloadConfig": "", "Maintenance_Tool_DownloadConfig_text": "", + "Maintenance_Tool_DownloadWorkflows": "", + "Maintenance_Tool_DownloadWorkflows_text": "", "Maintenance_Tool_ExportCSV": "", "Maintenance_Tool_ExportCSV_noti": "", "Maintenance_Tool_ExportCSV_noti_text": "", @@ -672,6 +670,26 @@ "UI_REFRESH_name": "", "VERSION_description": "", "VERSION_name": "", + "WF_Action_Add": "", + "WF_Action_field": "", + "WF_Action_type": "", + "WF_Action_value": "", + "WF_Actions": "", + "WF_Add": "", + "WF_Add_Condition": "", + "WF_Add_Group": "", + "WF_Condition_field": "", + "WF_Condition_operator": "", + "WF_Condition_value": "", + "WF_Conditions": "", + "WF_Conditions_logic_rules": "", + "WF_Enabled": "", + "WF_Name": "", + "WF_Remove": "", + "WF_Save": "", + "WF_Trigger": "", + "WF_Trigger_event_type": "", + "WF_Trigger_type": "", "add_icon_event_icon": "", "add_icon_event_tooltip": "", "add_option_event_icon": "", diff --git a/front/php/templates/language/de_de.json b/front/php/templates/language/de_de.json index cf9dc9d3..629a80a7 100755 --- a/front/php/templates/language/de_de.json +++ b/front/php/templates/language/de_de.json @@ -256,10 +256,6 @@ "Device_Tablelenght_all": "Alle", "Device_Title": "Geräte", "Devices_Filters": "Filter", - "Donations_Others": "Andere", - "Donations_Platforms": "Sponsor-Platformen", - "Donations_Text": "Hey 👋!
Thanks for clicking on this menu item 😅

I'm trying to collect some donations to make you better software. Also, it would help me not to get burned out. Me burning out might mean end of support for this app. Any small (recurring or not) sponsorship makes me want ot put more effort into this app. I don't want to lock features (new plugins) behind paywalls 🔐.
Currently, I'm waking up 2h before work so I contribute to the app a bit. If I had some recurring income I could shorten my workweek and in the remaining time fully focus on NetAlertX. You'd get more functionality, a more polished app and less bugs.

Thanks for reading - I'm super grateful for any support ❤🙏

TL;DR: By supporting me you get:

  • Regular updates to keep your data and family safe 🔄
  • Less bugs 🐛🔫
  • Better and more functionality➕
  • I don't get burned out 🔥🤯
  • Less rushed releases 💨
  • Better docs📚
  • Quicker and better support with issues 🆘
  • Less grumpy me 😄

📧Email me to jokob@duck.com if you want to get in touch or if I should add other sponsorship platforms.
", - "Donations_Title": "Spenden", "ENABLE_PLUGINS_description": "NOTUSED Enables the plugins functionality. Loading plugins requires more hardware resources so you might want to disable them on low-powered system.", "ENABLE_PLUGINS_name": "NOTUSED Enable Plugins", "ENCRYPTION_KEY_description": "Schlüssel zur Datenverschlüsselung.", @@ -393,6 +389,8 @@ "Maintenance_Title": "Wartungswerkzeuge", "Maintenance_Tool_DownloadConfig": "", "Maintenance_Tool_DownloadConfig_text": "", + "Maintenance_Tool_DownloadWorkflows": "", + "Maintenance_Tool_DownloadWorkflows_text": "", "Maintenance_Tool_ExportCSV": "CSV Export", "Maintenance_Tool_ExportCSV_noti": "CSV Export", "Maintenance_Tool_ExportCSV_noti_text": "Sind Sie sich sicher, dass Sie die CSV-Datei erstellen wollen?", @@ -751,6 +749,26 @@ "WEBHOOK_SIZE_name": "Max payload size", "WEBHOOK_URL_description": "Target URL starting with http:// or https://.", "WEBHOOK_URL_name": "Target URL", + "WF_Action_Add": "", + "WF_Action_field": "", + "WF_Action_type": "", + "WF_Action_value": "", + "WF_Actions": "", + "WF_Add": "", + "WF_Add_Condition": "", + "WF_Add_Group": "", + "WF_Condition_field": "", + "WF_Condition_operator": "", + "WF_Condition_value": "", + "WF_Conditions": "", + "WF_Conditions_logic_rules": "", + "WF_Enabled": "", + "WF_Name": "", + "WF_Remove": "", + "WF_Save": "", + "WF_Trigger": "", + "WF_Trigger_event_type": "", + "WF_Trigger_type": "", "Webhooks_display_name": "Webhooks", "Webhooks_icon": "", "add_icon_event_icon": "", diff --git a/front/php/templates/language/en_us.json b/front/php/templates/language/en_us.json index a0eb2ac3..92c14b73 100755 --- a/front/php/templates/language/en_us.json +++ b/front/php/templates/language/en_us.json @@ -22,7 +22,7 @@ "AppEvents_ObjectPlugin": "Linked Plugin", "AppEvents_ObjectPrimaryID": "Primary ID", "AppEvents_ObjectSecondaryID": "Secondary ID", - "AppEvents_ObjectStatus": "Status (at log time)", + "AppEvents_ObjectStatus": "Logged Status", "AppEvents_ObjectStatusColumn": "Status column", "AppEvents_ObjectType": "Object Type", "AppEvents_Plugin": "Plugin", @@ -244,10 +244,6 @@ "Device_Tablelenght_all": "All", "Device_Title": "Devices", "Devices_Filters": "Filters", - "Donations_Others": "Others", - "Donations_Platforms": "Sponsor platforms", - "Donations_Text": "Hey 👋!
Thanks for clicking on this menu item 😅

I'm trying to collect some donations to make you better software. Also, it would help me not to get burned out, so I can support this app longer. Any small (recurring or not) sponsorship makes me want to put more effort into this app.
I'd love to shorten my work week and in the remaining time fully focus on NetAlertX. You'd get more functionality, a more polished app and less bugs.

Thanks for reading - I'm grateful for any support ❤🙏

TL;DR: By supporting me you get:

  • Regular updates to keep your data and family safe 🔄
  • Less bugs 🐛🔫
  • Better and more functionality➕
  • I don't get burned out 🔥🤯
  • Less rushed releases 💨
  • Better docs📚
  • Quicker and better support with issues 🆘

📧Email me to jokob@duck.com if you want to get in touch or if I should add other sponsorship platforms.
", - "Donations_Title": "Donations", "ENABLE_PLUGINS_description": "Enables the plugins functionality. Loading plugins requires more hardware resources so you might want to disable them on low-powered system.", "ENABLE_PLUGINS_name": "Enable Plugins", "ENCRYPTION_KEY_description": "Data encryption key.", @@ -367,6 +363,8 @@ "Maintenance_Title": "Maintenance tools", "Maintenance_Tool_DownloadConfig": "Settings Export", "Maintenance_Tool_DownloadConfig_text": "Download a full backup of your Settings configuration stored in the app.conf file.", + "Maintenance_Tool_DownloadWorkflows": "Workflows Export", + "Maintenance_Tool_DownloadWorkflows_text": "Download a full backup of your Workflows stored in the workflows.json file.", "Maintenance_Tool_ExportCSV": "Devices Export (csv)", "Maintenance_Tool_ExportCSV_noti": "Devices Export (csv)", "Maintenance_Tool_ExportCSV_noti_text": "Are you sure you want to generate a CSV file?", @@ -672,6 +670,26 @@ "UI_REFRESH_name": "Auto-refresh UI", "VERSION_description": "Version or timestamp helper value to check if app was upgraded.", "VERSION_name": "Version or timestamp", + "WF_Action_Add": "Add Action", + "WF_Action_field": "Field", + "WF_Action_type": "Type", + "WF_Action_value": "Value", + "WF_Actions": "Actions", + "WF_Add": "Add Workflow", + "WF_Add_Condition": "Add Condition", + "WF_Add_Group": "Add Group", + "WF_Condition_field": "Field", + "WF_Condition_operator": "Operator", + "WF_Condition_value": "Value", + "WF_Conditions": "Conditions", + "WF_Conditions_logic_rules": "Logic rules", + "WF_Enabled": "Workflow enabled", + "WF_Name": "Workflow name", + "WF_Remove": "Remove Workflow", + "WF_Save": "Save Workflows", + "WF_Trigger": "Trigger", + "WF_Trigger_event_type": "Event type", + "WF_Trigger_type": "Trigger type", "add_icon_event_icon": "fa-square-plus", "add_icon_event_tooltip": "Add new icon", "add_option_event_icon": "fa-square-plus", diff --git a/front/php/templates/language/es_es.json b/front/php/templates/language/es_es.json index 21468971..490403d7 100755 --- a/front/php/templates/language/es_es.json +++ b/front/php/templates/language/es_es.json @@ -254,10 +254,6 @@ "Device_Tablelenght_all": "Todos", "Device_Title": "Dispositivos", "Devices_Filters": "", - "Donations_Others": "Otros", - "Donations_Platforms": "Plataforma de patrocinadores", - "Donations_Text": "¡Hola! 👋
Gracias por hacer clic en este elemento 😅 del menú

, estoy tratando de recolectar algunas donaciones para mejorar el software. Además, me ayudaría a no quemarse, por lo que puedo apoyar esta aplicación por más tiempo. Cualquier pequeño patrocinio (recurrente o no) me hace querer esforzarme más en esta aplicación.
Me encantaría acortar mi semana de trabajo y en el tiempo que me queda centrarme por completo en NetAlertX. Obtendrías más funcionalidad, una aplicación más pulida y menos errores.

Gracias por leer, agradezco cualquier apoyo ❤🙏

TL; DR: Al apoyarme, obtienes:

  • Actualizaciones periódicas para mantener tus datos y tu familia seguros 🔄
  • Menos errores 🐛🔫
  • Mejor y más funcionalidad➕
  • No me quemo 🔥🤯
  • Lanzamientos 💨menos apresurados
  • Mejores documentos📚
  • Soporte más rápido y mejor con problemas 🆘

📧Envíame un correo electrónico a jokob@duck.com si quieres ponerte en contacto o si debo añadir otras plataformas de patrocinio.
", - "Donations_Title": "Donaciones", "ENABLE_PLUGINS_description": "Habilita la funcionalidad de los complementos. Cargar los complementos requiere más recursos de hardware, así que quizás quieras desactivarlo en hardware poco potente.", "ENABLE_PLUGINS_name": "Habilitar complementos", "ENCRYPTION_KEY_description": "", @@ -391,6 +387,8 @@ "Maintenance_Title": "Herramientas de mantenimiento", "Maintenance_Tool_DownloadConfig": "", "Maintenance_Tool_DownloadConfig_text": "", + "Maintenance_Tool_DownloadWorkflows": "", + "Maintenance_Tool_DownloadWorkflows_text": "", "Maintenance_Tool_ExportCSV": "Exportación CSV", "Maintenance_Tool_ExportCSV_noti": "Exportación CSV", "Maintenance_Tool_ExportCSV_noti_text": "¿Está seguro de que quiere generar un archivo CSV?", @@ -748,6 +746,26 @@ "WEBHOOK_SIZE_name": "Tamaño máximo de carga útil", "WEBHOOK_URL_description": "URL de destino comienza con http:// o https://.", "WEBHOOK_URL_name": "URL de destino", + "WF_Action_Add": "", + "WF_Action_field": "", + "WF_Action_type": "", + "WF_Action_value": "", + "WF_Actions": "", + "WF_Add": "", + "WF_Add_Condition": "", + "WF_Add_Group": "", + "WF_Condition_field": "", + "WF_Condition_operator": "", + "WF_Condition_value": "", + "WF_Conditions": "", + "WF_Conditions_logic_rules": "", + "WF_Enabled": "", + "WF_Name": "", + "WF_Remove": "", + "WF_Save": "", + "WF_Trigger": "", + "WF_Trigger_event_type": "", + "WF_Trigger_type": "", "Webhooks_display_name": "Webhooks", "Webhooks_icon": "", "Webhooks_settings_group": " Webhooks", diff --git a/front/php/templates/language/fr_fr.json b/front/php/templates/language/fr_fr.json index 1cb37acd..04b85df7 100755 --- a/front/php/templates/language/fr_fr.json +++ b/front/php/templates/language/fr_fr.json @@ -244,10 +244,6 @@ "Device_Tablelenght_all": "Tous", "Device_Title": "Appareils", "Devices_Filters": "Filtres", - "Donations_Others": "Autres", - "Donations_Platforms": "Plateformes de sponsoring", - "Donations_Text": "Coucou 👋 !
Merci d'avoir cliqué ici 😅

J'essaie de récolter des donations pour vous faire un meilleur produit. En plus, ça m'aide à éviter le burn-out pour développer cette application plus longtemps. Toute subvention (régulière ou non) me donne envie de poursuivre le développement de cette application.
J'aimerais réduire mon activité principale pour me concentrer plus longuement à NetAlertX. Vous auriez plus de fonctionnalités, une application mieux finie et avec moins de bugs.

Merci de votre lecture - je vous suis reconnaissant pour votre soutien ❤🙏

Version courte : en me soutenant, vous aurez :

  • Des mises à jour régulières pour protéger vos données personnelles et familiales 🔄
  • Moins de bugs 🐛🔫
  • Des fonctionnalités plus riches et plus nombreuses ➕
  • Je ne me retrouve pas en burn-out 🔥🤯
  • Des versions moins à la va-vite 💨
  • une meilleure documentation �
  • Un support meilleur et plus réactif en cas de problème 🆘

📧Envoyez-moi un courriel à jokob@duck.com si vous voulez me contacter ou du je peux ajouter une autre plateforme de soutien.
", - "Donations_Title": "Dons", "ENABLE_PLUGINS_description": "Active les fonctionnalités des Plugins. Charger des plugins nécessite plus de ressources, il est recommandé de les désactiver sur des systèmes de faible puissance.", "ENABLE_PLUGINS_name": "Activer les Plugins", "ENCRYPTION_KEY_description": "Clé de chiffrement des données.", @@ -367,6 +363,8 @@ "Maintenance_Title": "Outils de maintenance", "Maintenance_Tool_DownloadConfig": "Export des paramètres", "Maintenance_Tool_DownloadConfig_text": "Télécharger une sauvegarde complète de vos paramètres stockés dans le fichier app.conf.", + "Maintenance_Tool_DownloadWorkflows": "", + "Maintenance_Tool_DownloadWorkflows_text": "", "Maintenance_Tool_ExportCSV": "Export des appareils (csv)", "Maintenance_Tool_ExportCSV_noti": "Export des appareils (csv)", "Maintenance_Tool_ExportCSV_noti_text": "Êtes-vous sûr de vouloir générer un fichier CSV ?", @@ -672,6 +670,26 @@ "UI_REFRESH_name": "Rafraîchir automatiquement l'interface graphique", "VERSION_description": "Valeur de la version ou du timestamp d'aide à vérifier si l'application a été mise à jour.", "VERSION_name": "Version ou Timestamp", + "WF_Action_Add": "", + "WF_Action_field": "", + "WF_Action_type": "", + "WF_Action_value": "", + "WF_Actions": "", + "WF_Add": "", + "WF_Add_Condition": "", + "WF_Add_Group": "", + "WF_Condition_field": "", + "WF_Condition_operator": "", + "WF_Condition_value": "", + "WF_Conditions": "", + "WF_Conditions_logic_rules": "", + "WF_Enabled": "", + "WF_Name": "", + "WF_Remove": "", + "WF_Save": "", + "WF_Trigger": "", + "WF_Trigger_event_type": "", + "WF_Trigger_type": "", "add_icon_event_icon": "fa-square-plus", "add_icon_event_tooltip": "Ajouter une nouvelle icône", "add_option_event_icon": "fa-square-plus", diff --git a/front/php/templates/language/it_it.json b/front/php/templates/language/it_it.json index 49a1d645..6545327d 100755 --- a/front/php/templates/language/it_it.json +++ b/front/php/templates/language/it_it.json @@ -244,10 +244,6 @@ "Device_Tablelenght_all": "Tutti", "Device_Title": "Dispositivi", "Devices_Filters": "Filtri", - "Donations_Others": "Altri", - "Donations_Platforms": "Piattaforme sponsor", - "Donations_Text": "Hey 👋!
Grazie per aver cliccato su questa voce di menu 😅

Sto cercando di ricevere donazioni per poter fornire un software migliore. Inoltre potrebbe aiutarmi a non andare in burnout, in modo da poter supportare questa app più a lungo. Ogni piccola (ricorrente o non) sponsorizzazione mi invoglia a mettere più impegno nello sviluppo di questa app.
Mi piacerebbe accorciare la mia settimana lavorativa e nel tempo rimanente dedicarmi completamente a NetAlertX. Riceverai più funzionalità, un'applicazione più rifinita e con meno bug.

Grazie per aver letto, ti sono grato per ogni tipo di supporto ❤🙏

TL;DR: Supportandomi otterrai:

  • Aggiornamenti più regolari per mantenere i tuoi dati e la tua famiglia sicuri 🔄
  • Meno bug 🐛🔫
  • Funzionalità migliori e più numerose➕
  • Io non vado in burnout 🔥🤯
  • Rilasci meno affrettati 💨
  • Migliore documentazione 📚
  • Supporto migliore e più veloce in caso di problemi 🆘

📧Invia una mail a jokob@duck.com se vuoi contattarmi o chiedermi di aggiungere altre piattaforme di sponsorizzazione.
", - "Donations_Title": "Donazioni", "ENABLE_PLUGINS_description": "Abilita la funzionalità plugin. Utilizzare i plugin richiede più risorse hardware, potresti voler disabilitare questa opzione sui dispositivi meno performanti.", "ENABLE_PLUGINS_name": "Abilita plugin", "ENCRYPTION_KEY_description": "Chiave di crittografia dei dati.", @@ -367,6 +363,8 @@ "Maintenance_Title": "Strumenti di manutenzione", "Maintenance_Tool_DownloadConfig": "Impostazioni Esporta", "Maintenance_Tool_DownloadConfig_text": "Scarica un backup completo della configurazione delle tue Impostazioni memorizzata nel file app.conf.", + "Maintenance_Tool_DownloadWorkflows": "", + "Maintenance_Tool_DownloadWorkflows_text": "", "Maintenance_Tool_ExportCSV": "Esporta dispositivi (csv)", "Maintenance_Tool_ExportCSV_noti": "Esporta dispositivi (csv)", "Maintenance_Tool_ExportCSV_noti_text": "Sei sicuro di voler generare un file CSV?", @@ -672,6 +670,26 @@ "UI_REFRESH_name": "Aggiorna automaticamente la UI", "VERSION_description": "Valore di supporto della versione o della marca temporale per verificare se l'app è stata aggiornata.", "VERSION_name": "Versione o marca temporale", + "WF_Action_Add": "", + "WF_Action_field": "", + "WF_Action_type": "", + "WF_Action_value": "", + "WF_Actions": "", + "WF_Add": "", + "WF_Add_Condition": "", + "WF_Add_Group": "", + "WF_Condition_field": "", + "WF_Condition_operator": "", + "WF_Condition_value": "", + "WF_Conditions": "", + "WF_Conditions_logic_rules": "", + "WF_Enabled": "", + "WF_Name": "", + "WF_Remove": "", + "WF_Save": "", + "WF_Trigger": "", + "WF_Trigger_event_type": "", + "WF_Trigger_type": "", "add_icon_event_icon": "fa-square-plus", "add_icon_event_tooltip": "Aggiungi nuova icona", "add_option_event_icon": "fa-square-plus", diff --git a/front/php/templates/language/nb_no.json b/front/php/templates/language/nb_no.json index 7f1c4e43..cd6b5940 100755 --- a/front/php/templates/language/nb_no.json +++ b/front/php/templates/language/nb_no.json @@ -244,10 +244,6 @@ "Device_Tablelenght_all": "Alle", "Device_Title": "Enheter", "Devices_Filters": "", - "Donations_Others": "Andre", - "Donations_Platforms": "Sponsorplattformer", - "Donations_Text": "Hei 👋!
Takk for at du klikket på dette menyelementet 😅

Jeg prøver å samle inn noen donasjoner for å lage bedre programvare. Dessuten ville det hjelpe meg å ikke bli utbrent, så jeg kan støtte denne appen lenger. Enhver liten (tilbakevendende eller ikke) sponsing gjør at jeg ønsker å legge mer innsats i denne appen.
Jeg vil gjerne forkorte arbeidsuken min og i den gjenværende tiden fokusere fullt ut på NetAlertX. Du vil få mer funksjonalitet, en mer polert app og mindre feil.

Takk for at du leste - jeg er takknemlig for all støtte ❤🙏

TL;DR: Ved å støtte meg får du:

  • Jevne oppdateringer for å holde dataene dine og familien din trygge 🔄
  • Mindre feil 🐛🔫
  • Bedre og mer funksjonalitet➕
  • Jeg blir ikke utbrent 🔥🤯
  • Mindre forhastede utgivelser 💨
  • Bedre dokumenter📚
  • Raskere og bedre støtte med problemer 🆘

📧 Send meg en e-post til jokob@duck.com hvis du ønsker å komme i kontakt eller hvis jeg skal legge til andre sponsorplattformer.
", - "Donations_Title": "Donasjoner", "ENABLE_PLUGINS_description": "Aktiverer plugins funksjonaliten. Å laste inn plugins krever mer maskinvareressurser, så det kan være lurt å deaktivere dem på et system med lav strøm.", "ENABLE_PLUGINS_name": "Aktiver Plugins", "ENCRYPTION_KEY_description": "", @@ -367,6 +363,8 @@ "Maintenance_Title": "Vedlikeholdsverktøy", "Maintenance_Tool_DownloadConfig": "", "Maintenance_Tool_DownloadConfig_text": "", + "Maintenance_Tool_DownloadWorkflows": "", + "Maintenance_Tool_DownloadWorkflows_text": "", "Maintenance_Tool_ExportCSV": "Eksporter CSV", "Maintenance_Tool_ExportCSV_noti": "Eksporter CSV", "Maintenance_Tool_ExportCSV_noti_text": "Er du sikker på at du vil generere en CSV-fil?", @@ -672,6 +670,26 @@ "UI_REFRESH_name": "Oppdater UI automatisk", "VERSION_description": "", "VERSION_name": "", + "WF_Action_Add": "", + "WF_Action_field": "", + "WF_Action_type": "", + "WF_Action_value": "", + "WF_Actions": "", + "WF_Add": "", + "WF_Add_Condition": "", + "WF_Add_Group": "", + "WF_Condition_field": "", + "WF_Condition_operator": "", + "WF_Condition_value": "", + "WF_Conditions": "", + "WF_Conditions_logic_rules": "", + "WF_Enabled": "", + "WF_Name": "", + "WF_Remove": "", + "WF_Save": "", + "WF_Trigger": "", + "WF_Trigger_event_type": "", + "WF_Trigger_type": "", "add_icon_event_icon": "", "add_icon_event_tooltip": "", "add_option_event_icon": "", diff --git a/front/php/templates/language/pl_pl.json b/front/php/templates/language/pl_pl.json index bad7b4be..3c3e1c21 100755 --- a/front/php/templates/language/pl_pl.json +++ b/front/php/templates/language/pl_pl.json @@ -244,10 +244,6 @@ "Device_Tablelenght_all": "Wszystkie", "Device_Title": "Urządzenia", "Devices_Filters": "", - "Donations_Others": "Inne", - "Donations_Platforms": "Platforma Sponsora", - "Donations_Text": "Cześć 👋!
Dziękuje że kliknąłeś w to menu 😅

Próbuje zebrać trochę dotacji by ulepszyć to oprogramowanie. Także pomaga mi to się nie wypalić bym dalej mógł ulepszać to narzędzie. Każdy mały (powtarzający się lub nie) sponsoring sprawia że chce wkładać więcej pracy w tą aplikację.
Chciałbym skrócić mój tydzień pracy i w wolnym czasie skupić się nad NetAlertX. Dostawalibyście wtedy więcej funkcjonalności i były by one ciągle udoskonalane i posiadające mniej błędów.

Dziękuję że to przeczytałeś - Jestem wdzięczny za pomoc ❤🙏

TL;DR: Wspierając mnie otrzymujesz:

  • Regularne aktualizacje by zapewnić twoim danym i rodzinie bezpieczeństwo 🔄
  • Mniej błędów (bugów) 🐛🔫
  • Nowe i lepsze funkcjonalności➕
  • Nie tracę zapału do dalszego tworzenia 🔥🤯
  • Mniej pośpieszne, bardziej dopracowane wydania💨
  • Lepsza dokumentacja📚
  • Szybsza i lepsza pomoc w problemach🆘

📧Napisz E-mail do mnie najokob@duck.com jeżeli chcesz nawiązać kontakt albo czy powinien dodać kolejną platformę z sponsoringiem.
", - "Donations_Title": "Dotacje", "ENABLE_PLUGINS_description": "Włącza funkcjonalność pluginów. Uruchomienie pluginów wymaga więcej zasobów sprzętu więcej możesz chcieć to wyłączyć dla słabszych systemów.", "ENABLE_PLUGINS_name": "Włącz Pluginy", "ENCRYPTION_KEY_description": "", @@ -367,6 +363,8 @@ "Maintenance_Title": "Narzędzia konserwacyjne", "Maintenance_Tool_DownloadConfig": "", "Maintenance_Tool_DownloadConfig_text": "", + "Maintenance_Tool_DownloadWorkflows": "", + "Maintenance_Tool_DownloadWorkflows_text": "", "Maintenance_Tool_ExportCSV": "Eksport CSV", "Maintenance_Tool_ExportCSV_noti": "Eksport CSV", "Maintenance_Tool_ExportCSV_noti_text": "Jesteś pewien, że chcesz wygenerować plik CSV?", @@ -672,6 +670,26 @@ "UI_REFRESH_name": "Automatycznie odświeżaj UI", "VERSION_description": "", "VERSION_name": "", + "WF_Action_Add": "", + "WF_Action_field": "", + "WF_Action_type": "", + "WF_Action_value": "", + "WF_Actions": "", + "WF_Add": "", + "WF_Add_Condition": "", + "WF_Add_Group": "", + "WF_Condition_field": "", + "WF_Condition_operator": "", + "WF_Condition_value": "", + "WF_Conditions": "", + "WF_Conditions_logic_rules": "", + "WF_Enabled": "", + "WF_Name": "", + "WF_Remove": "", + "WF_Save": "", + "WF_Trigger": "", + "WF_Trigger_event_type": "", + "WF_Trigger_type": "", "add_icon_event_icon": "", "add_icon_event_tooltip": "", "add_option_event_icon": "", diff --git a/front/php/templates/language/pt_br.json b/front/php/templates/language/pt_br.json index 410c2db1..69a2398e 100755 --- a/front/php/templates/language/pt_br.json +++ b/front/php/templates/language/pt_br.json @@ -244,10 +244,6 @@ "Device_Tablelenght_all": "Todos", "Device_Title": "Dispositivos", "Devices_Filters": "Filtros", - "Donations_Others": "Outros", - "Donations_Platforms": "Plataformas de patrocinadores", - "Donations_Text": "Ei 👋!
Obrigado por clicar neste item de menu 😅

Estou tentando coletar algumas doações para melhorar o software. Além disso, isso me ajudaria a não ficar exausto, para que eu pudesse oferecer suporte a este aplicativo por mais tempo. Qualquer pequeno patrocínio (recorrente ou não) me faz querer colocar mais esforço neste aplicativo.
Eu adoraria encurtar minha semana de trabalho e no tempo restante focar totalmente no NetAlertX. Você obteria mais funcionalidades, um aplicativo mais sofisticado e menos bugs.

Obrigado pela leitura - sou grato por qualquer apoio ❤🙏

TL;DR: Ao me apoiar, você obtém:

  • Atualizações regulares para manter seus dados e sua família seguros 🔄
  • Menos bugs 🐛🔫
  • Melhor e mais funcionalidade➕
  • Eu não fico exausto 🔥🤯
  • Lançamentos menos apressados 💨
  • Documentos melhores📚
  • Suporte melhor e mais rápido com problemas 🆘

📧 Envie-me um e-mail para jokob@duck.com se quiser entrar em contato ou se devo adicionar outras plataformas de patrocínio.
", - "Donations_Title": "Doações", "ENABLE_PLUGINS_description": "Ativa a funcionalidade de plugins. Carregar plug-ins requer mais recursos de hardware, então você pode querer desativá-los em sistemas de baixa potência.", "ENABLE_PLUGINS_name": "Habilitar plug-ins", "ENCRYPTION_KEY_description": "Chave de encriptação de dados.", @@ -367,6 +363,8 @@ "Maintenance_Title": "Ferramentas de manutenção", "Maintenance_Tool_DownloadConfig": "Exportação de definições", "Maintenance_Tool_DownloadConfig_text": "Baixe um backup completo da configuração das Configurações armazenada no arquivo app.conf.", + "Maintenance_Tool_DownloadWorkflows": "", + "Maintenance_Tool_DownloadWorkflows_text": "", "Maintenance_Tool_ExportCSV": "Exportação de dispositivos (csv)", "Maintenance_Tool_ExportCSV_noti": "Exportação de dispositivos (csv)", "Maintenance_Tool_ExportCSV_noti_text": "Tem a certeza de que pretende gerar um ficheiro CSV?", @@ -465,6 +463,7 @@ "NETWORK_DEVICE_TYPES_description": "Quais tipos de dispositivos podem ser usados como dispositivos de rede na visualização de rede. O tipo de dispositivo tem de corresponder exatamente à configuração Type em um dispositivo específico em detalhes do dispositivo. Adicione-o no Dispositivo através do botão +. Não remova os tipos existentes, apenas adicione novos.", "NETWORK_DEVICE_TYPES_name": "Tipos de dispositivo de rede", "Navigation_About": "Sobre a", + "Navigation_AppEvents": "", "Navigation_Devices": "Dispositivos", "Navigation_Donations": "Doações", "Navigation_Events": "Eventos", @@ -671,6 +670,26 @@ "UI_REFRESH_name": "", "VERSION_description": "", "VERSION_name": "", + "WF_Action_Add": "", + "WF_Action_field": "", + "WF_Action_type": "", + "WF_Action_value": "", + "WF_Actions": "", + "WF_Add": "", + "WF_Add_Condition": "", + "WF_Add_Group": "", + "WF_Condition_field": "", + "WF_Condition_operator": "", + "WF_Condition_value": "", + "WF_Conditions": "", + "WF_Conditions_logic_rules": "", + "WF_Enabled": "", + "WF_Name": "", + "WF_Remove": "", + "WF_Save": "", + "WF_Trigger": "", + "WF_Trigger_event_type": "", + "WF_Trigger_type": "", "add_icon_event_icon": "", "add_icon_event_tooltip": "", "add_option_event_icon": "", @@ -717,4 +736,4 @@ "settings_update_item_warning": "", "test_event_icon": "", "test_event_tooltip": "Guarde as alterações antes de testar as definições." -} +} \ No newline at end of file diff --git a/front/php/templates/language/ru_ru.json b/front/php/templates/language/ru_ru.json index 868a26a2..3910b2cb 100755 --- a/front/php/templates/language/ru_ru.json +++ b/front/php/templates/language/ru_ru.json @@ -244,10 +244,6 @@ "Device_Tablelenght_all": "Все", "Device_Title": "Устройства", "Devices_Filters": "Фильтры", - "Donations_Others": "Другие", - "Donations_Platforms": "Спонсорские платформы", - "Donations_Text": "Привет 👋!
Спасибо, что нажали на этот пункт меню 😅

Я пытаюсь собрать пожертвования, чтобы сделать ваше программное обеспечение лучше. Кроме того, это поможет мне не перегореть, и я смогу дольше поддерживать это приложение. Любое небольшое спонсорство (периодическое или нет) вызывает у меня желание приложить больше усилий к этому приложению.
Мне бы хотелось сократить свою рабочую неделю и в оставшееся время полностью сосредоточиться на NetAlertX. Вы получите больше функциональности, более усовершенствованное приложение и меньше ошибок.

Спасибо за прочтение – буду благодарен за любую поддержку❤🙏

TL;DR: Поддержав меня, вы получаете:

  • Регулярные обновления для обеспечения безопасности ваших данных и семьи 🔄
  • Меньше ошибок 🐛🔫
  • Лучшую функциональность➕
  • Я не выгораю 🔥🤯
  • Меньше поспешных релизов 💨
  • Лучшая документация📚
  • Быстрее и лучше поддержка по вопросам 🆘

📧Напишите мне на jokob@duck.com если вы хотите связаться или если следует добавить другие спонсорские платформы.
", - "Donations_Title": "Пожертвования", "ENABLE_PLUGINS_description": "Включает функциональность плагинов. Загрузка плагинов требует больше аппаратных ресурсов, поэтому вы можете отключить их в маломощной системе.", "ENABLE_PLUGINS_name": "Разрешить плагины", "ENCRYPTION_KEY_description": "Ключ шифрования данных.", @@ -367,6 +363,8 @@ "Maintenance_Title": "Инструменты обслуживания", "Maintenance_Tool_DownloadConfig": "Экспорт настроек", "Maintenance_Tool_DownloadConfig_text": "Загрузите полную резервную копию конфигурации настроек, хранящуюся в файле app.conf.", + "Maintenance_Tool_DownloadWorkflows": "", + "Maintenance_Tool_DownloadWorkflows_text": "", "Maintenance_Tool_ExportCSV": "Экспорт устройств (csv)", "Maintenance_Tool_ExportCSV_noti": "Экспорт устройств (csv)", "Maintenance_Tool_ExportCSV_noti_text": "Вы уверены, что хотите создать файл CSV?", @@ -672,6 +670,26 @@ "UI_REFRESH_name": "Автоматическое обновление интерфейса", "VERSION_description": "Вспомогательное значение версии или метки времени, позволяющее проверить, было ли приложение обновлено.", "VERSION_name": "Версия или временная метка", + "WF_Action_Add": "", + "WF_Action_field": "", + "WF_Action_type": "", + "WF_Action_value": "", + "WF_Actions": "", + "WF_Add": "", + "WF_Add_Condition": "", + "WF_Add_Group": "", + "WF_Condition_field": "", + "WF_Condition_operator": "", + "WF_Condition_value": "", + "WF_Conditions": "", + "WF_Conditions_logic_rules": "", + "WF_Enabled": "", + "WF_Name": "", + "WF_Remove": "", + "WF_Save": "", + "WF_Trigger": "", + "WF_Trigger_event_type": "", + "WF_Trigger_type": "", "add_icon_event_icon": "fa-square-plus", "add_icon_event_tooltip": "Добавить новую иконку", "add_option_event_icon": "fa-square-plus", diff --git a/front/php/templates/language/tr_tr.json b/front/php/templates/language/tr_tr.json index 4e530b90..7bdfd9e4 100755 --- a/front/php/templates/language/tr_tr.json +++ b/front/php/templates/language/tr_tr.json @@ -244,10 +244,6 @@ "Device_Tablelenght_all": "", "Device_Title": "Cihazlar", "Devices_Filters": "", - "Donations_Others": "Diğerleri", - "Donations_Platforms": "", - "Donations_Text": "", - "Donations_Title": "", "ENABLE_PLUGINS_description": "", "ENABLE_PLUGINS_name": "", "ENCRYPTION_KEY_description": "", @@ -367,6 +363,8 @@ "Maintenance_Title": "", "Maintenance_Tool_DownloadConfig": "", "Maintenance_Tool_DownloadConfig_text": "", + "Maintenance_Tool_DownloadWorkflows": "", + "Maintenance_Tool_DownloadWorkflows_text": "", "Maintenance_Tool_ExportCSV": "", "Maintenance_Tool_ExportCSV_noti": "", "Maintenance_Tool_ExportCSV_noti_text": "Bir CSV dosyası oluşturmak istediğinize emin misiniz?", @@ -672,6 +670,26 @@ "UI_REFRESH_name": "", "VERSION_description": "", "VERSION_name": "", + "WF_Action_Add": "", + "WF_Action_field": "", + "WF_Action_type": "", + "WF_Action_value": "", + "WF_Actions": "", + "WF_Add": "", + "WF_Add_Condition": "", + "WF_Add_Group": "", + "WF_Condition_field": "", + "WF_Condition_operator": "", + "WF_Condition_value": "", + "WF_Conditions": "", + "WF_Conditions_logic_rules": "", + "WF_Enabled": "", + "WF_Name": "", + "WF_Remove": "", + "WF_Save": "", + "WF_Trigger": "", + "WF_Trigger_event_type": "", + "WF_Trigger_type": "", "add_icon_event_icon": "", "add_icon_event_tooltip": "", "add_option_event_icon": "", diff --git a/front/php/templates/language/uk_ua.json b/front/php/templates/language/uk_ua.json index f59a8ac2..f1117969 100755 --- a/front/php/templates/language/uk_ua.json +++ b/front/php/templates/language/uk_ua.json @@ -244,10 +244,6 @@ "Device_Tablelenght_all": "все", "Device_Title": "Пристрої", "Devices_Filters": "Фільтри", - "Donations_Others": "інші", - "Donations_Platforms": "Спонсорські платформи", - "Donations_Text": "Привіт 👋!
Дякуємо, що натиснули цей пункт меню 😅

Я намагаюся зібрати пожертви, щоб зробити ваше програмне забезпечення кращим. Крім того, це допоможе мені не згоріти, тому я можу підтримувати цю програму довше. Будь-яке невелике (постійне чи ні) спонсорство спонукає мене докласти більше зусиль до цієї програми.
Я хотів би скоротити свій робочий тиждень і в час, що залишився, повністю зосередитися на NetAlertX. Ви отримаєте більше функціональності, досконаліший додаток і менше помилок.

Дякую, що прочитали – я вдячний за будь-яку підтримку ❤🙏

TL;DR: Підтримуючи мене, ви отримуєте:

  • Регулярні оновлення для захисту ваших даних і родини 🔄
  • Менше помилок 🐛🔫
  • Краще та більше функціональність➕
  • Я не згорів 🔥🤯
  • Менш поспішних випусків 💨
  • Кращі документи📚
  • Швидша та краща підтримка із проблемами 🆘

📧Напишіть мені електронною поштою на jokob@duck.com, якщо ви хочете зв’язатися з нами або якщо я маю додати інші платформи спонсорства.
", - "Donations_Title": "Пожертви", "ENABLE_PLUGINS_description": "Вмикає функції плагінів. Завантаження плагінів вимагає більше апаратних ресурсів, тому ви можете вимкнути їх у системі з низьким енергоспоживанням.", "ENABLE_PLUGINS_name": "Увімкнути плагіни", "ENCRYPTION_KEY_description": "Ключ шифрування даних.", @@ -367,6 +363,8 @@ "Maintenance_Title": "Інструменти обслуговування", "Maintenance_Tool_DownloadConfig": "Експорт налаштувань", "Maintenance_Tool_DownloadConfig_text": "Завантажте повну резервну копію конфігурації налаштувань, яка зберігається у файлі app.conf.", + "Maintenance_Tool_DownloadWorkflows": "", + "Maintenance_Tool_DownloadWorkflows_text": "", "Maintenance_Tool_ExportCSV": "Експорт пристроїв (csv)", "Maintenance_Tool_ExportCSV_noti": "Експорт пристроїв (csv)", "Maintenance_Tool_ExportCSV_noti_text": "Ви впевнені, що хочете створити файл CSV?", @@ -672,6 +670,26 @@ "UI_REFRESH_name": "Автоматичне оновлення інтерфейсу користувача", "VERSION_description": "Допоміжне значення версії або позначки часу, щоб перевірити, чи було оновлено додаток.", "VERSION_name": "Версія або позначка часу", + "WF_Action_Add": "", + "WF_Action_field": "", + "WF_Action_type": "", + "WF_Action_value": "", + "WF_Actions": "", + "WF_Add": "", + "WF_Add_Condition": "", + "WF_Add_Group": "", + "WF_Condition_field": "", + "WF_Condition_operator": "", + "WF_Condition_value": "", + "WF_Conditions": "", + "WF_Conditions_logic_rules": "", + "WF_Enabled": "", + "WF_Name": "", + "WF_Remove": "", + "WF_Save": "", + "WF_Trigger": "", + "WF_Trigger_event_type": "", + "WF_Trigger_type": "", "add_icon_event_icon": "фа-квадрат-плюс", "add_icon_event_tooltip": "додати новий значок", "add_option_event_icon": "фа-квадрат-плюс", diff --git a/front/php/templates/language/zh_cn.json b/front/php/templates/language/zh_cn.json index 491dbb39..bd235f3f 100755 --- a/front/php/templates/language/zh_cn.json +++ b/front/php/templates/language/zh_cn.json @@ -244,10 +244,6 @@ "Device_Tablelenght_all": "所有", "Device_Title": "设备", "Devices_Filters": "", - "Donations_Others": "其他", - "Donations_Platforms": "赞助平台", - "Donations_Text": "嘿👋!
感谢您点击此菜单项😅

我正在尝试收集一些捐款来为您制作更好的软件。此外,这将有助于我避免精疲力竭,这样我就可以更长时间地支持这个应用程序。任何小额(无论是否经常性)赞助都会让我想在这个应用程序上投入更多精力。
我希望缩短我的工作周,并在剩余的时间里完全专注于 NetAlertX。您将获得更多功能、更精致的应用程序和更少的错误。

感谢阅读 - 我感谢任何支持 ❤🙏

TL;DR:通过支持我,您将获得:

  • 定期更新以确保您的数据和家人安全🔄
  • 更少的错误🐛🔫
  • 更好、更多的功能➕
  • 我不会精疲力竭🔥🤯
  • 更不仓促的发布💨
  • 更好的文档📚
  • 更快、更好地解决问题🆘

📧如果您想联系我或者我应该添加其他赞助平台,请给我发电子邮件至jokob@duck.com
", - "Donations_Title": "捐款", "ENABLE_PLUGINS_description": "启用插件功能。加载插件需要更多硬件资源,因此您可能需要在低功耗系统上禁用它们。", "ENABLE_PLUGINS_name": "启用插件", "ENCRYPTION_KEY_description": "", @@ -367,6 +363,8 @@ "Maintenance_Title": "维护工具", "Maintenance_Tool_DownloadConfig": "", "Maintenance_Tool_DownloadConfig_text": "", + "Maintenance_Tool_DownloadWorkflows": "", + "Maintenance_Tool_DownloadWorkflows_text": "", "Maintenance_Tool_ExportCSV": "CSV 导出", "Maintenance_Tool_ExportCSV_noti": "CSV 导出", "Maintenance_Tool_ExportCSV_noti_text": "您确定要生成 CSV 文件吗?", @@ -672,6 +670,26 @@ "UI_REFRESH_name": "自动刷新界面", "VERSION_description": "", "VERSION_name": "", + "WF_Action_Add": "", + "WF_Action_field": "", + "WF_Action_type": "", + "WF_Action_value": "", + "WF_Actions": "", + "WF_Add": "", + "WF_Add_Condition": "", + "WF_Add_Group": "", + "WF_Condition_field": "", + "WF_Condition_operator": "", + "WF_Condition_value": "", + "WF_Conditions": "", + "WF_Conditions_logic_rules": "", + "WF_Enabled": "", + "WF_Name": "", + "WF_Remove": "", + "WF_Save": "", + "WF_Trigger": "", + "WF_Trigger_event_type": "", + "WF_Trigger_type": "", "add_icon_event_icon": "", "add_icon_event_tooltip": "", "add_option_event_icon": "", diff --git a/front/plugins/notification_processing/README.md b/front/plugins/notification_processing/README.md index 49ae450f..9fad5a26 100755 --- a/front/plugins/notification_processing/README.md +++ b/front/plugins/notification_processing/README.md @@ -1,18 +1,60 @@ +# Notifications User Guide + ## Overview -Plugin supplying settings for Notification Processing. +This guide explains how the notification system works, including its dependencies, available notification types, and device-specific overrides. -### Notify on: `NTFPRCS_INCLUDED_SECTIONS`: +## Notification Dependencies -- `new_devices` - if a new device is detected -- `down_devices` - if a device with **Alert down** enabled (on a specific Device) disconnects -- `down_reconnected` - if a device, previously marked down and notified on, reconnects -- `events` - if an event for a device that has **Alert Events** enabled, is triggered -- `plugins` - if an event for a plugin, is triggered +The notification system relies on event data from devices and plugins. For notifications to function correctly: +- Devices must have alerts enabled in their settings. +- The notification processor uses the `NTFPRCS_INCLUDED_SECTIONS` setting to determine which types of notifications to send. +- Device-specific settings can override global notification rules. -Check the [Notifications guide](/docs/NOTIFICATIONS.md) for more details. +## Notification Types -### Usage +The following notification types are available based on the `NTFPRCS_INCLUDED_SECTIONS` setting: + +### `new_devices` +- Notifies when a new device is detected on the network. +- Only sent if `new_devices` is enabled in `NTFPRCS_INCLUDED_SECTIONS`. + +### `down_devices` +- Notifies when a device goes offline. +- The device must have **Alert Down** enabled in its settings. +- The notification is only sent if the device has not reconnected within the configured time window of `NTFPRCS_alert_down_time`. + +### `down_reconnected` +- Notifies when a device that was previously reported as down reconnects. +- The device must have **Alert Down** enabled. + +### `events` +- Notifies about specific events triggered by a device. +- The device must have **Alert Events** enabled in its settings. +- Includes events: + - `Connected`, `Down Reconnected`, `Disconnected`,`IP Changed` +- you can exclude devices with a custom where condition via the `NTFPRCS_event_condition` setting + +### `plugins` +- Notifies when an event is triggered by a plugin. +- These notifications depend on the plugin's configuration of the `Watched_Value1-4` values and the `_REPORT_ON` settings. + +## Device-Specific Overrides + +Certain notifications can be disabled per device: + +### Alert Events Disabled +- If a device has **Alert Events** disabled, it will not receive notifications for general events (`events` section). +- This does not affect notifications for `down_devices`, `down_reconnected`, or `new_devices`. + +### Alert Down Disabled +- If a device has **Alert Down** disabled, it will not receive notifications when it goes offline (`down_devices`) or reconnects (`down_reconnected`). + +## Usage + +- Review the **Settings** page to configure which notification types should be enabled. +- Ensure that device-specific alert settings align with your requirements. + +For additional details, check the [Notifications Guide](/docs/NOTIFICATIONS.md). -- Check the Settings page for details. diff --git a/front/workflows.php b/front/workflows.php index edf1b448..c0fe96ce 100755 --- a/front/workflows.php +++ b/front/workflows.php @@ -8,7 +8,7 @@
- + diff --git a/front/workflowsCore.php b/front/workflowsCore.php index c27c652d..acdab582 100755 --- a/front/workflowsCore.php +++ b/front/workflowsCore.php @@ -12,13 +12,13 @@
-
@@ -46,6 +46,10 @@ let triggerTypes = [ "Devices" ]; +let wfEnabledOptions = [ + "Yes", "No" +]; + let operatorTypes = [ "equals", "contains" , "regex" ]; @@ -65,7 +69,6 @@ function getData() { $.get('php/server/query_json.php?file=workflows.json') .done(function (res) { workflows = res; - console.log("here workflows"); console.log(workflows); updateWorkflowsJson(workflows); @@ -150,9 +153,19 @@ function generateWorkflowUI(wf, wfIndex) { id: `wf-${wfIndex}-collapsible-panel` }); + let $wfEnabled = createEditableDropdown( + `[${wfIndex}].enabled`, + getString("WF_Enabled"), + wfEnabledOptions, + wf?.enabled ?? "No", + `wf-${wfIndex}-enabled` + ); + + $wfCollapsiblePanel.append($wfEnabled) + let $wfNameInput = createEditableInput( `[${wfIndex}].name`, - "Workflow name", + getString("WF_Name"), wf.name, `wf-${wfIndex}-name`, "workflow-name-input" @@ -168,7 +181,7 @@ function generateWorkflowUI(wf, wfIndex) { { class:"section-title" } - ).append($triggersIcon).append(" Trigger:") + ).append($triggersIcon).append(` ${getString("WF_Trigger")}:`) // Trigger Section with dropdowns let $triggerSection = $("
", @@ -179,7 +192,7 @@ function generateWorkflowUI(wf, wfIndex) { let $triggerTypeDropdown = createEditableDropdown( `[${wfIndex}].trigger.object_type`, - "Trigger Type", + getString("WF_Trigger_type"), triggerTypes, wf.trigger.object_type, `wf-${wfIndex}-trigger-object-type` @@ -187,7 +200,7 @@ function generateWorkflowUI(wf, wfIndex) { let $eventTypeDropdown = createEditableDropdown( `[${wfIndex}].trigger.event_type`, - "Event Type", + getString("WF_Trigger_event_type"), ["update", "create", "delete"], wf.trigger.event_type, `wf-${wfIndex}-trigger-event-type` @@ -210,7 +223,7 @@ function generateWorkflowUI(wf, wfIndex) { let $conditionsTitle = $("
", { class: "section-title" - }).append($conditionsIcon).append(" Conditions:"); + }).append($conditionsIcon).append(` ${getString("WF_Conditions")}:`); let $conditionsContainer = $("
", { class: "col-sm-12 col-sx-12" @@ -229,7 +242,7 @@ function generateWorkflowUI(wf, wfIndex) { { class:"section-title" } - ).append($actionsIcon).append(" Actions:") + ).append($actionsIcon).append(` ${getString("WF_Actions")}:`) // Actions with action.field as dropdown let $actionsContainer = $("
", @@ -252,7 +265,7 @@ function generateWorkflowUI(wf, wfIndex) { // Dropdown for action.type let $actionDropdown= createEditableDropdown( `[${wfIndex}].actions[${actionIndex}].type`, - "Type", + getString("WF_Action_type"), actionTypes, action.type, `wf-${wfIndex}-actionIndex-${actionIndex}-type` @@ -271,7 +284,7 @@ function generateWorkflowUI(wf, wfIndex) { // Dropdown for action.field let $fieldDropdown = createEditableDropdown( `[${wfIndex}].actions[${actionIndex}].field`, - "Field", + getString("WF_Action_field"), fieldOptions, action.field, `wf-${wfIndex}-actionIndex-${actionIndex}-field` @@ -280,7 +293,7 @@ function generateWorkflowUI(wf, wfIndex) { // Textbox for action.value let $actionValueInput = createEditableInput( `[${wfIndex}].actions[${actionIndex}].value`, - "Value", + getString("WF_Action_value"), action.value, `wf-${wfIndex}-actionIndex-${actionIndex}-value`, "action-value-input" @@ -331,7 +344,7 @@ function generateWorkflowUI(wf, wfIndex) { class : "pointer add-action green-hover-text", lastActionIndex : lastActionIndex, wfIndex: wfIndex - }).append($actionAddIcon).append(" Add Action") + }).append($actionAddIcon).append(` ${getString("WF_Action_Add")}`) $actionAddButtonWrap.append($actionAddButton) $actionsContainer.append($actionAddButtonWrap) @@ -348,7 +361,7 @@ function generateWorkflowUI(wf, wfIndex) { wfIndex: wfIndex }) .append($wfRemoveIcon) // Add icon - .append(" Remove Workflow"); // Add text + .append(` ${getString("WF_Remove")}`); // Add text $wfCollapsiblePanel.append($actionsContainer); @@ -392,7 +405,7 @@ function renderConditions(wfIndex, parentIndexPath, conditionGroupsIndex, condit let $logicDropdown = createEditableDropdown( `${currentPath}.logic`, - "Logic Rules", + getString("WF_Conditions_logic_rules"), ["AND", "OR"], condition.logic, `wf-${wfIndex}-${currentPath.replace(/\./g, "-")}-logic` // id @@ -428,7 +441,8 @@ function renderConditions(wfIndex, parentIndexPath, conditionGroupsIndex, condit // Create dropdown for condition field let $fieldDropdown = createEditableDropdown( - `${currentPath}.field`,"Field", + `${currentPath}.field`, + getString("WF_Condition_field"), fieldOptions, condition.field, `wf-${wfIndex}-${currentPath.replace(/\./g, "-")}-field` @@ -437,7 +451,7 @@ function renderConditions(wfIndex, parentIndexPath, conditionGroupsIndex, condit // Create dropdown for operator let $operatorDropdown = createEditableDropdown( `${currentPath}.operator`, - "Operator", + getString("WF_Condition_operator"), operatorTypes, condition.operator, `wf-${wfIndex}-${currentPath.replace(/\./g, "-")}-operator` @@ -446,7 +460,7 @@ function renderConditions(wfIndex, parentIndexPath, conditionGroupsIndex, condit // Editable input for condition value let $editableInput = createEditableInput( `${currentPath}.value`, - "Condition Value", + getString("WF_Condition_value"), condition.value, `wf-${wfIndex}-${currentPath.replace(/\./g, "-")}-value`, "condition-value-input" @@ -492,7 +506,7 @@ function renderConditions(wfIndex, parentIndexPath, conditionGroupsIndex, condit class: "pointer add-condition green-hover-text col-sx-12", wfIndex: wfIndex, parentIndexPath: parentIndexPath - }).append($conditionAddIcon).append(" Add Condition"); + }).append($conditionAddIcon).append(` ${getString("WF_Add_Condition")}`); $conditionAddWrap.append($conditionAddButton); // Remove Condition Group button @@ -522,7 +536,7 @@ function renderConditions(wfIndex, parentIndexPath, conditionGroupsIndex, condit class: "pointer add-condition-group green-hover-text col-sx-12", wfIndex: wfIndex, parentIndexPath: parentIndexPath - }).append($conditionsGroupAddIcon).append(" Add Group"); + }).append($conditionsGroupAddIcon).append(` ${getString("WF_Add_Group")}`); $conditionsGroupAddWrap.append($conditionsGroupAddButton); $addButtonWrap.append($conditionsGroupAddWrap); diff --git a/server/reporting.py b/server/reporting.py index a2221c1f..b6a761da 100755 --- a/server/reporting.py +++ b/server/reporting.py @@ -45,11 +45,15 @@ def get_notifications (db): json_plugins_meta = {} # Disable reporting on events for devices where reporting is disabled based on the MAC address + + # Disable notifications (except down/down reconnected) on devices where devAlertEvents is disabled sql.execute ("""UPDATE Events SET eve_PendingAlertEmail = 0 WHERE eve_PendingAlertEmail = 1 AND eve_EventType not in ('Device Down', 'Down Reconnected', 'New Device' ) AND eve_MAC IN ( SELECT devMac FROM Devices WHERE devAlertEvents = 0 )""") + + # Disable down/down reconnected notifications on devices where devAlertDown is disabled sql.execute ("""UPDATE Events SET eve_PendingAlertEmail = 0 WHERE eve_PendingAlertEmail = 1 AND eve_EventType in ('Device Down', 'Down Reconnected') AND eve_MAC IN ( diff --git a/server/workflows/manager.py b/server/workflows/manager.py index 709713cd..40e8f503 100755 --- a/server/workflows/manager.py +++ b/server/workflows/manager.py @@ -55,14 +55,17 @@ class WorkflowManager: # Check if the trigger conditions match for workflow in self.workflows: - # construct trigger object which also evaluates if the current event triggers it - trigger = Trigger(workflow["trigger"], event, self.db) + # Ensure workflow is enabled before proceeding + if workflow.get("enabled", "No").lower() == "yes": + + # construct trigger object which also evaluates if the current event triggers it + trigger = Trigger(workflow["trigger"], event, self.db) - if trigger.triggered: + if trigger.triggered: - mylog('verbose', [f"[WF] Event with GUID '{event["GUID"]}' triggered the workflow '{workflow["name"]}'"]) + mylog('verbose', [f"[WF] Event with GUID '{event["GUID"]}' triggered the workflow '{workflow["name"]}'"]) - self.execute_workflow(workflow, trigger) + self.execute_workflow(workflow, trigger) # After processing the event, mark the event as processed (set AppEventProcessed to 1) self.db.sql.execute("""