From 148cd93c759c94c9f7addc0f77559708ee234861 Mon Sep 17 00:00:00 2001 From: jokob-sk Date: Fri, 17 Apr 2026 06:49:38 +1000 Subject: [PATCH 01/16] DOCS: setting string Signed-off-by: jokob-sk --- front/plugins/ui_settings/config.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/front/plugins/ui_settings/config.json b/front/plugins/ui_settings/config.json index aabf7f98..8bb9c07f 100755 --- a/front/plugins/ui_settings/config.json +++ b/front/plugins/ui_settings/config.json @@ -456,7 +456,7 @@ "description": [ { "language_code": "en_us", - "string": "Columns and their order that are shown on the Devices page. Drag and drop the order of columns, click x to remove columns. You can also click into the field to selectivelly add fields. The Name and Status fields are required." + "string": "Columns and their order that are shown on the Devices page. Drag and drop to order the columns, click x to remove columns. You can also click into the field to selectivelly add fields. The Name and Status fields are required." } ] }, @@ -535,7 +535,7 @@ "description": [ { "language_code": "en_us", - "string": "Which column filters should be displayed in the main Devices screen. Remove all to hide the Filters section." + "string": "Column filters that should be displayed in the main Devices screen. Drag and drop to change the order. Remove all to hide the Filters section." } ] }, From ed1ed6bb3f672eefb1fe3826dbe64a13ce87d1e9 Mon Sep 17 00:00:00 2001 From: "Jokob @NetAlertX" <96159884+jokob-sk@users.noreply.github.com> Date: Thu, 16 Apr 2026 22:10:51 +0000 Subject: [PATCH 02/16] STYLE: Refactor columnFilters and filter-group styles for improved layout and spacing --- front/css/app.css | 45 +++++++++++++++++++++++++++++++++++++++------ 1 file changed, 39 insertions(+), 6 deletions(-) diff --git a/front/css/app.css b/front/css/app.css index 302f2f94..df77fc02 100755 --- a/front/css/app.css +++ b/front/css/app.css @@ -1413,15 +1413,48 @@ textarea[readonly], #columnFilters { - display: flex; - flex-wrap: wrap; - gap: 10px; /* Add spacing between items */ + display: grid; + grid-template-columns: repeat(auto-fit, minmax(125px, 1fr)); + gap: 0.75em; + padding: 0.5em 0; +} + +#columnFilters::before, +#columnFilters::after { + display: none !important; } .filter-group { - box-sizing: border-box; /* Ensure padding and borders are included in the width */ - padding: 1em; - padding-top: 0; + box-sizing: border-box; + padding: 0.4em; + margin: 0; + border-radius: 3px; + display: flex; + flex-direction: column; + align-items: stretch; + gap: 0.15em; + white-space: normal; +} + +.filter-group label { + box-sizing: border-box; + margin: 0; + border-radius: 3px; + display: flex; + flex-direction: column; + align-items: stretch; + gap: 0.15em; + white-space: normal; + padding-left: 15px; + padding-right: 0px; +} + +.filter-dropdown { + width: 100%; +} +.filter-group select { + margin-left: 15px; + padding-right: 0px; } .filter-dropdown From 5bce6f62762d5fcffd6425c9b8bc8f03fae7bf9b Mon Sep 17 00:00:00 2001 From: jokob-sk Date: Fri, 17 Apr 2026 08:11:12 +1000 Subject: [PATCH 03/16] DOCS: setting string Signed-off-by: jokob-sk --- front/php/templates/language/en_us.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/front/php/templates/language/en_us.json b/front/php/templates/language/en_us.json index 56176cb5..a759f4f3 100755 --- a/front/php/templates/language/en_us.json +++ b/front/php/templates/language/en_us.json @@ -247,7 +247,7 @@ "Device_TableHead_Name": "Name", "Device_TableHead_NetworkSite": "Network Site", "Device_TableHead_Owner": "Owner", - "Device_TableHead_ParentRelType": "Relationship Type", + "Device_TableHead_ParentRelType": "Relationship", "Device_TableHead_Parent_MAC": "Parent node", "Device_TableHead_Port": "Port", "Device_TableHead_PresentLastScan": "Presence", From a63482d43a8ca9b5736cf240c888d0647af79648 Mon Sep 17 00:00:00 2001 From: IntEx Date: Thu, 16 Apr 2026 03:47:15 +0200 Subject: [PATCH 04/16] Translated using Weblate (Czech) Currently translated at 9.2% (75 of 807 strings) Translation: NetAlertX/core Translate-URL: https://hosted.weblate.org/projects/pialert/core/cs/ --- front/php/templates/language/cs_cz.json | 28 ++++++++++++------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/front/php/templates/language/cs_cz.json b/front/php/templates/language/cs_cz.json index 51254acf..b8324890 100644 --- a/front/php/templates/language/cs_cz.json +++ b/front/php/templates/language/cs_cz.json @@ -12,25 +12,25 @@ "AppEvents_DateTimeCreated": "Zaznamenáno", "AppEvents_Extra": "Extra", "AppEvents_GUID": "", - "AppEvents_Helper1": "", - "AppEvents_Helper2": "", - "AppEvents_Helper3": "", + "AppEvents_Helper1": "Pomocník 1", + "AppEvents_Helper2": "Pomocník 2", + "AppEvents_Helper3": "Pomocník 3", "AppEvents_ObjectForeignKey": "Cizí klíč", "AppEvents_ObjectIndex": "Index", - "AppEvents_ObjectIsArchived": "", - "AppEvents_ObjectIsNew": "", - "AppEvents_ObjectPlugin": "", + "AppEvents_ObjectIsArchived": "Archivováno (dlouhodobě)", + "AppEvents_ObjectIsNew": "Nové (dlouhodobě)", + "AppEvents_ObjectPlugin": "Navázaný Plugin", "AppEvents_ObjectPrimaryID": "Primární ID", "AppEvents_ObjectSecondaryID": "Sekundární ID", - "AppEvents_ObjectStatus": "", - "AppEvents_ObjectStatusColumn": "", - "AppEvents_ObjectType": "", - "AppEvents_Plugin": "Zásuvný modul", + "AppEvents_ObjectStatus": "Logovaný stav", + "AppEvents_ObjectStatusColumn": "Stavový sloupec", + "AppEvents_ObjectType": "Typ objektu", + "AppEvents_Plugin": "Plugin", "AppEvents_Type": "Typ", "BACKEND_API_URL_description": "", - "BACKEND_API_URL_name": "", - "BackDevDetail_Actions_Ask_Run": "", - "BackDevDetail_Actions_Not_Registered": "", + "BACKEND_API_URL_name": "AP URL backendu", + "BackDevDetail_Actions_Ask_Run": "Chcete akci spustit?", + "BackDevDetail_Actions_Not_Registered": "Akce není zaregistrována. ", "BackDevDetail_Actions_Title_Run": "Spustit akci", "BackDevDetail_Copy_Ask": "", "BackDevDetail_Copy_Title": "", @@ -806,4 +806,4 @@ "settings_system_label": "", "settings_update_item_warning": "", "test_event_tooltip": "" -} \ No newline at end of file +} From 82ff2ae37600f4febb134a6af4c45196e9ef6cff Mon Sep 17 00:00:00 2001 From: Safeguard Date: Fri, 17 Apr 2026 10:18:02 +0200 Subject: [PATCH 05/16] Translated using Weblate (Russian) Currently translated at 100.0% (807 of 807 strings) Translation: NetAlertX/core Translate-URL: https://hosted.weblate.org/projects/pialert/core/ru/ --- front/php/templates/language/ru_ru.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/front/php/templates/language/ru_ru.json b/front/php/templates/language/ru_ru.json index 355cbd3b..0eea72c4 100644 --- a/front/php/templates/language/ru_ru.json +++ b/front/php/templates/language/ru_ru.json @@ -247,8 +247,8 @@ "Device_TableHead_Name": "Имя", "Device_TableHead_NetworkSite": "Сайт устройства", "Device_TableHead_Owner": "Владелец", - "Device_TableHead_ParentRelType": "Тип отношений", - "Device_TableHead_Parent_MAC": "Родительский узел сети", + "Device_TableHead_ParentRelType": "Отношения", + "Device_TableHead_Parent_MAC": "Родительский узел", "Device_TableHead_Port": "Порт", "Device_TableHead_PresentLastScan": "Присутствие", "Device_TableHead_ReqNicsOnline": "Требуется NIC онлайн", From f96bdcce6ed43e3da8525050a033605c5c4a4dc5 Mon Sep 17 00:00:00 2001 From: Massimo Pissarello Date: Fri, 17 Apr 2026 03:52:52 +0200 Subject: [PATCH 06/16] Translated using Weblate (Italian) Currently translated at 100.0% (807 of 807 strings) Translation: NetAlertX/core Translate-URL: https://hosted.weblate.org/projects/pialert/core/it/ --- front/php/templates/language/it_it.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/front/php/templates/language/it_it.json b/front/php/templates/language/it_it.json index 14334666..7bdaea3d 100644 --- a/front/php/templates/language/it_it.json +++ b/front/php/templates/language/it_it.json @@ -247,7 +247,7 @@ "Device_TableHead_Name": "Nome", "Device_TableHead_NetworkSite": "Sito di rete", "Device_TableHead_Owner": "Proprietario", - "Device_TableHead_ParentRelType": "Tipo di relazione", + "Device_TableHead_ParentRelType": "Relazione", "Device_TableHead_Parent_MAC": "Nodo principale", "Device_TableHead_Port": "Porta", "Device_TableHead_PresentLastScan": "Presenza", From 8168bb2d5b6d3e0f2163807126a1c543d2290139 Mon Sep 17 00:00:00 2001 From: xfilo Date: Mon, 20 Apr 2026 00:39:29 +0200 Subject: [PATCH 07/16] Fix for https://github.com/netalertx/NetAlertX/issues/1595 - Omada Controller versions >= 6.2.0.0 removed the v1 clients endpoint --- front/plugins/omada_sdn_openapi/script.py | 68 ++++++++++++++++++++++- 1 file changed, 66 insertions(+), 2 deletions(-) diff --git a/front/plugins/omada_sdn_openapi/script.py b/front/plugins/omada_sdn_openapi/script.py index 11b17b60..685413b1 100755 --- a/front/plugins/omada_sdn_openapi/script.py +++ b/front/plugins/omada_sdn_openapi/script.py @@ -19,6 +19,7 @@ __author__ = "xfilo" __version__ = 0.1 # Initial version __version__ = 0.2 # Rephrased error messages, improved logging and code logic __version__ = 0.3 # Refactored data collection into a class, improved code clarity with comments +__version__ = 0.4 # Fix for https://github.com/netalertx/NetAlertX/issues/1595 - Omada Controller versions >= 6.2.0.0 removed the v1 clients endpoint import os import sys @@ -220,6 +221,39 @@ class OmadaHelper: msg = f"Failed normalizing {input_type}(s) from site '{site_name}' - error: {str(ex)}" OmadaHelper.verbose(msg) return OmadaHelper.response("error", msg) + + @staticmethod + def version_check(version, base: str, op: str = ">=") -> bool: + def to_tuple(v): + if isinstance(v, int): + return (v,) + + if isinstance(v, str): + return tuple(int(x) for x in v.split(".") if x != "") + + raise TypeError("version/base must be int or str") + + v = to_tuple(version) + b = to_tuple(base) + + max_len = max(len(v), len(b)) + v += (0,) * (max_len - len(v)) + b += (0,) * (max_len - len(b)) + + if op == "==": + return v == b + if op == "!=": + return v != b + if op == ">": + return v > b + if op == ">=": + return v >= b + if op == "<": + return v < b + if op == "<=": + return v <= b + + raise ValueError("Unsupported operator") class OmadaAPI: @@ -259,6 +293,7 @@ class OmadaAPI: self.active_sites_dict = {} self.access_token = None self.refresh_token = None + self.controller_version = 0 OmadaHelper.verbose("OmadaAPI initialized") @@ -328,11 +363,36 @@ class OmadaAPI: OmadaHelper.debug(f"Authentication response: {response}") return OmadaHelper.response("error", f"Authentication failed - error: {response.get('response_message', 'Not provided')}") + def get_controller_status(self) -> Dict[str, Any]: + """Make an endpoint request to get all online clients on a site.""" + OmadaHelper.verbose(f"Retrieving controller status for CID: {getattr(self, 'omada_id')}") + endpoint = f"/openapi/v1/{getattr(self, 'omada_id')}/system/setting/controller-status" + response = self._make_request("GET", endpoint) + + if response.get("response_type") == "success": + response_result = response.get("response_result") + self.controller_version = response_result.get("result").get("controllerVersion") + OmadaHelper.debug(f"Controller status: {response}") + return OmadaHelper.response("success", "Successfully retrieved controller status") + + OmadaHelper.debug(f"Controller status: {response}") + return OmadaHelper.response("error", "Failed to retrieve controller status") + def get_clients(self, site_id: str) -> Dict[str, Any]: """Make an endpoint request to get all online clients on a site.""" OmadaHelper.verbose(f"Retrieving clients for site: {site_id}") - endpoint = f"/openapi/v1/{getattr(self, 'omada_id')}/sites/{site_id}/clients?page=1&pageSize={getattr(self, 'page_size')}" - return self._make_request("GET", endpoint) + + if OmadaHelper.version_check(self.controller_version, "6.2.0.0", ">="): + endpoint = f"/openapi/v2/{getattr(self, 'omada_id')}/sites/{site_id}/clients" + payload = { + "page": 1, + "pageSize": getattr(self, 'page_size'), + "scope": 1 + } + return self._make_request("POST", endpoint, json=payload) + else: + endpoint = f"/openapi/v1/{getattr(self, 'omada_id')}/sites/{site_id}/clients?page=1&pageSize={getattr(self, 'page_size')}" + return self._make_request("GET", endpoint) def get_devices(self, site_id: str) -> Dict[str, Any]: """Make an endpoint request to get all online devices on a site.""" @@ -454,6 +514,10 @@ class OmadaData: OmadaHelper.minimal("Authentication failed, aborting data collection") OmadaHelper.debug(f"{auth_result['response_message']}") return plugin_objects + + # Controller status + omada_api.get_controller_status() + OmadaHelper.verbose(f"Controller version: {omada_api.controller_version}") # Populate sites sites_result = omada_api.populate_sites() From 2fd7e5e700a02571f00dbdde8dd74b31433d3eb4 Mon Sep 17 00:00:00 2001 From: xfilo Date: Mon, 20 Apr 2026 12:13:21 +0200 Subject: [PATCH 08/16] Follow-up on PR https://github.com/netalertx/NetAlertX/pull/1622 based on AI review - fallback to v1 clients endpoint if v2 fails. - On failed controller version retrieval, attempt to use the v2 clients endpoint first and automatically fallback to the v1 endpoint if the v2 request fails. - Improves compatibility with controllers where version detection is unreliable or unavailable. --- front/plugins/omada_sdn_openapi/script.py | 62 ++++++++++++++++------- 1 file changed, 43 insertions(+), 19 deletions(-) diff --git a/front/plugins/omada_sdn_openapi/script.py b/front/plugins/omada_sdn_openapi/script.py index 685413b1..57d8c275 100755 --- a/front/plugins/omada_sdn_openapi/script.py +++ b/front/plugins/omada_sdn_openapi/script.py @@ -293,7 +293,7 @@ class OmadaAPI: self.active_sites_dict = {} self.access_token = None self.refresh_token = None - self.controller_version = 0 + self.controller_version = None OmadaHelper.verbose("OmadaAPI initialized") @@ -364,35 +364,56 @@ class OmadaAPI: return OmadaHelper.response("error", f"Authentication failed - error: {response.get('response_message', 'Not provided')}") def get_controller_status(self) -> Dict[str, Any]: - """Make an endpoint request to get all online clients on a site.""" + """Make an endpoint request to get controller status.""" OmadaHelper.verbose(f"Retrieving controller status for CID: {getattr(self, 'omada_id')}") endpoint = f"/openapi/v1/{getattr(self, 'omada_id')}/system/setting/controller-status" response = self._make_request("GET", endpoint) if response.get("response_type") == "success": - response_result = response.get("response_result") - self.controller_version = response_result.get("result").get("controllerVersion") - OmadaHelper.debug(f"Controller status: {response}") - return OmadaHelper.response("success", "Successfully retrieved controller status") + response_result = response.get("response_result") or {} + result = response_result.get("result") or {} + self.controller_version = result.get("controllerVersion") + if not self.controller_version: + self.controller_version = None + OmadaHelper.debug(f"Controller status: {response}") + return OmadaHelper.response("error", "Controller status response did not include controllerVersion") + else: + return OmadaHelper.response("success", "Successfully retrieved controller status") OmadaHelper.debug(f"Controller status: {response}") - return OmadaHelper.response("error", "Failed to retrieve controller status") + return OmadaHelper.response("error", "Failed to call controller status endpoint") def get_clients(self, site_id: str) -> Dict[str, Any]: """Make an endpoint request to get all online clients on a site.""" OmadaHelper.verbose(f"Retrieving clients for site: {site_id}") - if OmadaHelper.version_check(self.controller_version, "6.2.0.0", ">="): - endpoint = f"/openapi/v2/{getattr(self, 'omada_id')}/sites/{site_id}/clients" - payload = { - "page": 1, - "pageSize": getattr(self, 'page_size'), - "scope": 1 - } - return self._make_request("POST", endpoint, json=payload) - else: - endpoint = f"/openapi/v1/{getattr(self, 'omada_id')}/sites/{site_id}/clients?page=1&pageSize={getattr(self, 'page_size')}" + page_size = getattr(self, 'page_size') + omada_id = getattr(self, 'omada_id') + + def call_v2(): + endpoint = f"/openapi/v2/{omada_id}/sites/{site_id}/clients" + payload = { + "page": 1, + "pageSize": page_size, + "scope": 1 + } + return self._make_request("POST", endpoint, json=payload) + + def call_v1(): + endpoint = f"/openapi/v1/{omada_id}/sites/{site_id}/clients?page=1&pageSize={page_size}" return self._make_request("GET", endpoint) + + if self.controller_version is None: + OmadaHelper.verbose("Controller version unknown, trying v2 then v1") + resp = call_v2() + if resp and resp.get("response_type") == "success": + return resp + return call_v1() + + if OmadaHelper.version_check(self.controller_version, "6.2.0.0", ">="): + return call_v2() + + return call_v1() def get_devices(self, site_id: str) -> Dict[str, Any]: """Make an endpoint request to get all online devices on a site.""" @@ -516,8 +537,11 @@ class OmadaData: return plugin_objects # Controller status - omada_api.get_controller_status() - OmadaHelper.verbose(f"Controller version: {omada_api.controller_version}") + status_result = omada_api.get_controller_status() + if status_result["response_type"] == "error": + OmadaHelper.verbose(f"Controller version lookup failed: {status_result['response_message']}") + else: + OmadaHelper.verbose(f"Controller version: {omada_api.controller_version}") # Populate sites sites_result = omada_api.populate_sites() From fb7dab488140ad1d4612f11503dcb58db6abb1cd Mon Sep 17 00:00:00 2001 From: xfilo Date: Mon, 20 Apr 2026 12:53:51 +0200 Subject: [PATCH 09/16] Replace custom version_check with packaging.version.Version (Follow-up based on AI review) - Use PEP 440-compliant parsing and comparison - Fix issues with non-numeric segments (e.g. "beta", "rc") - Add safe fallback for invalid version strings --- front/plugins/omada_sdn_openapi/script.py | 53 ++++++++++++----------- 1 file changed, 28 insertions(+), 25 deletions(-) diff --git a/front/plugins/omada_sdn_openapi/script.py b/front/plugins/omada_sdn_openapi/script.py index 57d8c275..9e8bb749 100755 --- a/front/plugins/omada_sdn_openapi/script.py +++ b/front/plugins/omada_sdn_openapi/script.py @@ -27,9 +27,11 @@ import urllib3 import requests import time import pytz +import operator from datetime import datetime from typing import Literal, Any, Dict +from packaging.version import Version, InvalidVersion # Define the installation path and extend the system path for plugin imports INSTALL_PATH = os.getenv('NETALERTX_APP', '/app') @@ -224,36 +226,37 @@ class OmadaHelper: @staticmethod def version_check(version, base: str, op: str = ">=") -> bool: - def to_tuple(v): + """ + Compare versions using PEP 440 semantics. + Supports int and str inputs. + """ + ops = { + "==": operator.eq, + "!=": operator.ne, + ">": operator.gt, + ">=": operator.ge, + "<": operator.lt, + "<=": operator.le, + } + + if op not in ops: + raise ValueError("Unsupported operator") + + def to_version(v): if isinstance(v, int): - return (v,) - + return Version(str(v)) if isinstance(v, str): - return tuple(int(x) for x in v.split(".") if x != "") - + try: + return Version(v) + except InvalidVersion: + # fallback: treat invalid versions as 0 + return Version("0") raise TypeError("version/base must be int or str") - v = to_tuple(version) - b = to_tuple(base) + v = to_version(version) + b = to_version(base) - max_len = max(len(v), len(b)) - v += (0,) * (max_len - len(v)) - b += (0,) * (max_len - len(b)) - - if op == "==": - return v == b - if op == "!=": - return v != b - if op == ">": - return v > b - if op == ">=": - return v >= b - if op == "<": - return v < b - if op == "<=": - return v <= b - - raise ValueError("Unsupported operator") + return ops[op](v, b) class OmadaAPI: From 02edb61fd4ff49214cc60b3b44bad8baf8759984 Mon Sep 17 00:00:00 2001 From: Sylvain Pichon Date: Mon, 20 Apr 2026 09:05:22 +0200 Subject: [PATCH 10/16] Translated using Weblate (French) Currently translated at 100.0% (807 of 807 strings) Translation: NetAlertX/core Translate-URL: https://hosted.weblate.org/projects/pialert/core/fr/ --- front/php/templates/language/fr_fr.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/front/php/templates/language/fr_fr.json b/front/php/templates/language/fr_fr.json index 164de590..08155f9a 100644 --- a/front/php/templates/language/fr_fr.json +++ b/front/php/templates/language/fr_fr.json @@ -117,7 +117,7 @@ "DevDetail_Nmap_buttonFast": "Scan rapide", "DevDetail_Nmap_buttonFast_text": "Scan rapide : analyse moins de ports (100) que le scan par défaut (plusieurs secondes)", "DevDetail_Nmap_buttonSkipDiscovery": "Passer la découverte d'hôtes", - "DevDetail_Nmap_buttonSkipDiscovery_text": "Passer la découverte d'hôtes (option -PN) : scan par défaut sans découvert d'hôtes", + "DevDetail_Nmap_buttonSkipDiscovery_text": "Ignorer la découverte d'hôtes (option -PN) : scan par défaut sans découverte d'hôtes", "DevDetail_Nmap_resultsLink": "Vous pouvez quitter cette page après lancement du scan. Les resultats seront aussi disponibles dans le fichier app_front.log.", "DevDetail_Owner_hover": "Possesseur de l'appareil. Texte libre.", "DevDetail_Periodselect_All": "Toutes les infos", @@ -232,7 +232,7 @@ "Device_TableHead_FQDN": "Nom de domaine FQDN", "Device_TableHead_Favorite": "Favori", "Device_TableHead_FirstSession": "Première session", - "Device_TableHead_Flapping": "Flapping", + "Device_TableHead_Flapping": "Bagotage", "Device_TableHead_GUID": "GUID", "Device_TableHead_Group": "Groupe", "Device_TableHead_IPv4": "IPv4", @@ -247,8 +247,8 @@ "Device_TableHead_Name": "Nom", "Device_TableHead_NetworkSite": "Site Réseau", "Device_TableHead_Owner": "Propriétaire", - "Device_TableHead_ParentRelType": "Type de relation", - "Device_TableHead_Parent_MAC": "Nœud réseau principal", + "Device_TableHead_ParentRelType": "Relation", + "Device_TableHead_Parent_MAC": "Nœud principal", "Device_TableHead_Port": "Port", "Device_TableHead_PresentLastScan": "Présence", "Device_TableHead_ReqNicsOnline": "Nécessite que l'interface réseau (NIC) soit connectée", @@ -337,7 +337,7 @@ "Gen_Down": "En panne", "Gen_Error": "Erreur", "Gen_Filter": "Filtrer", - "Gen_Flapping": "Flapping", + "Gen_Flapping": "Bagotage", "Gen_Generate": "Générer", "Gen_InvalidMac": "Adresse MAC invalide.", "Gen_Invalid_Value": "Une valeur invalide a été renseignée", @@ -476,7 +476,7 @@ "Maintenance_Tool_del_unknowndev_noti_text": "Êtes-vous sûr de vouloir supprimer tous les appareils inconnus et sans nom trouvé ?", "Maintenance_Tool_del_unknowndev_text": "Avant d'utiliser cette fonction, veuillez effectuer une sauvegarde. La suppression ne peut pas être annulée. Tous les appareils nommés (inconnus) seront supprimés de la base de données.", "Maintenance_Tool_del_unlockFields_selecteddev_text": "Cela va déverrouiller les champs verrouillés par l'utilisateur (LOCKED/USER) des appareils sélectionnés. Cette action ne peut pas être annulée.", - "Maintenance_Tool_displayed_columns_text": "Changer la visibilité et l'ordre des colonnes dans la page appareils page.", + "Maintenance_Tool_displayed_columns_text": "Changer la visibilité et l'ordre des colonnes dans la page Appareils.", "Maintenance_Tool_drag_me": "Déplacez-moi pour réordonner les colonnes.", "Maintenance_Tool_order_columns_text": "Maintenance_Tool_order_columns_text", "Maintenance_Tool_purgebackup": "Supprimer les sauvegardes", @@ -569,7 +569,7 @@ "Network_ManageEdit_Type_text": "-- Sélectionner le type --", "Network_ManageLeaf": "Gérer l'assignation", "Network_ManageUnassign": "Désassigner", - "Network_NoAssignedDevices": "Ce nœud réseau ne contient pas d'appareils assignés. Vous pouvez en assigner un ci-dessous, ou en allant dans l'onglet Détails d'un appareil depuis le menu Appareils, et assigner cet équipement à un Nœud (MAC) réseau et à un Port.", + "Network_NoAssignedDevices": "Ce nœud réseau ne contient pas d'appareils assignés. Vous pouvez en assigner un ci-dessous, ou en allant dans l'onglet Détails d'un appareil depuis le menu Appareils, et assigner cet équipement à un Nœud (MAC) réseau et à un Port.", "Network_NoDevices": "Pas d'appareil à configurer", "Network_Node": "Nœud réseau", "Network_Node_Name": "Nom du nœud", From fbf468be2b8ef66431f8da65b9264424322d2746 Mon Sep 17 00:00:00 2001 From: IntEx Date: Tue, 21 Apr 2026 01:03:32 +0200 Subject: [PATCH 11/16] Translated using Weblate (Czech) Currently translated at 30.7% (248 of 807 strings) Translation: NetAlertX/core Translate-URL: https://hosted.weblate.org/projects/pialert/core/cs/ --- front/php/templates/language/cs_cz.json | 354 ++++++++++++------------ 1 file changed, 177 insertions(+), 177 deletions(-) diff --git a/front/php/templates/language/cs_cz.json b/front/php/templates/language/cs_cz.json index b8324890..bc6973ab 100644 --- a/front/php/templates/language/cs_cz.json +++ b/front/php/templates/language/cs_cz.json @@ -1,7 +1,7 @@ { - "API_CUSTOM_SQL_description": "", - "API_CUSTOM_SQL_name": "", - "API_TOKEN_description": "", + "API_CUSTOM_SQL_description": "Můžete specifikovat vlastní SQL dotaz, který vygeneruje JSON soubor a následně ho vystaví přes table_custom_endpoint.json souborový endpoint.", + "API_CUSTOM_SQL_name": "Vlastní endpoint", + "API_TOKEN_description": "API token pro zabezpečenou komunikaci. Vygenerujte ho, nebo zadejte jakoukoliv hodnotu. Je odesílán v hlavičce requestu a použit v SYNC pluginu, GraphQL serveru a dalších API endpointech. Můžete použít API endpointy pro vytvoření vlastních integrací, jak je popsáno v API dokumentaci.", "API_TOKEN_name": "API token", "API_display_name": "API", "API_icon": "", @@ -9,9 +9,9 @@ "About_Exit": "Odhlásit", "About_Title": "Scanner síťové bezpečnosti a framework pro upozornění", "AppEvents_AppEventProcessed": "Zpracováno", - "AppEvents_DateTimeCreated": "Zaznamenáno", + "AppEvents_DateTimeCreated": "Zalogováno", "AppEvents_Extra": "Extra", - "AppEvents_GUID": "", + "AppEvents_GUID": "GUID aplikační události", "AppEvents_Helper1": "Pomocník 1", "AppEvents_Helper2": "Pomocník 2", "AppEvents_Helper3": "Pomocník 3", @@ -24,187 +24,187 @@ "AppEvents_ObjectSecondaryID": "Sekundární ID", "AppEvents_ObjectStatus": "Logovaný stav", "AppEvents_ObjectStatusColumn": "Stavový sloupec", - "AppEvents_ObjectType": "Typ objektu", + "AppEvents_ObjectType": "Typ Objektu", "AppEvents_Plugin": "Plugin", "AppEvents_Type": "Typ", - "BACKEND_API_URL_description": "", - "BACKEND_API_URL_name": "AP URL backendu", + "BACKEND_API_URL_description": "Použito pro umožnění komunikace frontendu s backendem. Výchozí hodnota je /server , která by neměla být měněna.", + "BACKEND_API_URL_name": "URL API backendu", "BackDevDetail_Actions_Ask_Run": "Chcete akci spustit?", - "BackDevDetail_Actions_Not_Registered": "Akce není zaregistrována. ", + "BackDevDetail_Actions_Not_Registered": "Akce není zaregistrována: ", "BackDevDetail_Actions_Title_Run": "Spustit akci", - "BackDevDetail_Copy_Ask": "", - "BackDevDetail_Copy_Title": "", - "BackDevDetail_Tools_WOL_error": "", - "BackDevDetail_Tools_WOL_okay": "", - "BackDevices_Arpscan_disabled": "", - "BackDevices_Arpscan_enabled": "", - "BackDevices_Backup_CopError": "", - "BackDevices_Backup_Failed": "", - "BackDevices_Backup_okay": "", - "BackDevices_DBTools_DelDevError_a": "", - "BackDevices_DBTools_DelDevError_b": "", - "BackDevices_DBTools_DelDev_a": "", - "BackDevices_DBTools_DelDev_b": "", - "BackDevices_DBTools_DelEvents": "", - "BackDevices_DBTools_DelEventsError": "", - "BackDevices_DBTools_ImportCSV": "", - "BackDevices_DBTools_ImportCSVError": "", - "BackDevices_DBTools_ImportCSVMissing": "", - "BackDevices_DBTools_Purge": "", - "BackDevices_DBTools_UpdDev": "", - "BackDevices_DBTools_UpdDevError": "", - "BackDevices_DBTools_Upgrade": "", - "BackDevices_DBTools_UpgradeError": "", - "BackDevices_Device_UpdDevError": "", - "BackDevices_Restore_CopError": "", - "BackDevices_Restore_Failed": "", - "BackDevices_Restore_okay": "", - "BackDevices_darkmode_disabled": "", - "BackDevices_darkmode_enabled": "", - "CLEAR_NEW_FLAG_description": "", - "CLEAR_NEW_FLAG_name": "", - "CustProps_cant_remove": "", - "DAYS_TO_KEEP_EVENTS_description": "", - "DAYS_TO_KEEP_EVENTS_name": "", - "DISCOVER_PLUGINS_description": "", - "DISCOVER_PLUGINS_name": "", - "DevDetail_Children_Title": "", - "DevDetail_Copy_Device_Title": "", - "DevDetail_Copy_Device_Tooltip": "", - "DevDetail_CustomProperties_Title": "", - "DevDetail_CustomProps_reset_info": "", - "DevDetail_DisplayFields_Title": "", - "DevDetail_EveandAl_AlertAllEvents": "", - "DevDetail_EveandAl_AlertDown": "", + "BackDevDetail_Copy_Ask": "Zkopírovat detaily zařízení z výběru (vše na této stránce bude přepsáno)?", + "BackDevDetail_Copy_Title": "Zkopírovat detaily", + "BackDevDetail_Tools_WOL_error": "Příkaz NEBYL proveden.", + "BackDevDetail_Tools_WOL_okay": "Příkaz byl proveden.", + "BackDevices_Arpscan_disabled": "ARP-Scan zakázán", + "BackDevices_Arpscan_enabled": "ARP-Scan povolen", + "BackDevices_Backup_CopError": "Původní databázi se nepodařilo uložit.", + "BackDevices_Backup_Failed": "Záloha byla privedena částečně úspěšně. Archiv nemohl být vytvořen nebo je prázdný.", + "BackDevices_Backup_okay": "Záloha byla provedena úspěšně s novým archivem", + "BackDevices_DBTools_DelDevError_a": "Chyba při odstranění zařízení", + "BackDevices_DBTools_DelDevError_b": "Chyba při odstranění zařízení", + "BackDevices_DBTools_DelDev_a": "Zařízení odstraněno", + "BackDevices_DBTools_DelDev_b": "Zařízení odstraněna", + "BackDevices_DBTools_DelEvents": "Události odstraněny", + "BackDevices_DBTools_DelEventsError": "Chyba při odstraňování událostí", + "BackDevices_DBTools_ImportCSV": "Zařízení z CSV souboru byla úspěšně importována.", + "BackDevices_DBTools_ImportCSVError": "CSV soubor nemohl být importován. Ujistěte se, že je formát správný.", + "BackDevices_DBTools_ImportCSVMissing": "CSV soubor /config/devices.csv nebyl nalezen.", + "BackDevices_DBTools_Purge": "Nejstarší zálohy byly odstraněny", + "BackDevices_DBTools_UpdDev": "Zařízení úspěšně aktualizováno. Hlavní seznam zařízení vyžaduje nějaký čas k obnovení, pokud probíhá scan.", + "BackDevices_DBTools_UpdDevError": "Chyba aktualizace zařízení", + "BackDevices_DBTools_Upgrade": "Databáze byla úspěšně upgradována", + "BackDevices_DBTools_UpgradeError": "Chyba při upgradu databáze", + "BackDevices_Device_UpdDevError": "Chyba při aktualizaci zařízení, zkuste to později. Databáze je pravděpodobně uzamčena z důvodu jiné probíhající úlohy.", + "BackDevices_Restore_CopError": "Původní databázi se nepodařilo uložit.", + "BackDevices_Restore_Failed": "Obnova selhala. Prosím, obnovte zálohu ručně.", + "BackDevices_Restore_okay": "Obnova úspěšně provedena.", + "BackDevices_darkmode_disabled": "Tmavý režim zakázán", + "BackDevices_darkmode_enabled": "Tmavý režim povolen", + "CLEAR_NEW_FLAG_description": "Pokud je povoleno (0 je zakázáno), zařízením označeným jako Nové Zařízení bude tento příznak odebrán, pokud časový limit (udaný v hodinách) překročí jejich čas První Session.", + "CLEAR_NEW_FLAG_name": "Odebrat příznak nového", + "CustProps_cant_remove": "Nelze odebrat, je vyžadována alespoň jedna položka.", + "DAYS_TO_KEEP_EVENTS_description": "Toto je nastavení údržby. Určuje počet dní, po které budou záznamy události uchovávány. Všechny starší události budou periodicky odstraněny. Platí také pro Historii Událostí Pluginů.", + "DAYS_TO_KEEP_EVENTS_name": "Odstranit události starší než", + "DISCOVER_PLUGINS_description": "Zakažte tuto volbu pro urychlení inicializace a ukládání nastavení. Když je volba zakázána, pluginy nejsou vyhledávány a nemůžete tak přidávat nové pluginy do nastavení LOADED_PLUGINS.", + "DISCOVER_PLUGINS_name": "Vyhledat pluginy", + "DevDetail_Children_Title": "Podřízené vazby", + "DevDetail_Copy_Device_Title": "Zkopírovat detaily ze zařízení", + "DevDetail_Copy_Device_Tooltip": "Zkopírovat detaily z vybraného zařízení. Všechno na této stránce bude přepsáno", + "DevDetail_CustomProperties_Title": "Vlastní položky", + "DevDetail_CustomProps_reset_info": "Tímto budou odebrány vlastní položky na tomto zařízení a dojde k resetu na výchozí hodnotu.", + "DevDetail_DisplayFields_Title": "Zobrazit", + "DevDetail_EveandAl_AlertAllEvents": "Hlásit události", + "DevDetail_EveandAl_AlertDown": "Hlásit down", "DevDetail_EveandAl_Archived": "Archivováno", - "DevDetail_EveandAl_NewDevice": "", - "DevDetail_EveandAl_NewDevice_Tooltip": "", - "DevDetail_EveandAl_RandomMAC": "", - "DevDetail_EveandAl_ScanCycle": "", - "DevDetail_EveandAl_ScanCycle_a": "", - "DevDetail_EveandAl_ScanCycle_z": "", - "DevDetail_EveandAl_Skip": "", - "DevDetail_EveandAl_Title": "", - "DevDetail_Events_CheckBox": "", - "DevDetail_GoToNetworkNode": "", + "DevDetail_EveandAl_NewDevice": "Nové zařízení", + "DevDetail_EveandAl_NewDevice_Tooltip": "Zobrazí status Nový pro nové zařízení a zahrne je do seznamu s filtrem Nová zařízení. Nemá vliv na notifikace.", + "DevDetail_EveandAl_RandomMAC": "Náhodná MAC", + "DevDetail_EveandAl_ScanCycle": "Skenovat zařízení", + "DevDetail_EveandAl_ScanCycle_a": "Skenovat zařízení", + "DevDetail_EveandAl_ScanCycle_z": "Neskenovat zařízení", + "DevDetail_EveandAl_Skip": "Vynechat opakování notifikací během", + "DevDetail_EveandAl_Title": "Konfigurace notifikací", + "DevDetail_Events_CheckBox": "Skrýt události připojení", + "DevDetail_GoToNetworkNode": "Navigovat na Síťovou stránku uvedeného node.", "DevDetail_Icon": "Ikona", - "DevDetail_Icon_Descr": "", + "DevDetail_Icon_Descr": "Zadejte název ikony z Font Awesome bez prefixu \"fa-\", nebo s celou class, např. \"fa-brands\", \"fa-apple\", ...", "DevDetail_Loading": "Načítání…", "DevDetail_MainInfo_Comments": "Komentáře", - "DevDetail_MainInfo_Favorite": "", - "DevDetail_MainInfo_Group": "", - "DevDetail_MainInfo_Location": "", - "DevDetail_MainInfo_Name": "", - "DevDetail_MainInfo_Network": "", - "DevDetail_MainInfo_Network_Port": "", - "DevDetail_MainInfo_Network_Site": "", - "DevDetail_MainInfo_Network_Title": "", - "DevDetail_MainInfo_Owner": "", - "DevDetail_MainInfo_SSID": "", - "DevDetail_MainInfo_Title": "", - "DevDetail_MainInfo_Type": "", - "DevDetail_MainInfo_Vendor": "", - "DevDetail_MainInfo_mac": "", - "DevDetail_NavToChildNode": "", - "DevDetail_Network_Node_hover": "", - "DevDetail_Network_Port_hover": "", - "DevDetail_Nmap_Scans": "", - "DevDetail_Nmap_Scans_desc": "", - "DevDetail_Nmap_buttonDefault": "", - "DevDetail_Nmap_buttonDefault_text": "", - "DevDetail_Nmap_buttonDetail": "", - "DevDetail_Nmap_buttonDetail_text": "", - "DevDetail_Nmap_buttonFast": "", - "DevDetail_Nmap_buttonFast_text": "", - "DevDetail_Nmap_buttonSkipDiscovery": "", - "DevDetail_Nmap_buttonSkipDiscovery_text": "", - "DevDetail_Nmap_resultsLink": "", - "DevDetail_Owner_hover": "", - "DevDetail_Periodselect_All": "", - "DevDetail_Periodselect_LastMonth": "", - "DevDetail_Periodselect_LastWeek": "", - "DevDetail_Periodselect_LastYear": "", - "DevDetail_Periodselect_today": "", - "DevDetail_Run_Actions_Title": "", - "DevDetail_Run_Actions_Tooltip": "", - "DevDetail_SessionInfo_FirstSession": "", - "DevDetail_SessionInfo_LastIP": "", - "DevDetail_SessionInfo_LastSession": "", - "DevDetail_SessionInfo_StaticIP": "", - "DevDetail_SessionInfo_Status": "", - "DevDetail_SessionInfo_Title": "", - "DevDetail_SessionTable_Additionalinfo": "", - "DevDetail_SessionTable_Connection": "", - "DevDetail_SessionTable_Disconnection": "", - "DevDetail_SessionTable_Duration": "", - "DevDetail_SessionTable_IP": "", - "DevDetail_SessionTable_Order": "", - "DevDetail_Shortcut_CurrentStatus": "", - "DevDetail_Shortcut_DownAlerts": "", - "DevDetail_Shortcut_Presence": "", - "DevDetail_Shortcut_Sessions": "", - "DevDetail_Tab_Details": "", - "DevDetail_Tab_Events": "", - "DevDetail_Tab_EventsTableDate": "", - "DevDetail_Tab_EventsTableEvent": "", - "DevDetail_Tab_EventsTableIP": "", - "DevDetail_Tab_EventsTableInfo": "", - "DevDetail_Tab_Nmap": "", - "DevDetail_Tab_NmapEmpty": "", - "DevDetail_Tab_NmapTableExtra": "", - "DevDetail_Tab_NmapTableHeader": "", - "DevDetail_Tab_NmapTableIndex": "", - "DevDetail_Tab_NmapTablePort": "", - "DevDetail_Tab_NmapTableService": "", - "DevDetail_Tab_NmapTableState": "", - "DevDetail_Tab_NmapTableText": "", - "DevDetail_Tab_NmapTableTime": "", - "DevDetail_Tab_Plugins": "", - "DevDetail_Tab_Presence": "", - "DevDetail_Tab_Sessions": "", - "DevDetail_Tab_Tools": "", - "DevDetail_Tab_Tools_Internet_Info_Description": "", - "DevDetail_Tab_Tools_Internet_Info_Error": "", - "DevDetail_Tab_Tools_Internet_Info_Start": "", - "DevDetail_Tab_Tools_Internet_Info_Title": "", - "DevDetail_Tab_Tools_Nslookup_Description": "", - "DevDetail_Tab_Tools_Nslookup_Error": "", - "DevDetail_Tab_Tools_Nslookup_Start": "", - "DevDetail_Tab_Tools_Nslookup_Title": "", - "DevDetail_Tab_Tools_Speedtest_Description": "", - "DevDetail_Tab_Tools_Speedtest_Start": "", - "DevDetail_Tab_Tools_Speedtest_Title": "", - "DevDetail_Tab_Tools_Traceroute_Description": "", - "DevDetail_Tab_Tools_Traceroute_Error": "", - "DevDetail_Tab_Tools_Traceroute_Start": "", - "DevDetail_Tab_Tools_Traceroute_Title": "", - "DevDetail_Tools_WOL": "", - "DevDetail_Tools_WOL_noti": "", - "DevDetail_Tools_WOL_noti_text": "", - "DevDetail_Type_hover": "", - "DevDetail_Vendor_hover": "", - "DevDetail_WOL_Title": "", - "DevDetail_button_AddIcon": "", - "DevDetail_button_AddIcon_Help": "", - "DevDetail_button_AddIcon_Tooltip": "", - "DevDetail_button_Delete": "", - "DevDetail_button_DeleteEvents": "", - "DevDetail_button_DeleteEvents_Warning": "", - "DevDetail_button_Delete_ask": "", - "DevDetail_button_OverwriteIcons": "", - "DevDetail_button_OverwriteIcons_Tooltip": "", - "DevDetail_button_OverwriteIcons_Warning": "", - "DevDetail_button_Reset": "", - "DevDetail_button_Save": "", - "DeviceEdit_ValidMacIp": "", - "Device_MultiEdit": "", + "DevDetail_MainInfo_Favorite": "Oblíbené", + "DevDetail_MainInfo_Group": "Skupina", + "DevDetail_MainInfo_Location": "Umístění", + "DevDetail_MainInfo_Name": "Název", + "DevDetail_MainInfo_Network": " Node (MAC)", + "DevDetail_MainInfo_Network_Port": " Port", + "DevDetail_MainInfo_Network_Site": "Site", + "DevDetail_MainInfo_Network_Title": "Síťové detaily", + "DevDetail_MainInfo_Owner": "Vlastník", + "DevDetail_MainInfo_SSID": "SSID", + "DevDetail_MainInfo_Title": "Informace o zařízení", + "DevDetail_MainInfo_Type": "Typ", + "DevDetail_MainInfo_Vendor": "Výrobce", + "DevDetail_MainInfo_mac": "MAC", + "DevDetail_NavToChildNode": "Otevřít podřízený node", + "DevDetail_Network_Node_hover": "Vyberte nadřazené síťové zařízení, ke kterému je toto zařízení připojeno, pro sestavení Síťového stromu.", + "DevDetail_Network_Port_hover": "Port nadřazeného síťového zařízení, ke kterému je toto zařízení připojeno. Pokud je ponechán prázdný, zobrazí se u zařízení WiFi ikona v Síťovém stromu.", + "DevDetail_Nmap_Scans": "Manuální NMAP scany", + "DevDetail_Nmap_Scans_desc": "Tady můžete spustit manuální NMAP scany. Můžete také naplánovat pravidelné automatické NMAP scany přes plugin Služby & Porty (NMAP). Podívejte se do Dokumentace pro více informací", + "DevDetail_Nmap_buttonDefault": "Výchozí scan", + "DevDetail_Nmap_buttonDefault_text": "Výchozí scan: NAMP scanuje prvních 1000 portů pro každý požadovaný protokol. Toto zahrnuje 93 % TCP portů a 49 % UDP portů. (přibližně 5 sekund)", + "DevDetail_Nmap_buttonDetail": "Podrobný scan", + "DevDetail_Nmap_buttonDetail_text": "Podrobný scan: Výchozí scan s povolenou detekcí OS, detekcí verze, scanování skriptů a traceroute (až 30 sekund nebo déle)", + "DevDetail_Nmap_buttonFast": "Rychlý scan", + "DevDetail_Nmap_buttonFast_text": "Rychlý scan: Scanovat pár portů (100) oproti výchozímu scanu (pár sekund)", + "DevDetail_Nmap_buttonSkipDiscovery": "Přeskočit prohledání hostitele", + "DevDetail_Nmap_buttonSkipDiscovery_text": "Přeskočit vyhledávání hostitelů (parametr \"-Pn\"): Výchozí scan bez prohledání hostitele", + "DevDetail_Nmap_resultsLink": "Tuto stránku můžete opustit po spuštění scanu. Výsledky budou k dispozici také v souboru app_front.log .", + "DevDetail_Owner_hover": "Kdo vlastní toto zařízení. Nepovinná textová položka.", + "DevDetail_Periodselect_All": "Všechny informace", + "DevDetail_Periodselect_LastMonth": "Minulý měsíc", + "DevDetail_Periodselect_LastWeek": "Minulý týden", + "DevDetail_Periodselect_LastYear": "Minulý rok", + "DevDetail_Periodselect_today": "Dnes", + "DevDetail_Run_Actions_Title": " Spustit akci na zařízení", + "DevDetail_Run_Actions_Tooltip": "Spustit akci na vybraném zařízení.", + "DevDetail_SessionInfo_FirstSession": "Prví sezení", + "DevDetail_SessionInfo_LastIP": "Poslední IP", + "DevDetail_SessionInfo_LastSession": "Naposledy offline", + "DevDetail_SessionInfo_StaticIP": "Statická IP", + "DevDetail_SessionInfo_Status": "Stav", + "DevDetail_SessionInfo_Title": "Informace o sezení", + "DevDetail_SessionTable_Additionalinfo": "Další informace", + "DevDetail_SessionTable_Connection": "Připojení", + "DevDetail_SessionTable_Disconnection": "Odpojení", + "DevDetail_SessionTable_Duration": "Trvání", + "DevDetail_SessionTable_IP": "IP", + "DevDetail_SessionTable_Order": "Pořadí", + "DevDetail_Shortcut_CurrentStatus": "Stav", + "DevDetail_Shortcut_DownAlerts": "Down alerty", + "DevDetail_Shortcut_Presence": "Výskyt", + "DevDetail_Shortcut_Sessions": "Sezení", + "DevDetail_Tab_Details": "Detaily", + "DevDetail_Tab_Events": "Události", + "DevDetail_Tab_EventsTableDate": "Datum", + "DevDetail_Tab_EventsTableEvent": "Druh události", + "DevDetail_Tab_EventsTableIP": "IP", + "DevDetail_Tab_EventsTableInfo": "Další informace", + "DevDetail_Tab_Nmap": " NMAP", + "DevDetail_Tab_NmapEmpty": "Pomocí NMAP nebyly na tomto zařízení nalezeny žádné porty.", + "DevDetail_Tab_NmapTableExtra": "Extra", + "DevDetail_Tab_NmapTableHeader": "Výsledky naplánovaných scanů", + "DevDetail_Tab_NmapTableIndex": "Index", + "DevDetail_Tab_NmapTablePort": "Port", + "DevDetail_Tab_NmapTableService": "Služba", + "DevDetail_Tab_NmapTableState": "Stav", + "DevDetail_Tab_NmapTableText": "Nastavte plán v Nastavení", + "DevDetail_Tab_NmapTableTime": "Čas", + "DevDetail_Tab_Plugins": "Pluginy", + "DevDetail_Tab_Presence": "Výskyt", + "DevDetail_Tab_Sessions": "Sezení", + "DevDetail_Tab_Tools": "Nástroje", + "DevDetail_Tab_Tools_Internet_Info_Description": "Nástroj Internetové informace zobrazuje informace o internetovém připojení jako je IP adresa, město, stát, kód oblasti a časovou zónu.", + "DevDetail_Tab_Tools_Internet_Info_Error": "Vyskytla se chyba", + "DevDetail_Tab_Tools_Internet_Info_Start": "Spustit Internetové informace", + "DevDetail_Tab_Tools_Internet_Info_Title": "Internetové informace", + "DevDetail_Tab_Tools_Nslookup_Description": "Nslookup je nástroj příkazové řádky používaný pro dotazování doménového jmenného systému (DNS). DNS je systém, který překládá doménové názvy, třeba www.google.com, na IP adresy, třeba na 172.217.0.142.", + "DevDetail_Tab_Tools_Nslookup_Error": "Chyba: IP adresa není platná", + "DevDetail_Tab_Tools_Nslookup_Start": "Spustit Nslookup", + "DevDetail_Tab_Tools_Nslookup_Title": "Nslookup", + "DevDetail_Tab_Tools_Speedtest_Description": "Nástroj Sppedtest měří rychlost stahování, rychlost nahrávání a latenci internetového připojení.", + "DevDetail_Tab_Tools_Speedtest_Start": "Spustit Speedtest", + "DevDetail_Tab_Tools_Speedtest_Title": "Online Speedtest", + "DevDetail_Tab_Tools_Traceroute_Description": "Traceroute je sířový diagnostický příklad používaný pro trasování cesty, kterou datové packety putují od jednoho hostitele k druhému.

