diff --git a/front/php/templates/language/cs_cz.json b/front/php/templates/language/cs_cz.json
index f512d208..97afb880 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,190 +24,190 @@
"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": "",
+ "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ž",
"DEEP_SLEEP_description": "",
"DEEP_SLEEP_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": "",
+ "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": "",
- "Device_MultiEdit_Backup": "",
- "Device_MultiEdit_Fields": "",
- "Device_MultiEdit_MassActions": "",
- "Device_MultiEdit_No_Devices": "",
- "Device_MultiEdit_Tooltip": "",
- "Device_NextScan_Imminent": "",
- "Device_NextScan_In": "",
- "Device_NoData_Help": "",
+ "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": "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": "Pokud se zařízení po skenování nezobrazí, zkontrolujte nastavení SCAN_SUBNETS a dokumentaci.",
"Device_NoData_Scanning": "",
"Device_NoData_Title": "",
"Device_NoMatch_Title": "",
diff --git a/front/php/templates/language/fr_fr.json b/front/php/templates/language/fr_fr.json
index 565679f5..2acd0e86 100644
--- a/front/php/templates/language/fr_fr.json
+++ b/front/php/templates/language/fr_fr.json
@@ -119,7 +119,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",
@@ -234,7 +234,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",
@@ -249,8 +249,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",
@@ -339,7 +339,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",
@@ -478,7 +478,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",
@@ -571,7 +571,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",
diff --git a/front/plugins/omada_sdn_openapi/script.py b/front/plugins/omada_sdn_openapi/script.py
index 11b17b60..9e8bb749 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
@@ -26,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')
@@ -220,6 +223,40 @@ 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:
+ """
+ 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 Version(str(v))
+ if isinstance(v, str):
+ 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_version(version)
+ b = to_version(base)
+
+ return ops[op](v, b)
class OmadaAPI:
@@ -259,6 +296,7 @@ class OmadaAPI:
self.active_sites_dict = {}
self.access_token = None
self.refresh_token = None
+ self.controller_version = None
OmadaHelper.verbose("OmadaAPI initialized")
@@ -328,11 +366,57 @@ 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 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") 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 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}")
- 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)
+
+ 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."""
@@ -454,6 +538,13 @@ class OmadaData:
OmadaHelper.minimal("Authentication failed, aborting data collection")
OmadaHelper.debug(f"{auth_result['response_message']}")
return plugin_objects
+
+ # Controller status
+ 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()