Příkaz používá Internet Control Message Protocol (ICMP) pro posílání packetů procházejícím nodů na cestě, kde každý takový node odpovídá pomocí ICMP time-out (TTL timed out) packetu.

Výstup traceroute příkazu může být použit pro diagnostiku síťových problémů, jako třeba prodlevy, packetové ztráty a blokované trasy.

Může být také použít k identifikaci umístění procházejícího node v síti.", + "DevDetail_Tab_Tools_Traceroute_Error": "Chyba: IP adresa není platná", + "DevDetail_Tab_Tools_Traceroute_Start": "Spustit Traceroute", + "DevDetail_Tab_Tools_Traceroute_Title": "Traceroute", + "DevDetail_Tools_WOL": "Odeslat WOL příkaz na ", + "DevDetail_Tools_WOL_noti": "Wake-On-LAN", + "DevDetail_Tools_WOL_noti_text": "Příkaz Wake-On-LAN je odelsán na broadcastovou adresu. Pokud není cíl ve stejném subnetu/VLAN jako NetAlertX, cílové zařízení neodpoví.", + "DevDetail_Type_hover": "Typ zařízení. Pokud vyberete jakýkoliv typ předdefinovaných zařízení (např. AP, Firewall, Router, Switch, ...), zobrazí se v Síťovém stromu jako nadřazený síťový nod.", + "DevDetail_Vendor_hover": "Výrobce by měl být auto-detekován. Můžete ho přepsat, nebo přidat vlastní hodnotu.", + "DevDetail_WOL_Title": " Wake-On-LAN", + "DevDetail_button_AddIcon": "Přidat novou ikonu", + "DevDetail_button_AddIcon_Help": "Vložte SVG HTML tag, nebo HTML tag ikony z Font Awesome. Přečtěte si Dokumentaci k ikonám pro více informací.", + "DevDetail_button_AddIcon_Tooltip": "Přidat novou ikonu k tomuto zařízení, která není mezi dostupnými ikonami ve výběru.", + "DevDetail_button_Delete": "Odstranit zařízení", + "DevDetail_button_DeleteEvents": "Odstranit události", + "DevDetail_button_DeleteEvents_Warning": "Opravdu chcete odstranit všechny události tohoto zařízení?

(toto odstraní všechno ze záložky Historie událostí a také ze záložky Sezení a může pomoci se stálými (trvalými) notifikacemi)", + "DevDetail_button_Delete_ask": "Opravdu chcete odstranit toto zařízení? Místo toho ho můžete archivovat.", + "DevDetail_button_OverwriteIcons": "Přepsat ikony", + "DevDetail_button_OverwriteIcons_Tooltip": "Přepsat ikony všech zařízení stejného typu zařízení", + "DevDetail_button_OverwriteIcons_Warning": "Opravdu chcete přepsat všechny ikony zařízení se stejným typem zařízení ikonou tohoto zařízení?", + "DevDetail_button_Reset": "Resetovat změny", + "DevDetail_button_Save": "Uložit", + "DeviceEdit_ValidMacIp": "Zadejte platnou MAC a IP adresu.", + "Device_MultiEdit": "Multi-editace", "Device_MultiEdit_Backup": "", - "Device_MultiEdit_Fields": "", - "Device_MultiEdit_MassActions": "", - "Device_MultiEdit_No_Devices": "", - "Device_MultiEdit_Tooltip": "", - "Device_NextScan_Imminent": "", - "Device_NextScan_In": "", + "Device_MultiEdit_Fields": "Upravit položky:", + "Device_MultiEdit_MassActions": "Hromadné akce:", + "Device_MultiEdit_No_Devices": "Zařízení nevybráno.", + "Device_MultiEdit_Tooltip": "Opatrně. Kliknutím na toto se použije hodnota vlevo všem zařízení dole.", + "Device_NextScan_Imminent": "Bezprostřední...", + "Device_NextScan_In": "Další scan za ", "Device_NoData_Help": "", "Device_NoData_Scanning": "", "Device_NoData_Title": "", From 4408cf1a1e71698072ce23514335afd72097f20e Mon Sep 17 00:00:00 2001 From: IntEx Date: Tue, 21 Apr 2026 04:00:47 +0200 Subject: [PATCH 12/16] Translated using Weblate (Czech) Currently translated at 30.9% (250 of 807 strings) Translation: NetAlertX/core Translate-URL: https://hosted.weblate.org/projects/pialert/core/cs/ --- front/php/templates/language/cs_cz.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/front/php/templates/language/cs_cz.json b/front/php/templates/language/cs_cz.json index bc6973ab..c0555196 100644 --- a/front/php/templates/language/cs_cz.json +++ b/front/php/templates/language/cs_cz.json @@ -198,14 +198,14 @@ "DevDetail_button_Save": "Uložit", "DeviceEdit_ValidMacIp": "Zadejte platnou MAC a IP adresu.", "Device_MultiEdit": "Multi-editace", - "Device_MultiEdit_Backup": "", + "Device_MultiEdit_Backup": "Opatrně, zadání nesprávných hodnot níže poškodí vaše nastavení. Zálohujte si prosím nejdřív vaši databázi nebo Seznam zařízení (kliknutím stáhnout ). Přečtěte si, jak obnovit Zařízení z tohoto souboru v Dokumentaci zálohování. Pro pokračování uložení změn kliknéte na ikonu Uložit u každé položky, kterou chcete aktualizovat.", "Device_MultiEdit_Fields": "Upravit položky:", "Device_MultiEdit_MassActions": "Hromadné akce:", "Device_MultiEdit_No_Devices": "Zařízení nevybráno.", "Device_MultiEdit_Tooltip": "Opatrně. Kliknutím na toto se použije hodnota vlevo všem zařízení dole.", "Device_NextScan_Imminent": "Bezprostřední...", "Device_NextScan_In": "Další scan za ", - "Device_NoData_Help": "", + "Device_NoData_Help": "Pokud se zařízení po skenování nezobrazí, zkontrolujte nastavení SCAN_SUBNETS a dokumentaci.", "Device_NoData_Scanning": "", "Device_NoData_Title": "", "Device_NoMatch_Title": "", From f5046ff86271dd1b213fcde2f2a8aa2bdb23cdb8 Mon Sep 17 00:00:00 2001 From: jokob-sk Date: Wed, 22 Apr 2026 21:46:37 +1000 Subject: [PATCH 13/16] BE: DEEP_SLEEP #1555 Signed-off-by: jokob-sk --- docs/PERFORMANCE.md | 1 + front/php/templates/language/ar_ar.json | 4 +++- front/php/templates/language/ca_ca.json | 4 +++- front/php/templates/language/cs_cz.json | 4 +++- front/php/templates/language/de_de.json | 4 +++- front/php/templates/language/en_us.json | 2 ++ front/php/templates/language/es_es.json | 4 +++- front/php/templates/language/fa_fa.json | 2 ++ front/php/templates/language/fi_fi.json | 2 ++ front/php/templates/language/fr_fr.json | 4 +++- front/php/templates/language/he_il.json | 2 ++ front/php/templates/language/id_id.json | 2 ++ front/php/templates/language/it_it.json | 4 +++- front/php/templates/language/ja_jp.json | 4 +++- front/php/templates/language/nb_no.json | 4 +++- front/php/templates/language/pl_pl.json | 4 +++- front/php/templates/language/pt_br.json | 4 +++- front/php/templates/language/pt_pt.json | 4 +++- front/php/templates/language/ru_ru.json | 4 +++- front/php/templates/language/sv_sv.json | 2 ++ front/php/templates/language/tr_tr.json | 4 +++- front/php/templates/language/uk_ua.json | 4 +++- front/php/templates/language/vi_vn.json | 2 ++ front/php/templates/language/zh_cn.json | 4 +++- server/__main__.py | 22 +++++++++++++++++-- server/api.py | 28 +++++++++++++++++++++++++ server/initialise.py | 9 ++++++++ 27 files changed, 120 insertions(+), 18 deletions(-) diff --git a/docs/PERFORMANCE.md b/docs/PERFORMANCE.md index 922ad923..e7fb0f4a 100755 --- a/docs/PERFORMANCE.md +++ b/docs/PERFORMANCE.md @@ -87,6 +87,7 @@ Frequent scans increase resource usage, network traffic, and database read/write * **Increase scan intervals** (`_RUN_SCHD`) on busy networks or low-end hardware. * **Increase timeouts** (`_RUN_TIMEOUT`) to avoid plugin failures. * **Reduce subnet size** – e.g., use `/24` instead of `/16` to reduce scan load. +* **Enable the deep sleep setting** (`DEEP_SLEEP`) – Lowers CPU usage by extending idle wait times between processing cycles. When enabled, scans may be delayed by up to 1 minute and the UI might become less responsive. Some plugins also include options to limit which devices are scanned. If certain plugins consistently run long, consider narrowing their scope. diff --git a/front/php/templates/language/ar_ar.json b/front/php/templates/language/ar_ar.json index e5eba19b..f5a3845d 100644 --- a/front/php/templates/language/ar_ar.json +++ b/front/php/templates/language/ar_ar.json @@ -66,6 +66,8 @@ "CustProps_cant_remove": "لا يمكن إزالة الخاصية المخصصة", "DAYS_TO_KEEP_EVENTS_description": "عدد الأيام للاحتفاظ بسجلات الأحداث", "DAYS_TO_KEEP_EVENTS_name": "مدة الاحتفاظ بالأحداث", + "DEEP_SLEEP_description": "", + "DEEP_SLEEP_name": "", "DISCOVER_PLUGINS_description": "اكتشاف المكونات الإضافية المتاحة", "DISCOVER_PLUGINS_name": "اكتشاف المكونات الإضافية", "DevDetail_Children_Title": "علاقات الأطفال", @@ -806,4 +808,4 @@ "settings_system_label": "نظام", "settings_update_item_warning": "قم بتحديث القيمة أدناه. احرص على اتباع التنسيق السابق. لم يتم إجراء التحقق.", "test_event_tooltip": "احفظ التغييرات أولاً قبل اختبار الإعدادات." -} +} \ No newline at end of file diff --git a/front/php/templates/language/ca_ca.json b/front/php/templates/language/ca_ca.json index 7d6a8c44..807ab146 100644 --- a/front/php/templates/language/ca_ca.json +++ b/front/php/templates/language/ca_ca.json @@ -66,6 +66,8 @@ "CustProps_cant_remove": "No es pot eliminar, es necessita una propietat mínim.", "DAYS_TO_KEEP_EVENTS_description": "Això és una configuració de manteniment. Especifica el nombre de dies que es conservaran els esdeveniments. Els esdeveniments antics s'esborraran periòdicament. També aplica als esdeveniments dels Connectors (Plugins).", "DAYS_TO_KEEP_EVENTS_name": "Esborrar esdeveniments més vells de", + "DEEP_SLEEP_description": "", + "DEEP_SLEEP_name": "", "DISCOVER_PLUGINS_description": "Desactiva aquesta opció per accelerar la inicialització i l'estalvi de configuració. Quan està desactivat, els connectors no es descobreixen, i no podeu afegir nous connectors a la configuració LOADED_PLUGINS.", "DISCOVER_PLUGINS_name": "Descobreix els plugins", "DevDetail_Children_Title": "Relacions filles", @@ -806,4 +808,4 @@ "settings_system_label": "Sistema", "settings_update_item_warning": "Actualitza el valor sota. Sigues curós de seguir el format anterior. No hi ha validació.", "test_event_tooltip": "Deseu els canvis primer abans de comprovar la configuració." -} +} \ No newline at end of file diff --git a/front/php/templates/language/cs_cz.json b/front/php/templates/language/cs_cz.json index b8324890..f512d208 100644 --- a/front/php/templates/language/cs_cz.json +++ b/front/php/templates/language/cs_cz.json @@ -66,6 +66,8 @@ "CustProps_cant_remove": "", "DAYS_TO_KEEP_EVENTS_description": "", "DAYS_TO_KEEP_EVENTS_name": "", + "DEEP_SLEEP_description": "", + "DEEP_SLEEP_name": "", "DISCOVER_PLUGINS_description": "", "DISCOVER_PLUGINS_name": "", "DevDetail_Children_Title": "", @@ -806,4 +808,4 @@ "settings_system_label": "", "settings_update_item_warning": "", "test_event_tooltip": "" -} +} \ No newline at end of file diff --git a/front/php/templates/language/de_de.json b/front/php/templates/language/de_de.json index dfbc9088..8bd4aa01 100644 --- a/front/php/templates/language/de_de.json +++ b/front/php/templates/language/de_de.json @@ -70,6 +70,8 @@ "CustProps_cant_remove": "Kann nicht entfernt werden, es wird mindestens eine Eigenschaft benötigt.", "DAYS_TO_KEEP_EVENTS_description": "Dies ist eine Wartungseinstellung. Spezifiziert wie viele Tage Events gespeichert bleiben. Alle älteren Events werden periodisch gelöscht. Wird auch auf die Plugins History angewendet.", "DAYS_TO_KEEP_EVENTS_name": "Ereignisse löschen, die älter sind als", + "DEEP_SLEEP_description": "", + "DEEP_SLEEP_name": "", "DISCOVER_PLUGINS_description": "Deaktiviere diese Option, um Initialisierung und Speichern der Einstellungen zu beschleunigen. Wenn es deaktiviert ist, werden keine neuen Plugins gefunden und es können keine manuell hinzugefügt werden.", "DISCOVER_PLUGINS_name": "Entdecke Erweiterungen", "DevDetail_Children_Title": "", @@ -879,4 +881,4 @@ "settings_system_label": "System", "settings_update_item_warning": "", "test_event_tooltip": "Speichere die Änderungen, bevor Sie die Einstellungen testen." -} +} \ No newline at end of file diff --git a/front/php/templates/language/en_us.json b/front/php/templates/language/en_us.json index a759f4f3..2c3c081a 100755 --- a/front/php/templates/language/en_us.json +++ b/front/php/templates/language/en_us.json @@ -66,6 +66,8 @@ "CustProps_cant_remove": "Can't remove, at least one property is needed.", "DAYS_TO_KEEP_EVENTS_description": "This is a maintenance setting. This specifies the number of days worth of event entries that will be kept. All older events will be deleted periodically. Also applies on Plugin Events History.", "DAYS_TO_KEEP_EVENTS_name": "Delete events older than", + "DEEP_SLEEP_description": "Lowers CPU usage by extending idle wait times between processing cycles. When enabled, scans may be delayed by up to 1 minute and the UI might become less responsive.", + "DEEP_SLEEP_name": "Deep sleep", "DISCOVER_PLUGINS_description": "Disable this option to speed up initialization and settings saving. When disabled, plugins are not discovered, and you cannot add new plugins to the LOADED_PLUGINS setting.", "DISCOVER_PLUGINS_name": "Discover plugins", "DevDetail_Children_Title": "Children Relationships", diff --git a/front/php/templates/language/es_es.json b/front/php/templates/language/es_es.json index 22a3ab3f..a9cc41d9 100644 --- a/front/php/templates/language/es_es.json +++ b/front/php/templates/language/es_es.json @@ -68,6 +68,8 @@ "CustProps_cant_remove": "No se puede eliminar, al menos una propiedad es requerida.", "DAYS_TO_KEEP_EVENTS_description": "Esta es una configuración de mantenimiento. Esto especifica el número de días de entradas de eventos que se guardarán. Todos los eventos anteriores se eliminarán periódicamente.", "DAYS_TO_KEEP_EVENTS_name": "Eliminar eventos anteriores a", + "DEEP_SLEEP_description": "", + "DEEP_SLEEP_name": "", "DISCOVER_PLUGINS_description": "Desactive esta opción para acelerar la inicialización y el ahorro de ajustes. Cuando está desactivado, los plugins no se descubren y no puede añadir nuevos plugins a la configuración LOADED_PLUGINS.", "DISCOVER_PLUGINS_name": "Descubrir plugins", "DevDetail_Children_Title": "Relaciones hijo", @@ -877,4 +879,4 @@ "settings_system_label": "Sistema", "settings_update_item_warning": "Actualice el valor a continuación. Tenga cuidado de seguir el formato anterior. O la validación no se realiza.", "test_event_tooltip": "Guarda tus cambios antes de probar nuevos ajustes." -} +} \ No newline at end of file diff --git a/front/php/templates/language/fa_fa.json b/front/php/templates/language/fa_fa.json index 0998caec..57388f34 100644 --- a/front/php/templates/language/fa_fa.json +++ b/front/php/templates/language/fa_fa.json @@ -66,6 +66,8 @@ "CustProps_cant_remove": "", "DAYS_TO_KEEP_EVENTS_description": "", "DAYS_TO_KEEP_EVENTS_name": "", + "DEEP_SLEEP_description": "", + "DEEP_SLEEP_name": "", "DISCOVER_PLUGINS_description": "", "DISCOVER_PLUGINS_name": "", "DevDetail_Children_Title": "", diff --git a/front/php/templates/language/fi_fi.json b/front/php/templates/language/fi_fi.json index 063de1d5..db101934 100644 --- a/front/php/templates/language/fi_fi.json +++ b/front/php/templates/language/fi_fi.json @@ -66,6 +66,8 @@ "CustProps_cant_remove": "", "DAYS_TO_KEEP_EVENTS_description": "", "DAYS_TO_KEEP_EVENTS_name": "", + "DEEP_SLEEP_description": "", + "DEEP_SLEEP_name": "", "DISCOVER_PLUGINS_description": "", "DISCOVER_PLUGINS_name": "", "DevDetail_Children_Title": "", diff --git a/front/php/templates/language/fr_fr.json b/front/php/templates/language/fr_fr.json index 164de590..565679f5 100644 --- a/front/php/templates/language/fr_fr.json +++ b/front/php/templates/language/fr_fr.json @@ -66,6 +66,8 @@ "CustProps_cant_remove": "Suppression impossible, au moins une donnée est requise.", "DAYS_TO_KEEP_EVENTS_description": "Il s'agit d'un paramètre de maintenance. Il indique le nombre de jours pendant lesquels les entrées d'événements seront conservées. Tous les événements plus anciens seront supprimés périodiquement. S'applique également à l'historique des événements du plugin.", "DAYS_TO_KEEP_EVENTS_name": "Supprimer les événements plus anciens que", + "DEEP_SLEEP_description": "", + "DEEP_SLEEP_name": "", "DISCOVER_PLUGINS_description": "Désactivez cette option pour accélérer le démarrage et l'enregistrement de paramètres. Quand elle est désactivée, les plugins ne sont pas découverts, et vous ne pouvez près ajouter de nouveaux plugins au paramètre LOADED_PLUGINS.", "DISCOVER_PLUGINS_name": "Découvrir des plugins", "DevDetail_Children_Title": "Relations avec les éléments inférieurs", @@ -806,4 +808,4 @@ "settings_system_label": "Système", "settings_update_item_warning": "Mettre à jour la valeur ci-dessous. Veillez à bien suivre le même format qu'auparavant. Il n'y a pas de pas de contrôle.", "test_event_tooltip": "Enregistrer d'abord vos modifications avant de tester vôtre paramétrage." -} +} \ No newline at end of file diff --git a/front/php/templates/language/he_il.json b/front/php/templates/language/he_il.json index 063de1d5..db101934 100644 --- a/front/php/templates/language/he_il.json +++ b/front/php/templates/language/he_il.json @@ -66,6 +66,8 @@ "CustProps_cant_remove": "", "DAYS_TO_KEEP_EVENTS_description": "", "DAYS_TO_KEEP_EVENTS_name": "", + "DEEP_SLEEP_description": "", + "DEEP_SLEEP_name": "", "DISCOVER_PLUGINS_description": "", "DISCOVER_PLUGINS_name": "", "DevDetail_Children_Title": "", diff --git a/front/php/templates/language/id_id.json b/front/php/templates/language/id_id.json index 063de1d5..db101934 100644 --- a/front/php/templates/language/id_id.json +++ b/front/php/templates/language/id_id.json @@ -66,6 +66,8 @@ "CustProps_cant_remove": "", "DAYS_TO_KEEP_EVENTS_description": "", "DAYS_TO_KEEP_EVENTS_name": "", + "DEEP_SLEEP_description": "", + "DEEP_SLEEP_name": "", "DISCOVER_PLUGINS_description": "", "DISCOVER_PLUGINS_name": "", "DevDetail_Children_Title": "", diff --git a/front/php/templates/language/it_it.json b/front/php/templates/language/it_it.json index 7bdaea3d..18590833 100644 --- a/front/php/templates/language/it_it.json +++ b/front/php/templates/language/it_it.json @@ -66,6 +66,8 @@ "CustProps_cant_remove": "Impossibile rimuovere, è necessaria almeno una proprietà.", "DAYS_TO_KEEP_EVENTS_description": "Questa è un'impostazione di manutenzione. Specifica il numero di giorni delle voci degli eventi che verranno conservati. Tutti gli eventi più vecchi verranno eliminati periodicamente. Si applica anche alla cronologia degli eventi del plugin (Plugin Events History).", "DAYS_TO_KEEP_EVENTS_name": "Elimina eventi più vecchi di", + "DEEP_SLEEP_description": "", + "DEEP_SLEEP_name": "", "DISCOVER_PLUGINS_description": "Disattiva questa opzione per velocizzare l'inizializzazione e il salvataggio delle impostazioni. Quando è disattivata, i plugin non vengono scoperti e non puoi aggiungere nuovi plugin all'impostazione LOADED_PLUGINS.", "DISCOVER_PLUGINS_name": "Scopri i plugin", "DevDetail_Children_Title": "Relazioni tra figli", @@ -806,4 +808,4 @@ "settings_system_label": "Sistema", "settings_update_item_warning": "Aggiorna il valore qui sotto. Fai attenzione a seguire il formato precedente. La convalida non viene eseguita.", "test_event_tooltip": "Salva le modifiche prima di provare le nuove impostazioni." -} +} \ No newline at end of file diff --git a/front/php/templates/language/ja_jp.json b/front/php/templates/language/ja_jp.json index ec4be9f3..ff84525d 100644 --- a/front/php/templates/language/ja_jp.json +++ b/front/php/templates/language/ja_jp.json @@ -66,6 +66,8 @@ "CustProps_cant_remove": "削除できません。少なくとも1つのプロパティが必要です。", "DAYS_TO_KEEP_EVENTS_description": "これはメンテナンス設定です。イベントエントリを保持する日数を指定します。それより古いイベントは定期的に削除されます。プラグインイベント履歴にも適用されます。", "DAYS_TO_KEEP_EVENTS_name": "古いイベントの削除", + "DEEP_SLEEP_description": "", + "DEEP_SLEEP_name": "", "DISCOVER_PLUGINS_description": "このオプションを無効にすると、初期化と設定の保存が高速化されます。無効にした場合、プラグインは検出されず、LOADED_PLUGINS 設定に新しいプラグインを追加することはできません。", "DISCOVER_PLUGINS_name": "プラグインの検出", "DevDetail_Children_Title": "親子関係", @@ -806,4 +808,4 @@ "settings_system_label": "システム", "settings_update_item_warning": "以下の値を更新してください。以前のフォーマットに従うよう注意してください。検証は行われません。", "test_event_tooltip": "設定をテストする前に、まず変更を保存してください。" -} +} \ No newline at end of file diff --git a/front/php/templates/language/nb_no.json b/front/php/templates/language/nb_no.json index 25156358..d84550a1 100644 --- a/front/php/templates/language/nb_no.json +++ b/front/php/templates/language/nb_no.json @@ -66,6 +66,8 @@ "CustProps_cant_remove": "", "DAYS_TO_KEEP_EVENTS_description": "Dette er en vedlikeholdsinnstilling. Dette spesifiserer antall dager verdt med hendelsesoppføringer som vil beholdes. Alle eldre hendelser vil bli slettet med jevne mellomrom. Gjelder også for plugin-hendelseshistorikk.", "DAYS_TO_KEEP_EVENTS_name": "Slett hendelser eldre enn", + "DEEP_SLEEP_description": "", + "DEEP_SLEEP_name": "", "DISCOVER_PLUGINS_description": "", "DISCOVER_PLUGINS_name": "", "DevDetail_Children_Title": "", @@ -806,4 +808,4 @@ "settings_system_label": "System", "settings_update_item_warning": "Oppdater verdien nedenfor. Pass på å følge forrige format. Validering etterpå utføres ikke.", "test_event_tooltip": "Lagre endringene først, før du tester innstillingene dine." -} +} \ No newline at end of file diff --git a/front/php/templates/language/pl_pl.json b/front/php/templates/language/pl_pl.json index 6e300891..8a8826c2 100644 --- a/front/php/templates/language/pl_pl.json +++ b/front/php/templates/language/pl_pl.json @@ -66,6 +66,8 @@ "CustProps_cant_remove": "Nie można usunąć – wymagana jest przynajmniej jedna właściwość.", "DAYS_TO_KEEP_EVENTS_description": "To jest ustawienie konserwacyjne. Określa liczbę dni, przez które będą przechowywane wpisy zdarzeń. Wszystkie starsze zdarzenia będą okresowo usuwane. Dotyczy również Historii Zdarzeń Wtyczek.", "DAYS_TO_KEEP_EVENTS_name": "Usuń zdarzenia starsze niż", + "DEEP_SLEEP_description": "", + "DEEP_SLEEP_name": "", "DISCOVER_PLUGINS_description": "Wyłącz tę opcję, aby przyspieszyć inicjalizację i zapisywanie ustawień. Po wyłączeniu wtyczki nie są wykrywane i nie można dodawać nowych wtyczek do ustawienia LOADED_PLUGINS.", "DISCOVER_PLUGINS_name": "Wykryj wtyczki", "DevDetail_Children_Title": "", @@ -806,4 +808,4 @@ "settings_system_label": "System", "settings_update_item_warning": "Zaktualizuj wartość poniżej. Uważaj, aby zachować poprzedni format. Walidacja nie jest wykonywana.", "test_event_tooltip": "Najpierw zapisz swoje zmiany, zanim przetestujesz ustawienia." -} +} \ No newline at end of file diff --git a/front/php/templates/language/pt_br.json b/front/php/templates/language/pt_br.json index ffbc68ca..1b1f148f 100644 --- a/front/php/templates/language/pt_br.json +++ b/front/php/templates/language/pt_br.json @@ -66,6 +66,8 @@ "CustProps_cant_remove": "Não é possível remover, é necessária pelo menos uma propriedade.", "DAYS_TO_KEEP_EVENTS_description": "Esta é uma definição de manutenção. Especifica o número de dias de entradas de eventos que serão mantidas. Todos os eventos mais antigos serão eliminados periodicamente. Também se aplica ao Histórico de eventos do plug-in.", "DAYS_TO_KEEP_EVENTS_name": "Excluir eventos mais antigos que", + "DEEP_SLEEP_description": "", + "DEEP_SLEEP_name": "", "DISCOVER_PLUGINS_description": "Desative esta opção para acelerar a inicialização e a gravação de definições. Quando desativada, os plug-ins não são descobertos e não é possível adicionar novos plug-ins à definiçãoLOADED_PLUGINS.", "DISCOVER_PLUGINS_name": "Descobrir plugins", "DevDetail_Children_Title": "", @@ -806,4 +808,4 @@ "settings_system_label": "", "settings_update_item_warning": "", "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/pt_pt.json b/front/php/templates/language/pt_pt.json index cb6850b0..ad0620ea 100644 --- a/front/php/templates/language/pt_pt.json +++ b/front/php/templates/language/pt_pt.json @@ -66,6 +66,8 @@ "CustProps_cant_remove": "Não é possível remover, é necessária pelo menos uma propriedade.", "DAYS_TO_KEEP_EVENTS_description": "Esta é uma definição de manutenção. Especifica o número de dias de entradas de eventos que serão mantidas. Todos os eventos mais antigos serão apagados periodicamente. Também se aplica ao Histórico de eventos do plug-in.", "DAYS_TO_KEEP_EVENTS_name": "Apagar eventos mais antigos que", + "DEEP_SLEEP_description": "", + "DEEP_SLEEP_name": "", "DISCOVER_PLUGINS_description": "Desative esta opção para acelerar a inicialização e a gravação de definições. Quando desativada, os plug-ins não são descobertos e não é possível adicionar novos plug-ins à definiçãoLOADED_PLUGINS.", "DISCOVER_PLUGINS_name": "Descobrir plugins", "DevDetail_Children_Title": "Relacionamentos de crianças", @@ -806,4 +808,4 @@ "settings_system_label": "", "settings_update_item_warning": "", "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 0eea72c4..44e9446b 100644 --- a/front/php/templates/language/ru_ru.json +++ b/front/php/templates/language/ru_ru.json @@ -66,6 +66,8 @@ "CustProps_cant_remove": "Невозможно удалить, необходимо хотя бы одно свойство.", "DAYS_TO_KEEP_EVENTS_description": "Это настройка обслуживания. Здесь указывается количество дней, в течение которых будут храниться записи о событиях. Все старые события будут периодически удаляться. Также применимо к истории событий плагина.", "DAYS_TO_KEEP_EVENTS_name": "Удалить события старше", + "DEEP_SLEEP_description": "", + "DEEP_SLEEP_name": "", "DISCOVER_PLUGINS_description": "Отключите эту опцию, чтобы ускорить инициализацию и сохранение настроек. При отключении этой опции плагины не обнаруживаются, и вы не можете добавлять новые плагины в параметр LOADED_PLUGINS.", "DISCOVER_PLUGINS_name": "Обзор плагинов", "DevDetail_Children_Title": "Дочерние отношения", @@ -806,4 +808,4 @@ "settings_system_label": "Система", "settings_update_item_warning": "Обновить значение ниже. Будьте осторожны, следуя предыдущему формату. Проверка не выполняется.", "test_event_tooltip": "Сначала сохраните изменения, прежде чем проверять настройки." -} +} \ No newline at end of file diff --git a/front/php/templates/language/sv_sv.json b/front/php/templates/language/sv_sv.json index 063de1d5..db101934 100644 --- a/front/php/templates/language/sv_sv.json +++ b/front/php/templates/language/sv_sv.json @@ -66,6 +66,8 @@ "CustProps_cant_remove": "", "DAYS_TO_KEEP_EVENTS_description": "", "DAYS_TO_KEEP_EVENTS_name": "", + "DEEP_SLEEP_description": "", + "DEEP_SLEEP_name": "", "DISCOVER_PLUGINS_description": "", "DISCOVER_PLUGINS_name": "", "DevDetail_Children_Title": "", diff --git a/front/php/templates/language/tr_tr.json b/front/php/templates/language/tr_tr.json index 1a3bc01d..b240e00a 100644 --- a/front/php/templates/language/tr_tr.json +++ b/front/php/templates/language/tr_tr.json @@ -66,6 +66,8 @@ "CustProps_cant_remove": "Kaldırılamaz, en az bir özellik gereklidir.", "DAYS_TO_KEEP_EVENTS_description": "Bu bir bakım ayarıdır. Bu, saklanacak olay girişlerinin gün cinsinden sayısını belirtir. Daha eski tüm olaylar periyodik olarak silinecektir. Ayrıca Eklenti Olay Geçmişi üzerinde de geçerlidir.", "DAYS_TO_KEEP_EVENTS_name": "Şu tarihten eski olayları sil", + "DEEP_SLEEP_description": "", + "DEEP_SLEEP_name": "", "DISCOVER_PLUGINS_description": "Bu seçeneği devre dışı bırakmak, başlatma süresini ve ayarların kaydedilmesini hızlandırır. Devre dışı bırakıldığında, eklentiler keşfedilmez ve LOADED_PLUGINS ayarına yeni eklentiler eklenemez.", "DISCOVER_PLUGINS_name": "Eklentileri keşfet", "DevDetail_Children_Title": "", @@ -806,4 +808,4 @@ "settings_system_label": "Sistem", "settings_update_item_warning": "", "test_event_tooltip": "" -} +} \ No newline at end of file diff --git a/front/php/templates/language/uk_ua.json b/front/php/templates/language/uk_ua.json index 7388ce23..622adcd8 100644 --- a/front/php/templates/language/uk_ua.json +++ b/front/php/templates/language/uk_ua.json @@ -66,6 +66,8 @@ "CustProps_cant_remove": "Неможливо видалити, потрібна принаймні одна властивість.", "DAYS_TO_KEEP_EVENTS_description": "Це налаштування обслуговування. Це визначає кількість днів записів про події, які зберігатимуться. Усі старіші події періодично видалятимуться. Також застосовується до історії подій плагінів.", "DAYS_TO_KEEP_EVENTS_name": "Видалити події, старші за", + "DEEP_SLEEP_description": "", + "DEEP_SLEEP_name": "", "DISCOVER_PLUGINS_description": "Вимкніть цю опцію, щоб прискорити ініціалізацію та збереження налаштувань. Якщо вимкнено, плагіни не виявляються, і ви не можете додавати нові плагіни до параметра LOADED_PLUGINS.", "DISCOVER_PLUGINS_name": "Відкрийте для себе плагіни", "DevDetail_Children_Title": "Стосунки з дітьми", @@ -806,4 +808,4 @@ "settings_system_label": "Система", "settings_update_item_warning": "Оновіть значення нижче. Слідкуйте за попереднім форматом. Перевірка не виконана.", "test_event_tooltip": "Перш ніж перевіряти налаштування, збережіть зміни." -} +} \ No newline at end of file diff --git a/front/php/templates/language/vi_vn.json b/front/php/templates/language/vi_vn.json index 063de1d5..db101934 100644 --- a/front/php/templates/language/vi_vn.json +++ b/front/php/templates/language/vi_vn.json @@ -66,6 +66,8 @@ "CustProps_cant_remove": "", "DAYS_TO_KEEP_EVENTS_description": "", "DAYS_TO_KEEP_EVENTS_name": "", + "DEEP_SLEEP_description": "", + "DEEP_SLEEP_name": "", "DISCOVER_PLUGINS_description": "", "DISCOVER_PLUGINS_name": "", "DevDetail_Children_Title": "", diff --git a/front/php/templates/language/zh_cn.json b/front/php/templates/language/zh_cn.json index 8890fbce..7d3213a7 100644 --- a/front/php/templates/language/zh_cn.json +++ b/front/php/templates/language/zh_cn.json @@ -66,6 +66,8 @@ "CustProps_cant_remove": "无法移除,至少需要保留一个属性。", "DAYS_TO_KEEP_EVENTS_description": "这是维护设置。它指定将保留的事件条目的天数。所有较旧的事件将被定期删除。也适用于插件事件历史记录。", "DAYS_TO_KEEP_EVENTS_name": "删除早于", + "DEEP_SLEEP_description": "", + "DEEP_SLEEP_name": "", "DISCOVER_PLUGINS_description": "禁用此选项可加快初始化和设置保存的速度。当禁用时,插件不会被发现,并且您无法将新插件添加到 LOADED_PLUGINS设置中。", "DISCOVER_PLUGINS_name": "发现插件", "DevDetail_Children_Title": "子代关系", @@ -806,4 +808,4 @@ "settings_system_label": "系统", "settings_update_item_warning": "更新下面的值。请注意遵循先前的格式。未执行验证。", "test_event_tooltip": "在测试设置之前,请先保存更改。" -} +} \ No newline at end of file diff --git a/server/__main__.py b/server/__main__.py index 32240f54..0ae5d3c7 100755 --- a/server/__main__.py +++ b/server/__main__.py @@ -27,7 +27,7 @@ from logger import mylog from helper import filePermissions from utils.datetime_utils import timeNowUTC from app_state import updateState -from api import update_api +from api import update_api, check_activity from scan.session_events import process_scan from initialise import importConfigs, renameSettings from database import DB @@ -262,7 +262,25 @@ def main(): update_api(db, all_plugins, True, ["devices"], userUpdatedDevices) # loop - time.sleep(5) # wait for N seconds + # ------------------------------------------------------------------ + # Dynamic sleep (energy saving) + # ------------------------------------------------------------------ + if conf.DEEP_SLEEP: + is_active = check_activity() + + if is_active: + mylog("debug", ["[DEEP_SLEEP] Active Cycle"]) + time.sleep(5) + else: + mylog("debug", ["[DEEP_SLEEP] Passive Cycle"]) + for _ in range(3): + if check_activity(): + break + time.sleep(20) + else: + time.sleep(5) + + # =============================================================================== diff --git a/server/api.py b/server/api.py index 11834bc4..90b1db49 100755 --- a/server/api.py +++ b/server/api.py @@ -251,3 +251,31 @@ def stop_periodic_write(): periodic_write_thread.join() periodic_write_running = False mylog("trace", ["[API] periodic_write thread stopped."]) + + +def check_activity(): + """ + Check for active TCP connections on the host. + + Reads `/proc/net/tcp` and looks for entries in the ESTABLISHED state + (state code `01`). If any are found, the system is considered "active", + typically indicating interaction via the web UI or API. + + Returns: + bool: True if at least one established TCP connection exists, + False otherwise or if the check fails. + + Notes: + - Linux-only: relies on `/proc/net/tcp`. + - Lightweight heuristic; does not distinguish connection origin + (e.g., UI vs other services). + - Fail-safe: returns False on any read/parse error. + """ + try: + with open("/proc/net/tcp", "r") as f: + for line in f: + if " 01 " in line: # ESTABLISHED + return True + except: + pass + return False \ No newline at end of file diff --git a/server/initialise.py b/server/initialise.py index b1518821..2414aa08 100755 --- a/server/initialise.py +++ b/server/initialise.py @@ -246,6 +246,15 @@ def importConfigs(pm, db, all_plugins): "[]", "General", ) + conf.DEEP_SLEEP = ccd( + "DEEP_SLEEP", + False, + c_d, + "Deep Sleep", + """{"dataType": "boolean","elements": [{"elementType": "input","elementOptions": [{ "type": "checkbox" }],"transformers": []}]}""", + "[]", + "General", + ) conf.DISCOVER_PLUGINS = ccd( "DISCOVER_PLUGINS", True, From 90813c5f305a4b7c1f17242745682e34c92185ca Mon Sep 17 00:00:00 2001 From: Massimo Pissarello Date: Thu, 23 Apr 2026 02:33:00 +0200 Subject: [PATCH 14/16] Translated using Weblate (Italian) Currently translated at 100.0% (809 of 809 strings) Translation: NetAlertX/core Translate-URL: https://hosted.weblate.org/projects/pialert/core/it/ --- front/php/templates/language/it_it.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/front/php/templates/language/it_it.json b/front/php/templates/language/it_it.json index 18590833..34db224b 100644 --- a/front/php/templates/language/it_it.json +++ b/front/php/templates/language/it_it.json @@ -66,8 +66,8 @@ "CustProps_cant_remove": "Impossibile rimuovere, è necessaria almeno una proprietà.", "DAYS_TO_KEEP_EVENTS_description": "Questa è un'impostazione di manutenzione. Specifica il numero di giorni delle voci degli eventi che verranno conservati. Tutti gli eventi più vecchi verranno eliminati periodicamente. Si applica anche alla cronologia degli eventi del plugin (Plugin Events History).", "DAYS_TO_KEEP_EVENTS_name": "Elimina eventi più vecchi di", - "DEEP_SLEEP_description": "", - "DEEP_SLEEP_name": "", + "DEEP_SLEEP_description": "Riduce l'utilizzo della CPU estendendo i tempi di attesa tra i cicli di elaborazione. Quando questa opzione è abilitata, le scansioni potrebbero subire ritardi fino a 1 minuto e l'interfaccia utente potrebbe risultare meno reattiva.", + "DEEP_SLEEP_name": "Sonno profondo", "DISCOVER_PLUGINS_description": "Disattiva questa opzione per velocizzare l'inizializzazione e il salvataggio delle impostazioni. Quando è disattivata, i plugin non vengono scoperti e non puoi aggiungere nuovi plugin all'impostazione LOADED_PLUGINS.", "DISCOVER_PLUGINS_name": "Scopri i plugin", "DevDetail_Children_Title": "Relazioni tra figli", @@ -808,4 +808,4 @@ "settings_system_label": "Sistema", "settings_update_item_warning": "Aggiorna il valore qui sotto. Fai attenzione a seguire il formato precedente. La convalida non viene eseguita.", "test_event_tooltip": "Salva le modifiche prima di provare le nuove impostazioni." -} \ No newline at end of file +} From cd799b1b20088730587fa4ef2365713c6da10759 Mon Sep 17 00:00:00 2001 From: Artyom Rybakov Date: Thu, 23 Apr 2026 07:02:10 +0200 Subject: [PATCH 15/16] Translated using Weblate (Russian) Currently translated at 100.0% (809 of 809 strings) Translation: NetAlertX/core Translate-URL: https://hosted.weblate.org/projects/pialert/core/ru/ --- front/php/templates/language/ru_ru.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/front/php/templates/language/ru_ru.json b/front/php/templates/language/ru_ru.json index 44e9446b..eb2acbe3 100644 --- a/front/php/templates/language/ru_ru.json +++ b/front/php/templates/language/ru_ru.json @@ -66,8 +66,8 @@ "CustProps_cant_remove": "Невозможно удалить, необходимо хотя бы одно свойство.", "DAYS_TO_KEEP_EVENTS_description": "Это настройка обслуживания. Здесь указывается количество дней, в течение которых будут храниться записи о событиях. Все старые события будут периодически удаляться. Также применимо к истории событий плагина.", "DAYS_TO_KEEP_EVENTS_name": "Удалить события старше", - "DEEP_SLEEP_description": "", - "DEEP_SLEEP_name": "", + "DEEP_SLEEP_description": "Снижает нагрузку на процессор за счет увеличения времени ожидания между циклами обработки. При включении, сканирование может быть отложено до 1 минуты, а пользовательский интерфейс может стать менее отзывчивым.", + "DEEP_SLEEP_name": "Глубокий сон", "DISCOVER_PLUGINS_description": "Отключите эту опцию, чтобы ускорить инициализацию и сохранение настроек. При отключении этой опции плагины не обнаруживаются, и вы не можете добавлять новые плагины в параметр LOADED_PLUGINS.", "DISCOVER_PLUGINS_name": "Обзор плагинов", "DevDetail_Children_Title": "Дочерние отношения", @@ -808,4 +808,4 @@ "settings_system_label": "Система", "settings_update_item_warning": "Обновить значение ниже. Будьте осторожны, следуя предыдущему формату. Проверка не выполняется.", "test_event_tooltip": "Сначала сохраните изменения, прежде чем проверять настройки." -} \ No newline at end of file +} From a39190cf4a2a984a9e8c53a025f1cefc7627217c Mon Sep 17 00:00:00 2001 From: Sylvain Pichon Date: Thu, 23 Apr 2026 05:55:37 +0200 Subject: [PATCH 16/16] Translated using Weblate (French) Currently translated at 100.0% (809 of 809 strings) Translation: NetAlertX/core Translate-URL: https://hosted.weblate.org/projects/pialert/core/fr/ --- front/php/templates/language/fr_fr.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/front/php/templates/language/fr_fr.json b/front/php/templates/language/fr_fr.json index 2acd0e86..df30c596 100644 --- a/front/php/templates/language/fr_fr.json +++ b/front/php/templates/language/fr_fr.json @@ -66,8 +66,8 @@ "CustProps_cant_remove": "Suppression impossible, au moins une donnée est requise.", "DAYS_TO_KEEP_EVENTS_description": "Il s'agit d'un paramètre de maintenance. Il indique le nombre de jours pendant lesquels les entrées d'événements seront conservées. Tous les événements plus anciens seront supprimés périodiquement. S'applique également à l'historique des événements du plugin.", "DAYS_TO_KEEP_EVENTS_name": "Supprimer les événements plus anciens que", - "DEEP_SLEEP_description": "", - "DEEP_SLEEP_name": "", + "DEEP_SLEEP_description": "Diminue l'utilisation du processeur, en augmentant les temps de repos entre les cycles de calcul. Quand activé, les scans peuvent être retardés jusqu'à 1 minute, et l'interface peut être moins réactive.", + "DEEP_SLEEP_name": "Veille profonde", "DISCOVER_PLUGINS_description": "Désactivez cette option pour accélérer le démarrage et l'enregistrement de paramètres. Quand elle est désactivée, les plugins ne sont pas découverts, et vous ne pouvez près ajouter de nouveaux plugins au paramètre LOADED_PLUGINS.", "DISCOVER_PLUGINS_name": "Découvrir des plugins", "DevDetail_Children_Title": "Relations avec les éléments inférieurs", @@ -808,4 +808,4 @@ "settings_system_label": "Système", "settings_update_item_warning": "Mettre à jour la valeur ci-dessous. Veillez à bien suivre le même format qu'auparavant. Il n'y a pas de pas de contrôle.", "test_event_tooltip": "Enregistrer d'abord vos modifications avant de tester vôtre paramétrage." -} \ No newline at end of file +}