Compare commits

...

943 Commits

Author SHA1 Message Date
Jokob-sk
71c20e159d Docs 2023-10-02 16:54:54 +11:00
Jokob-sk
205c143782 Docs 2023-10-02 16:51:51 +11:00
Jokob-sk
ed7c919201 Docs + on HW install v0.2 2023-10-02 16:25:15 +11:00
Jokob-sk
842014160b Docs + on HW install v0.1 2023-10-02 14:29:45 +11:00
Jokob-sk
2a0f464c63 docs + #457 work 2023-10-01 16:09:17 +11:00
Jokob-sk
c412f025ca docs 2023-10-01 09:20:21 +11:00
jokob-sk
299371b38c Merge pull request #459 from nimec01/webhook-signatures
Add webhook signatures with amazing docs - thanks to @nimec01 🙏
2023-09-30 12:47:23 +00:00
Nick
d57c38bb3d add WEBHOOK_SECRET name and description 2023-09-30 13:27:38 +02:00
Nick
59231739a2 fix spelling 2023-09-30 13:23:42 +02:00
Nick
7ba6941aed Merge remote-tracking branch 'origin/main' into main 2023-09-30 11:52:44 +02:00
Nick
95f9b348cd secure webhooks using signatures 2023-09-30 11:48:49 +02:00
Jokob-sk
ebeeb6c3a5 Better version handling #458 + docs 2023-09-30 09:53:15 +10:00
Jokob-sk
07367a2ca3 NETWORK_DEVICE_TYPES #452 2023-09-22 08:22:28 +10:00
Jokob-sk
3d848a70c7 ddns plugin 0.1 + internet_ip 0.4 2023-09-21 07:52:52 +10:00
Jokob-sk
c5d1cd919a internet_ip plugin 0.3 2023-09-20 22:20:41 +10:00
Jokob-sk
c08b70a38d internet_ip plugin 0.2 2023-09-20 21:53:22 +10:00
Jokob-sk
add9800f42 internet_ip plugin 2023-09-19 07:48:53 +10:00
Jokob-sk
1395dd9fb5 vendor_update plugin 2023-09-18 14:59:49 +10:00
Jokob-sk
12b89f7e24 vendor_update plugin 2023-09-18 14:29:44 +10:00
Jokob-sk
0ab5ca32a6 vendor_update plugin 2023-09-18 08:36:11 +10:00
Jokob-sk
19f42e60ba vendor_update plugin 2023-09-18 08:31:41 +10:00
Jokob-sk
a5b952f18c db_cleanup plugin 2023-09-17 21:46:05 +10:00
Jokob-sk
80de181827 Docs, Readme, Donations 2023-09-17 11:31:41 +10:00
Jokob-sk
44856f9c04 Loading spinner + app_state.json, settings work 2023-09-16 21:14:34 +10:00
Jokob-sk
40c6c65ee5 Loading spinner 2023-09-16 09:57:38 +10:00
Jokob-sk
6cb4439d59 pialert_app_state.json 2023-09-16 08:34:14 +10:00
Jokob-sk
03970f985e better statuses, unifi setting type change 2023-09-15 20:55:39 +10:00
Jokob-sk
31a94b779f DHCPSRVS bugfix - past results 2023-09-15 20:29:50 +10:00
Jokob-sk
f9a400c34c Optimize init, code clenup 2023-09-15 20:25:48 +10:00
jokob-sk
5cea39c9c0 Merge pull request #442 from tuhriel/unifi_full_import
Added functionality to perform a full import
2023-09-15 10:09:41 +00:00
Jokob-sk
99cd07658e SMTP docs 2023-09-14 22:23:59 +10:00
jokob-sk
11fcaa2538 Update pialert.conf
pialert.conf cleanup
2023-09-14 07:28:04 +10:00
pi@skippy
8af961ff3f unifi full import debugged 2023-09-13 00:09:06 +02:00
pi@skippy
10ee4a17a5 resolved merge conflict in unifi import config file 2023-09-13 00:08:25 +02:00
Jokob-sk
f029fa1cc8 pihole + setting fixes 2023-09-13 08:07:15 +10:00
stefan@pc
bbe0ba0389 added full import functionality 2023-09-12 23:30:41 +02:00
jokob-sk
7084c69171 Merge pull request #440 from cvc90/Pi.Alert-Fix-Readme.md-file-for-plugins
Pi.Alert - Fix readme files for plugins
2023-09-12 20:13:21 +00:00
jokob-sk
3ada622bd0 Merge pull request #437 from cvc90/Pi.Alert-Fix-CMD-function-Pihole-Scan-Plugin
Pi.Alert - Fix "CMD" function in pihole_scan plugin
2023-09-12 20:11:25 +00:00
jokob-sk
93d08de2ab Merge pull request #436 from cvc90/Pi.Alert-Fix-Reverse-Proxy-settings.php
Fix "saveSettings" function in settings.php for reverse proxies
2023-09-12 20:08:04 +00:00
Carlos V
64da64105e Update README_DE.md
Updated the file with the latest news in the README.md file
2023-09-12 19:15:24 +02:00
Carlos V
3e448b123b Create README_DE.md
Created file "README_DE.md", which is a copy of the file "README.md" but translated into German.
2023-09-12 19:08:04 +02:00
Carlos V
bedbebbe04 Update README.md
Removed "Community translations of this file" in footer
2023-09-12 18:40:06 +02:00
Carlos V
4b3d876fbd Update README.md
Added flag in subtitle translations
2023-09-12 18:37:36 +02:00
Carlos V
d52709cb72 Update README.md
Added flag in subtitle translations
Added American flag in subtitle translations
Added German flag in subtitle translations
Fixed style in subtitle translations
2023-09-12 18:36:45 +02:00
Carlos V
ed53e59a00 Update README_ES.md
Fixed style in subtitle translations
2023-09-12 18:33:05 +02:00
Carlos V
0fcf089d39 Update README_ES.md
Added flag in subtitle translations
Added American flag in subtitle translations
Added German flag in subtitle translations
Fixed style in subtitle translations
2023-09-12 18:31:26 +02:00
Carlos V
25abc1b59b Update README_ES.md
Updated the file with the latest news in the README.md file
2023-09-12 18:06:01 +02:00
Carlos V
516eef0431 Update config.json
"CMD" function is corrected by adding {s-quote} in "default_value"
2023-09-12 16:30:13 +02:00
Carlos V
5df5bdef59 Update settings.php
The "saveSettings" function is corrected by changing the relative url to an absolute url so that it works correctly with reverse proxies.
2023-09-12 16:08:32 +02:00
Jokob-sk
4eddad5bf4 new version email template 2023-09-12 21:44:20 +10:00
Jokob-sk
794bfcc25c #424 work - network page 2023-09-12 21:11:36 +10:00
Jokob-sk
0f56f06937 #433, 435 work - handle empty in DHCPLSS, email templates fixes 2023-09-12 20:32:09 +10:00
Jokob-sk
78a87c4ed0 pihole #418 work 2023-09-11 10:18:01 +10:00
Jokob-sk
af41eed26c devices status badge #428 work 2023-09-11 08:07:28 +10:00
Jokob-sk
5169ac32a1 dhcplss #420 work 2023-09-11 08:00:02 +10:00
Jokob-sk
1e7c50b0fe Merge branch 'main' of https://github.com/jokob-sk/Pi.Alert 2023-09-11 06:59:41 +10:00
Jokob-sk
31f7521501 docs 2023-09-11 06:59:33 +10:00
jokob-sk
a29e700b83 Merge pull request #427 from cvc90/Pi.Alert-Fix-pialert_common.js
Pi.Alert - Fix pialert_common.js
2023-09-10 20:34:20 +00:00
jokob-sk
04c45bd39f Merge pull request #423 from D3SOX/patch-1
fix(translation): correct 'don not' 😁 @KrunchMuffin lol
2023-09-10 20:33:37 +00:00
jokob-sk
524bf1f676 Merge pull request #429 from cvc90/Pi.Alert-Fixed-json-German-language
Pi.Alert - Fixed German language problem in .json file
2023-09-10 20:31:59 +00:00
Carlos V
ee63f3fe0d Update de_de.json
Fixed blank spaces
Fixed .json style
Fixed a bug in the variable "Systeminfo_General_Date2"
2023-09-10 20:50:12 +02:00
Carlos V
295db87113 Update pialert_common.js
Fix url in initDeviceListAll_JSON() function
2023-09-10 20:04:32 +02:00
Nico
1f54292fbc fix(translation): correct 'don not' 2023-09-10 15:44:47 +02:00
Jokob-sk
eea4e2642c CSV import column order fix 2023-09-10 18:41:53 +10:00
Jokob-sk
8b81501b44 cleanup 2023-09-10 17:56:43 +10:00
Jokob-sk
148f3198ce ignore_plugin, cleanup + docs 2023-09-10 08:41:46 +10:00
Jokob-sk
b7417a07ad cleanup + docs 2023-09-09 20:36:00 +10:00
Jokob-sk
844311f4e8 dev details refactoring v0.2 2023-09-09 09:32:04 +10:00
jokob-sk
da45606f64 Merge pull request #417 from cvc90/Pi.Alert-New-Nslookup-Tool
Pi.Alert - Added new tool "nslookup" in the "Tools" tab
2023-09-08 21:23:12 +00:00
jokob-sk
cf0cc4cc17 Merge pull request #416 from cvc90/Pi.Alert-Fixes-CSV-Backup-Plugin-Translations-v2
Pi.Alert - Fixes CSV Backup (Plugin) translations v2
2023-09-08 21:21:13 +00:00
Carlos V
edd8fd0fbc Update de_de.json
Added translation variable "DevDetail_Tab_Tools_Nslookup_Title"
Added translation variable "DevDetail_Tab_Tools_Nslookup_Description"
Added translation variable "DevDetail_Tab_Tools_Nslookup_Start"
Added translation variable "DevDetail_Tab_Tools_Nslookup_Error"
2023-09-08 18:45:38 +02:00
Carlos V
05c3613d3f Update es_es.json
Added translation variable "DevDetail_Tab_Tools_Nslookup_Title"
Added translation variable "DevDetail_Tab_Tools_Nslookup_Description"
Added translation variable "DevDetail_Tab_Tools_Nslookup_Start"
Added translation variable "DevDetail_Tab_Tools_Nslookup_Error"
2023-09-08 18:45:02 +02:00
Carlos V
ebbbebf352 Update en_us.json
Added translation variable "DevDetail_Tab_Tools_Nslookup_Title"
Added translation variable "DevDetail_Tab_Tools_Nslookup_Description"
Added translation variable "DevDetail_Tab_Tools_Nslookup_Start"
Added translation variable "DevDetail_Tab_Tools_Nslookup_Error"
2023-09-08 18:44:23 +02:00
Carlos V
ea478ae5e6 Create nslookup.php
Created file "nslookup.php" to perform the necessary functions of the "nslookup" command in the "Tools" tab
2023-09-08 18:35:45 +02:00
Carlos V
be57534b2a Update deviceDetailsTools.php
Added new nslookup section
Added new nslookup function
2023-09-08 18:32:18 +02:00
Carlos V
7c11f0fa38 Update config.json
fix tag <code>
2023-09-08 18:15:16 +02:00
Jokob-sk
a3b05c3760 dev details refactoring v0.1 2023-09-08 08:03:00 +10:00
jokob-sk
04a91b2bb7 Merge pull request #415 from cvc90/Pi.Alert-Fixes-CSV-Backup-Plugin-Translations
Pi.Alert - Fixes CSV Backup (Plugin) translations
2023-09-07 20:15:58 +00:00
Carlos V
1d81a20e6f Update config.json
Added Spanish translation
Added German translation
2023-09-07 19:08:05 +02:00
Carlos V
989ec68666 Update README_ES.md
Removed "." from translation title
2023-09-07 18:45:27 +02:00
Carlos V
5401e2729b Update README_ES.md
Updated text link to translations
2023-09-07 18:44:28 +02:00
Carlos V
5c6bb2fa0d Update README.md
Updated text link to translations
2023-09-07 18:43:54 +02:00
Carlos V
858e02f7c6 Create README_DE.md
Created the README_DE.md file (front/plugins/csv_backup) which is a version of README.md (front/plugins/csv_backup) translated into Deutsch.
2023-09-07 18:41:20 +02:00
Carlos V
dd65bd5744 Update README_ES.md
Added link to translated version in English
Added link to translated version in German
2023-09-07 18:31:29 +02:00
Carlos V
6ba1bdb7de Update README.md
Added link to translated version in Spanish
Added link to translated version in German
2023-09-07 18:26:01 +02:00
Carlos V
b7e3263b38 Create README_ES.md
Created the README_ES.md file (front/plugins/csv_backup) which is a version of README.md (front/plugins/csv_backup) translated into Spanish.
2023-09-07 17:30:38 +02:00
Jokob-sk
4830d54229 CSV backup work 2023-09-07 22:46:42 +10:00
Jokob-sk
85911c8ff4 Merge branch 'main' of https://github.com/jokob-sk/Pi.Alert 2023-09-07 08:09:46 +10:00
Jokob-sk
296891ca67 CSV backup work 2023-09-07 08:09:25 +10:00
jokob-sk
7d0762ff35 Merge pull request #414 from cvc90/Pi.Alert-New-Tracert-Tool
Added new tool "Tracert" in the "Tools" tab
2023-09-06 20:59:16 +00:00
jokob-sk
127d9e6196 Merge pull request #413 from cvc90/Pi.Alert-fixes-improvements-systeminfo-v6
Pi.Alert fixes improvements System Info v6
2023-09-06 20:57:51 +00:00
Carlos V
6c58281c2e Update Dockerfile
Updated new Tracert tool in "apt install"
2023-09-06 19:33:20 +02:00
Carlos V
beeeb4bd33 Update Dockerfile
Added new Tracert tool in "apt install"
2023-09-06 19:04:45 +02:00
Carlos V
9aa1462e17 Update de_de.json
Updated translation variable "DevDetail_Tab_Tools_Traceroute_Description"
2023-09-06 18:51:25 +02:00
Carlos V
6637d9c954 Update de_de.json
Updated translation variable "DevDetail_Tab_Tools_Traceroute_Description"
2023-09-06 18:50:25 +02:00
Carlos V
f1344f16fa Update en_us.json
Updated translation variable "DevDetail_Tab_Tools_Traceroute_Description"
2023-09-06 18:48:03 +02:00
Carlos V
abbaa1c11f Update es_es.json
Updated translation variable "DevDetail_Tab_Tools_Traceroute_Description"
2023-09-06 18:45:38 +02:00
Carlos V
87a10a721b Create traceroute.php
Created file "traceroute.php" to perform the necessary functions of the "Tracert" command in the "Tools" tab
2023-09-06 18:34:19 +02:00
Carlos V
2230df591e Update de_de.json
Added translation variable "DevDetail_Tab_Tools_Traceroute_Title"
Added translation variable "DevDetail_Tab_Tools_Traceroute_Description"
Added translation variable "DevDetail_Tab_Tools_Traceroute_Start"
Added translation variable "DevDetail_Tab_Tools_Traceroute_Error"
2023-09-06 18:27:58 +02:00
Carlos V
2898805514 Update es_es.json
Added translation variable "DevDetail_Tab_Tools_Traceroute_Title"
Added translation variable "DevDetail_Tab_Tools_Traceroute_Description"
Added translation variable "DevDetail_Tab_Tools_Traceroute_Start"
Added translation variable "DevDetail_Tab_Tools_Traceroute_Error"
2023-09-06 18:27:01 +02:00
Carlos V
c906ccda91 Update en_us.json
Added translation variable "DevDetail_Tab_Tools_Traceroute_Title"
Added translation variable "DevDetail_Tab_Tools_Traceroute_Description"
Added translation variable "DevDetail_Tab_Tools_Traceroute_Start"
Added translation variable "DevDetail_Tab_Tools_Traceroute_Error"
2023-09-06 18:25:58 +02:00
Carlos V
d1101aee47 Update deviceDetails.php
Added h5 tag for description in "Tracert" tool in "Tools"
2023-09-06 18:14:12 +02:00
Carlos V
39157360ef Update deviceDetails.php
Added new tool in the "Tools" tab
2023-09-06 18:12:22 +02:00
Carlos V
e4a34ecd2b Update de_de.json
Updated translation variable "Systeminfo_System_Running_Processes"
2023-09-06 17:06:57 +02:00
Carlos V
d444ad31ce Update en_us.json
Updated translation variable "Systeminfo_System_Running_Processes"
2023-09-06 17:06:39 +02:00
Carlos V
06a11f43ea Update es_es.json
Updated translation variable "Systeminfo_System_Running_Processes"
2023-09-06 17:06:25 +02:00
Carlos V
fdcf12fb86 Update systeminfo.php
Changed translation variable "Systeminfo_Running_Processes" to "Systeminfo_System_Running_Processes"
2023-09-06 17:02:57 +02:00
Carlos V
59682f6840 Update de_de.json
Added translation variable "Systeminfo_System_Running_Processes"
2023-09-06 17:01:39 +02:00
Carlos V
949052d00c Update es_es.json
Added translation variable "Systeminfo_System_Running_Processes"
2023-09-06 17:01:10 +02:00
Carlos V
e7fd39112e Update en_us.json
Added translation variable "Systeminfo_System_Running_Processes"
2023-09-06 16:59:50 +02:00
Carlos V
028c4a9cb4 Update systeminfo.php
Cleaning and fixing code in the "Storage usage" section
2023-09-06 16:51:19 +02:00
Carlos V
274f954b8a Update systeminfo.php
Code cleanup in the "Storage" section
2023-09-06 16:38:45 +02:00
Carlos V
e44bceaed5 Update systeminfo.php
Fix  "Network Hardware"
2023-09-06 16:33:38 +02:00
Carlos V
9fe8d8a3b4 Update systeminfo.php
New comments in "General stats"
2023-09-06 16:24:37 +02:00
Carlos V
ab59d529ec Update systeminfo.php
New comments in "System stats"
2023-09-06 16:23:15 +02:00
Carlos V
7581e4f63a Update systeminfo.php
Added new function "system_process_count" to see the number of processes executed in the system
2023-09-06 16:20:13 +02:00
Carlos V
8f15579136 Update systeminfo.php
Added new comments in functions
Changed the order of functions
2023-09-06 16:16:45 +02:00
Carlos V
2b9323ac98 Update systeminfo.php
Added new function "system_process_count" to see the number of processes executed in the system
2023-09-06 15:45:11 +02:00
Jokob-sk
8676b7ccde Add cur_ScanMethod & fix Plugins display name in lists 2023-09-06 22:03:28 +10:00
Jokob-sk
cd43935656 Timeout for logging to file 2023-09-06 07:10:27 +10:00
jokob-sk
f6a08fc3d4 Merge pull request #412 from cvc90/Pi.Alert-Fixes-URL-Maintenance
Url fixes for the ImportCSV and ExportCSV functions in maintenance.php
2023-09-05 20:21:40 +00:00
jokob-sk
166af4ce8d Merge pull request #411 from cvc90/Pi.Alert-Fixes-Nmap-Scan-Plugin-Translations
Fixes in the Spanish translations of the Nmap Scan plugin
2023-09-05 20:20:42 +00:00
jokob-sk
7943977ff5 Merge pull request #410 from cvc90/Pi.Alert-Adds-SpeedTest-deviceDetails.php
Pi.alert adds SpeedTest in devicedetails.php
2023-09-05 20:19:57 +00:00
Carlos V
2e407d9e8f Update maintenance.php
Fixed URL of ExportCSV function
2023-09-05 17:33:47 +02:00
Carlos V
04cf16cc94 Update maintenance.php
Fixed URL of ImportCSV function
2023-09-05 17:28:22 +02:00
Carlos V
fa6df3cff8 Update config.json
Fixes in Spanish translations
2023-09-05 16:46:59 +02:00
Carlos V
0476689c25 Update de_de.json
Added translation variable "DevDetail_Tab_Tools_Internet_Description"
Changed translation variable for "DevDetail_Internet_Speedtest" "DevDetail_Tab_Tools_Internet_Speedtest_Title"
Changed translation variable from "DevDetail_Internet_Speedtest_Start" to "DevDetail_Tab_Tools_Internet_Speedtest_Start"
2023-09-05 15:54:02 +02:00
Carlos V
ce2d955c86 Update es_es.json
Added translation variable "DevDetail_Tab_Tools_Internet_Description"
Changed translation variable for "DevDetail_Internet_Speedtest" "DevDetail_Tab_Tools_Internet_Speedtest_Title"
Changed translation variable from "DevDetail_Internet_Speedtest_Start" to "DevDetail_Tab_Tools_Internet_Speedtest_Start"
2023-09-05 15:51:06 +02:00
Carlos V
d62a1f077a Update en_us.json
Added translation variable "DevDetail_Tab_Tools_Internet_Description"
Changed translation variable for "DevDetail_Internet_Speedtest" "DevDetail_Tab_Tools_Internet_Speedtest_Title"
Changed translation variable from "DevDetail_Internet_Speedtest_Start" to "DevDetail_Tab_Tools_Internet_Speedtest_Start"
2023-09-05 15:49:01 +02:00
Carlos V
14a1d61bb1 Update deviceDetails.php
Added <br> tag in the "Tools" tab in the "Internet info" section
Added new tool "SpeedTest" in the "Tools" tab (This tool is only shown when the mac is equal to the Internet)
Added new translation variable "DevDetail_Tab_Tools_Speedtest_Title" in the "SpeedTest" tool in the "Tools" tab
Added new translation variable "DevDetail_Tab_Tools_Speedtest_Description" in the "SpeedTest" tool in the "Tools" tab
Added new translation variable "DevDetail_Tab_Tools_Speedtest_Start" in the "SpeedTest" tool in the "Tools" tab
2023-09-05 15:41:39 +02:00
Jokob-sk
069522febe mylog timeout, merges 2023-09-05 07:53:47 +10:00
jokob-sk
28df1e6aaf Merge pull request #409 from cvc90/Pi.Alert-Fixes-deviceDetails.php
Pi.alert fixes in deviceDetails.php
2023-09-04 21:13:00 +00:00
jokob-sk
bdcef1a37e Merge pull request #408 from cvc90/Pi.Alert-PiAlert-Translation
New translation in PiAlert section
2023-09-04 21:11:50 +00:00
jokob-sk
1580810597 Merge pull request #407 from cvc90/Pi.Alert-Dockerfiles-Translation
New translation in dockerfiles section
2023-09-04 21:11:04 +00:00
Carlos V
d4c724e79c Delete front/php/templates/internetinfo.php 2023-09-04 18:48:47 +02:00
Carlos V
361952ec5a Create internetinfo.php
Created file "internetinfo.php" to perform the necessary functions of collecting information about the Internet connection.
2023-09-04 18:48:21 +02:00
Carlos V
c2a4713024 Update de_de.json
Added translation variable "DevDetail_Tab_Tools_Internet_Info_Title"
Added translation variable "DevDetail_Tab_Tools_Internet_Info_Description"
Added translation variable "DevDetail_Tab_Tools_Tools_Internet_Info_Start"
Added translation variable "DevDetail_Tab_Tools_Internet_Info_Error"
2023-09-04 18:36:46 +02:00
Carlos V
8c60e98852 Update es_es.json
Added translation variable "DevDetail_Tab_Tools_Internet_Info_Title"
Added translation variable "DevDetail_Tab_Tools_Internet_Info_Description"
Added translation variable "DevDetail_Tab_Tools_Tools_Internet_Info_Start"
Added translation variable "DevDetail_Tab_Tools_Internet_Info_Error"
2023-09-04 18:35:03 +02:00
Carlos V
10371e8411 Update en_us.json
Added translation variable "DevDetail_Tab_Tools_Internet_Info_Title"
Added translation variable "DevDetail_Tab_Tools_Internet_Info_Description"
Added translation variable "DevDetail_Tab_Tools_Tools_Internet_Info_Start"
Added translation variable "DevDetail_Tab_Tools_Internet_Info_Error"
2023-09-04 18:33:15 +02:00
Carlos V
053bcff11c Update internetinfo.php
Updated variable "DevDetail_Tab_Internet_Info_Error"
to "DevDetail_Tab_Tool_Internet_Info_Error"
2023-09-04 18:26:24 +02:00
Carlos V
841bd16701 Create internetinfo.php
Created file "internetinfo.php" to perform the necessary functions of collecting information about the Internet connection.
2023-09-04 18:15:57 +02:00
Carlos V
657e6e2f8d Update deviceDetails.php
Fixed the "internetinfo" function in the "Tools" tab
Added h5 tag for description of the "internetinfo" function
Added translation variable "DevDetail_Tab_Tools_Internet_Info_Description"
Modified translation variable from "DevDetail_Tools_Internet_Info_Title" to "DevDetail_Tab_Tools_Internet_Info_Title"
Modified translation variable from "DevDetail_Tools_Internet_Info_Start" to "DevDetail_Tab_Tools_Internet_Info_Start"
2023-09-04 18:12:40 +02:00
Carlos V
89ea7c02c6 Create README_ES.md
Created the README_ES.md file (pialert) which is a version of README.md (pialert) translated into Spanish.
2023-09-04 17:25:24 +02:00
Carlos V
297b9158e1 Create README_ES.md
Created the README_ES.md file (dockerfiles) which is a version of README.md (dockerfiles) translated into Spanish.
2023-09-04 16:53:58 +02:00
Jokob-sk
0ab1f9e19a SMTP timeout, threshold fixes 2023-09-03 12:04:22 +10:00
Jokob-sk
25b54d1f62 UNIFI, undiscoverables, docs work 2023-09-02 13:30:19 +10:00
Jokob-sk
854ef20826 NMAP + docs work 2023-09-02 09:25:22 +10:00
Jokob-sk
bed4e6a152 readme 2023-09-01 22:15:21 +10:00
Jokob-sk
a379054f5b Plugins code cleanup + refactoring 0.2 2023-09-01 22:03:32 +10:00
Jokob-sk
b5e933ba12 Plugins code cleanup 0.1 2023-09-01 08:11:28 +10:00
Jokob-sk
9afed6e43b Plugins code cleanup 0.1 2023-09-01 08:04:14 +10:00
Jokob-sk
015ce23fe2 PIHOLE, VLAN docs fixes 2023-09-01 07:10:28 +10:00
Jokob-sk
6dcf09a2f6 NMAP, PHOLUS, PIHOLE, DB upgrade + cleanup, docs fixes 2023-08-31 08:10:29 +10:00
jokob-sk
7391df9f7b Merge pull request #403 from tuhriel/hotfix_unifi_online_state
Hotfix unifi online state - Thanks @tuhriel 🙏
2023-08-30 20:43:37 +00:00
stefan-linux
6032667ea7 removed changes to compose file 2023-08-30 14:22:44 +02:00
stefan-linux
8ae8d6aa27 set logging to INFO and updated log message 2023-08-30 14:06:48 +02:00
stefan-linux
b281652009 changed unifi_import to only export online devices 2023-08-30 13:18:53 +02:00
pi@skippy
82e9a4a8ef Merge remote-tracking branch 'upstream/main' 2023-08-30 12:55:33 +02:00
Jokob-sk
f9baa603f4 NMAP plugin conversion v0.3 2023-08-30 08:03:02 +10:00
pi@skippy
f1a553aac6 updated fork from original 2023-08-29 16:54:05 +02:00
jokob-sk
61df3ec581 Merge pull request #401 from tuhriel/unifi-scanner-bugfix
enable unifi scanner to show online state of devices - thanks so much @tuhriel 🙏
2023-08-27 20:50:56 +00:00
jokob-sk
8ffc07a110 Merge branch 'main' into unifi-scanner-bugfix 2023-08-27 20:50:00 +00:00
jokob-sk
a794170adf Merge pull request #400 from andreasbrett/patch-1
UniFi: bugfix and new feature - thanks to @andreasbrett 🙏
2023-08-27 20:47:40 +00:00
jokob-sk
6c28c14e7c Merge pull request #399 from cvc90/Pi.Alert-Split-Nmap-Tool-tabs-deviceDetails
Split "Nmap" and "tools" tabs in deviceDetails.php
2023-08-27 20:44:42 +00:00
Jokob-sk
a1b17a238b NMAP plugin conversion v0.2 2023-08-28 06:44:19 +10:00
tuhriel
53f41a9434 reduced script debug level to info 2023-08-27 17:14:47 +02:00
pi@skippy
2223050523 updated unifi_import to actually show online state, added some german translation to config 2023-08-27 16:53:35 +02:00
Andreas Brett
eb7282201b typo
parameter is `sites` not `site`
2023-08-27 14:14:55 +02:00
Andreas Brett
396416ad29 Update config.json 2023-08-27 14:07:36 +02:00
Andreas Brett
9c76c9f79c update parameters
- add verifyssl (should be an option to pass to pyunify.controller)
- remove protocol (not used in pyunify.controller)
2023-08-27 13:53:49 +02:00
Jokob-sk
c4adb03c50 NMAP plugin conversion v0.2 2023-08-27 19:11:59 +10:00
Jokob-sk
1d8beb9222 Resolved merge conflict in es_es.json 2023-08-27 18:48:30 +10:00
Jokob-sk
e6644ad3ec NMAP plugin conversion v0.1 2023-08-27 18:45:07 +10:00
Carlos V
dce40cb9fb Update deviceDetails.php
Split content into Nmap and Tools tab
Added icon in "Nmap" tab
Added icon in "Tools" tab
2023-08-26 22:17:12 +02:00
Carlos V
d6cf983b93 Update deviceDetails.php
The Nmap and Tools section has been divided into "tab control".

Nmap tab is now only shown if it is a device that contains MAC address
2023-08-26 22:01:56 +02:00
jokob-sk
0b350b686e Merge pull request #397 from cvc90/Pi.Alert-Multiple-translation-fixes-settings
Pi.alert multiple translation fixes in settings
2023-08-26 19:53:58 +00:00
jokob-sk
fa7d2534bf Merge pull request #398 from cvc90/Pi.Alert-New-Pholus-Scan-Plugin-Translations-V2
Pi.alert new pholus scan plugin translations v2
2023-08-26 19:53:10 +00:00
Carlos V
3a2afa4bf4 Update config.json
Updated string "description" in Spanish
2023-08-26 21:15:55 +02:00
Carlos V
57c9c5b23f Update config.json
Updated config.json file with new Spanish translation variables.
2023-08-26 21:11:26 +02:00
Carlos V
facc6619e2 Update es_es.json
Updated translation variable "DDNS_USER_description"
2023-08-26 20:38:03 +02:00
Carlos V
6b0a65c427 Update en_us.json
Updated translation variable "DDNS_ACTIVE_description"
Updated translation variable "DDNS_DOMAIN_description"
Updated translation variable "DDNS_USER_description"
Updated translation variable "DDNS_PASSWORD_description"
2023-08-26 20:37:04 +02:00
Carlos V
fb489adc66 Update es_es.json
Updated translation variable "DDNS_PASSWORD_description"
2023-08-26 20:34:26 +02:00
Carlos V
45c03aee45 Update es_es.json
Added translation variable "NMAP_TIMEOUT_name"
2023-08-26 20:26:36 +02:00
Carlos V
41cfdcdc00 Update es_es.json
Updated translation variable "DDNS_ACTIVE_description"
Updated translation variable "DDNS_DOMAIN_description"
Updated translation variable "DDNS_USER_description"
Updated translation variable "DDNS_PASSWORD_description"
2023-08-26 20:23:40 +02:00
Carlos V
e14475afb0 Update es_es.json
Updated translation variable "NTFY_HOST_name"
2023-08-26 20:04:30 +02:00
Carlos V
64a3c348bd Update es_es.json
Updated translation variable "APPRISE_HOST_name"
Updated translation variable "APPRISE_HOST_description"
2023-08-26 20:02:42 +02:00
Carlos V
c57513618b Update es_es.json
Added translation variables "APPRISE_SIZE_name"
Added translation variables "APPRISE_SIZE_description"
2023-08-26 19:52:04 +02:00
Jokob-sk
b114de1fd9 Removal of DHCP_Leases and PiHole DB tables 2023-08-26 12:31:49 +10:00
jokob-sk
ed0276b61e Merge pull request #380 from cvc90/Pi.Alert-Fix-README_ES.md
Updating the file README_ES.md to be up to date with the English version
2023-08-25 21:08:39 +00:00
jokob-sk
6998f11967 Merge pull request #381 from cvc90/Pi.Alert-New-Arp-Scan-Plugin-Translations
Created README_ES.md (front/plugins/arp_scan)
2023-08-25 21:08:21 +00:00
jokob-sk
956fcf65ed Merge pull request #390 from cvc90/Pi.Alert-New-Snmp-Discovery-Plugin-Translations
Created README_ES.md (front/plugins/snmp_discovery)
2023-08-25 21:08:09 +00:00
jokob-sk
e32844d2f2 Merge pull request #386 from cvc90/Pi.Alert-New-Nmap-Services-Plugin-Translations
Created README_ES.md (front/plugins/nmap_services)
2023-08-25 21:07:58 +00:00
jokob-sk
3dca9da5e3 Merge pull request #394 from cvc90/Pi.Alert-Translation-Loading-deviceDetails.php
Translation "Loading/Spinner" in deviceDetails.php
2023-08-25 21:07:47 +00:00
jokob-sk
5a060722a1 Merge pull request #392 from cvc90/Pi.Alert-New-Unifi-Import-Plugin-Translations
Created README_ES.md (front/plugins/unifi_import)
2023-08-25 21:07:18 +00:00
jokob-sk
f3dac743d1 Merge pull request #387 from cvc90/Pi.Alert-New-Pholus-Scan-Plugin-Translations
Created README_ES.md (front/plugins/pholus_scan)
2023-08-25 21:07:05 +00:00
jokob-sk
a07ed7ee85 Merge pull request #385 from cvc90/Pi.Alert-New-Newdev-Template-Plugin-Translations
Created README_ES.md (front/plugins/newdev_template)
2023-08-25 21:06:54 +00:00
jokob-sk
d54722cf03 Merge pull request #384 from cvc90/Pi.Alert-New-Known-Template-Plugin-Translations
Created README_ES.md (front/plugins/known_template)
2023-08-25 21:06:42 +00:00
jokob-sk
ba09964eaa Merge pull request #383 from cvc90/Pi.Alert-New-DHCP-Servers-Plugin-Translations
Created README_ES.md (front/plugins/dhcp_servers)
2023-08-25 21:06:31 +00:00
jokob-sk
c0f73a8112 Merge pull request #382 from cvc90/Pi.Alert-New-DHCP-Leases-Plugin-Translations
Created README_ES.md (front/plugins/dhcp_leases)
2023-08-25 21:06:16 +00:00
jokob-sk
06b6ef2889 Merge pull request #389 from cvc90/Pi.Alert-New-Set-Password-Plugin-Translations
Created README_ES.md (front/plugins/set_password)
2023-08-25 21:06:06 +00:00
jokob-sk
602f0648e0 Merge pull request #388 from cvc90/Pi.Alert-New-Pihole-Scan-Plugin-Translations
Created README_ES.md (front/plugins/pihole_scan)
2023-08-25 21:05:54 +00:00
jokob-sk
7e2f05866c Merge pull request #391 from cvc90/Pi.Alert-New-Undiscoverables-Plugin-Translations
Created README_ES.md (front/plugins/undiscoverables)
2023-08-25 21:05:43 +00:00
jokob-sk
acfc48c82c Merge pull request #393 from cvc90/Pi.Alert-New-Website-Monitor-Plugin-Translations
Created README_ES.md (front/plugins/website_monitor)
2023-08-25 21:05:32 +00:00
Carlos V
2b8257d866 Update de_de.json
Added translation variable "DevDetail_Loading"
2023-08-25 18:44:25 +02:00
Carlos V
a3bcb3c491 Update en_us.json
Added translation variable "DevDetail_Loading"
2023-08-25 18:43:29 +02:00
Carlos V
658b936a01 Update es_es.json
Added translation variable "DevDetail_Loading"
2023-08-25 18:42:23 +02:00
Carlos V
9b1443423e Update deviceDetails.php
Added "DevDetail_Loading" translation variable in various sections
2023-08-25 18:39:45 +02:00
Carlos V
4848ba78d9 Created README_ES.md (front/plugins/website_monitor)
Created the README_ES.md file (front/plugins/website_monitor) which is a version of README.md (front/plugins/website_monitor) translated into Spanish.
2023-08-25 18:23:51 +02:00
Carlos V
d16d43de9d Created README_ES.md (front/plugins/unifi_import)
Created the README_ES.md file (front/plugins/unifi_import) which is a version of README.md (front/plugins/unifi_import) translated into Spanish.
2023-08-25 18:19:37 +02:00
Carlos V
fa36fb788c Created README_ES.md (front/plugins/undiscoverables)
Created the README_ES.md file (front/plugins/undiscoverables) which is a version of README.md (front/plugins/undiscoverables) translated into Spanish.
2023-08-25 18:12:52 +02:00
Carlos V
276214da98 Created README_ES.md (front/plugins/snmp_discovery)
Created the README_ES.md file (front/plugins/snmp_discovery) which is a version of README.md (front/plugins/snmp_discovery) translated into Spanish.
2023-08-25 18:07:47 +02:00
Carlos V
1c94328dbd Created README_ES.md (front/plugins/set_password)
Created the README_ES.md file (front/plugins/set_password) which is a version of README.md (front/plugins/set_password) translated into Spanish.
2023-08-25 18:00:54 +02:00
Carlos V
7f51fdcfa1 Created README_ES.md (front/plugins/pihole_scan)
Created the README_ES.md file (front/plugins/pihole_scan) which is a version of README.md (front/plugins/pihole_scan) translated into Spanish.
2023-08-25 17:54:18 +02:00
Carlos V
541cb2e1b1 Created README_ES.md (front/plugins/pholus_scan)
Created the README_ES.md file (front/plugins/pholus_scan) which is a version of README.md (front/plugins/pholus_scan) translated into Spanish.
2023-08-25 17:51:09 +02:00
Carlos V
2396f226dd Created README_ES.md (front/plugins/nmap_services)
Created the README_ES.md file (front/plugins/nmap_services) which is a version of README.md (front/plugins/nmap_services) translated into Spanish.
2023-08-25 17:45:44 +02:00
Carlos V
58c26ea055 Created README_ES.md (front/plugins/newdev_template)
Created the README_ES.md file (front/plugins/newdev_template) which is a version of README.md (front/plugins/newdev_template) translated into Spanish.
2023-08-25 17:42:05 +02:00
Carlos V
413f869424 Created README_ES.md (front/plugins/known_template)
Created the README_ES.md file (front/plugins/known_template) which is a version of README.md (front/plugins/known_template) translated into Spanish.
2023-08-25 17:38:14 +02:00
Carlos V
e1ab0b3ef7 Created README_ES.md (front/plugins/dhcp_servers)
Created the README_ES.md file (front/plugins/dhcp_servers) which is a version of README.md (front/plugins/dhcp_servers) translated into Spanish.
2023-08-25 17:30:32 +02:00
Carlos V
0cb7b6c96a Created README_ES.md (front/plugins/dhcp_leases)
Created the README_ES.md file (front/plugins/dhcp_leases) which is a version of README.md (front/plugins/dhcp_leases) translated into Spanish.
2023-08-25 17:25:11 +02:00
Carlos V
3f0c899f17 Created README_ES.md (front/plugins/arp_scan)
Created the README_ES.md file (front/plugins/arp_scan
) which is a version of README.md (front/plugins/arp_scan
) translated into Spanish.
2023-08-25 17:07:43 +02:00
Carlos V
a25efc6dd6 Update README_ES.md
Updating the file to be up to date with the English version
2023-08-25 16:51:48 +02:00
Jokob-sk
8038fc9472 arp-scan mylog 2023-08-25 08:14:06 +10:00
Jokob-sk
17c3dc4914 Docs cleanup 2023-08-25 07:40:44 +10:00
Jokob-sk
2e53da32d1 Pholus cleanup + conversion v0.4 2023-08-25 07:16:46 +10:00
Jokob-sk
57aefdf332 Pholus cleanup + conversion v0.4 2023-08-25 07:07:18 +10:00
jokob-sk
9edbe8affc Merge pull request #379 from jokob-sk/revert-366-Pi.Alert-New-Functions-in-Tools-tab
Revert "Pi.alert new features in deviceDetails.php (tools tab) and new translations"
2023-08-24 20:55:56 +00:00
jokob-sk
033dacf8be Revert "Pi.alert new features in deviceDetails.php (tools tab) and new translations" 2023-08-25 06:55:40 +10:00
jokob-sk
b82246595f Merge pull request #366 from cvc90/Pi.Alert-New-Functions-in-Tools-tab
Pi.alert new features in deviceDetails.php (tools tab) and new translations
2023-08-24 20:49:53 +00:00
Jokob-sk
277950fc51 convert pholus to plugin v0.3 2023-08-25 06:48:54 +10:00
Jokob-sk
0261b8e210 convert pholus to plugin v0.3 2023-08-24 15:57:20 +10:00
Jokob-sk
445b4de69e convert pholus to plugin v0.2 2023-08-24 15:54:31 +10:00
Jokob-sk
3b60a3a1ae docs + convert pholus to plugin v0.1 2023-08-24 08:03:19 +10:00
jokob-sk
5103e2c229 Merge pull request #378 from cvc90/Pi.Alert-NEW-README_ES.md-Plugins
Pi.alert new file readme es.md (plugins)
2023-08-23 20:10:23 +00:00
Carlos V
e9dc7de2e8 Update README_ES.md
Added English version link
2023-08-23 17:58:48 +02:00
Carlos V
c7d04ddbcf Update README.md
Added link to see Spanish version
2023-08-23 17:57:11 +02:00
Carlos V
af5aecd127 Create README_ES.md
The "README_ES.md" file has been created ("README.md" file translated into Spanish)
2023-08-23 17:45:34 +02:00
Jokob-sk
ecc297a112 docs 2023-08-23 20:03:12 +10:00
Jokob-sk
1067211033 mac to device name JS function, translation DHCP leases fix 2023-08-23 20:00:59 +10:00
Jokob-sk
64c3de0450 test button settings fixes 2023-08-23 17:01:34 +10:00
Jokob-sk
20986852de arp_scan plugin update column + settings skip cache 2023-08-23 10:08:12 +10:00
Jokob-sk
2239aa6c25 breakup plugins.py 2023-08-23 09:32:46 +10:00
jokob-sk
908789230b Merge pull request #377 from cvc90/Pi.Alert-events.php-Translation-Spinner
Translation in text spinner in events.php
2023-08-22 20:14:54 +00:00
jokob-sk
eb74d7fc14 Merge pull request #376 from cvc90/Pi.Alert-Fix-deviceDetails.php-Button-DeleteEvents
Fixed translation of the "Delete Events" button
2023-08-22 20:14:35 +00:00
jokob-sk
519822c971 Merge pull request #375 from cvc90/Pi.Alert-Presence.php-Translation-Spinner
Translation in text "spinner" in presence.php
2023-08-22 20:14:21 +00:00
jokob-sk
9be6af6477 Merge pull request #374 from cvc90/Pi.Alert-UniFi-Import-Translation-Plugin
Translation of the plugin UniFi Import
2023-08-22 20:14:06 +00:00
jokob-sk
5838f8be95 Merge pull request #373 from cvc90/Pi.Alert-SNMP-Discovery-Translation-Plugin
Translation of the plugin SNMP Discovery
2023-08-22 20:13:54 +00:00
jokob-sk
da8098752e Merge pull request #372 from cvc90/Pi.Alert-DHCP-Leases-Translation-Plugin
Translation of the plugin DHCP Leases
2023-08-22 20:13:41 +00:00
jokob-sk
0fcd4502bd Merge pull request #371 from cvc90/Pi.Alert-Nmap-Translation-Plugin
Translation of the plugin Nmap Services
2023-08-22 20:13:29 +00:00
Carlos V
9e768f5be7 Update de_de.json
Added a new translation variable "Events_Loading"
2023-08-22 17:15:01 +02:00
Carlos V
50fa0677d9 Update es_es.json
Added a new translation variable "Events_Loading"
2023-08-22 17:14:23 +02:00
Carlos V
3641d2360e Update en_us.json
Added new translation variable "Events_Loading"
2023-08-22 17:13:40 +02:00
Carlos V
9eab7640c4 Update events.php to add new translation variable
Added translation variable in spinner text
2023-08-22 17:10:12 +02:00
Carlos V
8feb7c585f Update es_es.json
Added translation variable "DevDetail_button_DeleteEvents"
2023-08-22 17:01:05 +02:00
Carlos V
654efdc503 Update de_de.json
Added new translation variable "Presence_Loading"
2023-08-22 16:51:53 +02:00
Carlos V
46b01bcb93 Update es_es.json
Added new translation variable "Presence_Loading"
2023-08-22 16:51:13 +02:00
Carlos V
4895a61af3 Update en_us.json
Added new translation variable "Presence_Loading"
2023-08-22 16:50:15 +02:00
Carlos V
c820e2e8f5 Updated presence.php to add new translation variable
Added translation variable in spinner text
2023-08-22 16:41:42 +02:00
Carlos V
c9c7f0ada6 Added new Spanish translation in config.json (Plugin UniFi Import)
Added new variables for the Spanish translation
2023-08-22 16:20:03 +02:00
Carlos V
3069e508f5 Added new Spanish translation in config.json (Plugin SNMP Discovery)
Added new variables for the Spanish translation
2023-08-22 15:40:19 +02:00
Carlos V
62601fc4ad Added new Spanish translation in config.json (Plugin DHCP Leases)
Added new variables for the Spanish translation
2023-08-22 15:09:32 +02:00
Carlos V
5d05ede3e6 Added new Spanish translation in config.json
Added new variables for the Spanish translation
2023-08-22 14:38:08 +02:00
Jokob-sk
c3982bf747 webmon fixes + breakup plugins.py 2023-08-22 14:50:21 +10:00
Carlos V
ef97013051 Update deviceDetails.php
Fix function "reloadTab()"
2023-08-21 19:59:59 +02:00
Carlos V
07d37cd9b0 Update deviceDetails.php
Fixed missing php start tag in "Nmap" menu option
2023-08-21 19:47:15 +02:00
Carlos V
6b3bed69d3 Update deviceDetails.php
Removed blank spaces
2023-08-21 19:41:28 +02:00
Carlos V
f99f45505d Update deviceDetails.php
Removed blank spaces
2023-08-21 19:37:13 +02:00
Carlos V
7caf1f841a Update deviceDetails.php
Update target from "panTools" to "panNmap" for function loadNmap();
2023-08-21 19:32:45 +02:00
Carlos V
8ea45f5295 Update deviceDetails.php
Added "Nmap" in the content of the "Nmap" tab
Removed "Nmap" in the content of the "Tools" tab
2023-08-21 19:30:04 +02:00
Carlos V
a57669a6e0 Update deviceDetails.php
Added "Nmap" tab (Only shown in case the mac is not "Internet")
2023-08-21 19:09:04 +02:00
Carlos V
80a0b889c1 Update deviceDetails.php
Added "Nmap" tab
2023-08-21 19:07:26 +02:00
Jokob-sk
57f508f15c plugins fixes + breakup plugins.py 2023-08-21 17:28:31 +10:00
Jokob-sk
b732a87409 Report fix + missing-in-last-scan functionality 2023-08-21 07:57:39 +10:00
Jokob-sk
c2b97cbabd Report fix + missing-in-last-scan functionality 2023-08-21 07:56:18 +10:00
Jokob-sk
645e779d7c Report plugins fix 2023-08-21 07:24:25 +10:00
jokob-sk
b6a9c788bf Merge pull request #369 from cvc90/Pi.Alert-PiHole-Translation-Plugin
Pihole plugin translation
2023-08-20 20:03:08 +00:00
jokob-sk
8bd5c59186 Merge pull request #370 from cvc90/Pi.Alert-Rogue-DHCP-Translation-Plugin
Rogue DHCP plugin translation
2023-08-20 20:02:51 +00:00
Carlos V
22b9ec5a1a Update config.json
Added texts of translation variables in Spanish
2023-08-20 18:57:54 +02:00
Carlos V
ed2f6f90eb Update config.json
Added texts of translation variables in Spanish
2023-08-20 18:23:31 +02:00
Jokob-sk
609e118a7a Report fix + missing-in-last-scan functionality 2023-08-20 11:26:58 +10:00
Carlos V
8ed1456e02 Update de_de.json
Updated translation variable "DevDetail_Tab_Internet_Info_Title"
Updated translation variable "DevDetail_Tab_Internet_Info_Start"
Updated translation variable "DevDetail_Tab_Internet_Info_Error"
2023-08-19 16:03:41 +02:00
Carlos V
75002f93d3 Update es_es.json
Updated translation variable "DevDetail_Tab_Internet_Info_Title"
Updated translation variable "DevDetail_Tab_Internet_Info_Start"
Updated translation variable "DevDetail_Tab_Internet_Info_Error"
2023-08-19 16:02:31 +02:00
Carlos V
84fb663e09 Update en_us.json
Updated translation variable "DevDetail_Tab_Internet_Info_Title"
Updated translation variable "DevDetail_Tab_Internet_Info_Start"
Updated translation variable "DevDetail_Tab_Internet_Info_Error"
2023-08-19 16:01:39 +02:00
Carlos V
7f051938d0 Update de_de.json
Updated translation variable "DevDetail_Tab_Internet_Speedtest_Title"
Updated translation variable "DevDetail_Tab_Internet_Speedtest_Start"
Updated translation variable "DevDetail_Tab_Internet_Speedtest_Error"
2023-08-19 15:59:03 +02:00
Carlos V
913a1f72b6 Update es_es.json
Updated translation variable "DevDetail_Tab_Internet_Speedtest_Title"
Updated translation variable "DevDetail_Tab_Internet_Speedtest_Start"
Updated translation variable "DevDetail_Tab_Internet_Speedtest_Error"
2023-08-19 15:56:47 +02:00
Carlos V
cb7eeb7d46 Update en_us.json
Updated translation variable "DevDetail_Tab_Internet_Speedtest_Title"
Updated translation variable "DevDetail_Tab_Internet_Speedtest_Start"
Updated translation variable "DevDetail_Tab_Internet_Speedtest_Error"
2023-08-19 15:54:43 +02:00
Carlos V
92c58efd63 Update deviceDetails.php
Updated translation variable "DevDetail_Tab_Internet_Speedtest"
Updated translation variable "DevDetail_Tab_Internet_Speedtest_Start"
2023-08-19 15:51:26 +02:00
Carlos V
f5acab8ad8 Update internetinfo.php
Updated translation variable "DevDetail_Tab_Internet_Info_Error"
2023-08-19 15:45:12 +02:00
Carlos V
9b2c6b8838 Update deviceDetails.php
Updated translation variable "DevDetail_Tab_Internet_Info_Title"
Updated translation variable "DevDetail_Tab_Internet_Info_Start"
2023-08-19 15:44:26 +02:00
Carlos V
33e6fffd5d Update internetinfo.php
Added new function to check if there is an error
2023-08-19 15:40:11 +02:00
Carlos V
c61caed1af Create internetinfo.php
File is created to perform "internet info" functions
2023-08-19 14:46:37 +02:00
Carlos V
474da8f3f0 Update deviceDetails.php
Added new function "Internet Info" in "Tools"
2023-08-19 14:39:00 +02:00
Carlos V
0ed510cfd8 Update deviceDetails.php
Removed blank spaces
2023-08-19 13:32:31 +02:00
Carlos V
5e884dc675 Update deviceDetails.php
Updated "Nmap_Scans" section so that it is only visible if the device does not have a mac (mac="Internet")
2023-08-19 13:28:28 +02:00
Carlos V
fcde1a275e Update deviceDetails.php
Updated "Ping" section so that it is only visible if the device does not have mac="Internet"
2023-08-19 13:15:27 +02:00
Carlos V
bcd804403a Update deviceDetails.php
Updated "Traceroute" section so that it is only visible if the device does not have mac="Internet"
2023-08-19 13:13:51 +02:00
Carlos V
ef1c3c9674 Update deviceDetails.php
Updated "Nslookup" section so that it is only visible if the device does not have mac="Internet"
2023-08-19 13:12:36 +02:00
Carlos V
7d995f0735 Update deviceDetails.php
Updated "MTR" section so that it is only visible if the device does not have mac="Internet"
2023-08-19 13:10:50 +02:00
Carlos V
89342ba9ee Update deviceDetails.php
Updated "WOL" section so that it is only visible if the device does not have mac="Internet"
2023-08-19 13:05:53 +02:00
Carlos V
b18bcc7692 Update deviceDetails.php
Added icon in function "Speedtest"
Updated "Speedtest" function
2023-08-19 12:54:27 +02:00
Carlos V
55d6513853 Update wol.php
Disable password validation check
2023-08-19 12:25:55 +02:00
Carlos V
d11972c07d Merge branch 'jokob-sk:main' into Pi.Alert-New-Functions-in-Tools-tab 2023-08-19 12:23:23 +02:00
Carlos V
b2c798a934 Update deviceDetails.php
Update translation variable "DevDetail_Tab_Tools_WOL_Title"
Update translation variable "DevDetail_Tab_Tools_WOL_Start"
2023-08-19 12:10:26 +02:00
Carlos V
200e4c806c Update deviceDetails.php
Added translation variable "DevDetail_Tab_Tools_WOL_Title"
Added translation variable "DevDetail_Tab_Tools_WOL_Start"
2023-08-19 12:08:13 +02:00
Carlos V
d96b3519b2 Update de_de.json
Added translation variable "DevDetail_Tab_Tools_WOL_Title"
Added translation variable "DevDetail_Tab_Tools_WOL_Start"
Added translation variable "DevDetail_Tab_Tools_WOL_Error"
Added translation variable "DevDetail_Tab_Tools_WOL_Error_MAC"
Added translation variable "DevDetail_Tab_Tools_WOL_Error_Port"
Added translation variable "DevDetail_Tab_Tools_WOL_Error_Password"
Added translation variable "DevDetail_Tab_Tools_WOL_Message"
2023-08-19 12:05:09 +02:00
Carlos V
6f5c514be3 Update es_es.json
Added translation variable "DevDetail_Tab_Tools_WOL_Title"
Added translation variable "DevDetail_Tab_Tools_WOL_Start"
Added translation variable "DevDetail_Tab_Tools_WOL_Error"
Added translation variable "DevDetail_Tab_Tools_WOL_Error_MAC"
Added translation variable "DevDetail_Tab_Tools_WOL_Error_Port"
Added translation variable "DevDetail_Tab_Tools_WOL_Error_Password"
Added translation variable "DevDetail_Tab_Tools_WOL_Message"
2023-08-19 12:04:26 +02:00
Carlos V
89fe57fbc1 Update en_us.json
Added translation variable "DevDetail_Tab_Tools_WOL_Title"
Added translation variable "DevDetail_Tab_Tools_WOL_Start"
Added translation variable "DevDetail_Tab_Tools_WOL_Error_MAC"
Added translation variable "DevDetail_Tab_WOL_Error_MAC"
Added translation variable "DevDetail_Tab_Tools_WOL_Error_Port"
Added translation variable "DevDetail_Tab_Tools_WOL_Error_Password"
Added translation variable "DevDetail_Tab_Tools_WOL_Message"
2023-08-19 12:00:27 +02:00
Carlos V
f168726778 Create wol.php
wol.php file is created to perform "WOL" functions
2023-08-19 11:52:04 +02:00
Carlos V
69ff580d4c Update deviceDetails.php
Added a new option "WOL" in "Tools"
2023-08-19 11:31:29 +02:00
Carlos V
6dfa82bafa Update es_es.json
Added translation variable "DevDetail_Loading"
2023-08-19 10:58:04 +02:00
Carlos V
63c0850352 Update en_us.json
Added translation variable "DevDetail_Loading"
2023-08-19 10:57:18 +02:00
Carlos V
49d1480e15 Update de_de.json
Added translation variable "DevDetail_Loading"
2023-08-19 10:56:17 +02:00
Carlos V
0dd75db4d7 Update deviceDetails.php
Added "DevDetail_Loading" translation variable in various sections
2023-08-19 10:53:22 +02:00
Carlos V
2773fc4f83 Update deviceDetails.php
Added translation variable "DevDetail_Loading"
2023-08-19 10:46:55 +02:00
Carlos V
8fc140c16a Update deviceDetails.php
Added translation variable "DevDetail_Spinner"
2023-08-19 10:42:35 +02:00
Carlos V
c7a740d51f Update de_de.json
Added translation variable "DevDetail_Spinner"
2023-08-19 10:41:32 +02:00
Carlos V
611ae2f154 Update en_us.json
Added translation variable "DevDetail_Spinner"
2023-08-19 10:39:18 +02:00
Carlos V
326503bcf9 Update es_es.json
Added translation variable "DevDetail_Spinner"
2023-08-19 10:38:16 +02:00
Carlos V
ad4adc742f Update de_de.json
Added translation variable "DevDetail_Tab_Tools_Mtr_Title"
Added translation variable "DevDetail_Tab_Tools_Mtr_Start"
Added translation variable "DevDetail_Tab_Tools_Mtr_Error"
2023-08-19 10:23:55 +02:00
Carlos V
7befc97ab7 Update es_es.json
Added translation variable "DevDetail_Tab_Tools_Mtr_Title"
Added translation variable "DevDetail_Tab_Tools_Mtr_Start"
Added translation variable "DevDetail_Tab_Tools_Mtr_Error"
2023-08-19 10:23:11 +02:00
Carlos V
28f98c159b Update en_us.json
Added translation variable "DevDetail_Tab_Tools_Mtr_Title"
Added translation variable "DevDetail_Tab_Tools_Mtr_Start"
Added translation variable "DevDetail_Tab_Tools_Mtr_Error"
2023-08-19 10:22:06 +02:00
Carlos V
e7ff1a7954 Create mtr.php
mtr.php file is created to perform "mtr" functions
2023-08-19 10:19:47 +02:00
Carlos V
f93b8b2e10 Update deviceDetails.php
Added new icon in function "Nmap" in "Tools"
2023-08-19 10:17:50 +02:00
Carlos V
c64c351a85 Update deviceDetails.php
Added new function "Mtr" in "Tools"
2023-08-19 10:16:47 +02:00
Jokob-sk
75c5ec1215 Report fix + plugin.sh work 2023-08-19 17:39:38 +10:00
Carlos V
7b3a08ef25 Update de_de.json
Added translation variable "DevDetail_Tab_Tools_Nslookup_Title"
Added translation variable "DevDetail_Tab_Tools_Nslookup_Start"
Added translation variable "DevDetail_Tab_Tools_Nslookup_Error"
2023-08-19 09:37:24 +02:00
Carlos V
ef660d49c3 Update es_es.json
Added translation variable "DevDetail_Tab_Tools_Nslookup_Title"
Added translation variable "DevDetail_Tab_Tools_Nslookup_Start"
Added translation variable "DevDetail_Tab_Tools_Nslookup_Error"
2023-08-19 09:36:43 +02:00
Carlos V
bcf4bcc5af Update en_us.json
Added translation variable "DevDetail_Tab_Tools_Nslookup_Title"
Added translation variable "DevDetail_Tab_Tools_Nslookup_Start"
Added translation variable "DevDetail_Tab_Tools_Nslookup_Error"
2023-08-19 09:36:10 +02:00
Carlos V
e8f8296d53 Create nslookup.php
nslookup.php file is created to perform "nslookup" functions
2023-08-19 09:29:11 +02:00
Carlos V
c360c80291 Update deviceDetails.php
Added new function "nslookup" in "Tools"
2023-08-19 09:27:24 +02:00
Carlos V
8b62207b8b Update deviceDetails.php
Added new function "Traceroute" in "Tools"
2023-08-19 09:11:38 +02:00
Carlos V
1a92514253 Update de_de.json
Added translation variable "DevDetail_Tab_Tools_Traceroute_Title"
Added translation variable "DevDetail_Tab_Tools_Traceroute_Start"
Added translation variable "DevDetail_Tab_Tools_Traceroute_Error"
2023-08-19 09:06:57 +02:00
Carlos V
725490c87e Update es_es.json
Added translation variable "DevDetail_Tab_Tools_Traceroute_Title"
Added translation variable "DevDetail_Tab_Tools_Traceroute_Start"
Added translation variable "DevDetail_Tab_Tools_Traceroute_Error"
2023-08-19 09:06:12 +02:00
Carlos V
f811c0a543 Update en_us.json
Added translation variable "DevDetail_Tab_Tools_Traceroute_Title"
Added translation variable "DevDetail_Tab_Tools_Traceroute_Start"
Added translation variable "DevDetail_Tab_Tools_Traceroute_Error"
2023-08-19 09:05:16 +02:00
Carlos V
a26a81beec Create traceroute.php
traceroute.php file is created to perform "traceroute" functions
2023-08-19 09:02:46 +02:00
Carlos V
cb5b3d3a8d Update ping.php
Update banner creators
2023-08-19 08:52:25 +02:00
Carlos V
26ee74be6e Update ping.php
Updated error message style
Added new comments to facilitate development
Optimized white spaces
Optimized style
2023-08-19 08:50:56 +02:00
Carlos V
0d1c32a453 Update ping.php
Update banner creators
2023-08-19 08:35:57 +02:00
Carlos V
ab0c9dfeb9 Update deviceDetails.php
Updated id of the "Ping" function
2023-08-19 08:32:23 +02:00
Carlos V
0ebd391cd2 Update Dockerfile
Added to the installation line the package "traceroute"
2023-08-19 08:25:01 +02:00
Carlos V
a0b077b54e Update Dockerfile
Added to the installation line the package "iputils-ping"
2023-08-19 08:22:32 +02:00
Carlos V
d78fcd6ae3 Update deviceDetails.php
Updated translation variable "DevDetail_Tab_Tools_Ping_Title"
Updated translation variable "DevDetail_Tab_Tools_Ping_Start"
2023-08-19 08:19:11 +02:00
Carlos V
a397048ea4 Update ping.php
Updated translation variable
2023-08-19 08:17:19 +02:00
Carlos V
e4da6c9379 Update es_es.json
Added translation variable "DevDetail_Tab_Tools_Ping_Title"
Added translation variable "DevDetail_Tab_Tools_Ping_Start"
Added translation variable "DevDetail_Tab_Tools_Ping_Error"
Removed translation variable "DevDetail_Tools_Ping_Title"
Removed translation variable "DevDetail_Tools_Ping_Start"
Removed translation variable "DevDetail_Tools_Ping_Error"
2023-08-19 08:16:20 +02:00
Carlos V
be1cdec6fa Update en_us.json
Added translation variable "DevDetail_Tab_Tools_Ping_Title"
Added translation variable "DevDetail_Tab_Tools_Ping_Start"
Added translation variable "DevDetail_Tab_Tools_Ping_Error"
Removed translation variable "DevDetail_Tools_Ping_Title"
Removed translation variable "DevDetail_Tools_Ping_Start"
Removed translation variable "DevDetail_Tools_Ping_Error"
2023-08-19 08:15:10 +02:00
Carlos V
5df4822ef0 Update de_de.json
Added translation variable "DevDetail_Tab_Tools_Ping_Title"
Added translation variable "DevDetail_Tab_Tools_Ping_Start"
Added translation variable "DevDetail_Tab_Tools_Ping_Error"
2023-08-19 08:12:46 +02:00
Carlos V
1a89a14ee3 Update es_es.json
Added translation variable "DevDetail_Tools_Ping_Title"
Added translation variable "DevDetail_Tools_Ping_Start"
Added translation variable "DevDetail_Tools_Ping_Error"
2023-08-19 08:10:24 +02:00
Carlos V
97f7770d98 Update en_us.json
Added translation variable "DevDetail_Tools_Ping_Title"
Added translation variable "DevDetail_Tools_Ping_Start"
Added translation variable "DevDetail_Tools_Ping_Error"
2023-08-19 08:09:44 +02:00
Carlos V
0327f8818a Update ping.php
Updated command in variable "$output"
2023-08-19 08:06:51 +02:00
Carlos V
b03c6aec57 Create ping.php
ping.php file is created to perform "ping" functions
2023-08-19 08:05:31 +02:00
Carlos V
3c9a035249 Update deviceDetails.php
Added new translation variable (<?= lang('DevDetail_Tools_Ping_Start');?>)
2023-08-19 07:41:51 +02:00
Carlos V
4b075cffe7 Update deviceDetails.php
Added new option "Test Ping" in "Tools"
2023-08-19 07:39:38 +02:00
Carlos V
b85c308e78 Update deviceDetails.php
Replace id="tabNmap" --> id="tabTools"
Replace href="#panNmap" --> href="#panTools"
2023-08-19 07:27:22 +02:00
Carlos V
9e58c8c572 Update deviceDetails.php
Updated "tab control" (Now it will always be the "Tools" tab instead of "Nmap")
2023-08-19 07:21:08 +02:00
Jokob-sk
5cc08030ce Optimization and cleanup 2023-08-19 15:05:52 +10:00
Jokob-sk
50699ed01f Scheduler, Systeminfo.php, Plugin obj insertion fixes 2023-08-19 07:00:40 +10:00
Jokob-sk
486e245c14 Duplicate Plugin Objects bug work 2023-08-18 08:59:35 +10:00
Jokob-sk
cd9105d0a9 Duplicate Plugin Objects bug work 2023-08-17 08:06:20 +10:00
Jokob-sk
99e9f5ca68 JS error Plugins #360 2023-08-17 07:44:46 +10:00
Jokob-sk
f35550663d Language plugin translation #361 2023-08-17 07:33:48 +10:00
jokob-sk
39eb7fff1e Merge pull request #362 from cvc90/Pi.Alert-Fixed-transition-footer-help_faq.php
Update help_faq.php
2023-08-17 05:40:10 +10:00
jokob-sk
fa6748fe79 Merge pull request #363 from cvc90/Pi.Alert-Added-New-Variables-Spanish-Translation-Plugin-Nmap
Update config.json (Plugin Nmap)
2023-08-17 05:39:34 +10:00
Carlos V
2c12e625b4 Update config.json
Added new variables for the Spanish translation
2023-08-16 19:28:57 +02:00
Carlos V
49daed828b Update help_faq.php
Fixed transition between content and footer
2023-08-16 18:54:51 +02:00
Jokob-sk
a3359dbec4 Settings cleanup, docs and strings, Removal of ENABLE_ARPSCAN 2023-08-16 08:01:56 +10:00
jokob-sk
c8bae60060 Merge pull request #359 from cvc90/Pi.Alert-Multiple-fixes-deviceDetails.php
Multiple fixes in deviceDetails.php
2023-08-16 07:15:07 +10:00
jokob-sk
0f8253241e Merge branch 'main' into Pi.Alert-Multiple-fixes-deviceDetails.php 2023-08-16 07:14:58 +10:00
jokob-sk
ed9c0c2a2c Merge pull request #358 from cvc90/Pi.Alert-Fixed-variable-DevDetail_Icon_Descr
Update es_es.json
2023-08-16 06:17:45 +10:00
Carlos V
3c5db004c4 Update es_es.json
Updated translation variable "DevDetail_Tab_EventsTableDate"
Updated translation variable "DevDetail_Tab_EventsTableEvent"
Updated translation variable "DevDetail_Tab_EventsTableIP"
Updated translation variable "DevDetail_Tab_EventsTableInfo"
2023-08-15 20:30:17 +02:00
Carlos V
5eac1e000f Update es_es.json
Updated translation variable "DevDetail_Tab_PholusTableIndex"
Updated translation variable "DevDetail_Tab_PholusTableInfo"
Updated translation variable "DevDetail_Tab_PholusTableTime"
Updated translation variable "DevDetail_Tab_PholusTableEntry"
Updated translation variable "DevDetail_Tab_PholusTableIP"
Updated translation variable "DevDetail_Tab_PholusTableValue"
Updated translation variable "DevDetail_Tab_PholusTableExtra"
2023-08-15 20:28:26 +02:00
Carlos V
b42d6feaa0 Update deviceDetails.php
Updated blank spaces
2023-08-15 20:22:04 +02:00
Carlos V
d61d9b1789 Update deviceDetails.php
updated blank spaces
2023-08-15 20:19:15 +02:00
Carlos V
2c7e14afcd Update deviceDetails.php
Updated order in table id="table Pholus"
2023-08-15 20:12:25 +02:00
Carlos V
58ade8948c Update de_de.json
Added translation variable "DevDetail_Tab_PholusTableIndex"
Added translation variable "DevDetail_Tab_PholusTableInfo"
Added translation variable "DevDetail_Tab_PholusTableTime"
Added translation variable "DevDetail_Tab_PholusTableEntry"
Added translation variable "DevDetail_Tab_PholusTableIP"
Added translation variable "DevDetail_Tab_PholusTableValue"
Added translation variable "DevDetail_Tab_PholusTableExtra"
2023-08-15 20:09:46 +02:00
Carlos V
10e08093c6 Update de_de.json
Added translation variable "DevDetail_Tab_EventsTableDate"
Added translation variable "DevDetail_Tab_EventsTableEvent"
Added translation variable "DevDetail_Tab_EventsTableIP"
Added translation variable "DevDetail_Tab_EventsTableInfo"
2023-08-15 20:08:21 +02:00
Carlos V
58bc8bf6ce Update es_es.json
Added translation variable "DevDetail_Tab_PholusTableIndex"
Added translation variable "DevDetail_Tab_PholusTableInfo"
Added translation variable "DevDetail_Tab_PholusTableTime"
Added translation variable "DevDetail_Tab_PholusTableEntry"
Added translation variable "DevDetail_Tab_PholusTableIP"
Added translation variable "DevDetail_Tab_PholusTableValue"
Added translation variable "DevDetail_Tab_PholusTableExtra"
2023-08-15 20:06:54 +02:00
Carlos V
b1e10567f6 Update es_es.json
Added translation variable "DevDetail_Tab_EventsTableDate"
Added translation variable "DevDetail_Tab_EventsTableEvent"
Added translation variable "DevDetail_Tab_EventsTableIP"
Added translation variable "DevDetail_Tab_EventsTableInfo"
2023-08-15 20:06:20 +02:00
Carlos V
1a464630f2 Update en_us.json
Added translation variable "DevDetail_Tab_PholusTableIndex"
Added translation variable "DevDetail_Tab_PholusTableInfo"
Added translation variable "DevDetail_Tab_PholusTableTime"
Added translation variable "DevDetail_Tab_PholusTableEntry"
Added translation variable "DevDetail_Tab_PholusTableIP"
Added translation variable "DevDetail_Tab_PholusTableValue"
Added translation variable "DevDetail_Tab_PholusTableExtra"
2023-08-15 20:05:38 +02:00
Carlos V
4aea02e215 Update en_us.json
Added translation variable "DevDetail_Tab_EventsTableDate"
Added translation variable "DevDetail_Tab_EventsTableEvent"
Added translation variable "DevDetail_Tab_EventsTableIP"
Added translation variable "DevDetail_Tab_EventsTableInfo"
2023-08-15 20:02:18 +02:00
Carlos V
b1b8d6f090 Update deviceDetails.php
Added translation variable "DevDetail_Tab_PholusTableIndex"
Added translation variable "DevDetail_Tab_PholusTableInfo"
Added translation variable "DevDetail_Tab_PholusTableTime"
Added translation variable "DevDetail_Tab_PholusTableEntry"
Added translation variable "DevDetail_Tab_PholusTableIP"
Added translation variable "DevDetail_Tab_PholusTableValue"
Added translation variable "DevDetail_Tab_PholusTableExtra"
2023-08-15 19:59:00 +02:00
Carlos V
0de1406b5c Update deviceDetails.php
Added translation variable "DevDetail_Tab_EventsTableDate"
Added translation variable "DevDetail_Tab_EventsTableEvent"
Added translation variable "DevDetail_Tab_EventsTableIP"
Added translation variable "DevDetail_Tab_EventsTableInfo"
2023-08-15 19:56:03 +02:00
Carlos V
e068b360a4 Update speedtestcli.php
Added required "init.php" file to be able to load language variables
2023-08-15 19:48:40 +02:00
Carlos V
385deb254b Update speedtestcli.php
Updated translation variable "Speedtest_Results"
2023-08-15 19:04:45 +02:00
Carlos V
b28f9ed422 Update en_us.json
Added translation variable "Speedtest_Results"
2023-08-15 18:58:44 +02:00
Carlos V
117e0366e5 Update de_de.json
Added translation variable "Speedtest_Results"
2023-08-15 18:57:54 +02:00
Carlos V
6759aa3267 Update es_es.json
Added translation variable "Speedtest_Results"
2023-08-15 18:56:35 +02:00
Carlos V
aab506fb58 Update speedtestcli.php
Added translation variable "Speedtest_Results"
2023-08-15 18:54:31 +02:00
Carlos V
b111bbf926 Update deviceDetails.php
Fixed blank space in translation variable "DevDetail_Tab_NmapTableExtra"
2023-08-15 18:47:51 +02:00
Carlos V
8d58f1fe91 Update de_de.json
Added translation variable "DevDetail_Nmap_Scans"
2023-08-15 18:41:01 +02:00
Carlos V
20871ba401 Update es_es.json
Added translation variable "DevDetail_Nmap_Scans"
2023-08-15 18:39:58 +02:00
Carlos V
fb121c1df4 Update en_us.json
Added translation variable "DevDetail_Nmap_Scans"
2023-08-15 18:39:02 +02:00
Carlos V
80888ae910 Update deviceDetails.php
Updated creators banner
2023-08-15 18:32:55 +02:00
Carlos V
84c74fbb2a Update es_es.json
Fixed description variable "DevDetail_Icon_Descr"
2023-08-15 18:23:12 +02:00
Carlos V
9caeb0cfdf Update de_de.json
Added translation variable "DevDetail_Tab_NmapTableIndex"
Added translation variable "DevDetail_Tab_NmapTableTime"
Added translation variable "DevDetail_Tab_NmapTablePort"
Added translation variable "DevDetail_Tab_NmapTableState"
Added translation variable "DevDetail_Tab_NmapTableService"
Added translation variable "DevDetail_Tab_NmapTableExtra"
2023-08-15 18:18:19 +02:00
Carlos V
796c02adfb Update de_de.json
Added translation variable "DevDetail_Internet_Speedtest"
Added translation variable "DevDetail_Internet_Speedtest_Start
2023-08-15 18:16:06 +02:00
Carlos V
0812182fd2 Update de_de.json
Added translation variable "DevDetail_Tab_Tools"
2023-08-15 18:12:11 +02:00
Carlos V
8368c3d102 Update es_es.json
Added translation variable "DevDetail_Tab_NmapTableIndex"
Added translation variable "DevDetail_Tab_NmapTableTime"
Added translation variable "DevDetail_Tab_NmapTablePort"
Added translation variable "DevDetail_Tab_NmapTableState"
Added translation variable "DevDetail_Tab_NmapTableService"
Added translation variable "DevDetail_Tab_NmapTableExtra"
2023-08-15 18:11:07 +02:00
Carlos V
dca50f42c7 Update es_es.json
Added translation variable "DevDetail_Internet_Speedtest"
Added translation variable "DevDetail_Internet_Speedtest_Start"
2023-08-15 18:10:28 +02:00
Carlos V
1944c24fe7 Update es_es.json
Added translation variable "DevDetail_Tab_Tools"
2023-08-15 18:09:21 +02:00
Carlos V
f136334414 Update en_us.json
Added translation variable "DevDetail_Tab_NmapTableIndex"
Added translation variable "DevDetail_Tab_NmapTableTime"
Added translation variable "DevDetail_Tab_NmapTablePort"
Added translation variable "DevDetail_Tab_NmapTableState"
Added translation variable "DevDetail_Tab_NmapTableService"
Added translation variable "DevDetail_Tab_NmapTableExtra"
2023-08-15 18:07:17 +02:00
Carlos V
c5f99ad701 Update en_us.json
Added translation variable "DevDetail_Internet_Speedtest"
Added translation variable "DevDetail_Internet_Speedtest_Start"
2023-08-15 18:06:27 +02:00
Carlos V
62b3bc6a6a Update en_us.json
Added translation variable "DevDetail_Tab_Tools"
2023-08-15 18:05:09 +02:00
Carlos V
e7fe2b808f Update deviceDetails.php
Added translation variable "DevDetail_Tab_NmapTableIndex"
Added translation variable "DevDetail_Tab_NmapTableTime"
Added translation variable "DevDetail_Tab_NmapTablePort"
Added translation variable "DevDetail_Tab_NmapTableState"
Added translation variable "DevDetail_Tab_NmapTableService"
Added translation variable "DevDetail_Tab_NmapTableExtra"
2023-08-15 17:55:35 +02:00
Carlos V
a85f0003e3 Update deviceDetails.php
Added translation variable "DevDetail_Nmap_Scans"
2023-08-15 17:49:24 +02:00
Carlos V
d6142f7498 Update deviceDetails.php
Added translation variable "DevDetail_Internet_Speedtest"
Added translation variable "DevDetail_Internet_Speedtest_Start"
2023-08-15 17:47:15 +02:00
Carlos V
63661dea5b Update deviceDetails.php
Added translation variable "DevDetail_Tab_Tools" to add "Tools" tab text in any language.
2023-08-15 17:43:37 +02:00
Jokob-sk
499a798d3e device details descriptions of confusing fields 2023-08-15 08:04:07 +10:00
Jokob-sk
23da070784 work on #353, update vendors bug #357 2023-08-15 07:40:51 +10:00
jokob-sk
5efc4975c6 Merge pull request #356 from cvc90/Pi.Alert-Fixed-TAG-SPAN-MENU
Fixed <span> tag in menu options in header.php
2023-08-15 06:23:32 +10:00
jokob-sk
013262c694 Merge pull request #355 from cvc90/Pi.Alert-fixes-improvements-systeminfo-v5
Corrections and improvements in the "System info" menu v5 - thank you for the awesome work @cvc90 👍
2023-08-15 06:22:30 +10:00
Carlos V
12d8d2d2fc Update header.php
Fixed <span> tag in menu options
2023-08-14 19:34:19 +02:00
Carlos V
af83432fdb Update systeminfo.php
Updated div class of the "Network Hardware" section
2023-08-14 18:56:39 +02:00
Carlos V
34d3ea9ef0 Update systeminfo.php
Updated div class of the "Network" section
2023-08-14 18:55:37 +02:00
Carlos V
9c2ebd53d7 Update systeminfo.php
Updated div class of the "Storage usage" section
2023-08-14 18:53:37 +02:00
Carlos V
fc569b50d4 Update systeminfo.php
Updated div class of the "Storage" section
2023-08-14 18:52:30 +02:00
Carlos V
06873f5054 Update systeminfo.php
Updated div class of the "Memory" section
2023-08-14 18:51:12 +02:00
Carlos V
420ee4ac65 Update systeminfo.php
Updated div class of the "CPU" section
2023-08-14 18:50:23 +02:00
Carlos V
2659bc1440 Update systeminfo.php
Updated div class of the "CPU" section
2023-08-14 18:49:13 +02:00
Carlos V
ded7af9fe3 Update systeminfo.php
Updated div class of the "Motherboard" section
2023-08-14 18:47:51 +02:00
Carlos V
75dd81adcd Update systeminfo.php
Updated div class of the "System" section
2023-08-14 18:46:21 +02:00
Carlos V
b749199f55 Update systeminfo.php
Updated div class of the "Client" section
2023-08-14 18:44:52 +02:00
Carlos V
731e9be82b Update systeminfo.php
Updated div class of the "General" section
2023-08-14 18:43:43 +02:00
Carlos V
22844b430e Update de_de.json
Optimized the order of translation variables
New translation variable "Systeminfo_Network_HTTP_Referer_String"
New translation variable "Systeminfo_Network_Secure_Connection_String"
New translation variable "Systeminfo_Network_Server_Name_String"
New translation variable "Systeminfo_Network_Server_Query_String"
2023-08-14 18:22:20 +02:00
Carlos V
dbfb3176f5 Update es_es.json
Optimized the order of translation variables
New translation variable "Systeminfo_Network_HTTP_Referer_String"
New translation variable "Systeminfo_Network_Secure_Connection_String"
New translation variable "Systeminfo_Network_Server_Name_String"
New translation variable "Systeminfo_Network_Server_Query_String"
2023-08-14 18:20:40 +02:00
Carlos V
0591afa80f Update en_us.json
Optimized the order of translation variables
New translation variable "Systeminfo_Network_HTTP_Referer_String"
New translation variable "Systeminfo_Network_Secure_Connection_String"
New translation variable "Systeminfo_Network_Server_Name_String"
New translation variable "Systeminfo_Network_Server_Query_String"
2023-08-14 18:18:32 +02:00
Carlos V
be2f5a9f15 Update systeminfo.php
Updated variables "Network stats"
2023-08-14 18:14:05 +02:00
Carlos V
633ceb6136 Update systeminfo.php
Updated translation variable "Systeminfo_Network_Secure_Connection"
2023-08-14 17:56:41 +02:00
Carlos V
7610f3633d Update de_de.json
Optimized the order of translation variables
New translation variable "Systeminfo_Network_Accept_Encoding"
New translation variable "Systeminfo_Network_Accept_Language"
New translation variable "Systeminfo_Network_Connection_Port"
New translation variable "Systeminfo_Network_HTTP_Host"
New translation variable "Systeminfo_Network_HTTP_Referer"
New translation variable "Systeminfo_Network_IP"
New translation variable "Systeminfo_Network_IP_Connection"
New translation variable "Systeminfo_Network_IP_Server"
New translation variable "Systeminfo_Network_MIME"
New translation variable "Systeminfo_Network_Request_Method"
New translation variable "Systeminfo_Network_Request_URI"
New translation variable "Systeminfo_Network_Request_Time"
New translation variable "Systeminfo_Network_Secure_Connection"
New translation variable "Systeminfo_Network_Server_Name"
New translation variable "Systeminfo_Network_Server_Query"
New translation variable "Systeminfo_Network_Server_Version"
2023-08-14 17:52:36 +02:00
Carlos V
acf2437020 Update es_es.json
Optimized the order of translation variables
New translation variable "Systeminfo_Network_Accept_Encoding"
New translation variable "Systeminfo_Network_Accept_Language"
New translation variable "Systeminfo_Network_Connection_Port"
New translation variable "Systeminfo_Network_HTTP_Host"
New translation variable "Systeminfo_Network_HTTP_Referer"
New translation variable "Systeminfo_Network_IP"
New translation variable "Systeminfo_Network_IP_Connection"
New translation variable "Systeminfo_Network_IP_Server"
New translation variable "Systeminfo_Network_MIME"
New translation variable "Systeminfo_Network_Request_Method"
New translation variable "Systeminfo_Network_Request_URI"
New translation variable "Systeminfo_Network_Request_Time"
New translation variable "Systeminfo_Network_Secure_Connection"
New translation variable "Systeminfo_Network_Server_Name"
New translation variable "Systeminfo_Network_Server_Query"
New translation variable "Systeminfo_Network_Server_Version"
2023-08-14 17:50:44 +02:00
Carlos V
f28733d94d Update en_us.json
Optimized the order of translation variables
New translation variable "Systeminfo_Network_Accept_Encoding"
New translation variable "Systeminfo_Network_Accept_Language"
New translation variable "Systeminfo_Network_Connection_Port"
New translation variable "Systeminfo_Network_HTTP_Host"
New translation variable "Systeminfo_Network_HTTP_Referer"
New translation variable "Systeminfo_Network_IP"
New translation variable "Systeminfo_Network_IP_Connection"
New translation variable "Systeminfo_Network_IP_Server"
New translation variable "Systeminfo_Network_MIME"
New translation variable "Systeminfo_Network_Request_Method"
New translation variable "Systeminfo_Network_Request_URI"
New translation variable "Systeminfo_Network_Request_Time"
New translation variable "Systeminfo_Network_Secure_Connection"
New translation variable "Systeminfo_Network_Server_Name"
New translation variable "Systeminfo_Network_Server_Query"
New translation variable "Systeminfo_Network_Server_Version"
2023-08-14 17:47:11 +02:00
Carlos V
8398d73b61 Update systeminfo.php
Update "Network" submenu with new translation variables
New translation variable "Systeminfo_Network_Accept_Encoding"
New translation variable "Systeminfo_Network_Accept_Language"
New translation variable "Systeminfo_Network_Connection_Port"
New translation variable "Systeminfo_Network_HTTP_Host"
New translation variable "Systeminfo_Network_HTTP_Referer"
New translation variable "Systeminfo_Network_IP"
New translation variable "Systeminfo_Network_IP_Connection"
New translation variable "Systeminfo_Network_IP_Server"
New translation variable "Systeminfo_Network_MIME"
New translation variable "Systeminfo_Network_Request_Method"
New translation variable "Systeminfo_Network_Request_URI"
New translation variable "Systeminfo_Network_Request_Time"
New translation variable "Systeminfo_Network_Secure_Connection"
New translation variable "Systeminfo_Network_Server_Name"
New translation variable "Systeminfo_Network_Server_Query"
New translation variable "Systeminfo_Network_Server_Version"
2023-08-14 17:39:36 +02:00
Carlos V
46876228ba Update de_de.json
New translation variable "Systeminfo_Motherboard_BIOS"
New translation variable "Systeminfo_Motherboard_BIOS_Date"
New translation variable "Systeminfo_Motherboard_BIOS_Vendor"
New translation variable "Systeminfo_Motherboard_Manufactured"
New translation variable "Systeminfo_Motherboard_Name"
New translation variable "Systeminfo_Motherboard_Revision"
2023-08-14 17:18:11 +02:00
Carlos V
7de5e4db8b Update es_es.json
New translation variable "Systeminfo_Motherboard_BIOS"
New translation variable "Systeminfo_Motherboard_BIOS_Date"
New translation variable "Systeminfo_Motherboard_BIOS_Vendor"
New translation variable "Systeminfo_Motherboard_Manufactured"
New translation variable "Systeminfo_Motherboard_Name"
New translation variable "Systeminfo_Motherboard_Revision"
2023-08-14 17:16:45 +02:00
Carlos V
33273bf83c Update en_us.json
New translation variable "Systeminfo_Motherboard_BIOS"
New translation variable "Systeminfo_Motherboard_BIOS_Date"
New translation variable "Systeminfo_Motherboard_BIOS_Vendor"
New translation variable "Systeminfo_Motherboard_Manufactured"
New translation variable "Systeminfo_Motherboard_Name"
New translation variable "Systeminfo_Motherboard_Revision"
2023-08-14 17:15:48 +02:00
Carlos V
719b3e5705 Update systeminfo.php
Update "Motherboard" submenu with new translation variables
New translation variable "Systeminfo_Motherboard_BIOS
New translation variable "Systeminfo_Motherboard_BIOS_Date"
New translation variable "Systeminfo_Motherboard_BIOS_Vendor"
New translation variable "Systeminfo_Motherboard_Manufactured"
New translation variable "Systeminfo_Motherboard_Name"
New translation variable "Systeminfo_Motherboard_Revision"
2023-08-14 16:50:53 +02:00
Carlos V
ae5fd47f72 Update de_de.json
Optimized the order of translation variables
New translation variable "Systeminfo_System_Architecture"
New translation variable "Systeminfo_System_AVG"
New translation variable "Systeminfo_System_Kernel"
New translation variable "Systeminfo_System_OSVersion"
New translation variable "Systeminfo_System_System"
New translation variable "Systeminfo_System_Uname"
New translation variable "Systeminfo_System_Uptime"
2023-08-14 16:14:14 +02:00
Carlos V
57f9728867 Update en_us.json
Optimized the order of translation variables
New translation variable "Systeminfo_System_Architecture"
New translation variable "Systeminfo_System_AVG"
New translation variable "Systeminfo_System_Kernel"
New translation variable "Systeminfo_System_OSVersion"
New translation variable "Systeminfo_System_System"
New translation variable "Systeminfo_System_Uname"
New translation variable "Systeminfo_System_Uptime"
2023-08-14 16:11:07 +02:00
Carlos V
b07118b298 Update es_es.json
Optimized the order of translation variables
New translation variable "Systeminfo_System_Architecture"
New translation variable "Systeminfo_System_AVG"
New translation variable "Systeminfo_System_Kernel"
New translation variable "Systeminfo_System_OSVersion"
New translation variable "Systeminfo_System_System"
New translation variable "Systeminfo_System_Uname"
New translation variable "Systeminfo_System_Uptime"
2023-08-14 16:02:43 +02:00
Carlos V
e669ecacf3 Update systeminfo.php
Update "System" submenu with new translation variables
New translation variable "Systeminfo_System_Uptime"
New translation variable "Systeminfo_System_Kernel"
New translation variable "Systeminfo_System_System"
New translation variable "Systeminfo_System_OSVersion"
New translation variable "Systeminfo_System_Uname"
New translation variable "Systeminfo_System_Architecture"
New translation variable "Systeminfo_System_AVG"
2023-08-14 15:50:23 +02:00
jokob-sk
725032d31f Merge pull request #354 from cvc90/Pi.Alert-fixes-improvements-systeminfo-v4
Corrections and improvements in the "System info" menu v4
2023-08-14 06:19:58 +10:00
Carlos V
ea05fd58c1 Update de_de.json
Updated translation variable "Systeminfo_CPU_Vendor"
2023-08-13 20:25:57 +02:00
Carlos V
1ecdc1249c Update de_de.json
Added translation variable "Systeminfo_CPU_Vendor"
Added translation variable "Systeminfo_CPU_Name"
Added translation variable "Systeminfo_CPU_Cores"
Added translation variable "Systeminfo_CPU_Speed"
Added translation variable "Systeminfo_CPU_Temp"
2023-08-13 20:01:24 +02:00
Carlos V
b016f6fefe Update es_es.json
Added translation variable "Systeminfo_CPU_Vendor"
Added translation variable "Systeminfo_CPU_Name"
Added translation variable "Systeminfo_CPU_Cores"
Added translation variable "Systeminfo_CPU_Speed"
Added translation variable "Systeminfo_CPU_Temp"
2023-08-13 19:59:57 +02:00
Carlos V
8c64b65942 Update en_us.json
Added translation variable "Systeminfo_CPU_Vendor"
Added translation variable "Systeminfo_CPU_Name"
Added translation variable "Systeminfo_CPU_Cores"
Added translation variable "Systeminfo_CPU_Speed"
Added translation variable "Systeminfo_CPU_Temp"
2023-08-13 19:58:58 +02:00
Carlos V
e0e1250592 Update systeminfo.php
Updated "CPU" section
Added translation variable "Systeminfo_CPU_Vendor"
Added translation variable "Systeminfo_CPU_Name"
Added translation variable "Systeminfo_CPU_Cores"
Added translation variable "Systeminfo_CPU_Speed"
Added translation variable "Systeminfo_CPU_Temp"
2023-08-13 19:56:45 +02:00
Carlos V
64694a1ead Update systeminfo.php
Updated "Memory" section
2023-08-13 19:48:23 +02:00
Carlos V
7c1c33ecdc Update de_de.json
Added translation variable "Systeminfo_Memory_Usage"
Added translation variable "Systeminfo_Memory_Usage_Percent"
Added translation variable "Systeminfo_Memory_Total_Memory"
2023-08-13 19:39:11 +02:00
Carlos V
48303fce62 Update en_us.json
Added translation variable "Systeminfo_Memory_Usage"
Added translation variable "Systeminfo_Memory_Usage_Percent"
Added translation variable "Systeminfo_Memory_Total_Memory"
2023-08-13 19:37:54 +02:00
Carlos V
67cac33779 Update es_es.json
Added translation variable "Systeminfo_Memory_Usage"
Added translation variable "Systeminfo_Memory_Usage_Percent"
Added translation variable "Systeminfo_Memory_Total_Memory"
2023-08-13 19:36:39 +02:00
Carlos V
7c9229e9c9 Update systeminfo.php
Added translation variable "Memory_Usage_Percent"
Added translation variable "Systeminfo_Memory_Usage"
Added translation variable "Systeminfo_Memory_Total_Memory"
2023-08-13 19:32:00 +02:00
Carlos V
f8b5cc98b2 Update de_de.json
Added translation variable "Systeminfo_Client_User_Agent"
Added translation variable "Systeminfo_Client_Resolution"
2023-08-13 19:26:37 +02:00
Carlos V
ddde35ec1c Update de_de.json
Added translation variable "Systeminfo_Client_User_Agent"
Added translation variable "Systeminfo_Client_Resolution"
Added translation variable "Systeminfo_General_Date2"
Added translation variable "Systeminfo_General_TimeZone"
2023-08-13 19:24:18 +02:00
Carlos V
df7c51d303 Update es_es.json
Added translation variable "Systeminfo_Client_User_Agent"
Added translation variable "Systeminfo_Client_Resolution"
2023-08-13 19:23:18 +02:00
Carlos V
96de41e4f0 Update es_es.json
Added translation variable "Systeminfo_Client_User_Agent"
Added translation variable "Systeminfo_Client_Resolution"
Added translation variable "Systeminfo_General_Date2"
Added translation variable "Systeminfo_General_TimeZone"
2023-08-13 19:22:19 +02:00
Carlos V
eb63964a90 Update en_us.json
Added translation variable "Systeminfo_Client_User_Agent"
Added translation variable "Systeminfo_Client_Resolution"
2023-08-13 19:20:54 +02:00
Carlos V
00942ba48f Update en_us.json
Added translation variable "Systeminfo_Client_User_Agent"
Added translation variable "Systeminfo_Client_Resolution"
Added translation variable "Systeminfo_General_Date2"
Added translation variable "Systeminfo_General_TimeZone"
2023-08-13 19:19:09 +02:00
Carlos V
9735085328 Update systeminfo.php
Added translation variable "Systeminfo_Client_User_Agent"
Added translation variable "Systeminfo_Client_Resolution"
2023-08-13 19:15:22 +02:00
Carlos V
367dec4024 Update systeminfo.php
Added translation variable "Systeminfo_General_Full_Date"
Added translation variable "Systeminfo_General_Date"
Added translation variable "Systeminfo_General_Date2"
Added translation variable "Systeminfo_General_TimeZone"
2023-08-13 19:12:57 +02:00
Carlos V
3200b3bc10 Update systeminfo.php
Updated translation variable "Systeminfo_Storage_Usage"
2023-08-13 19:01:29 +02:00
Carlos V
e98035e418 Update de_de.json
Added translation variable "Systeminfo_Storage_Mount"
Added translation variable "Systeminfo_Storage_Device"
Added translation variable "Systeminfo_Storage_Size"
Added translation variable "Systeminfo_Storage_Type"
2023-08-13 18:59:07 +02:00
Carlos V
477d43b675 Update de_de.json
Added translation variable "Systeminfo_Storage_Usage_Mount"
Added translation variable "Systeminfo_Storage_Usage_Total"
Added translation variable "Systeminfo_Storage_Usage_Used"
Added translation variable "Systeminfo_Storage_Usage_Free"
2023-08-13 18:58:29 +02:00
Carlos V
01d7730ffb Update de_de.json
Update translation variable "Systeminfo_Storage_Usage"
2023-08-13 18:56:49 +02:00
Carlos V
d69227a8f1 Update de_de.json
Added translation variable "Systeminfo_Services_Name"
Added translation variable "Systeminfo_Services_Description"
2023-08-13 18:56:27 +02:00
Carlos V
7e6fa9fcbd Update en_us.json
Added translation variable "Systeminfo_Storage_Mount"
Added translation variable "Systeminfo_Storage_Device"
Added translation variable "Systeminfo_Storage_Size"
Added translation variable "Systeminfo_Storage_Type"
2023-08-13 18:55:20 +02:00
Carlos V
a58ef98a9c Update en_us.json
Added translation variable "Systeminfo_Storage_Usage_Mount"
Added translation variable "Systeminfo_Storage_Usage_Total"
Added translation variable "Systeminfo_Storage_Usage_Used"
Added translation variable "Systeminfo_Storage_Usage_Free"
2023-08-13 18:53:48 +02:00
Carlos V
5805c94c8a Update en_us.json
Update translation variable "Systeminfo_Storage_Usage"
Added translation variable "Systeminfo_Services_Name"
Added translation variable "Systeminfo_Services_Description"
2023-08-13 18:52:39 +02:00
Carlos V
df0afdc7be Update es_es.json
Update translation variable "Systeminfo_Services_Description"
2023-08-13 18:51:25 +02:00
Carlos V
5bf12e4e7d Update es_es.json
Update translation variable "Systeminfo_Storage_Usage"
Added translation variable "Systeminfo_Storage_Mount"
Added translation variable "Systeminfo_Storage_Device"
Added translation variable "Systeminfo_Storage_Size"
Added translation variable "Systeminfo_Storage_Type"
2023-08-13 18:49:37 +02:00
Carlos V
c9f22aa0c7 Update es_es.json
Added translation variable "Systeminfo_Storage_Usage_Mount"
Added translation variable "Systeminfo_Storage_Usage_Total"
Added translation variable "Systeminfo_Storage_Usage_Used"
Added translation variable "Systeminfo_Storage_Usage_Free"
2023-08-13 18:47:24 +02:00
Carlos V
8c91357fbb Update es_es.json
Added translation variable "Systeminfo_Services_Name"
Added translation variable "Systeminfo_Services_Description"
2023-08-13 18:45:01 +02:00
Carlos V
4a0265ef25 Update systeminfo.php
Added name variable in tr "Systeminfo_Storage_Mount"
Added name variable in tr "Systeminfo_Storage_Device"
Added name variable in tr "Systeminfo_Storage_Size"
Added name variable in tr "Systeminfo_Storage_Type"
2023-08-13 18:38:17 +02:00
Carlos V
d392be05a2 Update systeminfo.php
Added name variable in tr "Systeminfo_Storage_Usage_Mount"
Added name variable in tr "Systeminfo_Storage_Usage_Total"
Added name variable in tr "Systeminfo_Storage_Usage_Used"
Added name variable in tr "Systeminfo_Storage_Usage_Free"
2023-08-13 18:36:42 +02:00
Carlos V
824825860f Update systeminfo.php
Added name variable in tr "Systeminfo_Services_Name"
Added name variable in tr "Systeminfo_Services_Description"
2023-08-13 18:34:43 +02:00
Carlos V
0a4261bba4 Update systeminfo.php
Updated name "BIOS date"
2023-08-13 18:32:20 +02:00
jokob-sk
93e76e27d7 Merge pull request #352 from Steve-Tech/main
Fix typo in last SQL PR 👍🙏
2023-08-13 16:19:07 +10:00
Stephen Horvath
9812b76138 Fix typo in last commit 2023-08-13 15:31:00 +10:00
jokob-sk
988a323757 Merge pull request #351 from Steve-Tech/main
Fix SQL injection/error - thanks @Steve-Tech 🙏
2023-08-13 15:25:49 +10:00
Stephen Horvath
29fc5c669d Use SQL parameters here too, just in case 2023-08-13 14:59:38 +10:00
Stephen Horvath
fbc3c8cede Fix accidental SQL injection when using plugins returning names with ' 2023-08-13 14:51:55 +10:00
Jokob-sk
11f341366b Events, CurrentScan, pluginsState, APPRISE work 2023-08-13 09:26:30 +10:00
jokob-sk
2414498846 Merge pull request #349 from cvc90/Pi.Alert-Fixed-missing-icon-pages-titles
Multiple fixes to missing icon in page title
2023-08-13 06:11:53 +10:00
jokob-sk
1977f48eb1 Merge pull request #350 from cvc90/Pi.Alert-Multiple-fixes-in-translations
Multiple fixes in translations
2023-08-13 06:11:20 +10:00
Carlos V
dc1c5763aa Update pluginsCore.php
Updated new translation variable "Plugins_Out_of"
2023-08-12 21:38:01 +02:00
Carlos V
14e16a9d18 Update pluginsCore.php
Update new translation variable "Plugins_Out_of"
2023-08-12 21:18:32 +02:00
Carlos V
4505a5a97a Update config.json
Added Spanish translation
2023-08-12 21:03:07 +02:00
Carlos V
f076240832 Update config.json
Added Spanish translation
Removed blank spaces
2023-08-12 20:46:24 +02:00
Carlos V
086d1c03cf Update config.json
Added Spanish translation
2023-08-12 20:39:20 +02:00
Carlos V
c6fab002be Update systeminfo.php
Added new translation variable "Systeminfo_General"
Added new translation variable "Systeminfo_This_Client"
Added new translation variable "Systeminfo_System"
Added new translation variable "Systeminfo_Motherboard"
Added new translation variable "Systeminfo_CPU"
Added new translation variable "Systeminfo_Memory"
Added new translation variable "Systeminfo_Storage"
Added new translation variable "Systeminfo_Storage_usage"
Added new translation variable "Systeminfo_Network"
Added new translation variable "Systeminfo_Network_Hardware"
Added new translation variable "Systeminfo_Services" : "Services",
Added new translation variable "Systeminfo_USB_Devices"
2023-08-12 19:57:33 +02:00
Carlos V
48be1a9eda Update de_de.json
Added new translation variable "Systeminfo_General"
Added new translation variable "Systeminfo_This_Client"
Added new translation variable "Systeminfo_System"
Added new translation variable "Systeminfo_Motherboard"
Added new translation variable "Systeminfo_CPU"
Added new translation variable "Systeminfo_Memory"
Added new translation variable "Systeminfo_Storage"
Added new translation variable "Systeminfo_Storage_usage"
Added new translation variable "Systeminfo_Network"
Added new translation variable "Systeminfo_Network_Hardware"
Added new translation variable "Systeminfo_Services" : "Services",
Added new translation variable "Systeminfo_USB_Devices"
2023-08-12 19:32:27 +02:00
Carlos V
59e3f45e70 Update es_es.json
Added new translation variable "Systeminfo_General"
Added new translation variable "Systeminfo_This_Client"
Added new translation variable "Systeminfo_System"
Added new translation variable "Systeminfo_Motherboard"
Added new translation variable "Systeminfo_CPU"
Added new translation variable "Systeminfo_Memory"
Added new translation variable "Systeminfo_Storage"
Added new translation variable "Systeminfo_Storage_usage"
Added new translation variable "Systeminfo_Network"
Added new translation variable "Systeminfo_Network_Hardware"
Added new translation variable "Systeminfo_Services" : "Services",
Added new translation variable "Systeminfo_USB_Devices"
2023-08-12 19:27:07 +02:00
Carlos V
294a205dfd Update en_us.json
Added new translation variable "Systeminfo_General"
Added new translation variable "Systeminfo_This_Client"
Added new translation variable "Systeminfo_System"
Added new translation variable "Systeminfo_Motherboard"
Added new translation variable "Systeminfo_CPU"
Added new translation variable "Systeminfo_Memory"
Added new translation variable "Systeminfo_Storage"
Added new translation variable "Systeminfo_Storage_usage"
Added new translation variable "Systeminfo_Network"
Added new translation variable "Systeminfo_Network_Hardware"
Added new translation variable "Systeminfo_Services" : "Services",
Added new translation variable "Systeminfo_USB_Devices"
2023-08-12 19:26:05 +02:00
Carlos V
80500b6ede Update de_de.json
Added new translation variable "Plugins_Out_of"
2023-08-12 19:15:20 +02:00
Carlos V
06d9cf2292 Update en_us.json
Added new translation variable "Plugins_Out_of"
2023-08-12 19:14:11 +02:00
Carlos V
b7a3ad7044 Update es_es.json
Added new translation variable "Plugins_Out_of"
2023-08-12 19:12:35 +02:00
Carlos V
b6df0fb1a8 Update pluginsCore.php
Added new translation variable "Plugins_Out_of"
2023-08-12 19:07:13 +02:00
Carlos V
42e0d4330d Update es_es.json
Removed icon of translation variable "HelpFAQ_Title"
2023-08-12 18:49:06 +02:00
Carlos V
cfae2c3418 Update maintenance.php
Fixed missing icon in page subtitle
2023-08-12 18:45:39 +02:00
Carlos V
fd314b5187 Update devices.php
Fixed missing icon in page title
2023-08-12 18:42:46 +02:00
Carlos V
f6a680730f Update help_faq.php
Fixed missing icon in page title
2023-08-12 18:41:41 +02:00
Carlos V
0164f4a9d7 Update maintenance.php
Fixed missing icon in page title
2023-08-12 18:39:31 +02:00
Carlos V
b37b4559b0 Update presence.php
Fixed missing icon in page title
2023-08-12 18:37:48 +02:00
Carlos V
81d9e12c8d Update report.php
Fixed missing icon in page title
2023-08-12 18:37:20 +02:00
Carlos V
5aa4450691 Update settings.php
Fixed missing icon in page title
2023-08-12 18:36:57 +02:00
Carlos V
144b81eab7 Update systeminfo.php
Fixed missing icon in page title
2023-08-12 18:34:56 +02:00
Jokob-sk
c2e4d39117 Events, CurrentScan, pluginsState, ENABLE_PLUGINS work 2023-08-12 12:17:53 +10:00
Jokob-sk
5397edc14d Events, CurrentScan, pluginsState, ENABLE_PLUGINS work 2023-08-12 11:56:35 +10:00
Jokob-sk
82d7c28fd7 Docs + pihole tweaks 2023-08-12 07:32:26 +10:00
Jokob-sk
b3159d683c Docs + show_ui 2023-08-12 07:24:42 +10:00
Jokob-sk
56d6190fa3 Docs + string fixes 2023-08-12 06:41:11 +10:00
jokob-sk
b59d2149b8 Merge pull request #346 from cvc90/Pi.Alert-MULTIPLE-FIX-ES_ES.JSON-V3
Multiple fixes in file "es_es.json" v3
2023-08-11 13:44:50 +10:00
jokob-sk
3ca4ce9c80 Merge pull request #347 from cvc90/Fixed-TAG-SPAN-MENU
Fixed tag <span> in "Navigation_Presence"
2023-08-11 13:27:28 +10:00
jokob-sk
c3a6b33b33 Merge pull request #348 from cvc90/Fixed-Overflow-header-mobile
Fixed overflow header on mobile
2023-08-11 13:07:47 +10:00
Carlos V
de964eb64a Update pialert.css
Added option for "Back Button" to hide it on small screens
Added option for "Next Button" to hide it on small screens
Added option for "Reload Button" to hide it on small screens
Added option for "Full Screen Button" to hide it on small screens
2023-08-11 02:27:16 +02:00
Carlos V
e421d84033 Update header.php
Fixed tag <span> in "Navigation_Presence"
2023-08-11 01:55:25 +02:00
Carlos V
76e02d691d Update presence.php
Updated creators banner
2023-08-11 01:32:50 +02:00
Carlos V
e7a8668420 Update es_es.json
Updated translation variable "Presence_Title"
2023-08-11 01:31:09 +02:00
Carlos V
b71da10a80 Update presence.php
Updated Title "Presence_Title"
2023-08-11 01:30:39 +02:00
Carlos V
a73f8bf8da Update systeminfo.php
Updated title "SYSTEM_TITLE"
2023-08-11 01:29:40 +02:00
Carlos V
eae55beccc Update settings.php
Updated title "Navigation_Settings"
2023-08-11 01:29:24 +02:00
Carlos V
2b9c76efe1 Update report.php
Updated title "REPORT_TITLE"
2023-08-11 01:29:07 +02:00
Carlos V
b1b3abeb2f Update maintenance.php
Updated title "Maintenance_Title"
2023-08-11 01:28:34 +02:00
Carlos V
8d028ad705 Update events.php
Updated title "Events_Title"
2023-08-11 01:27:52 +02:00
Carlos V
50098bd092 Update devices.php
Updated Title "Device_Title"
2023-08-11 01:27:31 +02:00
Carlos V
6f45cfc60c Update devices.php
Updated creators banner
2023-08-11 01:26:10 +02:00
Carlos V
d3030b8815 Update es_es.json
Updated translation variable "Updated title "Device_Title"
2023-08-11 01:24:28 +02:00
Carlos V
12e97c6b9a Update devices.php
Updated Title "Device_Title"
2023-08-11 01:23:58 +02:00
Carlos V
a6797d8608 Update es_es.json
Updated translation variable "Updated title "Events_Title"
2023-08-11 01:21:34 +02:00
Carlos V
640aac54f5 Update events.php
Updated title "Events_Title"
Updated creators banner
2023-08-11 01:20:42 +02:00
Carlos V
89e7ae9593 Update es_es.json
Updated translation variable "Updated title "REPORT_TITLE"
2023-08-11 01:16:02 +02:00
Carlos V
80cc4ec265 Update report.php
Updated title "REPORT_TITLE"
2023-08-11 01:15:19 +02:00
Carlos V
ffb187dd84 Update es_es.json
Updated translation variable "Updated title "SYSTEM_TITLE"
2023-08-11 01:13:25 +02:00
Carlos V
48117cc0d6 Update systeminfo.php
Updated title "SYSTEM_TITLE"
2023-08-11 01:12:42 +02:00
Carlos V
a4c236979f Update settings.php
Updated title "Navigation_Settings"
2023-08-11 01:10:10 +02:00
Carlos V
73e9748631 Update es_es.json
Added translation variable "Maintenance_Status"
2023-08-11 01:04:04 +02:00
Carlos V
d46289e59d Update maintenance.php
Added title "Maintenance_Status"
2023-08-11 01:01:43 +02:00
Carlos V
55ab809d5c Update es_es.json
Updated translation variable "Maintenance_Title"
2023-08-11 00:58:31 +02:00
Carlos V
6843668193 Update maintenance.php
Updated title "Maintenance_Title"
2023-08-11 00:57:53 +02:00
Carlos V
c6a2f697b8 Update es_es.json
Updated translation variable "Maintenance_built_on"
2023-08-11 00:34:44 +02:00
Carlos V
02340feb70 Update es_es.json
Variable de traducción actualizada "HelpFAQ_Cat_Detail"
2023-08-11 00:22:27 +02:00
Carlos V
42e1030f85 Update es_es.json
Updated translation variable "Navigation_Report"
Updated translation variable "REPORT_TITLE"
2023-08-11 00:20:25 +02:00
Carlos V
221b6349f1 Update es_es.json
Updated translation variable "Settings_Title"
2023-08-11 00:08:39 +02:00
Carlos V
ac1dbe4e46 Merge branch 'jokob-sk:main' into Pi.Alert-MULTIPLE-FIX-ES_ES.JSON-V3 2023-08-11 00:06:38 +02:00
Jokob-sk
75c4b50d96 CurrentScan sync #334 2023-08-11 08:04:20 +10:00
Carlos V
20955e1a8f Update es_es.json
Updated translation variable "Settings_Title"
2023-08-10 23:44:21 +02:00
jokob-sk
4fa8b8c4ef Merge pull request #343 from cvc90/Pi.Alert-fixes-improvements-Report
Corrections and improvements in the "Report" menu
2023-08-11 07:36:46 +10:00
Jokob-sk
bf29cd42d6 Help icons #338 2023-08-11 07:35:42 +10:00
Jokob-sk
d85ecb0d12 Merge branch 'main' of https://github.com/jokob-sk/Pi.Alert 2023-08-11 07:29:05 +10:00
Jokob-sk
27519a3966 Maintenance icons #341 2023-08-11 07:28:48 +10:00
Carlos V
50480b85dd Update de_de.json
Updated translation variable "Report"
2023-08-10 23:19:43 +02:00
Carlos V
14d236cac7 Update en_us.json
Updated translation variable "Report"
2023-08-10 23:19:01 +02:00
Carlos V
220bd6798e Update es_es.json
Updated translation variable "Report"
2023-08-10 23:18:28 +02:00
jokob-sk
2003f5a946 Merge pull request #342 from cvc90/Pi.Alert-FIX-Version-Docker_dev-V3
Fixed bug to get version in docker dev (V3) - yeah debugging GitHub workflows is a pain, isn't it? 😅 Thanks for the hard work @cvc90 🙏
2023-08-11 07:08:19 +10:00
Carlos V
7e75df6334 Update header.php
Updated "Report" menu icon
2023-08-10 23:04:36 +02:00
Carlos V
b4775ae1e7 Update docker_dev.yml
Updated "get_version" variable (Changed to "Dev")
2023-08-10 22:40:43 +02:00
Carlos V
fec1b3f323 Update docker_dev.yml
Variable "get_version" updated (changed to "dev")
2023-08-10 22:35:56 +02:00
jokob-sk
50aeaa957e Merge pull request #340 from cvc90/Pi.Alert-fixes-improvements-systeminfo-v3
Corrections and improvements in the "System info" menu v3
2023-08-11 06:04:31 +10:00
jokob-sk
9a59102f92 Merge pull request #335 from cvc90/Pi.Alert-MULTIPLE-FIX-ES_ES.JSON-V2
Multiple fix es_es.json v2
2023-08-11 06:01:28 +10:00
jokob-sk
6b13738ea7 Merge pull request #321 from cvc90/Pi.Alert-Add-New-Menu-Report
Added the new "Report" menu and various fixes for the new menu, thanks @cvc90 🙏
2023-08-11 06:00:06 +10:00
jokob-sk
3c2dc0dbfb Merge pull request #337 from cvc90/Pi.Alert-FIX-Version-Docker_dev-V2
Fixed bug to get version in docker dev
2023-08-11 05:58:48 +10:00
Carlos V
243f0034f3 Update report.php
Modified the creators banner
Removed error_reporting variable to disable php errors
2023-08-10 21:50:21 +02:00
Carlos V
1dfe20b0c9 Update es_es.json
Added variable "Settings_Title"
2023-08-10 21:31:16 +02:00
Carlos V
d6cffb367f Update es_es.json
Updated variable "Events_Title"
2023-08-10 21:24:15 +02:00
Carlos V
2561fccce5 Update es_es.json
Updated variable "Presence_Title"
2023-08-10 21:22:12 +02:00
Carlos V
3933936aa9 Update es_es.json
Device_Title
2023-08-10 21:20:25 +02:00
Carlos V
12f628aa5d Update es_es.json
Updated variable "Maintenance_Title"
2023-08-10 21:17:21 +02:00
Carlos V
5ed95dcd36 Update es_es.json
Updated variable "HelpFAQ_Title"
2023-08-10 21:16:43 +02:00
Carlos V
47ef80cc44 Update es_es.json
Updated variable "SYSTEM_TITLE"
2023-08-10 21:16:13 +02:00
Carlos V
832beeef22 Update systeminfo.php
Added new section of variables "Network stats"
Updated "Storage usage" section
Updated "Network" section
2023-08-10 21:08:11 +02:00
Carlos V
6598eb9a48 Update docker_dev.yml
Updated "get_version" variable (Changed to "dev")
2023-08-10 20:09:27 +02:00
Carlos V
4e36f539ef Update es_es.json
Updated translation variable "HRS_TO_KEEP_NEWDEV_description"
2023-08-10 17:04:26 +02:00
Carlos V
93a7da0018 Update es_es.json
Added translation variable "WEBHOOK_SIZE_name"
Added translation variable "WEBHOOK_SIZE_description"
2023-08-10 17:00:19 +02:00
Carlos V
622694f405 Update es_es.json
Added translation variable "HRS_TO_KEEP_NEWDEV_name"
Added translation variable "HRS_TO_KEEP_NEWDEV_description"
2023-08-10 16:52:33 +02:00
Carlos V
01c5de3620 Update es_es.json
Added translation variable "PLUGINS_KEEP_HIST_name"
Added translation variable "PLUGINS_KEEP_HIST_description"
2023-08-10 16:47:57 +02:00
Carlos V
5e1248cc00 Update es_es.json
Added translation variable "Setting_Override_Description"
2023-08-10 16:39:23 +02:00
Carlos V
efecdff59d Update es_es.json
Added translation variable "Setting_Override"
2023-08-10 16:38:05 +02:00
Carlos V
3c5deccb84 Update es_es.json
Updated translation variable "HelpFAQ_Cat_Detail"
2023-08-10 16:33:19 +02:00
Carlos V
8e12daf1c7 Update es_es.json
Updated whitespace in the "Network_ManageUnassign" variable
2023-08-10 16:32:14 +02:00
Carlos V
008da18727 Update es_es.json
Added translation variable "BackDevDetail_Copy_Title"
2023-08-10 16:29:12 +02:00
Carlos V
f108cc86da Update es_es.json
Added translation variable "BackDevDetail_Copy_As"
2023-08-10 16:26:48 +02:00
Carlos V
f2b2a25a19 Update es_es.json
Added translation variable "DevDetail_Copy_Device_Tooltip"
2023-08-10 16:22:21 +02:00
Carlos V
82a1a7e5c7 Update es_es.json
Added translation variable ""DevDetail_Copy_Device_Title""
2023-08-10 16:20:59 +02:00
Carlos V
e4b61e2667 Update es_es.json
Updated blanks in the "DevDetail_button_Delete" variable
2023-08-10 16:16:53 +02:00
Carlos V
cd4d1ca37b Update es_es.json
Updated translation variable "DevDetail_EveandAl_Title"
2023-08-10 16:15:15 +02:00
Carlos V
d238de9fb1 Update es_es.json
Updated translation variable "DevDetail_SessionInfo_Title"
2023-08-10 16:14:10 +02:00
Carlos V
4b07e8bbb6 Update es_es.json
Updated translation variable "DevDetail_MainInfo_Network_Port"
2023-08-10 16:13:22 +02:00
Carlos V
2cb169eff5 Update es_es.json
Updated translation variable "DevDetail_MainInfo_Network_Title"
2023-08-10 16:11:10 +02:00
Carlos V
b53b455719 Update es_es.json
Updated translation variable "DevDetail_MainInfo_Title"
2023-08-10 16:09:18 +02:00
Carlos V
cf51d1f5d7 Update es_es.json
Updated translation variable "DevDetail_Tab_Details"
Updated translation variable "DevDetail_Tab_Nmap"
Updated translation variable "DevDetail_Tab_Sessions"
Updated translation variable "DevDetail_Tab_Presence"
Updated translation variable "DevDetail_Tab_Events"
2023-08-10 16:08:06 +02:00
Carlos V
296fd71b5a Update es_es.json
Added translation variable "Presence_CalHead_day"
2023-08-10 16:03:45 +02:00
Carlos V
4f17e61e8a Update es_es.json
Added translation variable "Device_TableHead_Port"
2023-08-10 16:02:15 +02:00
Carlos V
95126b7c36 Update es_es.json
Added translation variable "Gen_Copy"
2023-08-10 15:57:38 +02:00
Jokob-sk
d2b6e75483 Docs + before_config_save run option 2023-08-10 08:01:16 +10:00
Jokob-sk
320660945c Work on lang #332 2023-08-10 07:13:04 +10:00
jokob-sk
a0d02b2aa5 Merge pull request #333 from cvc90/Pi.Alert-FIX-JSON-Plugin-Website-Monitor
Update config.json of "Website_monitor" plugin
2023-08-09 16:06:50 +10:00
Carlos V
19cf64a6f0 Update config.json
Updated config.json file for the "Spanish" language
2023-08-09 05:39:47 +02:00
jokob-sk
01017040e3 Merge pull request #331 from cvc90/Pi.Alert-FIX-Version-Docker_dev
Fix version docker_dev
2023-08-09 12:57:23 +10:00
Carlos V
9c7f5ff771 Update docker_dev.yml
Added "get_version" variable
Added variable "Create .VERSION file"
2023-08-09 03:12:32 +02:00
jokob-sk
3718a06ea9 Merge pull request #329 from cvc90/Pi.Alert-fixes-improvements-systeminfo-v2
Corrections and improvements in the "System info" menu v2
2023-08-09 10:54:14 +10:00
Carlos V
2950d2ce9f Update systeminfo.php
Updated variable "total_memorykb"
Updated variable "total_memorymb"
2023-08-09 02:50:07 +02:00
Carlos V
4f59d0867d Update systeminfo.php
Added new section "Motherboard"
Added new section "Motherboard stat"
Added new variable "motherboard_name" in the section "Motherboard stat"
Added new variable "motherboard_manufactured" in the section "Motherboard stat"
Added new variable "motherboard_revision" in the section "Motherboard stat"
Added new variable "motherboard_bios" in the section "Motherboard stat"
Added new variable "motherboard_biosdate" in the section "Motherboard stat"
Added new variable "biosvendor" in the section "Motherboard stat"
2023-08-09 00:32:56 +02:00
Carlos V
ee98c7a653 Merge branch 'jokob-sk:main' into Pi.Alert-fixes-improvements-systeminfo-v2 2023-08-09 00:27:17 +02:00
Jokob-sk
af902dae57 Merge branch 'main' of https://github.com/jokob-sk/Pi.Alert 2023-08-09 07:53:09 +10:00
Jokob-sk
0e23c6ac61 PIHOLE to plugin rewrite 2023-08-09 07:52:56 +10:00
Carlos V
30362bb72e Merge branch 'jokob-sk:main' into Pi.Alert-fixes-improvements-systeminfo-v2 2023-08-08 23:40:41 +02:00
Carlos V
dd7f86bfa0 Update systeminfo.php
Updated "cpu_temp" variable
Added new variable "cpu_vendor"
Updated "CPU" menu section
2023-08-08 23:38:41 +02:00
Carlos V
b231a06ee8 Update systeminfo.php
Added a new separator comment for the "General" section variables
2023-08-08 22:30:50 +02:00
jokob-sk
d86a042070 Merge pull request #328 from cvc90/Pi.Alert-FIX-Banners-Creators
Multiple creators banner fixes
2023-08-09 06:09:12 +10:00
Carlos V
b0e34a802d Update systeminfo.php
Actualizada seccion "General"
Actualizada seccion "This Client"
Actualizada seccion "System"
Actualizada seccion "Network"
2023-08-08 21:34:00 +02:00
Carlos V
3460b88167 Update report_template_new_version.html
Fix creators banner
2023-08-08 20:12:22 +02:00
Carlos V
2668370450 Update maintenance.php
Fix creators banner
2023-08-08 20:11:07 +02:00
Carlos V
42e1e748a3 Update systeminfo.php
Fix creators banner
2023-08-08 20:10:30 +02:00
Carlos V
0c620a06f7 Update footer.php
Fix banner creators
2023-08-08 20:08:36 +02:00
jokob-sk
bae7b0400c Merge pull request #326 from cvc90/Pi.Alert-Fix-Version-Build-Footer
Update footer to show version and build
2023-08-08 17:35:06 +10:00
Jokob-sk
b87083e6b1 Merge branch 'main' of https://github.com/jokob-sk/Pi.Alert 2023-08-08 17:30:29 +10:00
Jokob-sk
db4d81863b PIHOLE to plugin rewrite 2023-08-08 17:29:27 +10:00
jokob-sk
2c15bc4127 Merge pull request #325 from cvc90/Pi.Alert-fixes-improvements-systeminfo
Corrections and improvements in the "System info" menu
2023-08-08 13:59:18 +10:00
Carlos V
f7a8e77cc5 Update footer.php
Updated the creators banner
updated comments
Updated footer code
Clean up blanks
Code reduction
2023-08-08 05:03:42 +02:00
Carlos V
7c16bd31a2 Update systeminfo.php
Updated "Storage usage" section
2023-08-08 04:31:51 +02:00
Carlos V
d5d23c8c60 Update systeminfo.php
Modified "Memory" section
2023-08-08 04:23:21 +02:00
Carlos V
3948557da8 Update systeminfo.php
Change of order of "General" section
Change of order of "This Client" section
2023-08-08 04:11:35 +02:00
Carlos V
8057d49be0 Update systeminfo.php
Updated the "Memory Statistics" formula variables
Updated "Memory Statistics" echo variables
Added new formula variables for "CPU Temp"
Modified section "General"
Added new section "System"
Added new section "CPU"
Added new section "Memory"
2023-08-08 03:58:08 +02:00
Jokob-sk
22bfb9deef PIHOLE to plugin rewrite 2023-08-08 08:05:42 +10:00
Jokob-sk
c9f4560cf9 PIHOLE to plugin rewrite 2023-08-08 08:02:15 +10:00
Jokob-sk
6dee27e5a5 Merge branch 'main' of https://github.com/jokob-sk/Pi.Alert 2023-08-08 06:53:09 +10:00
Jokob-sk
9ddea01f12 ARPSCAN to plugin rewrite 2023-08-08 06:52:43 +10:00
jokob-sk
8a8790d49b Merge pull request #322 from cvc90/Pi.Alert-FIX-Report-Banners-Creators
Fix banners creators in report
2023-08-08 06:28:16 +10:00
jokob-sk
e74b8d27b6 Merge pull request #323 from cvc90/Pi.Alert-New-Function-Reporting
Add new function reporting
2023-08-08 06:27:10 +10:00
Carlos V
a38d254877 Update version.php
Update path file
2023-08-07 19:30:41 +02:00
Carlos V
3ca4e19199 Update version.php
Updated blank spaces
2023-08-07 18:18:57 +02:00
Carlos V
0b3b1e4ed4 Update build.php
Updated the creators banner
2023-08-07 18:15:08 +02:00
Carlos V
b068b631be Update build.php
Added the creators banner
Updated blank spaces
2023-08-07 18:14:21 +02:00
Carlos V
9bdac0edbf Update version.php
Created creators banner
2023-08-07 17:44:40 +02:00
Carlos V
56604f702f Create build.php
Created build.php file
Added new php code to search for build file and if it doesn't find it, it shows the file not found error
2023-08-07 17:16:20 +02:00
Carlos V
25bdc36183 Create version.php
Created file version.php
Added new php code to search for version file and if it doesn't find it, it shows the file not found error.
2023-08-07 17:12:10 +02:00
Carlos V
fa7582135e Update reporting.py
Added new code "VERSION" to report version in report file
Added new code "BUILD" to report version in report file
Updated "REPORT_DATE" comment tag
Updated "SERVER_NAME" comment tag
2023-08-07 17:09:01 +02:00
Carlos V
40e94e45a2 Update report_template_new_version.html
Fix banner creators
2023-08-07 14:51:02 +02:00
Carlos V
e119d51d08 Update report_template.html
Fix banner creators
2023-08-07 14:49:52 +02:00
jokob-sk
7c63a5e52f Merge pull request #318 from cvc90/Pi.Alert-New-Style-Reports
Modified the style of the reports v2
2023-08-07 21:56:15 +10:00
Carlos V
3a46c7eb27 Merge branch 'main' into Pi.Alert-New-Style-Reports 2023-08-07 12:41:45 +02:00
Jokob-sk
80bda24b5f ARPSCAN to plugin rewrite 2023-08-07 17:42:46 +10:00
Jokob-sk
5f3f4c1a73 ARPSCAN to plugin rewrite 2023-08-07 16:22:27 +10:00
Jokob-sk
1bdfc1962a Merge branch 'main' of https://github.com/jokob-sk/Pi.Alert 2023-08-07 15:34:12 +10:00
Jokob-sk
ff9245c31d ARPSCAN to plugin rewrite 2023-08-07 15:33:41 +10:00
jokob-sk
085e7c80e7 Update systeminfo.php
Remove php error muting
2023-08-07 08:40:27 +10:00
Jokob-sk
9a13133a5f ARPSCAN to plugin rewrite 2023-08-07 08:23:39 +10:00
Carlos V
1baeeb99db Update report.php
Update variable "REPORT_TITLE"
2023-08-06 15:00:58 +02:00
Carlos V
8f1223c55b Update report.php
Create variable echo lang('REPORT_ERROR');
2023-08-06 14:55:48 +02:00
Carlos V
64ad2f6b80 Update de_de.json
Added variable "Navigation_Report"
Added variable "REPORT_TITLE"
Added variable "REPORT_ERROR
2023-08-06 14:13:10 +02:00
Carlos V
39282d51ac Update en_us.json
Added variable "Navigation_Report"
Added variable "REPORT_TITLE"
Added variable "REPORT_ERROR"
2023-08-06 14:07:28 +02:00
Carlos V
76c3f7e94e Merge branch 'jokob-sk:main' into Pi.Alert-Add-New-Menu-Report 2023-08-06 14:02:43 +02:00
Carlos V
2a14d59a45 Update es_es.json
Added variable "Navigation_Report"
Added variable "REPORT_TITLE"
Added variable "REPORT_ERROR"
2023-08-06 13:59:51 +02:00
jokob-sk
d848e18bc0 Merge pull request #320 from cvc90/Pi.Alert-MULTIPLE-FIX-ES_ES.JSON
Various fixes in es_es.json
2023-08-06 21:56:08 +10:00
Carlos V
3430118f09 Create report.php
Added new page "Report.php" to load the last report generated by Pi.Alert
2023-08-06 13:46:27 +02:00
Carlos V
e0c7ffbb12 Update header.php 2023-08-06 13:43:48 +02:00
Carlos V
ec669a701e Update es_es.json
Updated variable HelpFAQ_Cat_Network_601_text ("HelpFAQ_Cat_Network_601_text": "¡Sí, los hay! Marque <a target=\"_blank\" href=\"https://github.com/jokob-sk/Pi.Alert/blob/main/docs/\">all docs</a> para más información." --> "HelpFAQ_Cat_Network_601_text": "¡Sí, los hay! Marque <a target=\"_blank\" href=\"https://github.com/jokob-sk/Pi.Alert/blob/main/docs/\">todos los documentos</a> para más información.")
2023-08-06 12:27:15 +02:00
Carlos V
8da84e8d64 Update es_es.json
Added variable "DevDetail_Tab_Plugins" ("DevDetail_Tab_Plugins" : "<i class=\"fa fa-plug\"></i> Plugins")
2023-08-06 11:52:16 +02:00
Carlos V
90e94a14fb Update es_es.json
Added  variable "Plugins_History" ("Plugins_History" : "Historial de eventos")
Added  variable "Plugins_Filters_Mac" ("Plugins_Filters_Mac" : "Filtro MAC")
2023-08-06 11:45:03 +02:00
Carlos V
f33262d262 Update es_es.json
Added variable "Maintenance_built_on" ("Maintenance_built_on" : "Construido el")
2023-08-06 11:35:23 +02:00
Carlos V
2e137b4e07 Update es_es.json
Added variable HelpFAQ_Cat_Network_601_head ("HelpFAQ_Cat_Network_601_head": "¿Hay otros documentos?")
Added variable HelpFAQ_Cat_Network_601_text ("HelpFAQ_Cat_Network_601_text": "¡Sí, los hay! Marque <a target=\"_blank\" href=\"https://github.com/jokob-sk/Pi.Alert/blob/main/docs/\">all docs</a> para más información.")
2023-08-06 11:27:59 +02:00
Carlos V
634bc0744d Update es_es.json
Updated Navigation_HelpFAQ menu variable too long ("Navigation_HelpFAQ" : "Ayuda / Preguntas frecuentes" --> "Navigation_HelpFAQ" : "Ayuda / FAQ")
Added variable Navigation_Flows ("Navigation_Flows" : "Flows")
2023-08-06 11:16:42 +02:00
jokob-sk
8cbca4430a Merge pull request #317 from cvc90/Pi.Alert-FIX-Menu-Variable-Navigation_SystemInfo
Pi.alert fix menu variable navigation system info
2023-08-06 18:37:48 +10:00
Carlos V
6c166908a1 Create and update reporting.py
Added creator banner
Added import const
Changed color in headerProps variable (color:blue --> color:white)
Modified bgcolor in headerProps variable (bgcolor=#909090 --> bgcolor=#64a0d6)
Modified bgcolor in the thProps variable (bgcolor=#909090 --> bgcolor=#64a0d6)
2023-08-06 10:18:32 +02:00
Carlos V
42ebb687f8 Create and update report_template_new_version.html
Modified creator banner url (repot_template.html --> report_template_new_version.html)
Modified the creators banner adding to cvc90
Removed several white spaces between banner and tag
Changed the background color in the table (bgcolor=#00c0ef --> bgcolor=#4b99d3)
Changed the color of the text to white in the table ( bgcolor=#4b99d3 --> bgcolor=#ffffff)
Changed the background color in td (bgcolor=#F5F5F5 --> bgcolor=#F1F5F5)
Changed the background color in the footer table (bgcolor=#46802e --> bgcolor=#3c8dbc)
Added in the footer table the color of the text to white (color: white)
Changed footer text
2023-08-06 10:13:32 +02:00
Carlos V
d9761e771f Create and Update report_template.html
Modified creator banner url repot_template.html --> report_template.html
Modified the creators banner adding to cvc90
Removed several white spaces between banner and tag
Changed the background color in the table (bgcolor=#00c0ef --> bgcolor=#4b99d3)
Changed the color of the text to white in the table (bgcolor=#4b99d3 --> bgcolor=#ffffff)
Changed the background color in td (bgcolor=#F5F5F5 --> bgcolor=#F1F5F5)
Changed the background color in the footer table (bgcolor=#46802e --> bgcolor=#3c8dbc)
Added in the footer table the color of the text to white (color: white)
Changed footer text
2023-08-06 10:07:18 +02:00
Carlos V
2575b79c8b Update de_de.json
Changed the content of the "System info" menu variable ("Navigation_SystemInfo" : "Systeminformationen" --> "Navigation_SystemInfo" : "System info")
2023-08-06 08:54:41 +02:00
Carlos V
6009098c9c Update es_es.json
Changed the content of the "System info" menu variable ("Navigation_SystemInfo" : "Información del sistema" --> "Navigation_SystemInfo" : "Info del sistema")
2023-08-06 08:51:26 +02:00
Carlos V
2946e48321 Update en_us.json
Changed the content of the "System info" menu variable ("Navigation_SystemInfo" : "System Information" --> "Navigation_SystemInfo" : "System info")
2023-08-06 08:37:28 +02:00
Jokob-sk
8256a84efe ARPSCAN to plugin rewrite 2023-08-06 11:16:43 +10:00
Jokob-sk
c2da5c56b8 ARPSCAN to plugin rewrite 2023-08-06 10:50:03 +10:00
jokob-sk
ef64014100 Merge pull request #316 from jokob-sk/revert-315-Pi.Alert-New-Style-Reports
Revert "Modified the style of the reports"
2023-08-06 07:50:07 +10:00
jokob-sk
2bb5d332ff Revert "Modified the style of the reports" 2023-08-06 07:47:37 +10:00
jokob-sk
54d71c7cc9 Merge pull request #314 from cvc90/Pi.Alert-Add-New-Menu-SystemInfo
Added the new "System Info" menu and various fixes for the new menu - with thanks to @cvc90 🙏
2023-08-06 07:39:47 +10:00
jokob-sk
14437f2984 Merge pull request #315 from cvc90/Pi.Alert-New-Style-Reports
Modified the style of the reports
2023-08-06 07:29:44 +10:00
Carlos V
928ee52a7e Update report_template_new_version.html
Modified the creators banner
2023-08-05 23:19:18 +02:00
Carlos V
82d87db762 Update report_template.html
Modified the creators banner
2023-08-05 23:16:22 +02:00
Carlos V
f26507e540 Update systeminfo.php
Updated php opening at the beginning of the file
2023-08-05 19:47:42 +02:00
Carlos V
dcd32b9162 Update reporting.py
Added creator banner
Added import const
Changed color in headerProps variable (color:blue --> color:white)
Modified bgcolor in headerProps variable (bgcolor=#909090 --> bgcolor=#64a0d6)
Modified bgcolor in the thProps variable (bgcolor=#909090 --> bgcolor=#64a0d6)
2023-08-05 19:14:17 +02:00
Carlos V
d59eb03f40 Update report_template_new_version.html
Modified creator banner url report_template.html --> report_template.html
Modified the creators banner adding to cvc90
Removed several white spaces between banner and <html> tag
Changed the background color in the table (bgcolor=#00c0ef --> bgcolor=#4b99d3)
Changed the color of the text to white in the table ( bgcolor=#4b99d3 --> bgcolor=#ffffff)
Changed the background color in td (bgcolor=#F5F5F5 --> bgcolor=#F1F5F5)
Changed the background color in the footer table (bgcolor=#46802e --> bgcolor=#3c8dbc)
Added in the footer table the color of the text to white (color: white)
Changed footer text
2023-08-05 19:04:54 +02:00
Carlos V
d096b36434 Update report_template.html
Modified creator banner url report_template.html --> report_template.html
2023-08-05 18:55:02 +02:00
Carlos V
5624401fcf Update report_template.html
Modified creator banner url report_template.html --> report_template.html
Modified the creators banner adding to cvc90
Removed several white spaces between banner and <html> tag
Changed the background color in the table (bgcolor=#00c0ef --> bgcolor=#4b99d3)
Changed the color of the text to white in the table (bgcolor=#ffffff --> bgcolor=#4b99d3)
Changed the background color in td (bgcolor=#F5F5F5 --> bgcolor=#F1F5F5)
Changed the background color in the footer table (bgcolor=#46802e --> bgcolor=#3c8dbc)
Added in the footer table the color of the text to white (color: white)
Changed footer text
2023-08-05 18:51:45 +02:00
Carlos V
8c4992bf9a Merge branch 'jokob-sk:main' into Pi.Alert-Add-New-Menu-SystemInfo 2023-08-05 15:57:36 +02:00
Carlos V
a4984dc477 Update systeminfo.php
Fixed Server name query
2023-08-05 15:54:13 +02:00
Carlos V
c2676f9fda Update systeminfo.php
Added final section separator
Fixed end of submenu section
2023-08-05 15:49:32 +02:00
jokob-sk
9bb3820e82 Merge pull request #313 from cvc90/Pi.Alert-Fix-URL-Proxy-Header
Update header.php
2023-08-05 23:47:41 +10:00
Carlos V
72ccaf754f Update systeminfo.php
Add new content to the "Network" submenu
2023-08-05 15:42:41 +02:00
Carlos V
da0d387ae0 Update systeminfo.php
Updated some comments of variable sections
Added new section of variables "Network Hardware stat"
Add new content to the "Network Hardware" submenu
2023-08-05 15:38:14 +02:00
Carlos V
e06fe9146c Update systeminfo.php
Add new content to the "Storage" submenu
2023-08-05 15:27:24 +02:00
Carlos V
e5eb3ab297 Update systeminfo.php
Fixed comment space located in variable error_reporting(0); // Turn off php errors
2023-08-05 15:21:16 +02:00
Carlos V
012589b848 Update systeminfo.php
Add new content to the "USB" variables submenu
Add new content to the "USB" submenu
Add new content to the "Services" submenu
2023-08-05 15:19:23 +02:00
Carlos V
43a2c4870e Update systeminfo.php
Fix variable $memory_usage_percent
2023-08-05 15:09:47 +02:00
Carlos V
8fe10e6314 Update systeminfo.php
Fix variable 'mem_used'
2023-08-05 14:56:05 +02:00
Carlos V
cab6c0cefb Update Dockerfile
Change "lsusb" to "usbutils" in apt-get install
2023-08-05 14:48:59 +02:00
Carlos V
07c2c2b9ac Update Dockerfile
Fixes for the new System Info menu to work in Docker, added "systemctl", "lsusb" to the installation list
2023-08-05 14:39:13 +02:00
Carlos V
a4f8cfa287 Update systeminfo.php
Update variable lang  <!--  <?= lang('SYSTEM_TITLE') ;?> --> to <?= lang('SYSTEM_TITLE') ;?>
2023-08-05 14:30:03 +02:00
Carlos V
1bafee59c8 Update de_de.json
Added new translation to German, variable "Navigation_SystemInfo" : "Systeminformationen"
Added new translation to German, variable "SYSTEM_TITLE" : "Systeminformationen"
2023-08-05 14:26:51 +02:00
Carlos V
e8f9608372 Update en_us.json
Added new translation to English, variable "Navigation_SystemInfo" : "System Information"
Added new translation to English, variable "SYSTEM_TITLE" : "System Information"
2023-08-05 14:21:44 +02:00
Carlos V
d8904f7ac8 Update systeminfo.php
Update variable lang  <!--  <?= lang('SYSTEM_TITLE') ;?> -->
2023-08-05 14:16:54 +02:00
Carlos V
8f8e4334b9 Update es_es.json
Added new translation to Spanish, variable Navigation_SystemInfo" : "Información del sistema"

Added new translation to Spanish, variable "SYSTEM_TITLE" : "Información del sistema"
2023-08-05 14:15:25 +02:00
Carlos V
293e009321 Update systeminfo.php
Updated blanks
Updated OS-Version comment
2023-08-05 14:06:06 +02:00
Carlos V
5d53f1f605 Create systeminfo.php
Create page for the new "System Information" menu
2023-08-05 14:03:06 +02:00
Carlos V
87212bb25f Update header.php
Add new menu System Info
2023-08-05 13:34:37 +02:00
Carlos V
7076c83185 Update header.php
Change url href="/maintenance.php#tab_Logging" to url href="maintenance.php#tab_Logging", to work well for people with proxy settings
2023-08-05 13:01:01 +02:00
Jokob-sk
ccbf4defe8 Set PWD plugin #286 work 2023-08-05 16:36:40 +10:00
Jokob-sk
c3c3de01e0 network tree port/wifi icons + cleanup 2023-08-05 15:52:47 +10:00
Jokob-sk
7efe658503 network tree port/wifi icons 2023-08-05 15:42:26 +10:00
Jokob-sk
88301c97eb docs + template setting override work 2023-08-05 15:05:10 +10:00
Jokob-sk
e68a04ee5b docs 2023-08-05 13:35:09 +10:00
Jokob-sk
655fa96c67 docs 2023-08-05 13:31:47 +10:00
Jokob-sk
ce5d09ed2e #303 work 2023-08-05 12:59:51 +10:00
Jokob-sk
e34a7c032a #303 work 2023-08-05 12:58:30 +10:00
Jokob-sk
88ef46b2d4 Settings work + docs 2023-08-05 10:02:56 +10:00
Jokob-sk
d5f8cdda7d Setting template work + vendors fix 2023-08-05 09:37:32 +10:00
Jokob-sk
4fbaccc0f2 Docs + flows work 2023-08-05 06:52:23 +10:00
jokob-sk
b4dd34355e Merge pull request #311 from cvc90/Pi.Alert-Add-Footer-URL
Update footer.php
2023-08-05 06:18:28 +10:00
jokob-sk
2b02e6ee29 Merge pull request #310 from cvc90/Pi.Alert-Add-Back-Next-Button
Update header.php - thanks @cvc90 🙏
2023-08-05 06:17:50 +10:00
jokob-sk
a262a89e13 Merge pull request #312 from dlgreenwald/main
Mitigate race condition in update_device_names - thanks to @dlgreenwald 🙏
2023-08-05 06:17:11 +10:00
dlgreenwald
50233460b2 Mitigate race condition in update_device_names 2023-08-04 15:07:27 -04:00
Carlos V
8776fc1356 Update footer.php
Removed blank spaces
2023-08-04 17:18:18 +02:00
Carlos V
cd793c8e67 Update footer.php
Added Pi.Alert footer with url
2023-08-04 17:15:37 +02:00
Carlos V
9a6c5896dd Update header.php
Add Back Button
Add Next Button
2023-08-04 14:18:33 +02:00
jokob-sk
43e96a8708 Merge pull request #309 from cvc90/Add-Reload
Update header.php
2023-08-04 21:46:12 +10:00
Carlos V
38702d03ac Update header.php
Added Reload button
Modified function toggleFullscreen()
Modified Full Screen button
2023-08-04 05:59:46 +02:00
jokob-sk
335fa1b003 Merge pull request #308 from cvc90/Add-FullScreen
Update header.php by @cvc90 🙏
2023-08-04 13:20:32 +10:00
Carlos V
91140642ef Update header.php
Added function toggleFullscreen()
Added Full Screen button
2023-08-04 05:00:16 +02:00
jokob-sk
eb0c7fbf68 Merge pull request #306 from cvc90/cvc90-Update-README.md
Update README.md - thanks @cvc90 🙏
2023-08-04 11:06:58 +10:00
Carlos V
d8af423a9c Update README.md
In the submenu "♻ Misc"

Reverse proxy with SWAG --> Reverse proxy (Nginx, Apache, SWAG)
2023-08-04 01:10:56 +02:00
Jokob-sk
8693d4cae9 Email CSS tweaks #304 2023-08-04 06:47:18 +10:00
Jokob-sk
960a3ebe14 Flows work + #302 2023-08-04 06:41:11 +10:00
Jokob-sk
1105caed16 Docs 2023-08-03 07:05:58 +10:00
Jokob-sk
f35bb19f5a Attribution 🙏 2023-08-03 06:53:00 +10:00
Jokob-sk
eee7816a50 Reverse proxy guides by amazing @cvc90 2023-08-03 06:50:44 +10:00
Jokob-sk
58bb740e48 flows work + network UI improvements 2023-08-02 08:02:41 +10:00
Jokob-sk
1101bc9477 settings rewrite to JS 2023-08-01 08:11:52 +10:00
Jokob-sk
6fd750e4e1 settings rewrite to JS 2023-07-31 08:14:50 +10:00
Jokob-sk
55d7cb0fec lang to json fixes 2023-07-30 10:31:23 +10:00
Jokob-sk
cc5901ffb0 settings rewrite to JS + CSS fixes 2023-07-30 10:11:27 +10:00
Jokob-sk
e9c8be78ad settings rewrite to JS + metadata work + #298 work 2023-07-30 07:58:02 +10:00
Jokob-sk
779ce0e568 settings rewrite to JS 2023-07-28 08:00:31 +10:00
Jokob-sk
c351d2e8d4 settings rewrite to JS 2023-07-27 08:02:40 +10:00
Jokob-sk
dc2849f296 settings rewrite to JS 2023-07-26 22:08:12 +10:00
Jokob-sk
b10d259390 php lang files to json 2023-07-26 20:49:27 +10:00
Jokob-sk
aac46f97ce setings improvements/JS rewrite 2023-07-26 07:14:29 +10:00
Jokob-sk
46e4857a35 setings improvements/JS rewrite 2023-07-26 07:14:09 +10:00
Jokob-sk
35a0a91a02 setings improvements/JS rewrite 2023-07-25 08:09:04 +10:00
Jokob-sk
cd164793cc presence #294 work + setings improvements 2023-07-25 06:43:15 +10:00
Jokob-sk
56f35f5068 Merge branch 'main' of https://github.com/jokob-sk/Pi.Alert 2023-07-23 09:43:38 +10:00
Jokob-sk
e83a622152 Flows + settings metadata work 2023-07-23 09:43:12 +10:00
jokob-sk
6cdc0c14df Update README.md
Ckeanup
2023-07-22 18:03:08 +10:00
Jokob-sk
d7fb478794 pics 2023-07-22 13:15:36 +10:00
Jokob-sk
2c2bf18562 docs 2023-07-22 12:58:44 +10:00
Jokob-sk
5faf6fb419 fixes 2023-07-22 12:43:09 +10:00
Jokob-sk
b1f946e1e6 fixes 2023-07-22 12:37:53 +10:00
Jokob-sk
bcea3e1a97 fixes 2023-07-22 12:37:36 +10:00
Jokob-sk
bcda186cbe fixes 2023-07-22 12:34:12 +10:00
Jokob-sk
02215c87eb fixes 2023-07-22 12:33:16 +10:00
Jokob-sk
024e97f138 fixes 2023-07-22 12:32:01 +10:00
Jokob-sk
c56c7609cc Plugin tweaks 2023-07-22 12:28:27 +10:00
Jokob-sk
d723b37622 Docs 2023-07-22 12:07:07 +10:00
Jokob-sk
b461bf4ef7 Docs 2023-07-22 11:09:29 +10:00
Jokob-sk
6e8bb4c2ea Plugins move back 2023-07-22 11:06:01 +10:00
Jokob-sk
0446f6302e Docs 2023-07-22 10:35:54 +10:00
Jokob-sk
a0b0c0ba19 Docs 2023-07-22 10:18:11 +10:00
Jokob-sk
cb0a62396f Plugins UI improvements 2023-07-22 08:40:42 +10:00
Jokob-sk
3315994356 #253 2023-07-22 07:07:21 +10:00
Jokob-sk
c3798ff102 #253 2023-07-21 08:22:01 +10:00
Jokob-sk
43c0df086a Plugins filter + #253 2023-07-21 08:19:11 +10:00
Jokob-sk
98745805d3 Plugins filter 2023-07-20 19:11:43 +10:00
Jokob-sk
1dbdf425d6 Plugins filter 2023-07-20 08:14:37 +10:00
Jokob-sk
b3d05332e5 Plugins filter 2023-07-19 08:18:07 +10:00
Jokob-sk
98fb02282b Debug tips 2023-07-18 08:06:32 +10:00
Jokob-sk
536d789535 Content moved notice 2023-07-17 12:13:42 +10:00
Jokob-sk
d0284a0603 Filter plugin prep 2023-07-16 09:30:55 +10:00
Jokob-sk
4d433b633f Settings changes, NEWDEV work, DOCS 2023-07-15 09:35:28 +10:00
jokob-sk
388844f2bc Merge pull request #284 from Final-Hawk/main
Fix update check interval Thanks to @Final-Hawk 🙏
2023-07-14 12:13:12 +10:00
Joshua P
2fc63daf23 Fix update check 2023-07-14 12:00:40 +10:00
Jokob-sk
c9bc3e9447 Version check debug 2023-07-14 08:05:02 +10:00
Jokob-sk
4a754cdae5 new device defaults work 2023-07-13 10:35:40 +10:00
Jokob-sk
1bb1d528f4 Merge branch 'main' of https://github.com/jokob-sk/Pi.Alert 2023-07-09 22:19:44 +10:00
Jokob-sk
770d9bfe4a moving plugins & NEWDEV 2023-07-09 22:19:40 +10:00
jokob-sk
8e3aa0407a Update README.md 2023-07-08 23:04:29 +10:00
Jokob-sk
acb756a871 moving plugins 2023-07-08 22:48:49 +10:00
jokob-sk
85e6319760 Update README.md 2023-07-08 20:51:34 +10:00
jokob-sk
66ffb5ebca Update SUBNETS.md 2023-07-08 20:49:55 +10:00
jokob-sk
e548138b9f Update README.md
docs
2023-07-08 14:38:18 +10:00
Jokob-sk
2a5a2693ce New Devices cleanup #250 work 2023-07-08 14:30:33 +10:00
Jokob-sk
efee89dcc1 Device copy server side #276 work 2023-07-08 13:27:24 +10:00
Jokob-sk
74894b519f docs+CSV import logging 2023-07-08 10:29:47 +10:00
Jokob-sk
1a08a88b9e docs/debug 2023-07-08 09:56:07 +10:00
Jokob-sk
e3e0e62d77 docs 2023-07-08 09:39:43 +10:00
Jokob-sk
235264ed1e docs 2023-07-08 09:35:24 +10:00
Jokob-sk
a5aa3d550d docs 2023-07-08 09:24:46 +10:00
Jokob-sk
79b5429a01 docs 2023-07-07 08:05:21 +10:00
Jokob-sk
45dd94e5d5 arp-scan debug #261 work 2023-07-07 07:48:45 +10:00
Jokob-sk
e0d5970643 docs 2023-07-06 19:29:49 +10:00
Jokob-sk
1fc11cd49f info on the REPORT_FROM setting #279 work 2023-07-06 19:19:41 +10:00
Jokob-sk
e5be488b3f arp-scan debug #261 work 2023-07-06 07:56:57 +10:00
Jokob-sk
77ba2e1362 arp-scan debug #261 work 2023-07-05 08:04:10 +10:00
Jokob-sk
89aa38ecc1 arp-scan debug #261 work 2023-07-05 08:01:42 +10:00
Jokob-sk
0c35577a68 arp-scan debug #261 work 2023-07-05 08:00:58 +10:00
Jokob-sk
cd9e244efd New dev defaults #274 work 2023-07-02 10:37:21 +10:00
Jokob-sk
ae876484a4 Network diagram #278 work 2023-07-02 09:25:22 +10:00
Jokob-sk
7720bba5dc webhook #271 work 2023-07-02 08:52:57 +10:00
Jokob-sk
d1b1f078aa webhook #271 work 2023-07-02 08:45:57 +10:00
Jokob-sk
8839ed5932 nginx docs + webhook debug 2023-07-01 10:52:02 +10:00
Jokob-sk
c5987778b6 #269 2023-06-25 08:53:31 +10:00
Jokob-sk
abe9ff5b2c Merge branch 'main' of https://github.com/jokob-sk/Pi.Alert 2023-06-25 08:25:29 +10:00
Jokob-sk
e231600b88 #266, docs, contact details 2023-06-25 08:24:53 +10:00
jokob-sk
3ccad7a564 Merge pull request #268 from sbe-arg/fix/docker
fix: github packages 403
2023-06-25 07:59:15 +10:00
Santiago Bernhardt
8cf034ed29 package permissions 2023-06-24 21:57:58 +12:00
jokob-sk
9784092c7f Merge pull request #267 from sbe-arg/fix/github-login
fix: docker cache to github registry mistake
2023-06-24 19:43:08 +10:00
Santiago Bernhardt
ef3fe4dd52 fix docker cache to github packages 2023-06-24 21:36:19 +12:00
jokob-sk
7530fb0e23 Merge pull request #265 from Data-Monkey/pialert-folder-documentation
Update README.md
2023-06-24 19:12:58 +10:00
Roland Beck
49211719f0 Update README.md
complete the list of modules
2023-06-24 18:50:11 +10:00
Jokob-sk
430e53820a Docs 2023-06-24 09:45:45 +10:00
Jokob-sk
170772eb7c HA Docs 2023-06-24 09:36:52 +10:00
Jokob-sk
6f1d795c60 HA Docs + Debug ARP scan 2023-06-24 09:29:49 +10:00
Jokob-sk
3d1178bd16 Docs 2023-06-24 08:32:34 +10:00
Jokob-sk
17f2421836 Debug and attempt for #261 2023-06-24 07:55:03 +10:00
Jokob-sk
c61a5bedcf Hypervisor added for #260 2023-06-24 07:09:02 +10:00
Jokob-sk
a318a15cad SNMP walk attempt at #258 2023-06-24 06:55:24 +10:00
Jokob-sk
f430587965 Suggest Oxsq in Readme #256 2023-06-24 06:21:18 +10:00
Jokob-sk
de3b0c7ffc .VERSION file creation prod built attempt fix #209 2023-06-18 10:25:34 +10:00
Jokob-sk
689f54cdc3 GitHub API rate limit handling 2023-06-18 09:22:43 +10:00
Jokob-sk
cee24e0b6c Table rowcount in Maintenance #253 2023-06-18 08:31:05 +10:00
Jokob-sk
2e713bf1d0 Fix Log Limit #255 2023-06-18 07:40:02 +10:00
Jokob-sk
d774901b6d change to dockerhub 2023-06-17 08:22:06 +10:00
jokob-sk
7d7f3df226 Merge pull request #254 from sbe-arg/docker/caches
Speedup docker builds with a cache, thanks @sbe-arg !
2023-06-17 08:02:01 +10:00
Santiago Bernhardt
07c2cd1af4 speedup docker builds with a cache 2023-06-16 11:00:30 +12:00
jokob-sk
ddd28a0607 Update docker_prod.yml 2023-06-16 08:30:59 +10:00
jokob-sk
fa92df6567 Update docker_prod.yml 2023-06-16 08:28:54 +10:00
Jokob-sk
76a3efe039 Load only last few lines from pialert.log 2023-06-16 08:05:47 +10:00
Jokob-sk
601ed15f20 conf. variable fix & #247 2023-06-12 15:41:09 +10:00
Jokob-sk
2a3b505dff PLugin reports not sent fix 2023-06-12 11:24:42 +10:00
Jokob-sk
9550227672 Readme 2023-06-10 21:49:29 +10:00
Jokob-sk
89c0750463 Merge branch 'main' of https://github.com/jokob-sk/Pi.Alert 2023-06-10 21:48:11 +10:00
jokob-sk
0fa71362b8 Merge pull request #249 from jokob-sk/split-up-work-2023-05-30
Split up work 2023 05 30
2023-06-10 21:45:59 +10:00
Jokob-sk
d8df097e83 Fixes 2023-06-10 11:11:40 +10:00
Jokob-sk
67c20cabc3 Upgrade DB fixes + NTFY fix 2023-06-10 10:57:26 +10:00
Jokob-sk
5867961383 Upgrade DB fixes 2023-06-10 09:01:24 +10:00
jokob-sk
649e280ce1 Merge pull request #248 from Data-Monkey/split_it_up
fix issue #4 by @Data-Monkey
2023-06-10 08:02:44 +10:00
Data-Monkey
9d982eff1b fix issue #4 2023-06-09 08:44:50 +10:00
jokob-sk
6ac8225b19 Merge pull request #246 from Data-Monkey/split_it_up
Split it up
2023-06-05 18:23:03 +10:00
Data-Monkey
55ed3c4ae0 PiHole testing and fixing 2023-06-05 15:40:32 +10:00
Data-Monkey
5d0804639c attempt to fix issue #6 as well as db.read_one() 2023-06-05 13:31:14 +10:00
Data-Monkey
6edb623b9c fix issue #7 plugins not executed 2023-06-04 14:20:19 +10:00
jokob-sk
8c2a1e17d9 Merge pull request #245 from Data-Monkey/split_it_up
Split it up
2023-06-04 14:18:03 +10:00
Data-Monkey
2a2f96d726 Issue #4 - fixed fetachall, fetchone mismatch 2023-06-04 14:06:09 +10:00
Data-Monkey
ec705df38b fixing issue #3 - webhook 2023-06-04 13:45:48 +10:00
jokob-sk
cb20fad13b Merge pull request #244 from Data-Monkey/split_it_up
Split it up
2023-06-04 08:17:59 +10:00
Data-Monkey
969cae0343 send_webhook fixed parameters 2023-06-03 21:56:10 +10:00
Data-Monkey
f9652258e9 Merge branch 'split_it_up' of https://github.com/Data-Monkey/Pi.Alert into split_it_up 2023-06-03 21:42:28 +10:00
Data-Monkey
6bb891f830 added default DB
fixed re-import of config file
2023-06-03 21:42:04 +10:00
Jokob-sk
4659d2c941 PR - day view 2023-06-03 11:57:27 +10:00
Jokob-sk
8644818949 PR - docs 2023-06-03 11:48:33 +10:00
Jokob-sk
de62956c40 PR - dev setup fixes 2023-06-03 11:36:21 +10:00
Jokob-sk
3547aec75f PR - dev setup fixes 2023-06-03 09:39:50 +10:00
Jokob-sk
21b5d775d2 PR - gitignore DB 2023-06-03 09:26:21 +10:00
Jokob-sk
0973bc538e PR - default db 2023-06-03 09:24:20 +10:00
Jokob-sk
bf2c4b87ab PR - default db 2023-06-03 09:20:24 +10:00
jokob-sk
b03087c1c5 Merge pull request #243 from Data-Monkey/split_it_up
Split it up by @Data-Monkey - Huge thanks!
2023-06-03 09:18:09 +10:00
jokob-sk
b814a856d0 Merge branch 'main' into pr/243 2023-06-03 09:17:08 +10:00
Jokob-sk
f6b69a63e2 PR 2023-06-03 09:12:57 +10:00
jokob-sk
df499ea33c PR work 2023-06-03 09:04:09 +10:00
Data-Monkey
007611c429 manually added es translations from master 2023-05-30 18:57:56 +10:00
Data-Monkey
12bf4c7bcc more scanning 2023-05-30 18:47:28 +10:00
Data-Monkey
5b05be24ad split publishers 2023-05-29 16:35:22 +10:00
Data-Monkey
f50e3d4e92 split pubishers 2023-05-29 16:35:09 +10:00
Data-Monkey
7177cdd51d more cleanup and removed files.py module again 2023-05-28 16:10:58 +10:00
Data-Monkey
a71f16ee37 changed to __main__.py and scanners folder 2023-05-27 22:38:12 +10:00
jokob-sk
070e31ef19 Merge pull request #237 from Data-Monkey/patch-1
Update pialert.py - Thanks @Data-Monkey !
2023-05-27 10:00:03 +10:00
Roland Beck
42df2b255a Update pialert.py
add filter to ignore __pycache__ in plugin dir
2023-05-26 19:08:46 +10:00
Data-Monkey
52027c65b3 working docker version 2023-05-26 19:04:20 +10:00
Data-Monkey
a2f2bce3ab working docker version 2023-05-26 19:04:11 +10:00
Data-Monkey
ebcf6fa49b Merge branch 'split_it_up' of https://github.com/Data-Monkey/Pi.Alert into split_it_up 2023-05-25 19:51:11 +10:00
Data-Monkey
c14c762bde cleanup 2023-05-25 19:51:03 +10:00
Roland Beck
fd50ab7deb Create README.md 2023-05-25 13:53:08 +10:00
Data-Monkey
0db7521bee change to import conf 2023-05-24 22:34:09 +10:00
Data-Monkey
3adfa2c268 resolved cirqular imports 2023-05-23 21:18:44 +10:00
Data-Monkey
e27610a199 everything split out ut not tested 2023-05-22 22:05:54 +10:00
Data-Monkey
bd43a16975 everything split out not tested 2023-05-22 22:05:21 +10:00
jokob-sk
eb56126224 Merge pull request #235 from BanCrash/spanish
Update spanish strings by @BanCrash - thanks a lot!
2023-05-22 14:40:32 +10:00
BanCrash
7945fce65d Added new string 2023-05-21 16:21:18 +02:00
BanCrash
8a7ddfbb47 Added remaining spanish translations
Big thanks to @antoniog for giving me the file with all new english strings added!

Co-Authored-By: Antonio Caro <2288057+antoniog@users.noreply.github.com>
2023-05-21 16:03:11 +02:00
Data-Monkey
03163e424f more splitting done 2023-05-21 21:22:51 +10:00
Data-Monkey
d5b7023927 more splitting 2023-05-21 21:22:09 +10:00
Data-Monkey
884aca149a more splitting done 2023-05-21 17:40:05 +10:00
Data-Monkey
1836567f97 to keep up with jakob 2023-05-21 15:18:57 +10:00
Data-Monkey
78f71abd31 moved database out 2023-05-21 15:03:16 +10:00
Data-Monkey
0f63497847 split const and logger from main 2023-05-21 12:08:15 +10:00
Jokob-sk
8a1e472fed Established plugin_helper.py as best practice 2023-05-21 11:37:00 +10:00
Jokob-sk
3831b5a50a SUpport for unauthenticated SMTP #234 2023-05-21 11:04:03 +10:00
Jokob-sk
3756e1a327 re-add DB dir to gitignore 2023-05-21 10:58:12 +10:00
Jokob-sk
c9eb866acd add DB 2023-05-21 10:56:40 +10:00
jokob-sk
55530c05f9 Merge pull request #233 from Data-Monkey/undiscoverables_plugin
Un-Discoverable Devices Plugin by @Data-Monkey
2023-05-21 10:51:31 +10:00
Jokob-sk
422997be9b php errors log 2023-05-20 13:33:45 +10:00
Jokob-sk
13ff086412 Setting select presence statuses #221 2023-05-20 12:42:30 +10:00
Jokob-sk
298b5ac03e Attempt at fixing #228 2023-05-20 11:08:24 +10:00
Jokob-sk
e9af2efbd1 DOnt Awesome Pro docs 2023-05-20 10:56:01 +10:00
Roland Beck
4027970975 Update README.md
added some pictures
2023-05-18 17:57:48 +10:00
Data-Monkey
0ca7116167 Merge branches 'undiscoverables_plugin' and 'undiscoverables_plugin' of https://github.com/Data-Monkey/Pi.Alert into undiscoverables_plugin 2023-05-18 17:51:21 +10:00
Data-Monkey
1474cf424b code and documentation tidied up 2023-05-18 17:43:16 +10:00
Roland Beck
b763d75703 Merge branch 'jokob-sk:main' into undiscoverables_plugin 2023-05-17 22:33:32 +10:00
Data-Monkey
a0501d88ec working version of UnDIS plugin 2023-05-17 22:25:33 +10:00
Jokob-sk
f62d94ba61 database docs 0.1 2023-05-17 22:15:42 +10:00
Jokob-sk
e99d855284 database docs 0.1 2023-05-17 22:15:03 +10:00
Jokob-sk
31b78ff106 Merge branch 'main' of https://github.com/jokob-sk/Pi.Alert 2023-05-17 22:09:31 +10:00
Jokob-sk
ae0c45a716 database docs 2023-05-17 22:09:03 +10:00
jokob-sk
0105844410 Merge pull request #231 from Data-Monkey/plugin_config_dir
get_plugin_config changed to top level folders - Thanks to @Data-Monkey 🙏
2023-05-17 21:08:06 +10:00
Data-Monkey
07e8395536 file path fixed 2023-05-17 13:45:21 +10:00
Data-Monkey
6c8fc093af update git ignore to ignore pycache 2023-05-17 13:05:50 +10:00
Data-Monkey
95a7dcc7fc undiscoverables initial version 2023-05-17 12:55:34 +10:00
Data-Monkey
c54156ca1e get_plugin_config changed to top level folders 2023-05-17 11:39:29 +10:00
Jokob-sk
941a8ef661 Version number to foorter #209 0.1 2023-05-13 14:14:54 +10:00
Jokob-sk
fc79ffc956 Version number to foorter #209 2023-05-13 14:09:19 +10:00
jokob-sk
8e86343942 Merge pull request #229 from jordantrizz/main
feat: Place buildnumber and version in footer. Thanks @jordantrizz !
2023-05-13 09:49:58 +10:00
Jordan Trask
bb87e65745 feat: Place buildnumber and version in footer. 2023-05-11 15:06:59 -04:00
jokob-sk
d1989acd5c Merge pull request #227 from Data-Monkey/patch-1
Update README.md
2023-05-10 20:56:09 +10:00
Roland Beck
e5bc4ad41b Update README.md
added statement about file format and example
2023-05-10 20:46:58 +10:00
jokob-sk
927bdc2f2b Merge pull request #226 from Final-Hawk/patch-1
Fix table mobile view thanks to @Final-Hawk 👍
2023-05-10 19:35:19 +10:00
Joshua
2ff57d8272 Fix table mobile view
Remove obsolete column changing for mobile. 

This is now handled by the column selector in the maintenance tab.
2023-05-10 12:05:40 +10:00
Jokob-sk
49baf4b613 Docs 2023-05-07 10:27:41 +10:00
Jokob-sk
a573fd9841 Docs README 2023-05-07 09:56:37 +10:00
Jokob-sk
e91b640bff Merge branch 'main' of https://github.com/jokob-sk/Pi.Alert 2023-05-07 09:03:52 +10:00
Jokob-sk
8ee47e2fcc Versions docs 2023-05-07 09:03:27 +10:00
jokob-sk
092797e75c Merge pull request #220 from webysther/patch-1
Update DEVICE_MANAGEMENT.md
2023-05-06 08:07:56 +10:00
Webysther Sperandio
816a01f8af Update DEVICE_MANAGEMENT.md 2023-05-05 20:52:16 +02:00
Jokob-sk
3578bbfcad emty columns fixes 2023-05-05 22:42:11 +10:00
Jokob-sk
b4b15af887 FIX SNMDSCV, NMAPSRV, UNFIDSCR bugs 2023-05-05 21:21:01 +10:00
Jokob-sk
c74ef127d1 update only unknown vendors 2023-05-05 19:08:10 +10:00
Jokob-sk
90b3a491c7 Icons docs 2023-04-29 09:10:52 +10:00
jokob-sk
ad41d02eeb Update README.md 2023-04-14 04:31:04 +00:00
jokob-sk
19fe48c7ec Merge pull request #207 from macf0x/patch-1
Update README.md
2023-04-14 14:15:40 +10:00
Macfox
f3d05ca222 Update README.md 2023-04-14 00:33:39 +09:30
Jokob-sk
4aa1848ece Code cleanup 2023-04-13 22:30:27 +10:00
Jokob-sk
2176c58cb5 SNMPDSC plugin 0.4 2023-04-12 20:06:22 +10:00
Jokob-sk
2b95daa248 Fix MAC not passed - #205 2023-04-10 17:00:29 +10:00
Jokob-sk
e7c0bcf419 SNMPDSC plugin 0.3 2023-04-10 12:37:03 +10:00
Jokob-sk
063682510e SNMPDSC plugin 0.2 2023-04-10 12:27:10 +10:00
Jokob-sk
8542d05f66 SNMPDSC plugin 0.1 + PLUG README updates 2023-04-08 13:45:15 +10:00
Jokob-sk
42aa89971d Update README 2023-04-02 12:31:24 +10:00
Jokob-sk
abd607ea10 Update docker README 2023-04-02 10:52:27 +10:00
Jokob-sk
5936ba4626 Improve Plugins README 0.1 2023-04-02 10:22:22 +10:00
Jokob-sk
a6c2b9254b Fix ENABLE_PLUGINS bug discovered in #203 2023-04-02 09:50:50 +10:00
Jokob-sk
62669fd181 Fix empty Plugin header tabs 2023-04-02 09:37:16 +10:00
215 changed files with 23970 additions and 9478 deletions

View File

@@ -7,40 +7,40 @@ assignees: ''
---
**Describe the issue**
## Describe the issue
> When submitting an issue ❗[enable debug](https://github.com/jokob-sk/Pi.Alert/blob/main/docs/DEBUG_TIPS.md)❗ and [have a look at the docs](https://github.com/jokob-sk/Pi.Alert/tree/main/docs)
**Paste last few lines from `pialert.log`**
[describe your issue]
## Paste your `pialert.conf` (remove personal info)
```
paste here
paste_here
```
**Paste your `pialert.conf` (remove personal info)**
```
paste here
```
**Paste your `docker-compose.yml` and `.env` (remove personal info)**
## Paste your `docker-compose.yml` and `.env` (remove personal info)
`docker-compose.yml`
```
paste here
```
paste_here
```
`.env`
```
paste here
```
**Screenshots**
If applicable, add screenshots to help explain your problem.
paste_here
```
## Screenshots
[If applicable, add screenshots to help explain your problem.]
## Paste last few lines from `pialert.log`
> You can use `tail -100 /home/pi/pialert/front/log/pialert.log`
```bash
# paste code below

25
.github/workflows/docker_cache-cleaner.yml vendored Executable file
View File

@@ -0,0 +1,25 @@
name: ci-package-cleaner
on:
workflow_dispatch: # manual option
schedule:
- cron: '15 22 * * 1' # every Monday 10.15pm UTC (~11.15am Tuesday NZT)
jobs:
package-cleaner:
name: package-cleaner
runs-on: ubuntu-latest
timeout-minutes: 5
permissions:
packages: write
steps:
- uses: actions/delete-package-versions@v4
with:
package-name: pi.alert
package-type: container
min-versions-to-keep: 0
delete-only-untagged-versions: true

View File

@@ -14,7 +14,13 @@ on:
jobs:
docker_dev:
runs-on: ubuntu-latest
if: contains(github.event.head_commit.message, 'PUSHPROD') != 'True'
timeout-minutes: 30
permissions:
contents: read
packages: write
if: >
contains(github.event.head_commit.message, 'PUSHPROD') != 'True' &&
github.repository == 'jokob-sk/Pi.Alert'
steps:
- name: Checkout
uses: actions/checkout@v3
@@ -29,6 +35,13 @@ jobs:
id: getargs
run: echo "version=$(cat ./stable/VERSION)" >> $GITHUB_OUTPUT
- name: Get release version
id: get_version
run: echo "::set-output name=version::${{ 'Dev' }}"
- name: Create .VERSION file
run: echo "${{ steps.get_version.outputs.version }}" >> .VERSION
- name: Docker meta
id: meta
uses: docker/metadata-action@v4
@@ -47,6 +60,13 @@ jobs:
type=semver,pattern={{major}}
type=sha
- name: Log in to Github Container registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: jokob-sk
password: ${{ secrets.GITHUB_TOKEN }}
- name: Login to DockerHub
if: github.event_name != 'pull_request'
uses: docker/login-action@v2
@@ -62,3 +82,5 @@ jobs:
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=registry,ref=ghcr.io/jokob-sk/pi.alert:buildcache
cache-to: type=registry,ref=ghcr.io/jokob-sk/pi.alert:buildcache,mode=max

View File

@@ -17,6 +17,10 @@ on:
jobs:
docker:
runs-on: ubuntu-latest
timeout-minutes: 30
permissions:
contents: read
packages: write
steps:
- name: Checkout
uses: actions/checkout@v3
@@ -31,6 +35,13 @@ jobs:
id: getargs
run: echo "version=$(cat ./stable/VERSION)" >> $GITHUB_OUTPUT
- name: Get release version
id: get_version
run: echo "::set-output name=version::${GITHUB_REF#refs/tags/}"
- name: Create .VERSION file
run: echo "${{ steps.get_version.outputs.version }}" >> .VERSION
- name: Docker meta
id: meta
uses: docker/metadata-action@v4
@@ -46,6 +57,14 @@ jobs:
type=ref,event=branch,suffix=-{{ sha }}
type=ref,event=pr
type=raw,value=latest,enable=${{ github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/') }}
- name: Log in to Github Container registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: jokob-sk
password: ${{ secrets.GITHUB_TOKEN }}
- name: Login to DockerHub
if: github.event_name != 'pull_request'
uses: docker/login-action@v2
@@ -61,3 +80,5 @@ jobs:
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=registry,ref=ghcr.io/jokob-sk/pi.alert:buildcache
cache-to: type=registry,ref=ghcr.io/jokob-sk/pi.alert:buildcache,mode=max

11
.gitignore vendored
View File

@@ -2,7 +2,16 @@
.DS_Store
config/pialert.conf
db/*
db/pialert.db
front/log/*
front/plugins/**/*.log
front/api/*
**/plugins/**/*.log
**/%40eaDir/
**/@eaDir/
__pycache__/
*.py[cod]
*$py.class
**/last_result.log
**/script.log

View File

@@ -1,13 +1,14 @@
FROM debian:bullseye-slim
# default UID and GID
ENV USER=pi USER_ID=1000 USER_GID=1000 TZ=Europe/London PORT=20211
ENV USER=pi USER_ID=1000 USER_GID=1000 PORT=20211
#TZ=Europe/London
# Todo, figure out why using a workdir instead of full paths don't work
# Todo, do we still need all these packages? I can already see sudo which isn't needed
RUN apt-get update \
&& apt-get install --no-install-recommends tini ca-certificates curl libwww-perl arp-scan perl apt-utils cron sudo nginx-light php php-cgi php-fpm php-sqlite3 php-curl sqlite3 dnsutils net-tools python3 iproute2 nmap python3-pip zip -y \
&& apt-get install --no-install-recommends tini snmp ca-certificates curl libwww-perl arp-scan perl apt-utils cron sudo nginx-light php php-cgi php-fpm php-sqlite3 php-curl sqlite3 dnsutils net-tools python3 iproute2 nmap python3-pip zip systemctl usbutils traceroute -y \
&& pip3 install requests paho-mqtt scapy cron-converter pytz json2table dhcp-leases pyunifi \
&& update-alternatives --install /usr/bin/python python /usr/bin/python3 10 \
&& apt-get clean autoclean \
@@ -46,3 +47,8 @@ RUN rm /etc/nginx/sites-available/default \
ENTRYPOINT ["tini", "--"]
CMD ["/home/pi/pialert/dockerfiles/start.sh"]
## command to build docker: DOCKER_BUILDKIT=1 docker build . --iidfile dockerID

132
README.md
View File

@@ -1,100 +1,90 @@
# Pi.Alert
<!--- --------------------------------------------------------------------- --->
# 💻🔍 Network security scanner
💻🔍 WIFI / LAN intruder detector.
Scans for devices, port changes on your WIFI/LAN and alerts you if unknown devices or changes are found.
Scans for devices connected to your WIFI / LAN and alerts you if new and unknown devices are found.
![Main screen][main]
# 🐳 Docker image
[![Docker](https://img.shields.io/github/actions/workflow/status/jokob-sk/Pi.Alert/docker_prod.yml?label=Build&logo=GitHub)](https://github.com/jokob-sk/Pi.Alert/actions/workflows/docker_prod.yml)
[![GitHub Committed](https://img.shields.io/github/last-commit/jokob-sk/Pi.Alert?color=40ba12&label=Committed&logo=GitHub&logoColor=fff)](https://github.com/jokob-sk/Pi.Alert)
[![Docker Size](https://img.shields.io/docker/image-size/jokobsk/pi.alert?label=Size&logo=Docker&color=0aa8d2&logoColor=fff)](https://hub.docker.com/r/jokobsk/pi.alert)
[![Docker Pulls](https://img.shields.io/docker/pulls/jokobsk/pi.alert?label=Pulls&logo=docker&color=0aa8d2&logoColor=fff)](https://hub.docker.com/r/jokobsk/pi.alert)
[![Docker Pushed](https://img.shields.io/badge/dynamic/json?color=0aa8d2&logoColor=fff&label=Pushed&query=last_updated&url=https%3A%2F%2Fhub.docker.com%2Fv2%2Frepositories%2Fjokobsk%2Fpi.alert%2F&logo=docker&link=http://left&link=https://hub.docker.com/repository/docker/jokobsk/pi.alert)](https://hub.docker.com/r/jokobsk/pi.alert)
🐳 [Docker hub](https://registry.hub.docker.com/r/jokobsk/pi.alert) | 📄 [Dockerfile](https://github.com/jokob-sk/Pi.Alert/blob/main/Dockerfile) | 📚 [Docker instructions](https://github.com/jokob-sk/Pi.Alert/blob/main/dockerfiles/README.md) | 🆕 [Release notes](https://github.com/jokob-sk/Pi.Alert/releases)
| 🐳 [Docker hub](https://registry.hub.docker.com/r/jokobsk/pi.alert) | 📑 [Docker guide](https://github.com/jokob-sk/Pi.Alert/blob/main/dockerfiles/README.md) |🆕 [Release notes](https://github.com/jokob-sk/Pi.Alert/releases) | 📚 [All Docs](https://github.com/jokob-sk/Pi.Alert/tree/main/docs) |
|----------------------|----------------------| ----------------------| ----------------------|
## 🔍 Scan Methods
The system continuously scans the network for, **New devices**, **New connections** (re-connections), **Disconnections**, **"Always Connected" devices down**, Devices **IP changes** and **Internet IP address changes**. Scanning methods are:
- **Method 1: arp-scan**. The arp-scan system utility is used to search
for devices on the network using arp frames.
- **Method 2: Pi-hole**. This method is optional and complementary to
method 1. If the Pi-hole DNS server is active, Pi.Alert examines its
activity looking for active devices using DNS that have not been
detected by method 1.
- **Method 3. dnsmasq**. This method is optional and complementary to the
previous methods. If the DHCP server dnsmasq is active, Pi.Alert
examines the DHCP leases (addresses assigned) to find active devices
that were not discovered by the other methods.
## Why PiAlert❓ Isn't this scary 👻...
## 🧩 Integrations
- [Apprise](https://hub.docker.com/r/caronc/apprise), [Pushsafer](https://www.pushsafer.com/), [NTFY](https://ntfy.sh/)
- [Webhooks](https://github.com/jokob-sk/Pi.Alert/blob/main/docs/WEBHOOK_N8N.md) ([sample JSON](docs/webhook_json_sample.json))
- Home Assistant via [MQTT](https://www.home-assistant.io/integrations/mqtt/) - discovery ~10s per device, use [MQTT Explorer](https://mqtt-explorer.com/) to delete devices
- [API endpoint](https://github.com/jokob-sk/Pi.Alert/blob/main/docs/API.md)
- [Plugin system](https://github.com/jokob-sk/Pi.Alert/tree/main/front/plugins) for custom script monitoring
...most of us don't know what's going on on our home network, but we want our family and data to _be safe_. _Command-line tools_ are great, but the output can be _hard to understand_ and action if you are not a network specialist 😖.
# 📥 Installation
<!--- --------------------------------------------------------------------- --->
PiAlert gives you peace of mind. _Visualize and immediately report 📬_ what is going on in your network - this is the first step to enhance your _network security 🔐_.
⚠ Only tested as a [docker container - follow these instructions here](dockerfiles/README.md).
> Check out [leiweibau's fork](https://github.com/leiweibau/Pi.Alert/) if you want to install Pi.Alert on the server directly or original instructions for [pucherot's original code](https://github.com/pucherot/Pi.Alert/)
_PiAlert combines several network and other scanning tools 🔍 with notifications 📧 into one user-friendly package 📦_. You get an overview of network device Sessions, Connected devices, Favorites, Events, Presence, Down alerts, and IPs. You can schedule Nmap scans to detect changes in device ports and visualize your Network topology (even with undetectable, dummy devices).
# 📑 Features
- Display:
- Sessions, Connected devices, Favorites, Events, Presence, Concurrent devices, Down alerts, IP's
- Manual Nmap scans, Optional speedtest for Device "Internet"
- Simple Network relationship display
- Maintenance tasks and Settings like:
- Theme Selection (blue, red, green, yellow, black, purple) and Light/Dark-Mode Switch
- DB maintenance, Backup, Restore tools and CSV Export / Import
- Simple login Support
- 🌟(Experimental) [Plugin system](https://github.com/jokob-sk/Pi.Alert/tree/main/front/plugins)
- Create custom plugins with automatically generated settings and UI.
- Monitor anything for changes
- Check the instructions carefully if you are up for a challenge! Current plugins include:
- Detecting Rogue DHCP servers
- Monitoring HTTP status changes of domains/URLs
- Import devices from DHCP.leases files or a UniFi controller
Setup a _kill switch ☠_ for your network via a smart plug with the available [Home Assistant](https://github.com/jokob-sk/Pi.Alert/blob/main/docs/HOME_ASSISTANT.md) integration. Implement custom automations with the [CSV device Exports 📤](https://github.com/jokob-sk/Pi.Alert/tree/main/front/plugins/csv_backup), [Webhooks](https://github.com/jokob-sk/Pi.Alert/blob/main/docs/WEBHOOK_N8N.md), or [API endpoints](https://github.com/jokob-sk/Pi.Alert/blob/main/docs/API.md) features.
| ![Screen 1][screen1] | ![Screen 2][screen2] | ![Screen 5][screen5] |
Extend the app if you want to create your own scanner and handle the results and notifications in PiAlert. Check available [Plugins & Instructions](https://github.com/jokob-sk/Pi.Alert/tree/main/front/plugins). Looking forward to your contributions if you decide to share your work with the community ❤.
| ![Main screen][main] | ![Screen 1][screen1] | ![Screen 5][screen5] |
|----------------------|----------------------| ----------------------|
| ![Screen 3][screen3] | ![Screen 4][screen4] | ![Screen 6][screen6] |
| ![Screen 8][screen8] | ![Report 2][report2] | ![Screen 9][screen9] |
## Scan Methods, Notifications, Integration, Extension system
### 🔗 Other Alternatives
| Features | Details |
|-------------|-------------|
| 🔍 | The app scans your network for, **New devices**, **New connections** (re-connections), **Disconnections**, **"Always Connected" devices down**, Devices **IP changes** and **Internet IP address changes**. Discovery & scan methods include: **arp-scan**. **Pi-hole - DB import**, **Pi-hole - DHCP leases import**, **Generic DHCP leases import**. **UNIFI controller import**, **SNMP-enabled router import**. Check the [Plugins](https://github.com/jokob-sk/Pi.Alert/tree/main/front/plugins) docs for more info on individual scans. |
|📧 | Send notifications to more than 80+ services, including Telegram via [Apprise](https://hub.docker.com/r/caronc/apprise), or use [Pushsafer](https://www.pushsafer.com/), or [NTFY](https://ntfy.sh/). |
|🧩 | Feed your data and device changes into [Home Assistant](https://github.com/jokob-sk/Pi.Alert/blob/main/docs/HOME_ASSISTANT.md), read [API endpoints](https://github.com/jokob-sk/Pi.Alert/blob/main/docs/API.md), or use [Webhooks](https://github.com/jokob-sk/Pi.Alert/blob/main/docs/WEBHOOK_N8N.md) to setup custom automation flows. |
| | Build your own scanners with the [Plugin system](https://github.com/jokob-sk/Pi.Alert/tree/main/front/plugins) |
- [WatchYourLAN](https://github.com/aceberg/WatchYourLAN) - Lightweight network IP scanner with web GUI (Open source)
- [Fing](https://www.fing.com/) - Network scanner app for your Internet security (Commercial, Phone App, Proprietary hardware)
### Old docs
Device Management [instructions](docs/DEVICE_MANAGEMENT.md) | Old Versions [History](docs/VERSIONS_HISTORY.md)
## Installation & Documentation
<!--- --------------------------------------------------------------------- --->
| Docs | Link |
|-------------|-------------|
| 📥🐳 | [Docker instructions](https://github.com/jokob-sk/Pi.Alert/blob/main/dockerfiles/README.md)
| 📥💻 | [HW install (experimental 🧪)](https://github.com/jokob-sk/Pi.Alert/blob/main/docs/HW_INSTALL.md) |
| 📚 | [All Documentation](https://github.com/jokob-sk/Pi.Alert/blob/main/docs/README.md) (App Usage and Configuration) |
> Other Alternatives
>
> - Check out [leiweibau's on HW installed fork](https://github.com/leiweibau/Pi.Alert/) (maintained)
> - Check instructions for [pucherot's original code](https://github.com/pucherot/Pi.Alert/) (unmaintained)
> - [WatchYourLAN](https://github.com/aceberg/WatchYourLAN) - Lightweight network IP scanner with web GUI (Open source)
> - [Fing](https://www.fing.com/) - Network scanner app for your Internet security (Commercial, Phone App, Proprietary hardware)
## ❤ Support me
Get:
- Regular updates to keep your data and family safe 🔄
- Better and more functionality
- I don't get burned out and the app survives longer🔥🤯
- Quicker and better support with issues 🆘
- Less grumpy me 😄
| [![GitHub](https://i.imgur.com/emsRCPh.png)](https://github.com/sponsors/jokob-sk) | [![Buy Me A Coffee](https://i.imgur.com/pIM6YXL.png)](https://www.buymeacoffee.com/jokobsk) | [![Patreon](https://i.imgur.com/MuYsrq1.png)](https://www.patreon.com/user?u=84385063) |
| --- | --- | --- |
- Bitcoin: `1N8tupjeCK12qRVU2XrV17WvKK7LCawyZM`
- Ethereum: `0x6e2749Cb42F4411bc98501406BdcD82244e3f9C7`
> 📧 Email me at [jokob@duck.com](mailto:jokob@duck.com?subject=PiAlert) if you want to get in touch or if I should add other sponsorship platforms.
## Everything else
<!--- --------------------------------------------------------------------- --->
### License
GPL 3.0 | [Read more here](LICENSE.txt) | Source of the [animated GIF (Loading Animation)](https://commons.wikimedia.org/wiki/File:Loading_Animation.gif) | Source of the [selfhosted Fonts](https://github.com/adobe-fonts/source-sans)
> GPL 3.0 | [Read more here](LICENSE.txt) | Source of the [animated GIF (Loading Animation)](https://commons.wikimedia.org/wiki/File:Loading_Animation.gif) | Source of the [selfhosted Fonts](https://github.com/adobe-fonts/source-sans)
### 🥇 Special thanks
### Special thanks
This code is a collaborative body of work, with special thanks to:
This code is a collaborative body of work, with special thanks to:
- 🏆 [pucherot/Pi.Alert](https://github.com/pucherot/Pi.Alert) is the original creator od PiAlert
- [leiweibau](https://github.com/leiweibau/Pi.Alert): Dark mode (and much more)
- [Macleykun](https://github.com/Macleykun): Help with Dockerfile clean-up
- [Final-Hawk](https://github.com/Final-Hawk): Help with NTFY, styling and other fixes
- [TeroRERO](https://github.com/terorero): Spanish translation
- Please see the [Git contributors](https://github.com/jokob-sk/Pi.Alert/graphs/contributors) for a full list of people and their contributions to the project
## ☕ Support me
<a href="https://github.com/sponsors/jokob-sk" target="_blank"><img src="https://i.imgur.com/X6p5ACK.png" alt="Sponsor Me on GitHub" style="height: 30px !important;width: 117px !important;" width="150px" ></a>
<a href="https://www.buymeacoffee.com/jokobsk" target="_blank"><img src="https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png" alt="Buy Me A Coffee" style="height: 30px !important;width: 117px !important;" width="117px" height="30px" ></a>
<a href="https://www.patreon.com/user?u=84385063" target="_blank"><img src="https://upload.wikimedia.org/wikipedia/commons/thumb/8/82/Patreon_logo_with_wordmark.svg/512px-Patreon_logo_with_wordmark.svg.png" alt="Support me on patreon" style="height: 30px !important;width: 117px !important;" width="117px" ></a>
BTC: 1N8tupjeCK12qRVU2XrV17WvKK7LCawyZM
> [pucherot/Pi.Alert](https://github.com/pucherot/Pi.Alert) (the original creator of PiAlert), [leiweibau](https://github.com/leiweibau/Pi.Alert): Dark mode (and much more), [Macleykun](https://github.com/Macleykun) (Help with Dockerfile clean-up) [Final-Hawk](https://github.com/Final-Hawk) (Help with NTFY, styling and other fixes), [TeroRERO](https://github.com/terorero) (Spanish translations), [Data-Monkey](https://github.com/Data-Monkey), (Split-up of the python.py file and more), [cvc90](https://github.com/cvc90) (Spanish translation and various UI work) to name a few...
>
> Please see the [Git contributors](https://github.com/jokob-sk/Pi.Alert/graphs/contributors) for a full list of people and their contributions to the project
<!--- --------------------------------------------------------------------- --->
[main]: ./docs/img/devices_split.png "Main screen"
@@ -105,7 +95,7 @@ BTC: 1N8tupjeCK12qRVU2XrV17WvKK7LCawyZM
[screen5]: ./docs/img/network.png "Screen 5"
[screen6]: ./docs/img/settings.png "Screen 6"
[screen7]: ./docs/img/help_faq.png "Screen 7"
[screen8]: ./docs/img/plugins_webmon.png "Screen 8"
[screen8]: ./docs/img/plugins_rogue_dhcp.png "Screen 8"
[screen9]: ./docs/img/device_nmap.png "Screen 9"
[report1]: ./docs/img/4_report_1.jpg "Report sample 1"
[report2]: ./docs/img/4_report_2.jpg "Report sample 2"

File diff suppressed because it is too large Load Diff

View File

@@ -4,7 +4,7 @@
#
# repot_template.html - Back module. Template to email reporting in HTML format
#-------------------------------------------------------------------------------
# Puche 2021 pi.alert.application@gmail.com GNU GPLv3
# Puche 2021 GNU GPLv3
#--------------------------------------------------------------------------- -->
<html>
<head></head>
@@ -12,7 +12,7 @@
<font face=sans-serif>
<table align=center width=100% cellpadding=0 cellspacing=0 style="border-radius: 5px;">
<tr>
<td bgcolor=#EFB956 align=center style="padding: 20px 10px 10px 10px; font-size: 30px; font-weight: bold; color:#000000; border-top-right-radius: 5px; border-top-left-radius: 5px; box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2)">
<td bgcolor=#3c8dbc align=center style="padding: 20px 10px 10px 10px; font-size: 30px; font-weight: bold; color:#ffffff; border-top-right-radius: 5px; border-top-left-radius: 5px; box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2)">
Pi.Alert Report
</td>
</tr>
@@ -23,7 +23,7 @@
</tr>
<tr>
<td>
<table width=100% border=0 bgcolor=#FFD966 cellpadding=5px cellspacing=0 style="border-collapse: collapse; font-size: 15px; text-align:center; color:#404040">
<table width=100% border=0 bgcolor=#00c0ef cellpadding=5px cellspacing=0 style="border-collapse: collapse; font-size: 15px; text-align:center; color:#404040">
<tr>
<td width=100%> Report Date: <b>2023-01-30 22:17</b> </td>
</tr>

View File

@@ -1,11 +1,16 @@
<!-- ---------------------------------------------------------------------------
# Pi.Alert
# Open Source Network Guard / WIFI & LAN intrusion detector
#
# repot_template.html - Back module. Template to email reporting in HTML format
#-------------------------------------------------------------------------------
# Puche 2021 pi.alert.application@gmail.com GNU GPLv3
#--------------------------------------------------------------------------- -->
<!--
#---------------------------------------------------------------------------------#
# Pi.Alert #
# Open Source Network Guard / WIFI & LAN intrusion detector #
# #
# report_template.html - Back module. Template to email reporting in HTML format #
#---------------------------------------------------------------------------------#
# Puche 2021 pi.alert.application@gmail.com GNU GPLv3 #
# jokob-sk 2022 jokob.sk@gmail.com GNU GPLv3 #
# leiweibau 2022 https://github.com/leiweibau GNU GPLv3 #
# cvc90 2023 https://github.com/cvc90 GNU GPLv3 #
#---------------------------------------------------------------------------------#
-->
<html>
@@ -16,37 +21,45 @@
<font face=sans-serif>
<table align=center width=100% cellpadding=0 cellspacing=0 style="border-radius: 5px;">
<tr>
<td bgcolor=#EFB956 align=center style="padding: 20px 10px 10px 10px; font-size: 30px; font-weight: bold; color:#000000; border-top-right-radius: 5px; border-top-left-radius: 5px; box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2)">
<td bgcolor=#3c8dbc align=center style="padding: 20px 10px 10px 10px; font-size: 30px; font-weight: bold; color:#ffffff; border-top-right-radius: 5px; border-top-left-radius: 5px; box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2)">
Pi.Alert Report
</td>
</tr>
<tr>
<td>
<table width=100% border=0 bgcolor=#FFD966 cellpadding=5px cellspacing=0 style="border-collapse: collapse; font-size: 15px; text-align:center; color:#404040"> <tr>
<td width=100%> Report Date: <b><REPORT_DATE></b> </td>
<table width=100% border=0 bgcolor=#4b99d3 cellpadding=5px cellspacing=0 style="border-collapse: collapse; font-size: 15px; text-align:center; color:#ffffff"> <tr>
<td width=100% bgcolor="#3c8dbc"> Report Date: <b><REPORT_DATE></b> </td>
</tr>
</table>
</td>
</tr>
<tr>
<td bgcolor=#F5F5F5 height=200 valign=top style="padding: 10px">
<td height=200 valign=top style="padding: 10px">
<INTERNET_TABLE>
<NEW_DEVICES_TABLE>
<DOWN_DEVICES_TABLE>
<EVENTS_TABLE>
<PORTS_TABLE>
<PLUGINS_TABLE>
</td>
</tr>
<tr>
<td>
<table width=100% bgcolor=#46802e cellpadding=5px cellspacing=0 style="font-size: 13px; font-weight: bold; border-bottom-left-radius: 5px; border-bottom-right-radius: 5px;">
<table width=100% bgcolor=#3c8dbc cellpadding=5px cellspacing=0 style="font-size: 13px; font-weight: bold; border-bottom-left-radius: 5px; border-bottom-right-radius: 5px;">
<tr>
<td width=50% style="text-align:center"> Pi.Alert - <SERVER_NAME></td>
<td width=50% style="text-align:center;color: white;" bgcolor="#3c8dbc">
<a href="https://github.com/jokob-sk/Pi.Alert" target="_blank" style="color: white">Pi.Alert</a>
<a href=".." target="_blank" style="color: white"> (<SERVER_NAME>)</a>
<br><span style="display:inline-block;color: white; transform: rotate(180deg)">&copy;</span>2020 Puche (2022+
<a style="color: white" href="mailto:jokob@duck.com?subject=PiAlert">jokob-sk</a>) | <b>Built on: <BUILD_PIALERT> </b> | <b> Version: <VERSION_PIALERT> </b> |
<a href="https://github.com/jokob-sk/Pi.Alert/tree/main/docs" target="_blank" style="color: white">
<span>Docs <i class="fa fa-circle-question"></i>
</a><span>
</td>
</tr>
</table>
</td>

View File

@@ -4,6 +4,4 @@ Server: <SERVER_NAME>
<SECTION_NEW_DEVICES>
<SECTION_DEVICES_DOWN>
<SECTION_EVENTS>
<SECTION_INTERNET>
<PORTS_TABLE>
<PLUGINS_TABLE>

View File

@@ -1,11 +1,16 @@
<!-- ---------------------------------------------------------------------------
# Pi.Alert
# Open Source Network Guard / WIFI & LAN intrusion detector
#
# repot_template.html - Back module. Template to email reporting in HTML format
#-------------------------------------------------------------------------------
# Puche 2021 pi.alert.application@gmail.com GNU GPLv3
#--------------------------------------------------------------------------- -->
<!--
#---------------------------------------------------------------------------------#
# Pi.Alert #
# Open Source Network Guard / WIFI & LAN intrusion detector #
# #
# report_template_new_version - Back module. Template to email reporting in text #
#---------------------------------------------------------------------------------#
# Puche 2021 pi.alert.application@gmail.com GNU GPLv3 #
# jokob-sk 2022 jokob.sk@gmail.com GNU GPLv3 #
# leiweibau 2022 https://github.com/leiweibau GNU GPLv3 #
# cvc90 2023 https://github.com/cvc90 GNU GPLv3 #
#---------------------------------------------------------------------------------#
-->
<html>
@@ -16,7 +21,7 @@
<font face=sans-serif>
<table align=center width=100% cellpadding=0 cellspacing=0 style="border-radius: 5px;">
<tr>
<td bgcolor=#EFB956 align=center style="padding: 20px 10px 10px 10px; font-size: 30px; font-weight: bold; color:#000000; border-top-right-radius: 5px; border-top-left-radius: 5px; box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2)">
<td bgcolor=#3c8dbc align=center style="padding: 20px 10px 10px 10px; font-size: 30px; font-weight: bold; color:#ffffff; border-top-right-radius: 5px; border-top-left-radius: 5px; box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2)">
Pi.Alert Report
</td>
</tr>
@@ -25,37 +30,45 @@
<a style="color:#ffffff;cursor:pointer;" href="https://github.com/jokob-sk/Pi.Alert/releases">🆕 New version available 🆕</a>
</td>
</tr>
<tr>
<td>
<table width=100% border=0 bgcolor=#FFD966 cellpadding=5px cellspacing=0 style="border-collapse: collapse; font-size: 15px; text-align:center; color:#404040"> <tr>
<td width=100%> Report Date: <b><REPORT_DATE></b> </td>
<table width=100% border=0 bgcolor=#4b99d3 cellpadding=5px cellspacing=0 style="border-collapse: collapse; font-size: 15px; text-align:center; color:#ffffff"> <tr>
<td width=100% bgcolor="#3c8dbc"> Report Date: <b><REPORT_DATE></b> </td>
</tr>
</table>
</td>
</tr>
<tr>
<td bgcolor=#F5F5F5 height=200 valign=top style="padding: 10px">
<td height=200 valign=top style="padding: 10px">
<INTERNET_TABLE>
<NEW_DEVICES_TABLE>
<DOWN_DEVICES_TABLE>
<EVENTS_TABLE>
<PORTS_TABLE>
<PLUGINS_TABLE>
<NEW_DEVICES_TABLE>
<DOWN_DEVICES_TABLE>
<EVENTS_TABLE>
<PLUGINS_TABLE>
</td>
</tr>
<tr>
<td>
<table width=100% bgcolor=#46802e cellpadding=5px cellspacing=0 style="font-size: 13px; font-weight: bold; border-bottom-left-radius: 5px; border-bottom-right-radius: 5px;">
<table width=100% bgcolor=#3c8dbc cellpadding=5px cellspacing=0 style="font-size: 13px; font-weight: bold; border-bottom-left-radius: 5px; border-bottom-right-radius: 5px;">
<tr>
<td width=50% style="text-align:center"> Pi.Alert - <SERVER_NAME></td>
<td width=50% style="text-align:center;color: white;" bgcolor="#3c8dbc">
<a href="https://github.com/jokob-sk/Pi.Alert" target="_blank" style="color: white">Pi.Alert</a>
<a href=".." target="_blank" style="color: white"> (<SERVER_NAME>)</a>
<br><span style="display:inline-block;color: white; transform: rotate(180deg)">&copy;</span>2020 Puche (2022+
<a style="color: white" href="mailto:jokob@duck.com?subject=PiAlert">jokob-sk</a>) | <b>Built on: <BUILD_PIALERT> </b> | <b> Version: <VERSION_PIALERT> </b> |
<a href="https://github.com/jokob-sk/Pi.Alert/tree/main/docs" target="_blank" style="color: white">
<span>Docs <i class="fa fa-circle-question"></i>
</a><span>
</td>
</tr>
</table>
</td>
</tr>
</table>
</font>
</body>
</html>

View File

@@ -15,13 +15,13 @@
#
# Scan multiple interfaces (eth1 and eth0):
# SCAN_SUBNETS = [ '192.168.1.0/24 --interface=eth1', '192.168.1.0/24 --interface=eth0' ]
SCAN_SUBNETS=['192.168.1.0/24 --interface=eth1']
PRINT_LOG=False
TIMEZONE='Europe/Berlin'
PIALERT_WEB_PROTECTION=False
PIALERT_WEB_PASSWORD='8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92'
INCLUDED_SECTIONS=['internet','new_devices','down_devices','events']
SCAN_CYCLE_MINUTES=5
DAYS_TO_KEEP_EVENTS=90
# Used for generating links in emails. Make sure not to add a trailing slash!
REPORT_DASHBOARD_URL='http://pi.alert'
@@ -93,25 +93,6 @@ DDNS_PASSWORD='A0000000B0000000C0000000D0000000'
DDNS_UPDATE_URL='https://api.dynu.com/nic/update?'
# PiHole
#---------------------------
# if enabled you need to map '/etc/pihole/pihole-FTL.db' in docker-compose.yml
PIHOLE_ACTIVE=False
# if enabled you need to map '/etc/pihole/dhcp.leases' in docker-compose.yml
DHCP_ACTIVE=False
# Pholus
#---------------------------
PHOLUS_ACTIVE=False
PHOLUS_TIMEOUT=120
PHOLUS_FORCE=False
PHOLUS_DAYS_DATA=7
PHOLUS_RUN='once'
PHOLUS_RUN_TIMEOUT=600
PHOLUS_RUN_SCHD='0 4 * * *'
#-------------------IMPORTANT INFO-------------------#
# This file is ingested by a python script, so if #
# modified it needs to use python syntax #

View File

@@ -2,43 +2,58 @@ version: "3"
services:
pialert:
privileged: true
build: .
build:
dockerfile: Dockerfile
context: .
cache_from:
- type=registry,ref=docker.io/jokob-sk/pi.alert:buildcache
container_name: pialert
network_mode: "host"
restart: unless-stopped
network_mode: host
# restart: unless-stopped
volumes:
- ${APP_DATA_LOCATION}/pialert2/config:/home/pi/pialert/config
# - ${APP_DATA_LOCATION}/pialert/db/pialert.db:/home/pi/pialert/db/pialert.db
- ${APP_DATA_LOCATION}/pialert2/db:/home/pi/pialert/db
- ${APP_DATA_LOCATION}/pialert_dev/config:/home/pi/pialert/config
# - ${APP_DATA_LOCATION}/pialert/config:/home/pi/pialert/config
- ${APP_DATA_LOCATION}/pialert_dev/db:/home/pi/pialert/db
# - ${APP_DATA_LOCATION}/pialert/db:/home/pi/pialert/db
# (optional) useful for debugging if you have issues setting up the container
- ${LOGS_LOCATION}:/home/pi/pialert/front/log
# ---------------------------------------------------------------------------
# DELETE START anyone trying to use this file: comment out / delete BELOW lines, they are only for development purposes
- ${APP_DATA_LOCATION}/pialert/dhcp_samples/dhcp1.leases:/mnt/dhcp1.leases
- ${APP_DATA_LOCATION}/pialert/dhcp_samples/dhcp2.leases:/mnt/dhcp2.leases
- ${DEV_LOCATION}/back/pialert.py:/home/pi/pialert/back/pialert.py
- ${APP_DATA_LOCATION}/pialert/dhcp_samples/pihole_dhcp_full.leases:/etc/pihole/dhcp.leases
- ${APP_DATA_LOCATION}/pihole/etc-pihole/pihole-FTL.db:/etc/pihole/pihole-FTL.db
- ${DEV_LOCATION}/pialert:/home/pi/pialert/pialert
- ${DEV_LOCATION}/back/report_template.html:/home/pi/pialert/back/report_template.html
- ${DEV_LOCATION}/back/report_template_new_version.html:/home/pi/pialert/back/report_template_new_version.html
- ${DEV_LOCATION}/back/report_template.txt:/home/pi/pialert/back/report_template.txt
- ${DEV_LOCATION}/pholus:/home/pi/pialert/pholus
- ${DEV_LOCATION}/dockerfiles:/home/pi/pialert/dockerfiles
- ${APP_DATA_LOCATION}/pialert/php.ini:/etc/php/7.4/fpm/php.ini
# - ${DEV_LOCATION}/front/api:/home/pi/pialert/front/api
- ${DEV_LOCATION}/front/css:/home/pi/pialert/front/css
- ${DEV_LOCATION}/front/lib/AdminLTE:/home/pi/pialert/front/lib/AdminLTE
- ${DEV_LOCATION}/front/js:/home/pi/pialert/front/js
- ${DEV_LOCATION}/front/api:/home/pi/pialert/front/api
- ${DEV_LOCATION}/front/php:/home/pi/pialert/front/php
- ${DEV_LOCATION}/front/deviceDetails.php:/home/pi/pialert/front/deviceDetails.php
- ${DEV_LOCATION}/front/deviceDetailsTools.php:/home/pi/pialert/front/deviceDetailsTools.php
- ${DEV_LOCATION}/front/devices.php:/home/pi/pialert/front/devices.php
- ${DEV_LOCATION}/front/events.php:/home/pi/pialert/front/events.php
- ${DEV_LOCATION}/front/plugins.php:/home/pi/pialert/front/plugins.php
- ${DEV_LOCATION}/front/pluginsCore.php:/home/pi/pialert/front/pluginsCore.php
- ${DEV_LOCATION}/front/help_faq.php:/home/pi/pialert/front/help_faq.php
- ${DEV_LOCATION}/front/index.php:/home/pi/pialert/front/index.php
- ${DEV_LOCATION}/front/maintenance.php:/home/pi/pialert/front/maintenance.php
- ${DEV_LOCATION}/front/network.php:/home/pi/pialert/front/network.php
- ${DEV_LOCATION}/front/presence.php:/home/pi/pialert/front/presence.php
- ${DEV_LOCATION}/front/settings.php:/home/pi/pialert/front/settings.php
- ${DEV_LOCATION}/front/systeminfo.php:/home/pi/pialert/front/systeminfo.php
- ${DEV_LOCATION}/front/report.php:/home/pi/pialert/front/report.php
- ${DEV_LOCATION}/front/flows.php:/home/pi/pialert/front/flows.php
- ${DEV_LOCATION}/front/donations.php:/home/pi/pialert/front/donations.php
- ${DEV_LOCATION}/front/plugins:/home/pi/pialert/front/plugins
# DELETE END anyone trying to use this file: comment out / delete ABOVE lines, they are only for development purposes
# ---------------------------------------------------------------------------
environment:
- TZ=${TZ}
- PORT=${PORT}

View File

@@ -4,9 +4,10 @@
[![Docker Pulls](https://img.shields.io/docker/pulls/jokobsk/pi.alert?label=Pulls&logo=docker&color=0aa8d2&logoColor=fff)](https://hub.docker.com/r/jokobsk/pi.alert)
[![Docker Pushed](https://img.shields.io/badge/dynamic/json?color=0aa8d2&logoColor=fff&label=Pushed&query=last_updated&url=https%3A%2F%2Fhub.docker.com%2Fv2%2Frepositories%2Fjokobsk%2Fpi.alert%2F&logo=docker&link=http://left&link=https://hub.docker.com/repository/docker/jokobsk/pi.alert)](https://hub.docker.com/r/jokobsk/pi.alert)
# 🐳 A docker image for Pi.Alert
# PiAlert 💻🔍 Network security scanner
🐳 [Docker hub](https://registry.hub.docker.com/r/jokobsk/pi.alert) | 📄 [Dockerfile](https://github.com/jokob-sk/Pi.Alert/blob/main/Dockerfile) | 📚 [Docker instructions](https://github.com/jokob-sk/Pi.Alert/blob/main/dockerfiles/README.md) | 🆕 [Release notes](https://github.com/jokob-sk/Pi.Alert/releases)
| 🐳 [Docker hub](https://registry.hub.docker.com/r/jokobsk/pi.alert) | 📑 [Docker guide](https://github.com/jokob-sk/Pi.Alert/blob/main/dockerfiles/README.md) |🆕 [Release notes](https://github.com/jokob-sk/Pi.Alert/releases) | 📚 [All Docs](https://github.com/jokob-sk/Pi.Alert/tree/main/docs) |
|----------------------|----------------------| ----------------------| ----------------------|
<a href="https://raw.githubusercontent.com/jokob-sk/Pi.Alert/main/docs/img/devices_split.png" target="_blank">
<img src="https://raw.githubusercontent.com/jokob-sk/Pi.Alert/main/docs/img/devices_split.png" width="300px" />
@@ -15,7 +16,6 @@
<img src="https://raw.githubusercontent.com/jokob-sk/Pi.Alert/main/docs/img/network.png" width="300px" />
</a>
## 📕 Basic Usage
- You will have to run the container on the host network, e.g:
@@ -47,45 +47,46 @@ docker run -d --rm --network=host \
| **Required** | `:/home/pi/pialert/db` | Folder which will contain the `pialert.db` file |
|Optional| `:/home/pi/pialert/front/log` | Logs folder useful for debugging if you have issues setting up the container |
|Optional| `:/etc/pihole/pihole-FTL.db` | PiHole's `pihole-FTL.db` database file. Required if you want to use PiHole |
|Optional| `:/etc/pihole/dhcp.leases` | PiHole's `dhcp.leases` file. Required if you want to use PiHole |
|Optional| `:/etc/pihole/dhcp.leases` | PiHole's `dhcp.leases` file. Required if you want to use PiHole `dhcp.leases` file. This has to be matched with a corresponding `DHCPLSS_paths_to_check` setting entry. (the path in the container must contain `pihole`)|
|Optional| `:/home/pi/pialert/front/api` | A simple [API endpoint](https://github.com/jokob-sk/Pi.Alert/blob/main/docs/API.md) containing static (but regularly updated) json and other files. |
|Optional| `:/home/pi/pialert/front/plugins/<plugin>/ignore_plugin` | Map a file `ignore_plugin` to ignore a plugin. Plugins can be soft-disabled via settings. More in the [Plugin docs](/front/plugins/README.md). |
### Config (`pialert.conf`)
- The preferred wy is to manage the configuration via Settings
- YOu can modify [pialert.conf](https://github.com/jokob-sk/Pi.Alert/tree/main/config) directly if needed
- ❗ To use the arp-scan method, you need to set the `SCAN_SUBNETS` variable. ()
* The adapter will probably be `eth0` or `eth1`. (Run `iwconfig` to find your interface name(s))
* Specify the network filter (which **significantly** speeds up the scan process). For example, the filter `192.168.1.0/24` covers IP ranges 192.168.1.0 to 192.168.1.255.
* Examples for one and two subnets (❗ Note the `['...', '...']` format):
* One subnet: `SCAN_SUBNETS = ['192.168.1.0/24 --interface=eth0']`
* Two subnets: `SCAN_SUBNETS = ['192.168.1.0/24 --interface=eth0', '192.168.1.0/24 --interface=eth1']`
* More documentation on how to [setup vlans](https://github.com/jokob-sk/Pi.Alert/blob/main/docs/SUBNETS.md)
- If unavailable, the app generates a default `pialert.conf` and `pialert.db` file on the first run.
- The preferred way is to manage the configuration via the Settings section in the UI.
- You can modify [pialert.conf](https://github.com/jokob-sk/Pi.Alert/tree/main/config) directly, if needed.
#### Important settings
### 🛑 **Common issues**
These are the most important settings to get at least some output in your Devices screen. Usually, only one approach is used, but you should be able to combine these approaches.
##### For arp-scan: ARPSCAN_RUN, SCAN_SUBNETS
- ❗ To use the arp-scan method, you need to set the `SCAN_SUBNETS` variable. See the documentation on how [to setup SUBNETS, VLANs & limitations](https://github.com/jokob-sk/Pi.Alert/blob/main/docs/SUBNETS.md)
##### For pihole: PIHOLE_RUN, DHCPLSS_RUN
There are 2 approaches how to get PiHole devices imported. Via the PiHole import (PIHOLE) plugin or DHCP leases (DHCPLSS) plugin.
**PiHole (Device sync)**
* `PIHOLE_RUN`: You need to map `:/etc/pihole/pihole-FTL.db` in the `docker-compose.yml` file if you enable this setting.
**DHCP Leases (Device import)**
* `DHCPLSS_RUN`: You need to map `:/etc/pihole/dhcp.leases` in the `docker-compose.yml` file if you enable this setting.
* The above setting has to be matched with a corresponding `DHCPLSS_paths_to_check` setting entry (the path in the container must contain `pihole` as PiHole uses a different format of the `dhcp.leases` file).
> [!NOTE]
> It's recommended to use the same schedule interval for all plugins responsible for discovering new devices.
### **Common issues**
💡 Before creating a new issue, please check if a similar issue was [already resolved](https://github.com/jokob-sk/Pi.Alert/issues?q=is%3Aissue+is%3Aclosed).
**Permissions**
* If facing issues (AJAX errors, can't write to DB, empty screen, etc,) make sure permissions are set correctly, and check the logs under `/home/pi/pialert/front/log`.
* To solve permission issues you can also try to create a DB backup and then run a DB Restore via the **Maintenance > Backup/Restore** section.
* You can try also setting the owner and group of the `pialert.db` by executing the following on the host system: `docker exec pialert chown -R www-data:www-data /home/pi/pialert/db/pialert.db`.
* Map to local User and Group IDs. Specify the enviroment variables `HOST_USER_ID` and `HOST_USER_GID` if needed.
* Map the pialert.db file (⚠ not folder) to `:/home/pi/pialert/db/pialert.db` (see Examples below for details)
**Container restarts / crashes**
* Check the logs for details. Often a required setting for a notification method is missing.
**unable to resolve host**
* Check that your `SCAN_SUBNETS` variable is using the correct mask and `--interface` as outlined in the instructions above.
Docker-compose examples can be found below.
⚠ Check also common issues and [debugging tips](https://github.com/jokob-sk/Pi.Alert/blob/main/docs/DEBUG_TIPS.md).
## 📄 Examples
@@ -96,6 +97,8 @@ version: "3"
services:
pialert:
container_name: pialert
# use the below line if you want to test the latest dev image
# image: "jokobsk/pi.alert_dev:latest"
image: "jokobsk/pi.alert:latest"
network_mode: "host"
restart: unless-stopped
@@ -122,6 +125,8 @@ Example by [SeimuS](https://github.com/SeimusS).
container_name: PiAlert
hostname: PiAlert
privileged: true
# use the below line if you want to test the latest dev image
# image: "jokobsk/pi.alert_dev:latest"
image: jokobsk/pi.alert:latest
environment:
- TZ=Europe/Bratislava
@@ -143,6 +148,8 @@ version: "3"
services:
pialert:
container_name: pialert
# use the below line if you want to test the latest dev image
# image: "jokobsk/pi.alert_dev:latest"
image: "jokobsk/pi.alert:latest"
network_mode: "host"
restart: unless-stopped
@@ -187,6 +194,8 @@ Courtesy of [pbek](https://github.com/pbek). The volume `pialert_db` is used by
```yaml
pialert:
# use the below line if you want to test the latest dev image
# image: "jokobsk/pi.alert_dev:latest"
image: jokobsk/pi.alert
ports:
- "80:20211/tcp"
@@ -209,10 +218,19 @@ Big thanks to <a href="https://github.com/Macleykun">@Macleykun</a> for help and
<img src="https://avatars.githubusercontent.com/u/26381427?size=50">
</a>
## Support me
## Support me
<a href="https://github.com/sponsors/jokob-sk" target="_blank"><img src="https://i.imgur.com/X6p5ACK.png" alt="Sponsor Me on GitHub" style="height: 30px !important;width: 117px !important;" width="150px" ></a>
<a href="https://www.buymeacoffee.com/jokobsk" target="_blank"><img src="https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png" alt="Buy Me A Coffee" style="height: 30px !important;width: 117px !important;" width="117px" height="30px" ></a>
<a href="https://www.patreon.com/user?u=84385063" target="_blank"><img src="https://upload.wikimedia.org/wikipedia/commons/thumb/8/82/Patreon_logo_with_wordmark.svg/512px-Patreon_logo_with_wordmark.svg.png" alt="Support me on patreon" style="height: 30px !important;width: 117px !important;" width="117px" ></a>
Get:
- Regular updates to keep your data and family safe 🔄
- Better and more functionality
- I don't get burned out and the app survives longer🔥🤯
- Quicker and better support with issues 🆘
- Less grumpy me 😄
BTC: 1N8tupjeCK12qRVU2XrV17WvKK7LCawyZM
| [![GitHub](https://i.imgur.com/emsRCPh.png)](https://github.com/sponsors/jokob-sk) | [![Buy Me A Coffee](https://i.imgur.com/pIM6YXL.png)](https://www.buymeacoffee.com/jokobsk) | [![Patreon](https://i.imgur.com/MuYsrq1.png)](https://www.patreon.com/user?u=84385063) |
| --- | --- | --- |
- Bitcoin: `1N8tupjeCK12qRVU2XrV17WvKK7LCawyZM`
- Ethereum: `0x6e2749Cb42F4411bc98501406BdcD82244e3f9C7`
> 📧 Email me at [jokob@duck.com](mailto:jokob@duck.com?subject=PiAlert) if you want to get in touch or if I should add other sponsorship platforms.

232
dockerfiles/README_ES.md Executable file
View File

@@ -0,0 +1,232 @@
[![Docker](https://img.shields.io/github/actions/workflow/status/jokob-sk/Pi.Alert/docker_prod.yml?label=Build&logo=GitHub)](https://github.com/jokob-sk/Pi.Alert/actions/workflows/docker_prod.yml)
[![GitHub Committed](https://img.shields.io/github/last-commit/jokob-sk/Pi.Alert?color=40ba12&label=Committed&logo=GitHub&logoColor=fff)](https://github.com/jokob-sk/Pi.Alert)
[![Docker Size](https://img.shields.io/docker/image-size/jokobsk/pi.alert?label=Tamaño&logo=Docker&color=0aa8d2&logoColor=fff)](https://hub.docker.com/r/jokobsk/pi.alert)
[![Docker Pulls](https://img.shields.io/docker/pulls/jokobsk/pi.alert?label=Pulls&logo=docker&color=0aa8d2&logoColor=fff)](https://hub.docker.com/r/jokobsk/pi.alert)
[![Docker Pushed](https://img.shields.io/badge/dynamic/json?color=0aa8d2&logoColor=fff&label=Pushed&query=last_updated&url=https%3A%2F%2Fhub.docker.com%2Fv2%2Frepositories%2Fjokobsk%2Fpi.alert%2F&logo=docker&link=http://left&link=https://hub.docker.com/repository/docker/jokobsk/pi.alert)](https://hub.docker.com/r/jokobsk/pi.alert)
# 🐳 Una imagen docker para Pi.Alert
🐳 [Docker hub](https://registry.hub.docker.com/r/jokobsk/pi.alert) | 📑 [Instrucciones para Docker](https://github.com/jokob-sk/Pi.Alert/blob/main/dockerfiles/README.md) | 🆕 [Release notes](https://github.com/jokob-sk/Pi.Alert/releases) | 📚 [Todos los Docs](https://github.com/jokob-sk/Pi.Alert/tree/main/docs)
<a href="https://raw.githubusercontent.com/jokob-sk/Pi.Alert/main/docs/img/devices_split.png" target="_blank">
<img src="https://raw.githubusercontent.com/jokob-sk/Pi.Alert/main/docs/img/devices_split.png" width="300px" />
</a>
<a href="https://raw.githubusercontent.com/jokob-sk/Pi.Alert/main/docs/img/network.png" target="_blank">
<img src="https://raw.githubusercontent.com/jokob-sk/Pi.Alert/main/docs/img/network.png" width="300px" />
</a>
## 📕 Uso básico
- Tendrás que ejecutar el contenedor en la red del host, por ejemplo:
```yaml
docker run -d --rm --network=host \
-v local/path/pialert/config:/home/pi/pialert/config \
-v local/path/pialert/db:/home/pi/pialert/db \
-e TZ=Europe/Berlin \
-e PORT=20211 \
jokobsk/pi.alert:latest
```
- El escaneo inicial puede tardar hasta 15 minutos (con 50 dispositivos y MQTT). Los siguientes pueden durar entre 3 y 5 minutos, así que espere a que se ejecuten todos los escaneos.
### Variables de entorno Docker
| Variable | Descripción | Predeterminado |
| :------------- |:-------------| -----:|
| `PORT` |Puerto de la interfaz web | `20211` |
|`TZ` |Zona horaria para mostrar correctamente las estadísticas. Encuentre su zona horaria [aquí](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) | `Europe/Berlin` |
|`HOST_USER_GID` |ID de usuario (UID) para asignar el usuario del contenedor a un usuario del servidor con suficientes permisos de lectura y escritura en los archivos asignados | `1000` |
|`HOST_USER_ID` |ID de grupo de usuarios (GID) para asignar el grupo de usuarios del contenedor a un grupo de usuarios del servidor con suficientes permisos de lectura y escritura en los archivos asignados | `1000` |
### Rutas Docker
| | Ruta | Descripción |
| :------------- | :------------- |:-------------|
| **Obligatorio** | `:/home/pi/pialert/config` | Carpeta que contendrá el archivo `pialert.conf` (para más detalles, véase más abajo) |
| **Obligatorio** | `:/home/pi/pialert/db` | Carpeta que contendrá el archivo `pialert.db` |
|Opcional| `:/home/pi/pialert/front/log` | Carpeta de registros útil para depurar si tiene problemas al configurar el contenedor |
|Opcional| `:/etc/pihole/pihole-FTL.db` | Archivo de base de datos `pihole-FTL.db` de PiHole. Necesario si desea utilizar PiHole |
|Opcional| `:/etc/pihole/dhcp.leases` | Archivo `dhcp.leases` de PiHole. Obligatorio si desea utilizar el archivo `dhcp.leases` de PiHole. Tiene que coincidir con la correspondiente entrada de configuración `DHCPLSS_paths_to_check`. (La ruta en el contenedor debe contener `pihole`)|
|Opcional| `:/home/pi/pialert/front/api` | Una simple [API endpoint](https://github.com/jokob-sk/Pi.Alert/blob/main/docs/API.md) que contiene archivos json estáticos (pero actualizados regularmente) y otros archivos. |
### Configurar (`pialert.conf`)
- Si no está disponible, la aplicación genera un archivo `pialert.conf` y `pialert.db` por defecto en la primera ejecución.
- La forma preferida es gestionar la configuración a través de la sección "Configuración" de la interfaz de usuario.
- Puede modificar [pialert.conf](https://github.com/jokob-sk/Pi.Alert/tree/main/config) directamente, si es necesario.
#### Ajustes importantes
Estos son los ajustes más importantes para obtener al menos alguna salida en la pantalla de tus Dispositivos. Por lo general, sólo se utiliza un enfoque, pero usted debe ser capaz de combinar estos enfoques.
##### Para arp-scan: ARPSCAN_RUN, SCAN_SUBNETS
- ❗ Para usar el método arp-scan, necesitas configurar la variable `SCAN_SUBNETS`. Consulte la documentación sobre cómo [configurar SUBNETS, VLANs y limitaciones](https://github.com/jokob-sk/Pi.Alert/blob/main/docs/SUBNETS.md)
##### Para pihole: PIHOLE_RUN, DHCPLSS_RUN
Hay dos maneras de importar dispositivos PiHole. A través del plugin de importación PiHole (PIHOLE) o del plugin DHCP leases (DHCPLSS).
**PiHole (Sincronización de dispositivos)**
* `PIHOLE_RUN`: Necesitas mapear `:/etc/pihole/pihole-FTL.db` en el fichero `docker-compose.yml` si activas esta opción.
**DHCP Leases (Importación de dispositivos)**
* `DHCPLSS_RUN`: Es necesario mapear `:/etc/pihole/dhcp.leases` en el fichero `docker-compose.yml` si se activa esta opción.
* La configuración anterior tiene que coincidir con una entrada de configuración correspondiente `DHCPLSS_paths_to_check` (la ruta en el contenedor debe contener `pihole` ya que PiHole utiliza un formato diferente del archivo `dhcp.leases`).
> Se recomienda utilizar el mismo intervalo de programación para todos los plugins responsables de descubrir nuevos dispositivos.
### **Problemas comunes**
💡 Antes de crear una nueva incidencia, comprueba si ya se ha resuelto una [incidencia similar](https://github.com/jokob-sk/Pi.Alert/issues?q=is%3Aissue+is%3Aclosed).
⚠ Compruebe también los problemas comunes y los [consejos de depuración](https://github.com/jokob-sk/Pi.Alert/blob/main/docs/DEBUG_TIPS.md).
## 📄 Ejemplos
### Ejemplo 1
```yaml
version: "3"
services:
pialert:
container_name: pialert
# Utilice la siguiente línea si desea probar la última imagen de desarrollo
# image: "jokobsk/pi.alert_dev:latest"
image: "jokobsk/pi.alert:latest"
network_mode: "host"
restart: unless-stopped
volumes:
- local/path/pialert/config:/home/pi/pialert/config
- local/path/pialert/db:/home/pi/pialert/db
# (optional) useful for debugging if you have issues setting up the container
- local/path/logs:/home/pi/pialert/front/log
environment:
- TZ=Europe/Berlin
- HOST_USER_ID=1000
- HOST_USER_GID=1000
- PORT=20211
```
Para ejecutar el contenedor ejecute: `sudo docker-compose up -d`
### Ejemplo 2
Ejemplo de [SeimuS](https://github.com/SeimusS).
```yaml
pialert:
container_name: PiAlert
hostname: PiAlert
privileged: true
# Utilice la siguiente línea si desea probar la última imagen de desarrollo
# image: "jokobsk/pi.alert_dev:latest"
image: jokobsk/pi.alert:latest
environment:
- TZ=Europe/Bratislava
restart: always
volumes:
- ./pialert/pialert_db:/home/pi/pialert/db
- ./pialert/pialert_config:/home/pi/pialert/config
network_mode: host
```
Para ejecutar el contenedor ejecute: `sudo docker-compose up -d`
### Ejemplo 3
`docker-compose.yml`
```yaml
version: "3"
services:
pialert:
container_name: pialert
# Utilice la siguiente línea si desea probar la última imagen de desarrollo
# image: "jokobsk/pi.alert_dev:latest"
image: "jokobsk/pi.alert:latest"
network_mode: "host"
restart: unless-stopped
volumes:
- ${APP_DATA_LOCATION}/pialert/config:/home/pi/pialert/config
- ${APP_DATA_LOCATION}/pialert/db/pialert.db:/home/pi/pialert/db/pialert.db
# (optional) useful for debugging if you have issues setting up the container
- ${LOGS_LOCATION}:/home/pi/pialert/front/log
environment:
- TZ=${TZ}
- HOST_USER_ID=${HOST_USER_ID}
- HOST_USER_GID=${HOST_USER_GID}
- PORT=${PORT}
```
`.env` file
```yaml
#VARIABLES DE RUTA GLOBAL
APP_DATA_LOCATION=/path/to/docker_appdata
APP_CONFIG_LOCATION=/path/to/docker_config
LOGS_LOCATION=/path/to/docker_logs
#VARIABLES DE ENTORNO
TZ=Europe/Paris
HOST_USER_ID=1000
HOST_USER_GID=1000
PORT=20211
#VARIABLES DE DESARROLLO
DEV_LOCATION=/path/to/local/source/code
```
Para ejecutar el contenedor ejecute: `sudo docker-compose --env-file /path/to/.env up`
### Example 4
Por cortesía de [pbek](https://github.com/pbek). El volumen `pialert_db` es utilizado por el directorio db. Los dos archivos de configuración se montan directamente desde una carpeta local a sus lugares en la carpeta config. Puedes hacer una copia de seguridad de la carpeta `docker-compose.yaml` y de la carpeta docker volumes.
```yaml
pialert:
# Utilice la siguiente línea si desea probar la última imagen de desarrollo
# image: "jokobsk/pi.alert_dev:latest"
image: jokobsk/pi.alert
ports:
- "80:20211/tcp"
environment:
- TZ=Europe/Vienna
networks:
local:
ipv4_address: 192.168.1.2
restart: unless-stopped
volumes:
- pialert_db:/home/pi/pialert/db
- ./pialert/pialert.conf:/home/pi/pialert/config/pialert.conf
```
## 🏅 Reconocimientos
Muchas gracias a <a href="https://github.com/Macleykun">@Macleykun</a> por ayudarme en consejos y trucos para Dockerfile(s):
<a href="https://github.com/Macleykun">
<img src="https://avatars.githubusercontent.com/u/26381427?size=50">
</a>
Muchas gracias a <a href="https://github.com/cvc90">@cvc90</a> por ayudarme y realizar esta traduccion:
<a href="https://github.com/cvc90">
<img src="https://avatars.githubusercontent.com/u/76731844?size=50">
</a>
## ☕ Apóyame
<a href="https://github.com/sponsors/jokob-sk" target="_blank"><img src="https://i.imgur.com/X6p5ACK.png" alt="Sponsor Me on GitHub" style="height: 30px !important;width: 117px !important;" width="150px" ></a>
<a href="https://www.buymeacoffee.com/jokobsk" target="_blank"><img src="https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png" alt="Buy Me A Coffee" style="height: 30px !important;width: 117px !important;" width="117px" height="30px" ></a>
<a href="https://www.patreon.com/user?u=84385063" target="_blank"><img src="https://upload.wikimedia.org/wikipedia/commons/thumb/8/82/Patreon_logo_with_wordmark.svg/512px-Patreon_logo_with_wordmark.svg.png" alt="Support me on patreon" style="height: 30px !important;width: 117px !important;" width="117px" ></a>
BTC: 1N8tupjeCK12qRVU2XrV17WvKK7LCawyZM

View File

@@ -1,15 +1,15 @@
#!/bin/sh
/home/pi/pialert/dockerfiles/user-mapping.sh
# if custom variables not set we do not need to do anything
if [ -n "${TZ}" ]; then
FILECONF=/home/pi/pialert/config/pialert.conf
if [ -f "$FILECONF" ]; then
sed -ie "s|Europe/Berlin|${TZ}|g" /home/pi/pialert/config/pialert.conf
else
sed -ie "s|Europe/Berlin|${TZ}|g" /home/pi/pialert/back/pialert.conf_bak
fi
fi
# # if custom variables not set we do not need to do anything
# if [ -n "${TZ}" ]; then
# FILECONF=/home/pi/pialert/config/pialert.conf
# if [ -f "$FILECONF" ]; then
# sed -ie "s|Europe/Berlin|${TZ}|g" /home/pi/pialert/config/pialert.conf
# else
# sed -ie "s|Europe/Berlin|${TZ}|g" /home/pi/pialert/back/pialert.conf_bak
# fi
# fi
if [ -n "${PORT}" ]; then
sed -ie 's/listen 20211/listen '${PORT}'/g' /etc/nginx/sites-available/default
@@ -28,4 +28,6 @@ chmod -R a+rw /home/pi/pialert/config
/etc/init.d/nginx start
# cron -f
python /home/pi/pialert/back/pialert.py
#python /home/pi/pialert/back/pialert.py
# echo "[DEBUG] DATA MONKEY VERSION ..."
python /home/pi/pialert/pialert/

View File

@@ -5,12 +5,7 @@ PiAlert comes with a simple API. These API endpoints are static files, that are
### When are the endpoints updated
Once you enable the API (`ENABLE_API` setting), the endpoints are updated during these events:
1) Always during a notification event.
2) (optional) If `API_RUN` is set to `schedule` on a specified cron-like schedule specified by the `API_RUN_SCHD` setting.
3) (optional) If `API_RUN` is set to `interval` every N seconds specified by the `API_RUN_INTERVAL` setting (minimum 5).
The endpoints are updated when objects in the API endpoints are changed.
### Location of the endpoints
@@ -26,7 +21,6 @@ You can access the following files:
| `notification_text.html` | The full HTML of the last email notification. |
| `notification_json_final.json` | The json version of the last notification (e.g. used for webhooks - [sample JSON](https://github.com/jokob-sk/Pi.Alert/blob/main/back/webhook_json_sample.json)). |
| `table_devices.json` | The current (at the time of the last update as mentioned above on this page) state of all of the available Devices detected by the app. |
| `table_nmap_scan.json` | The current state of the discovered ports by the regular NMAP scans. |
| `table_pholus_scan.json` | The latest state of the [pholus](https://github.com/jokob-sk/Pi.Alert/tree/main/pholus) (A multicast DNS and DNS Service Discovery Security Assessment Tool) scan results. |
| `table_plugins_events.json` | The list of the unprocessed (pending) notification events (plugins_events DB table). |
| `table_plugins_history.json` | The list of notification events history. |
@@ -34,6 +28,7 @@ You can access the following files:
| `language_strings.json` | The content of the language_strings table, which in turn is loaded from the plugins `config.json` definitions. |
| `table_custom_endpoint.json` | A custom endpoint generated by the SQL query specified by the `API_CUSTOM_SQL` setting. |
| `table_settings.json` | The content of the settings table. |
| `app_state.json` | Contains the current application state. |
Current/latest state of the aforementioned files depends on your settings.

39
docs/DATABASE.md Executable file
View File

@@ -0,0 +1,39 @@
# A high-level description of the datbase structure
⚠ Disclaimer: As I'm not the original author, some of the information might be inaccurate. Feel free to submit a PR to correct anything within this page or documentation in general.
The MAC address is used as a foreign key in most cases.
## 🔍Tables overview
| Table name | Description | Sample data |
|----------------------|----------------------| ----------------------|
| CurrentScan | Result of the current scan | ![Screen1][screen1] |
| Devices | The main devices database that also contains the Network tree mappings. If `ScanCycle` is set to `0` device is not scanned. | ![Screen2][screen2] |
| Events | Used to collect connection/disconnection events. | ![Screen4][screen4] |
| Online_History | Used to display the `Device presence over time` chart | ![Screen6][screen6] |
| Parameters | Used to pass values between the frontend and backend. | ![Screen7][screen7] |
| Pholus_Scan | Scan results of the Pholus python network penetration script. | ![Screen8][screen8] |
| Plugins_Events | For capturing events exposed by a plugin via the `last_result.log` file. If unique then saved into the `Plugins_Objects` table. Entries are deleted once processed and stored in the `Plugins_History` and/or `Plugins_Objects` tables. | ![Screen10][screen10] |
| Plugins_History | History of all entries from the `Plugins_Events` table | ![Screen11][screen11] |
| Plugins_Language_Strings | Language strings colelcted from the plugin `config.json` files used for string resolution in the frontend. | ![Screen12][screen12] |
| Plugins_Objects | Unique objects detected by individual plugins. | ![Screen13][screen13] |
| Sessions | Used to display sessions in the charts | ![Screen15][screen15] |
| Settings | Database representation of the sum of all settings from `pialert.conf` and plugins coming from `config.json` files. | ![Screen16][screen16] |
[screen1]: /docs/img/DATABASE/CurrentScan.png
[screen2]: /docs/img/DATABASE/Devices.png
[screen4]: /docs/img/DATABASE/Events.png
[screen6]: /docs/img/DATABASE/Online_History.png
[screen7]: /docs/img/DATABASE/Parameters.png
[screen8]: /docs/img/DATABASE/Pholus_Scan.png
[screen10]: /docs/img/DATABASE/Plugins_Events.png
[screen11]: /docs/img/DATABASE/Plugins_History.png
[screen12]: /docs/img/DATABASE/Plugins_Language_Strings.png
[screen13]: /docs/img/DATABASE/Plugins_Objects.png
[screen15]: /docs/img/DATABASE/Sessions.png
[screen16]: /docs/img/DATABASE/Settings.png

84
docs/DEBUG_TIPS.md Executable file
View File

@@ -0,0 +1,84 @@
# Debugging and troubleshooting
Please follow tips 1 - 4 to get a more detailed error.
## 1. More Logging 📃
When debugging an issue always set the highest log level:
`LOG_LEVEL='debug'`
## 2. Surfacing errors when container restarts 🔁
Start the container via the **terminal** with a command similar to this one:
```bash
docker run --rm --network=host \
-v local/path/pialert/config:/home/pi/pialert/config \
-v local/path/pialert/db:/home/pi/pialert/db \
-e TZ=Europe/Berlin \
-e PORT=20211 \
jokobsk/pi.alert:latest
```
> ⚠ Please note, don't use the `-d` parameter so you see the error when the container crashes. Use this error in your issue description.
## 3. Check the _dev image and open issues ❓
If possible, check if your issue got fixed in the `_dev` image before opening a new issue. The container is:
`jokobsk/pi.alert_dev:latest`
> ⚠ Please backup your DB and config beforehand!
Please also search [open issues](https://github.com/jokob-sk/Pi.Alert/issues).
## 4. Disable restart behavior 🛑
To prevent a Docker container from automatically restarting in a Docker Compose file, specify the restart policy as `no`:
```yaml
version: '3'
services:
your-service:
image: your-image:tag
restart: no
# Other service configurations...
```
## 📃Common issues
### Permissions
* If facing issues (AJAX errors, can't write to DB, empty screen, etc,) make sure permissions are set correctly, and check the logs under `/home/pi/pialert/front/log`.
* To solve permission issues you can try setting the owner and group of the `pialert.db` by executing the following on the host system: `docker exec pialert chown -R www-data:www-data /home/pi/pialert/db/pialert.db`.
* Map to local User and Group IDs. Specify the enviroment variables `HOST_USER_ID` and `HOST_USER_GID` if needed.
* If still facing issues, try to map the pialert.db file (⚠ not folder) to `:/home/pi/pialert/db/pialert.db` (see Examples below for details)
### Container restarts / crashes
* Check the logs for details. Often a required setting for a notification method is missing.
### unable to resolve host
* Check that your `SCAN_SUBNETS` variable is using the correct mask and `--interface` as outlined in the instructions above.
### Invalid JSON
Check the [Invalid JSON errors debug help](/docs/DEBUG_INVALID_JSON.md) docs on how to proceed.
### sudo execution failing (e.g.: on arpscan) on a Raspberry Pi 4
> sudo: unexpected child termination condition: 0
Resolution based on [this issue](https://github.com/linuxserver/docker-papermerge/issues/4#issuecomment-1003657581)
```
wget ftp.us.debian.org/debian/pool/main/libs/libseccomp/libseccomp2_2.5.3-2_armhf.deb
sudo dpkg -i libseccomp2_2.5.3-2_armhf.deb
```
The link above will probably break in time too. Go to https://packages.debian.org/sid/armhf/libseccomp2/download to find the new version number and put that in the url.

24
docs/DEVICES_BULK_EDITING.md Executable file
View File

@@ -0,0 +1,24 @@
# 📝Bulk-edit devices via CSV Export/Import
> [!NOTE]
> As always, backup everything, just in case.
1. In `Maintenance` > `Backup / Restore` click the `CSV Export` button.
2. A `devices.csv` is generated in the `/config` folder
3. Edit the `devices.csv` file however you like.
![Maintenance > CSV Export](/docs/img/DEVICES_BULK_EDITING/MAINTENANCE_CSV_EXPORT.png)
> [!NOTE]
> The file containing a list of Devices including the Network relationships between Network Nodes and connected devices. You can also trigger this by acessing this URL: `<your pialert url>/php/server/devices.php?action=ExportCSV` or via the `CSV Backup` plugin. (💡 You can schedule this)
![Settings > CSV Backup](/docs/img/DEVICES_BULK_EDITING/CSV_BACKUP_SETTINGS.png)
> [!NOTE]
> Keep Linux line endings (sugegsted editors: Nano, Notepad++)
![Nodepad++ line endings](/docs/img/DEVICES_BULK_EDITING/NOTEPAD++.png)

View File

@@ -9,6 +9,11 @@ To edit device information:
- Press the "Save" button
> [!NOTE]
>
> [Bulk-edit devices](/docs/DEVICES_BULK_EDITING.md) by using the `CSV Export` functionality in the `Maintenance` section.
![Device Details][screen1]
@@ -18,7 +23,7 @@ To edit device information:
- **Owner**: Device owner (The list is self-populated with existing owners)
- **Type**: Select a device type from the dropdown list (Smartphone, Table,
Laptop, TV, router, ....) or type a new device type
- **Vendor**: Automatically updated by Pi.Alert
- **Vendor**: Automatically updated by Pi.Alert when empty or unknown
- **Favorite**: Mark the device as favorite and then it will appears at the
begining of the device list
- **Group**: Select a grouper ('Always on', 'Personal', Friends') or type
@@ -82,7 +87,15 @@ decides to change the MAC).
[Read more here](../LICENSE.txt)
### Contact
pi.alert.application@gmail.com
Always use the Issue tracker for the correct fork, for example:
[jokob-sk/Pi.Alert](https://github.com/jokob-sk/Pi.Alert/issues). Please also follow the guidelines on:
- [Pull Request guidelines](https://github.com/jokob-sk/Pi.Alert/tree/main/docs#-pull-requests-prs)
- 🙏 [Feature request guidelines](https://github.com/jokob-sk/Pi.Alert/tree/main/docs#-feature-requests)
- 🐛 [Issue guidelines](https://github.com/jokob-sk/Pi.Alert/tree/main/docs#-submitting-an-issue-or-bug)
***Suggestions and comments are welcome***

46
docs/FRONTEND_DEVELOPMENT.md Executable file
View File

@@ -0,0 +1,46 @@
# 🖼 Frontend development
This page contains tips for frontend development when extending PiAlert. Guiding principles are:
1. Maintainability
2. Extendability
3. Reusability
4. Placing more functionality into Plugins and enhancing core Plugins functionality
That means that, when writing code, focus on reusing what's available instead of writing quick fixes. Or creating reusable functions, instead of bespoke functionaility.
## 🔍 Examples
Some examples how to apply the above:
> Example 1
>
> I want to implement a scan fucntion. Options would be:
>
> 1. To add a manual scan functionality to the `deviceDetails.php` page.
> 2. To create a separate page that handles the execution of the scan.
> 3. To create a configurable Plugin.
>
> From the above, number 3 would be the most appropriate solution. Then followed by number 2. Number 1 would be approved only in special circumstances.
> Example 2
>
> I want to change the behavior of the application. Options to implement this could be:
>
> 1. Hard-code the changes in the code.
> 2. Implement the changes and add settings to influence the behavior in the `initialize.py` file so the user can adjust these.
> 3. Implement the changes and add settings via a setting-only plugin.
> 4. Implement the changes in a way so the behavior can be toggled on each plugin so the core capabilities of Plugins get extended.
>
> From the above, number 4 would be the most appropriate solution. Then followed by number 3. Number 1 or 2 would be approved only in special circumstances.
## 💡 Frontend tips
Some useful frontend JavaScript functions:
- `getDeviceDataByMacAddress(macAddress, devicesColumn)` - method to retrieve any device data (database column) based on MAC address in the frontend
- `getString(string stringKey)` - method to retrieve translated strings in the frontend
- `getSetting(string stringKey)` - method to retrieve settings in the frontend
Check the [pialert_common.js](https://github.com/jokob-sk/Pi.Alert/blob/main-2023-06-10/front/js/pialert_common.js) file for more frontend functions.

42
docs/HOME_ASSISTANT.md Executable file
View File

@@ -0,0 +1,42 @@
# Overview
PiAlert comes with MQTT support, allowing you to show all detected devices as devices in Home Assistant. It also supplies a collection of stats, such as number of online devices.
## ⚠ Note
- Please note that discovery takes about ~10s per device.
- Deleting of devices is not handled automatically. Please use [MQTT Explorer](https://mqtt-explorer.com/) to delete devices in the broker (Home Assistant), if needed.
## 🧭 Guide
> 💡 This guide was tested only with the Mosquitto MQTT broker
1. Enable Mosquitto MQTT in Home Assistant by following the [documentation](https://www.home-assistant.io/integrations/mqtt/)
2. Configure a user name and password on your broker.
3. Note down the following details that you will need to configure PiAlert:
- MQTT host url (usually your Home Assistant IP)
- MQTT broker port
- User
- Password
4. Ope the `PiAlert` > `Settings` > `MQTT` settings group
- Enable MQTT
- Fill in the details from above
- Fill in remaining settings as per description
## 📷 Screenshots
| ![Screen 1][sensors] | ![Screen 2][history] |
|----------------------|----------------------|
| ![Screen 3][list] | ![Screen 4][overview] |
[sensors]: /docs/img/HOME_ASISSTANT/PiAlert-HomeAssistant-Device-as-Sensors.png "sensors"
[history]: /docs/img/HOME_ASISSTANT/PiAlert-HomeAssistant-Device-Presence-History.png "history"
[list]: /docs/img/HOME_ASISSTANT/PiAlert-HomeAssistant-Devices-List.png "list"
[overview]: /docs/img/HOME_ASISSTANT/PiAlert-HomeAssistant-Overview-Card.png "overview"

25
docs/HW_INSTALL.md Normal file
View File

@@ -0,0 +1,25 @@
# How to install PiAlert on the server hardware
To download and install PiAlert on the hardware/server directly use `curl` or `wget` commands.
> [!NOTE]
> This is an Experimental feature 🧪 and it relies on community support.
PiAlert will be installed in `home/pi/pialert/` and run on port number `20211`.
## CURL
```bash
curl -o install.sh https://raw.githubusercontent.com/jokob-sk/Pi.Alert/main/install/install.sh && sudo chmod +x install.sh && sudo ./install.sh
```
## WGET
```bash
wget https://raw.githubusercontent.com/jokob-sk/Pi.Alert/main/install/install.sh -O install.sh && sudo chmod +x install.sh && sudo ./install.sh
```
These commands will download the `install.sh` script from the GitHub repository, make it executable with `chmod`, and then run it using `./install.sh`.
Make sure you have the necessary permissions to execute the script.

30
docs/ICONS.md Executable file
View File

@@ -0,0 +1,30 @@
## Icons overview
Icons are used to visually distinguish devices in the app in most of the device listing tables and the [network tree](/docs/NETWORK_TREE.md). Currently only free [Font Awesome](https://fontawesome.com/search?o=r&m=free) icons (up-to v 6.4.0) are supported (I have an unblockable [sponsorship goal](https://github.com/sponsors/jokob-sk) to add the material design icon pack).
![Raspberry Pi with a brand icon](/docs/img/ICONS/devices-icons.png)
## ⚙ How to use custom device Icons
You can assign icons individually on each device in the Details tab.
![Raspberry Pi device details](/docs/img/ICONS/device-icon.png)
- You can click into the `Icon` field or click the Pencil (2) icon in the above screenshot to enter any text. Only [free Font Awesome](https://fontawesome.com/search?o=r&m=free) icons in the following format will work:
1. For any value that is only prefixed with `fa-`, you can enter the value directly, such as `server`, `tv`, `ethernet`.
2. If you want to add another classname, e.g. `fa-brands`, you can enter `brands fa-[fontawesome-icon-name]`, so for `apple` that is using the syntax`fa-brands fa-apple`, you would enter `brands fa-apple`.
- If you want to mass-apply an icon to all devices of the same device type (Field marked (4) in the above screenshot), you can click the copy button (Marked (1) in the above screenshot). A confirmation prompt is displayed. If you proceed, icons of all devices set to the same device type as the current device, will be overwritten with the current device's icon.
- The dropdown (3) contains all icons already used in the app for device icons. You need to navigate away or refresh the page once you add a new icon.
## 🌟 Pro Font Awesome icons
If you own the premium package of Font Awesome icons you can mount it in your Docker container the following way:
```yaml
/font-awesome:/home/pi/pialert/front/lib/AdminLTE/bower_components/font-awesome:ro
```
You can use the full range of Font Awesome icons afterwards.

View File

@@ -1,10 +1,30 @@
## How to setup your Network page
Make sure you have a root device with the MAC `Internet` (No other MAC addresses are currently support as root)
Make sure you have a root device with the MAC `Internet` (No other MAC addresses are currently supported as the root node).
To setup a device named `rapberrypi` as a `Switch` in our network.
> 💡 Tip: You can add dummy devices via the [Undiscoverables plugin](https://github.com/jokob-sk/Pi.Alert/blob/main/front/plugins/undiscoverables/README.md)
### 1) Device details page
> 💡 Tip: Export your configuration of the Network and Devices once in a while via the Export CSV feature under **Maintenance** -> **Backup/Restore** -> **CSV Export**.
## ⚡Quick setup:
* Go to Devices > Device Details.
* Find the device(s) you want to use as network devices (network nodes).
* Set the Type of such a device to one of the following: AP, Firewall, Gateway, PLC, Powerline, Router, Switch, USB LAN Adapter, USB WIFI Adapter and WLAN.
* Save and go to Network where the devices you've marked as network devices (by selecting the Type as mentioned above) will show up as tabs.
* You can now assign the Unassigend devices to the correct network node.
* If port is empty or 0 a wifi icon is rendered, otherwise a ethernet port icon
> [!NOTE]
>
> [Bulk-edit devices](/docs/DEVICES_BULK_EDITING.md) by using the `CSV Export` functionality in the `Maintenance` section. You can use this to fix `Internet` node assignment issues.
## 🔍Detailed example:
In this example you will setup a device named `rapberrypi` as a `Switch` in our network.
### 1. Device details page
- Go to the `Devices` (1) page:
@@ -13,13 +33,13 @@ To setup a device named `rapberrypi` as a `Switch` in our network.
- In the (2) `Details` tab navigate to the the `Type` (3) dropdown and select the type `Switch` (4).
> Note: Only the following device types will show up as selectable Network nodes ( = devices you can connect other devices to):
> AP, Firewall, Gateway, PLC, Powerline, Router, Switch, USB LAN Adapter, USB WIFI Adapter and WLAN.
> AP, Firewall, Gateway, Hypervisor, PLC, Powerline, Router, Switch, USB LAN Adapter, USB WIFI Adapter and WLAN. Custom types can be added via the `NETWORK_DEVICE_TYPES` setting.
- Assign a device to your root device from the `Node` (5) dropdown which has the MAC `Internet` (6) (Your name may differ, but the MAC needs to be set to `Internet` - this is done by default).
- Save your changes (7)
### 1) Network page
### 2. Network page
- Navigate to your `Network` (1) page:
@@ -29,7 +49,7 @@ To setup a device named `rapberrypi` as a `Switch` in our network.
- As we asssigned the `raspberrypi` in the previous 1) Device details page section to the `Internet` parent network node in step (6), the link is also showing up in the tree diagram (4)
- We can now assign the device `(AppleTV)` (5) to this `raspberrypi` node, representing a network Switch in this example
### 1) Network page with 2 levels
### 3. Network page with 2 levels
- After clicking the `Assign` button in the previous section, the `(AppleTV)` (1) device is now connected to our `raspberrypi` (2).
@@ -41,3 +61,4 @@ To setup a device named `rapberrypi` as a `Switch` in our network.

View File

@@ -33,7 +33,14 @@ decides to change the MAC).
[Read more here](../LICENSE.txt)
### Contact
pi.alert.application@gmail.com
Always use the Issue tracker for the correct fork, for example:
[jokob-sk/Pi.Alert](https://github.com/jokob-sk/Pi.Alert/issues). Please also follow the guidelines on:
- [Pull Request guidelines](https://github.com/jokob-sk/Pi.Alert/tree/main/docs#-pull-requests-prs)
- 🙏 [Feature request guidelines](https://github.com/jokob-sk/Pi.Alert/tree/main/docs#-feature-requests)
- 🐛 [Issue guidelines](https://github.com/jokob-sk/Pi.Alert/tree/main/docs#-submitting-an-issue-or-bug)
***Suggestions and comments are welcome***

117
docs/README.md Executable file
View File

@@ -0,0 +1,117 @@
## Documentation overview
In the app hover over settings or fields/labels or click blue in-app ❔ (question-mark) icons to get to relevant documentation pages.
![In-app help](/docs/img/GENERAL/in-app-help.png)
There is also an in-app Help / FAQ section that should be answering frequently asked questions.
### 📥 Installation
⚠ Only tested as a [docker container - follow these instructions here](https://github.com/jokob-sk/Pi.Alert/blob/main/dockerfiles/README.md).
> Check out [leiweibau's fork](https://github.com/leiweibau/Pi.Alert/) if you want to install Pi.Alert on the server directly or original instructions for [pucherot's original code](https://github.com/pucherot/Pi.Alert/)
### 📚 Table of contents
#### 🐛 Debugging help & tips
- [Debugging tips](/docs/DEBUG_TIPS.md)
- [Invalid JSON errors debug help](/docs/DEBUG_INVALID_JSON.md)
#### 🔝 Popular/Suggested
- [Network treemap configuration](/docs/NETWORK_TREE.md)
- [SMTP server config](/docs/SMTP.md)
- [Subnets and VLANs configuration for arp-scan](/docs/SUBNETS.md)
- [Home Assistant](/docs/HOME_ASSISTANT.md)
- [Bulk edit devices](/docs/DEVICES_BULK_EDITING.md)
#### ⚙ System Management
- [Manage devices (legacy docs)](/docs/DEVICE_MANAGEMENT.md)
- [Random MAC/MAC icon meaning (legacy docs)](/docs/RANDOM_MAC.md)
- [Custom Icons configuration and support](/docs/ICONS.md)
#### 🔎 Examples
- [N8N webhook example](/docs/WEBHOOK_N8N.md)
#### ♻ Misc
- [Version history (legacy)](/docs/VERSIONS_HISTORY.md)
- [Reverse proxy (Nginx, Apache, SWAG)](/docs/REVERSE_PROXY.md)
#### 👩💻For Developers👨💻
- [APP code structure](/pialert/README.md)
- [Database structure](/docs/DATABASE.md)
- [API endpoints details](/docs/API.md)
- [Plugin system details and how to develop your own](/front/plugins/README.md)
- [Settings system](/docs/SETTINGS_SYSTEM.md)
- [New Version notifications](/docs/VERSIONS.md)
- [Frontend development tips](/docs/FRONTEND_DEVELOPMENT.md)
- [Webhook secrets](/docs/WEBHOOK_SECRET.md)
Feel free to suggest or submit new docs via a PR.
## 👨‍💻 Development priorities
Priorities from highest to lowest:
* 🔼 Fixing core functionality bugs not solvable with workarounds
* 🔵 New core functionality unlocking other opportunities (e.g.: plugins)
* 🔵 Refactoring enabling faster implementation of future functionality
* 🔽 (low) UI functionality & improvements (PRs welcome 😉)
Design philosophy: Focus on core functionality and leverage existing apps and tools to make PiAlert integrate into other workflows.
Examples:
1. Supporting apprise makes more sense than implementing multiple individual notification gateways
2. Implementing regular expression support across settings for validation makes more sense than validating one setting with a specific expression.
UI-specific requests are a low priority as the framework picked by the original developer is not very extensible (and afaik doesn't support components) and has limited mobile support. Also, I argue the value proposition is smaller than working on something else.
Feel free to submit PRs if interested. try to **keep the PRs small/on-topic** so they are easier to review and approve.
That being said, I'd reconsider if more people and or recurring sponsors file a request 😉.
## 🙏 Feature requests
Please be as detailed as possible with **workarounds** you considered and why a native feature is the better way. This gives me better context and will make it more likely to be implemented. Ideally, a feature request should be in the format "I want to be able to do XYZ so that ZYX. I considered these approaches XYZ".
## Pull requests (PRs)
If you submit a PR please:
1. Check that your changes are backward compatible with existing installations and with a blank setup.
2. Existing features should always be preserved.
3. Keep the PR small, on-topic and don't change code that is not necessary for the PR to work
4. New features code should ideally be re-usable for different purposes, not be for a very narrow use-case.
5. New functionality should ideally be implemented via the Plugins system, if possible.
Suggested test cases:
- Blank setup with no DB or config
- Existing DB / config
- Sending a notification (e. g. Delete a device and wait for a scan to run) and testing all notification gateways, especially:
- Email, Apprise (e.g. via Telegram), webhook (e.g. via Discord), MQTT (e.g. via HomeAssitant)
- Saving settings
- Test a couple of plugins
- Check the Error log for anything unusual
Some additional context:
* Permanent settings/config is stored in the `pialert.conf` file
* Currently temporary (session?) settings are stored in the `Parameters` DB table as key-value pairs. This table is wiped during a container rebuild/restart and its values are re-initialized from cookies/session data from the browser.
## 🐛 Submitting an issue or bug
Before submitting a new issue please spend a couple of minutes on research:
* Check [🛑 Common issues](https://github.com/jokob-sk/Pi.Alert/tree/main/dockerfiles#-common-issues)
* Check [💡 Closed issues](https://github.com/jokob-sk/Pi.Alert/issues?q=is%3Aissue+is%3Aclosed) if a similar issue was solved in the past.
* When submitting an issue ❗[enable debug](https://github.com/jokob-sk/Pi.Alert/blob/main/docs/DEBUG_TIPS.md)❗
⚠ Please follow the pre-defined issue template to resolve your issue faster.

350
docs/REVERSE_PROXY.md Executable file
View File

@@ -0,0 +1,350 @@
# Reverse Proxy Configuration
> Submitted by amazing [cvc90](https://github.com/cvc90) 🙏
## NGINX HTTP Configuration (Direct Path)
1. On your NGINX server, create a new file called /etc/nginx/sites-available/pialert
2. In this file, paste the following code:
```
server {
listen 80;
server_name pi.alert;
proxy_preserve_host on;
proxy_pass http://localhost:20211/;
proxy_pass_reverse http://localhost:20211/;
}
```
3. Activate the new website by running the following command:
`nginx -s reload` or `systemctl restart nginx`
4. Once NGINX restarts, you should be able to access the proxy website at http://pi.alert/
<br>
## NGINX HTTP Configuration (Sub Path)
1. On your NGINX server, create a new file called /etc/nginx/sites-available/pialert
2. In this file, paste the following code:
```
server {
listen 80;
server_name pi.alert;
proxy_preserve_host on;
location ^~ /pi.alert/ {
proxy_pass http://localhost:20211/;
proxy_pass_reverse http://localhost:20211/;
proxy_redirect ~^/(.*)$ /pi.alert/$1;
rewrite ^/pi.alert/?(.*)$ /$1 break;
}
}
```
3. Activate the new website by running the following command:
`nginx -s reload` or `systemctl restart nginx`
4. Once NGINX restarts, you should be able to access the proxy website at http://pi.alert/pi.alert/
<br>
## NGINX HTTP Configuration (Sub Path) with module ngx_http_sub_module
1. On your NGINX server, create a new file called /etc/nginx/sites-available/pialert
2. In this file, paste the following code:
```
server {
listen 80;
server_name pi.alert;
proxy_preserve_host on;
location ^~ /pi.alert/ {
proxy_pass http://localhost:20211/;
proxy_pass_reverse http://localhost:20211/;
proxy_redirect ~^/(.*)$ /pi.alert/$1;
rewrite ^/pi.alert/?(.*)$ /$1 break;
sub_filter_once off;
sub_filter_types *;
sub_filter 'href="/' 'href="/pi.alert/';
sub_filter '(?>$host)/css' '/pi.alert/css';
sub_filter '(?>$host)/js' '/pi.alert/js';
sub_filter '/img' '/pi.alert/img';
sub_filter '/lib' '/pi.alert/lib';
sub_filter '/php' '/pi.alert/php';
}
}
```
3. Activate the new website by running the following command:
`nginx -s reload` or `systemctl restart nginx`
4. Once NGINX restarts, you should be able to access the proxy website at http://pi.alert/pi.alert/
<br>
**NGINX HTTPS Configuration (Direct Path)**
1. On your NGINX server, create a new file called /etc/nginx/sites-available/pialert
2. In this file, paste the following code:
```
server {
listen 443;
server_name pi.alert;
SSLEngine On;
SSLCertificateFile /etc/ssl/certs/pi.alert.pem;
SSLCertificateKeyFile /etc/ssl/private/pi.alert.key;
proxy_preserve_host on;
proxy_pass http://localhost:20211/;
proxy_pass_reverse http://localhost:20211/;
}
```
3. Activate the new website by running the following command:
`nginx -s reload` or `systemctl restart nginx`
4. Once NGINX restarts, you should be able to access the proxy website at https://pi.alert/
<br>
**NGINX HTTPS Configuration (Sub Path)**
1. On your NGINX server, create a new file called /etc/nginx/sites-available/pialert
2. In this file, paste the following code:
```
server {
listen 443;
server_name pi.alert;
SSLEngine On;
SSLCertificateFile /etc/ssl/certs/pi.alert.pem;
SSLCertificateKeyFile /etc/ssl/private/pi.alert.key;
location ^~ /pi.alert/ {
proxy_pass http://localhost:20211/;
proxy_pass_reverse http://localhost:20211/;
proxy_redirect ~^/(.*)$ /pi.alert/$1;
rewrite ^/pi.alert/?(.*)$ /$1 break;
}
}
```
3. Activate the new website by running the following command:
`nginx -s reload` or `systemctl restart nginx`
4. Once NGINX restarts, you should be able to access the proxy website at https://pi.alert/pi.alert/
<br>
## NGINX HTTPS Configuration (Sub Path) with module ngx_http_sub_module
1. On your NGINX server, create a new file called /etc/nginx/sites-available/pialert
2. In this file, paste the following code:
```
server {
listen 443;
server_name pi.alert;
SSLEngine On;
SSLCertificateFile /etc/ssl/certs/pi.alert.pem;
SSLCertificateKeyFile /etc/ssl/private/pi.alert.key;
location ^~ /pi.alert/ {
proxy_pass http://localhost:20211/;
proxy_pass_reverse http://localhost:20211/;
proxy_redirect ~^/(.*)$ /pi.alert/$1;
rewrite ^/pi.alert/?(.*)$ /$1 break;
sub_filter_once off;
sub_filter_types *;
sub_filter 'href="/' 'href="/pi.alert/';
sub_filter '(?>$host)/css' '/pi.alert/css';
sub_filter '(?>$host)/js' '/pi.alert/js';
sub_filter '/img' '/pi.alert/img';
sub_filter '/lib' '/pi.alert/lib';
sub_filter '/php' '/pi.alert/php';
}
}
```
3. Activate the new website by running the following command:
`nginx -s reload` or `systemctl restart nginx`
4. Once NGINX restarts, you should be able to access the proxy website at https://pi.alert/pi.alert/
<br>
## Apache HTTP Configuration (Direct Path)
1. On your Apache server, create a new file called /etc/apache2/sites-available/pialert.conf.
2. In this file, paste the following code:
```
<VirtualHost *:80>
ServerName pi.alert
ProxyPreserveHost On
ProxyPass / http://localhost:20211/
ProxyPassReverse / http://localhost:20211/
</VirtualHost>
```
3. Activate the new website by running the following command:
`a2ensite pialert` or `service apache2 reload`
4. Once Apache restarts, you should be able to access the proxy website at http://pi.alert/
<br>
## Apache HTTP Configuration (Sub Path)
1. On your Apache server, create a new file called /etc/apache2/sites-available/pialert.conf.
2. In this file, paste the following code:
```
<VirtualHost *:80>
ServerName pi.alert
location ^~ /pi.alert/ {
ProxyPreserveHost On
ProxyPass / http://localhost:20211/
ProxyPassReverse / http://localhost:20211/
}
</VirtualHost>
```
3. Activate the new website by running the following command:
`a2ensite pialert` or `service apache2 reload`
4. Once Apache restarts, you should be able to access the proxy website at http://pi.alert/
<br>
## Apache HTTPS Configuration (Direct Path)
1. On your Apache server, create a new file called /etc/apache2/sites-available/pialert.conf.
2. In this file, paste the following code:
```
<VirtualHost *:443>
ServerName pi.alert
SSLEngine On
SSLCertificateFile /etc/ssl/certs/pi.alert.pem
SSLCertificateKeyFile /etc/ssl/private/pi.alert.key
ProxyPreserveHost On
ProxyPass / http://localhost:20211/
ProxyPassReverse / http://localhost:20211/
</VirtualHost>
```
3. Activate the new website by running the following command:
`a2ensite pialert` or `service apache2 reload`
4. Once Apache restarts, you should be able to access the proxy website at https://pi.alert/
<br>
## Apache HTTPS Configuration (Sub Path)
1. On your Apache server, create a new file called /etc/apache2/sites-available/pialert.conf.
2. In this file, paste the following code:
```
<VirtualHost *:443>
ServerName pi.alert
SSLEngine On
SSLCertificateFile /etc/ssl/certs/pi.alert.pem
SSLCertificateKeyFile /etc/ssl/private/pi.alert.key
location ^~ /pi.alert/ {
ProxyPreserveHost On
ProxyPass / http://localhost:20211/
ProxyPassReverse / http://localhost:20211/
}
</VirtualHost>
```
3. Activate the new website by running the following command:
`a2ensite pialert` or `service apache2 reload`
4. Once Apache restarts, you should be able to access the proxy website at https://pi.alert/pi.alert/
## Reverse proxy example by using LinuxServer's SWAG container.
> Submitted by [s33d1ing](https://github.com/s33d1ing). 🙏
## [linuxserver/swag](https://github.com/linuxserver/docker-swag)
In the SWAG container create `/config/nginx/proxy-confs/pialert.subfolder.conf` with the following contents:
``` nginx
## Version 2023/02/05
# make sure that your pialert container is named pialert
# pialert does not require a base url setting
# Since Pi.Alert uses a Host network, you may need to use the IP address of the system running Pi.Alert for $upstream_app.
location /pialert {
return 301 $scheme://$host/pialert/;
}
location ^~ /pialert/ {
# enable the next two lines for http auth
#auth_basic "Restricted";
#auth_basic_user_file /config/nginx/.htpasswd;
# enable for ldap auth (requires ldap-server.conf in the server block)
#include /config/nginx/ldap-location.conf;
# enable for Authelia (requires authelia-server.conf in the server block)
#include /config/nginx/authelia-location.conf;
# enable for Authentik (requires authentik-server.conf in the server block)
#include /config/nginx/authentik-location.conf;
include /config/nginx/proxy.conf;
include /config/nginx/resolver.conf;
set $upstream_app pialert;
set $upstream_port 20211;
set $upstream_proto http;
proxy_pass $upstream_proto://$upstream_app:$upstream_port;
proxy_set_header Accept-Encoding "";
proxy_redirect ~^/(.*)$ /pialert/$1;
rewrite ^/pialert/?(.*)$ /$1 break;
sub_filter_once off;
sub_filter_types *;
sub_filter 'href="/' 'href="/pialert/';
sub_filter '(?>$host)/css' '/pialert/css';
sub_filter '(?>$host)/js' '/pialert/js';
sub_filter '/img' '/pialert/img';
sub_filter '/lib' '/pialert/lib';
sub_filter '/php' '/pialert/php';
}
```

77
docs/SETTINGS_SYSTEM.md Executable file
View File

@@ -0,0 +1,77 @@
## ⚙ Setting system
This is an explanation how settings are handled intended for anyone thinking about writing their own plugin or contributing to the project.
If you are a user of the app, settings should be described in the `Settings` section of the app. Open an issue if you'd like to clarify any of the settings.
### 🛢 Data storage
The source of truth for user-defined values is the `pialert.conf` file. Editing the file makes the App overwrite values in the `Settings` database table and in the `table_settings.json` file.
#### Settings database table
The `Settings` database table contains settings for App run purposes. The table is recreated every time the App restarts. The settings are loaded from the source-of-truth, that is the `pialert.conf` file. A high-level overview on the databse structure can be found in the [database documentation](/docs/DATABASE.md).
#### table_settings.json
This is the [API endpoint](/docs/API.md) that reflects the state of the `Settings` database table. Settings can be accessed with the:
* `getSetting(key)` JavaScript method
The json file is also cached on the client-side local storage of the browser.
#### pialert.conf
> [!NOTE]
> This is the source of truth for settings. User-defined values in this files always override default values specified in the Plugin definition.
The App generates two `pialert.conf` entries for every setting (Since version 23.8+). One entry is the setting value, the second is the `__metadata` associated with the setting. This `__metadata` entry contains the full setting definition in JSON format. This should helps the future extensibility of the Settings system.
#### Plugin settings
> [!NOTE]
> This is the preferred way adding settings going forward. I'll be likely migrating all app settings into plugin-based settings.
Plugin settings are loaded dynamically from the `config.json` of individual plugins. If a setting isn't defined in the `pialert.conf` file, it is initialized via the `default_value` property of a setting from the `config.json` file. Check the [Plugins documentation](/front/plugins/README.md), section `⚙ Setting object structure` for details on the structure of the setting.
![Screen 1][screen1]
### Settings Process flow
The process flow is mostly managed by the [initialise.py](/pialert/initialise.py) file.
The script is responsible for reading user-defined values from a configuration file (`pialert.conf`), initializing settings, and importing them into a database. It also handles plugins and their configurations.
Here's a high-level description of the code:
1. Function Definitions:
- `ccd`: This function is used to handle user-defined settings and configurations. It takes several parameters related to the setting's name, default value, input type, options, group, and more. It saves the settings and their metadata in different lists (`conf.mySettingsSQLsafe` and `conf.mySettings`).
- `importConfigs`: This function is the main entry point of the script. It imports user settings from a configuration file, processes them, and saves them to the database.
- `read_config_file`: This function reads the configuration file (`pialert.conf`) and returns a dictionary containing the key-value pairs from the file.
2. Importing Configuration and Initializing Settings:
- The `importConfigs` function starts by checking the modification time of the configuration file to determine if it needs to be re-imported. If the file has not been modified since the last import, the function skips the import process.
- The function reads the configuration file using the `read_config_file` function, which returns a dictionary of settings.
- The script then initializes various user-defined settings using the `ccd` function, based on the values read from the configuration file. These settings are categorized into groups such as "General," "Email," "Webhooks," "Apprise," and more.
3. Plugin Handling:
- The script loads and handles plugins dynamically. It retrieves plugin configurations and iterates through each plugin.
- For each plugin, it extracts the prefix and settings related to that plugin and processes them similarly to other user-defined settings.
- It also handles scheduling for plugins with specific `RUN_SCHD` settings.
4. Saving Settings to the Database:
- The script clears the existing settings in the database and inserts the updated settings into the database using SQL queries.
5. Updating the API and Performing Cleanup:
- After importing the configurations, the script updates the API to reflect the changes in the settings.
- It saves the current timestamp to determine the next import time.
- Finally, it logs the successful import of the new configuration.
_____________________
[screen1]: https://raw.githubusercontent.com/jokob-sk/Pi.Alert/main/docs/img/plugins_json_settings.png "Screen 1"

41
docs/SMTP.md Executable file
View File

@@ -0,0 +1,41 @@
# 📧 SMTP guides
## Using the GMX SMTP server
1. Go to your GMX account https://account.gmx.com
2. Under Security Options enable 2FA (Two-factor authentication)
3. Under Security Options generate an Application-specific password
4. Home -> Email Settings -> POP3 & IMAP -> Enable access to this account via POP3 and IMAP
5. In PiAlert specify these settings:
```python
REPORT_MAIL=True
SMTP_SERVER='mail.gmx.com'
SMTP_PORT=465
SMTP_USER='gmx_email@gmx.com'
SMTP_PASS='<your Application-specific password>'
SMTP_SKIP_TLS=True
SMTP_FORCE_SSL=True
SMTP_SKIP_LOGIN=False
REPORT_FROM='gmx_email@gmx.com' # this has to be the same email as in SMTP_USER
REPORT_TO='some_target_email@gmail.com'
```
## Using the Gmail SMTP server
1. Create an app password by following the instructions from Google, you need to Enable 2FA for this to work.
[https://support.google.com/accounts/answer/185833](https://support.google.com/accounts/answer/185833)
2. Specify the following settings:
```python
REPORT_MAIL=True
SMTP_SKIP_TLS=True
SMTP_FORCE_SSL=True
SMTP_PORT=465
SMTP_SERVER='smtp.gmail.com'
SMTP_PASS='16-digit passcode from google'
REPORT_TO='some_target_email@gmail.com'
```

View File

@@ -1,15 +0,0 @@
## Use the Gmail SMTP server
1) Create an app password by following the instructions from Google, you need to Enable 2FA for this to work.
[https://support.google.com/accounts/answer/185833](https://support.google.com/accounts/answer/185833)
2) Specify the following settings:
```python
SMTP_SKIP_TLS=True
SMTP_FORCE_SSL=True
SMTP_PORT=465
SMTP_SERVER='smtp.gmail.com'
SMTP_PASS='16-digit passcode from google'
```

View File

@@ -1,21 +1,96 @@
## Subnets configuration
# Subnets configuration for arp-scan
You need to specify the network interface and the network mask. You can also configure multiple subnets and specify VLANS (see exceptions below).
## Examples
* Examples for one and two subnets (❗ Note the `['...', '...']` format):
* One subnet: `SCAN_SUBNETS = ['192.168.1.0/24 --interface=eth0']`
* Two subnets: `SCAN_SUBNETS = ['192.168.1.0/24 --interface=eth0', '192.168.1.0/24 --interface=eth1 -vlan=107']`
## Explanation
### Network mask
**Example value: `192.168.1.0/24`**
The arp-scan time itself depends on the number of IP addresses to check.
The number of IPs to check depends on the [network mask](https://www.calculator.net/ip-subnet-calculator.html) you set on the `SCAN_SUBNETS` setting.
For example, a `/24` mask results in 256 IPs to check, where as a `/16` mask checks around 65,536. Every IP takes a couple seconds. This means that with an incorrect configuration the arp-scan will take hours to complete instead of seconds.
> The number of IPs to check depends on the [network mask](https://www.calculator.net/ip-subnet-calculator.html) you set on the `SCAN_SUBNETS` setting.
> For example, a `/24` mask results in 256 IPs to check, whereas a `/16` mask checks around 65,536. Every IP takes a couple of seconds. This means that with an incorrect configuration, the arp-scan will take hours to complete instead of seconds.
Specify the network filter (which **significantly** speeds up the scan process). For example, the filter `192.168.1.0/24` covers IP ranges 192.168.1.0 to 192.168.1.255.
### Network interface (adapter)
**Example value: `--interface=eth0`**
The adapter will probably be `eth0` or `eth1`. (Run `iwconfig` in the container to find your interface name(s))
> Run `iwconfig` in your container to find your interface name(s) (e.g.: `eth0`, `eth1`).
### VLANs
**Example value: `-vlan=107`**
- Specify the network mask. For example, the filter `192.168.1.0/24` covers IP ranges 192.168.1.0 to 192.168.1.255
- Run `iwconfig` in your container to find your interface name(s) (e.g.: `eth0`, `eth1`).
- Append e.g.: ` -vlan=107` to the interface field (e.g.: `eth0 -vlan=107`) for multiple vlans. More details in this [comment in this issue](https://github.com/jokob-sk/Pi.Alert/issues/170#issuecomment-1419902988)
### Example:
#### VLANs on a Hyper-V setup
> Community sourced content by [mscreations](https://github.com/mscreations) from this [discussion](https://github.com/jokob-sk/Pi.Alert/discussions/404).
> [!NOTE]
> The setup this was tested on: Bare Metal -> Hyper-V on Win Server 2019 -> Ubuntu 22.04 VM -> Docker -> PiAlert.
**Approach 1 (may cause issues):**
Configure multiple network adapters in Hyper-V with distinct VLANs connected to each one using Hyper-V's network setup. However, this action can potentially lead to the Docker host's inability to handle network traffic correctly. The issue may stem from the creation of routes for network time servers or domain controllers on every interface, thereby preventing proper synchronization of the underlying Ubuntu VM. This interference can affect the performance of other applications such as Authentik.
**Approach 2 (working example)**
Network connections to switches are configured as trunk and allow all VLANs access to the server.
By default Hyper-V only allows untagged packets through to the VM interface and no VLAN tagged packets get through. In order to fix this follow these steps:
1) Run the following command in Powershell on the Hyper-V machine:
```shell
Set-VMNetworkAdapterVlan -VMName <Docker VM Name> -Trunk -NativeVlanId 0 -AllowedVlanIdList "<comma separated list of vlans>"
```
(There might be other ways how adjust this.)
2) Within the VM, set up sub-interfaces for each of the VLANs so they can be scanned. On Ubuntu 22.04 Netplan can be used.
In /etc/netplan/00-installer-config.yaml, add vlan definitions:
```
network:
ethernets:
eth0:
dhcp4: yes
vlans:
eth0.2:
id: 2
link: eth0
addresses: [ "192.168.2.2/24" ]
routes:
- to: 192.168.2.0/24
via: 192.168.1.1
```
3) Run `sudo netplan apply` and the interfaces are then available to scan in PiAlert.
4) In this case, use `192.168.2.0/24 --interface=eth0.2` in PiAlert
#### VLAN 🔍Example:
![Vlan configuration example](/docs/img/SUBNETS/subnets_vlan.png)
### Support for VLANS
#### Support for VLANS (& exceptions)
Please note about the accessibility of the macvlans when they are configured on the same computer. My understanding this is a general networking behavior, but feel free to clarify via a PR/issue.
Please note the accessibility of the macvlans when they are configured on the same computer. My understanding this is a general networking behavior, but feel free to clarify via a PR/issue.
- Pi.Alert does not detect the macvlan container when it is running on the same computer.
- Pi.Alert recognizes the macvlan container when it is running on a different computer.

25
docs/VERSIONS.md Executable file
View File

@@ -0,0 +1,25 @@
## Am I running the latest released version?
Since version 23.01.14 PiAlert uses a simple timestamp-based version check to verify if a new version is available. You can check the [current and past releases here](https://github.com/jokob-sk/Pi.Alert/releases), or have a look at what I'm [currently working on](https://github.com/jokob-sk/Pi.Alert/issues/138).
If you are not on the latest version, the app will notify you, that a new released version is avialable the following way:
### 📧 Via email on a notification event
If any notification occurs and an email is sent, the email will contain a note that a new version is available. See the sample email below:
![Sample email if a new version is available](/docs/img/VERSIONS/new-version-available-email.png)
### 🆕 In the UI
In the UI via a notification Icon and via a custom message in the Maintenance section.
![UI screenshot if a new version is available](/docs/img/VERSIONS/new-version-available-maintenance.png)
For a comparison, this is how the UI looks like if you are on the latest stable image:
![UI screenshot if on latest version](/docs/img/VERSIONS/latest-version-maintenance.png)
## Implementation details
During build a [/home/pi/pialert/front/buildtimestamp.txt](https://github.com/jokob-sk/Pi.Alert/blob/092797e75ccfa8359444ad149e727358ac4da05f/Dockerfile#L44) file is created. The app then periodically checks if a new release is available with a newer timestamp in GitHub's rest-based JSON endpoint (check the `def isNewVersion():` method in `pialert.py` for details).

View File

@@ -77,4 +77,11 @@
[Read more here](../LICENSE.txt)
### Contact
pi.alert.application@gmail.com
Always use the Issue tracker for the correct fork, for example:
[jokob-sk/Pi.Alert](https://github.com/jokob-sk/Pi.Alert/issues). Please also follow the guidelines on:
- [Pull Request guidelines](https://github.com/jokob-sk/Pi.Alert/tree/main/docs#-pull-requests-prs)
- 🙏 [Feature request guidelines](https://github.com/jokob-sk/Pi.Alert/tree/main/docs#-feature-requests)
- 🐛 [Issue guidelines](https://github.com/jokob-sk/Pi.Alert/tree/main/docs#-submitting-an-issue-or-bug)

38
docs/WEBHOOK_SECRET.md Executable file
View File

@@ -0,0 +1,38 @@
# Webhook Secrets
## How does the signing work?
Pi.Alert will use the configured secret to create a hash signature of the request body. This SHA256-HMAC signature will appear in the `X-Webhook-Signature` header of each request to the webhook target URL. You can use the value of this header to validate the request was sent by Pi.Alert.
## Activating webhook signatures
All you need to do in order to add a signature to the request headers is to set the `WEBHOOK_SECRET` config value to a non-empty string.
## Validating webhook deliveries
There are a few things to keep in mind when validating the webhook delivery:
- Pi.Alert uses an HMAC hex digest to compute the hash
- The signature in the `X-Webhook-Signature` header always starts with `sha256=`
- The hash signature is generated using the configured `WEBHOOK_SECRET` and the request body.
- Never use a plain `==` operator. Instead, consider using a method like [`secure_compare`](https://www.rubydoc.info/gems/rack/Rack%2FUtils:secure_compare) or [`crypto.timingSafeEqual`](https://nodejs.org/api/crypto.html#cryptotimingsafeequala-b), which performs a "constant time" string comparison to help mitigate certain timing attacks against regular equality operators, or regular loops in JIT-optimized languages.
## Testing the webhook payload validation
You can use the following secret and payload to verify that your implementation is working correctly.
`secret`: 'this is my secret'
`payload`: '{"test":"this is a test body"}'
If your implementation is correct, the signature you generated should match the following:
`signature`: bed21fcc34f98e94fd71c7edb75e51a544b4a3b38b069ebaaeb19bf4be8147e9
`X-Webhook-Signature`: sha256=bed21fcc34f98e94fd71c7edb75e51a544b4a3b38b069ebaaeb19bf4be8147e9
## More information
If you want to learn more about webhook security, take a look at [GitHub's webhook documentation](https://docs.github.com/en/webhooks/about-webhooks).
You can find examples for validating a webhook delivery [here](https://docs.github.com/en/webhooks/using-webhooks/validating-webhook-deliveries#examples).

BIN
docs/img/DATABASE/CurrentScan.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

BIN
docs/img/DATABASE/DHCP_Leases.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

BIN
docs/img/DATABASE/Devices.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

BIN
docs/img/DATABASE/Events.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

BIN
docs/img/DATABASE/Nmap_Scan.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

BIN
docs/img/DATABASE/Parameters.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

BIN
docs/img/DATABASE/Pholus_Scan.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

BIN
docs/img/DATABASE/ScanCycles.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

BIN
docs/img/DATABASE/Sessions.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

BIN
docs/img/DATABASE/Settings.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 131 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 163 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

BIN
docs/img/GENERAL/in-app-help.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

BIN
docs/img/ICONS/device-icon.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

BIN
docs/img/ICONS/devices-icons.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 202 KiB

BIN
docs/img/plugins_rogue_dhcp.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 KiB

0
front/buildtimestamp.txt Executable file
View File

View File

@@ -459,35 +459,7 @@
border-right: 5px solid #606060;
}
/* -----------------------------------------------------------------------------
Spin
----------------------------------------------------------------------------- */
.pa_semitransparent-panel {
position: absolute;
width: 100%; /*calc (100% -40px);*/
height: 100%;
left: 0;
top: 0;
display: block;
opacity: 0.8;
background-color: #fff;
z-index: 99;
}
.pa_spinner {
position: absolute;
left: 0;
right: 0;
top: 20px;
margin-left: auto;
margin-right: auto;
padding: 15px;
width: 200px;
background-color: #fff;
z-index: 100;
}
/* -----------------------------------------------------------------------------
Notification float banner
@@ -646,6 +618,11 @@ height: 50px;
}
}
.settingswrap .metadata
{
display: none;
}
.table_row {
padding: 3px;
width:100%;
@@ -693,6 +670,8 @@ height: 50px;
margin-top: 50px;
}
/* Settings */
.settings_content {
padding: 10px;
/* background-color: #272c30; */
@@ -715,6 +694,28 @@ height: 50px;
width: auto
}
.override{
padding: 5px;
}
.override .override-text
{
float:left;
width: 80%;
}
.override .override-check
{
float:left;
width: 20%;
}
input[readonly] {
/* Apply styles to the readonly input */
background-color: #646566 !important;
color: #000;
cursor: not-allowed;
}
/* Devices */
.drp-edit
@@ -735,6 +736,15 @@ height: 50px;
{
cursor:pointer;
}
.drag
{
cursor: move; /* fallback if grab cursor is unsupported */
cursor: grab;
cursor: -moz-grab;
cursor: -webkit-grab;
}
.db_info_table_row .select2-container--default .select2-selection--multiple .select2-selection__choice
{
background-color:#258744;
@@ -761,25 +771,46 @@ height: 50px;
margin-bottom: 6px;
}
/* NETWORK page */
/* AdminLTE overrides */
#networkTree .box
{
padding:2px;
margin:2px;
border-top:1px;
border-top-color:grey;
padding:0px;
padding-top:6px;
margin:0px;
align-items:center;
border-radius:20px;
width:180px;
display:flex;
flex-direction:column;
justify-content:center;
}
#networkTree .netNodeText
{
top: 2px;
margin: 2px;
position: absolute;
}
#networkTree .netPort
{
float:left;
display:inline;
}
#networkTree .portBckgIcon
{
opacity: 0.3;
display: initial;
float: left;
}
#networkTree
{
margin-left: 16px;
/* border: solid;
border-color:#606060; */
position: relative;
font-size: 0.75em;
}
#networkTree .netIcon
{
@@ -791,7 +822,7 @@ height: 50px;
{
display: block;
position: absolute;
margin-left: 156px;
margin-left: 170px;
top: -3px;
font-size: large;
left: -15px;
@@ -814,28 +845,115 @@ height: 50px;
text-overflow: ellipsis;
}
.plugin-content
.plugin-filters
{
padding-bottom: 7px;
}
.plugin-content #tabs-content-location
{
margin-top: 20px;
margin-left: 7px;
margin: 7px;
margin-right: 7px;
margin-bottom: 9px;
padding-bottom: 8px;
}
.plugin-content
{
padding-bottom: 0px;
}
.plugin-content .left-nav{
width: 100%;
padding-right: 0px;
}
.plugin-content #tabs-content-location
{
margin: 0px;
}
.plugins-description
{
padding-top: 20px;
}
.login-page .login-custom
{
width:480px;
}
/*Hidden special button*/
@media (max-width: 464px) {
#back-button {
display: none;
}
}
@media (max-width: 432px) {
#next-button {
display: none;
}
}
@media (max-width: 400px) {
#reload-button {
display: none;
}
}
@media (max-width: 365px) {
#fullscreen-button {
display: none;
}
}
/* -----------------------------------------------------------------------------
Spin
----------------------------------------------------------------------------- */
.pa_semitransparent-panel {
position: absolute;
width: 100%; /*calc (100% -40px);*/
height: 100%;
left: 0;
top: 0;
display: block;
opacity: 0.8;
background-color: #fff;
z-index: 99;
}
.pa_spinner {
position: fixed;
left: 0;
right: 0;
top: 100px;
margin-left: auto;
margin-right: auto;
padding: 15px;
width: 200px;
background-color: #fff;
z-index: 100;
}
#loadingSpinner
{
z-index: 100;
}
/* -----------------------------------------------------------------------------
Donations
----------------------------------------------------------------------------- */
.donations .box
{
padding:15px;
margin-bottom: 0px;
}
.donations .box-header
{
color:15px;
}
.donations h3
{
margin-top: 10px;
}

View File

@@ -1,11 +1,16 @@
<!-- ---------------------------------------------------------------------------
# Pi.Alert
# Open Source Network Guard / WIFI & LAN intrusion detector
#
# deviceDetails.php - Front module. Device management page
#-------------------------------------------------------------------------------
# Puche 2021 / 2022+ jokob jokob@duck.com GNU GPLv3
#--------------------------------------------------------------------------- -->
<!--
#---------------------------------------------------------------------------------#
# Pi.Alert #
# Open Source Network Guard / WIFI & LAN intrusion detector #
# #
# deviceDetails.php - Front module. Device management page #
#---------------------------------------------------------------------------------#
# Puche 2021 pi.alert.application@gmail.com GNU GPLv3 #
# jokob-sk 2022 jokob.sk@gmail.com GNU GPLv3 #
# leiweibau 2022 https://github.com/leiweibau GNU GPLv3 #
# cvc90 2023 https://github.com/cvc90 GNU GPLv3 #
#---------------------------------------------------------------------------------#
-->
<?php
require 'php/templates/header.php';
@@ -94,19 +99,14 @@
<div class="row">
<div class="col-lg-12 col-sm-12 col-xs-12">
<!-- <div class="box-transparent"> -->
<div id="navDevice" class="nav-tabs-custom">
<ul class="nav nav-tabs" style="fon t-size:16px;">
<li> <a id="tabDetails" href="#panDetails" data-toggle="tab"> <?= lang('DevDetail_Tab_Details');?> </a></li>
<?php
if ($_REQUEST['mac'] == 'Internet') { $DevDetail_Tap_temp = "Tools"; } else { $DevDetail_Tap_temp = lang('DevDetail_Tab_Nmap');}
?>
<li> <a id="tabNmap" href="#panNmap" data-toggle="tab"> <?php echo $DevDetail_Tap_temp;?> </a></li>
<li> <a id="tabTools" href="#panTools" data-toggle="tab"> <?= lang('DevDetail_Tab_Tools');?> </a></li>
<li> <a id="tabSessions" href="#panSessions" data-toggle="tab"> <?= lang('DevDetail_Tab_Sessions');?> </a></li>
<li> <a id="tabPresence" href="#panPresence" data-toggle="tab"> <?= lang('DevDetail_Tab_Presence');?> </a></li>
<li> <a id="tabEvents" href="#panEvents" data-toggle="tab"> <?= lang('DevDetail_Tab_Events');?> </a></li>
<li> <a id="tabPholus" href="#panPholus" data-toggle="tab"> <?= lang('DevDetail_Tab_Pholus');?> </a></li>
<li> <a id="tabPlugins" href="#panPlugins" data-toggle="tab"> <?= lang('DevDetail_Tab_Plugins');?> </a></li>
<div class="btn-group pull-right">
<button type="button" class="btn btn-default" style="padding: 10px; min-width: 30px;"
@@ -120,8 +120,6 @@
</div>
</ul>
<div class="tab-content" style="min-height: 430px;">
<!-- tab page 1 ------------------------------------------------------------ -->
@@ -156,7 +154,7 @@
</div>
<!-- Owner -->
<div class="form-group">
<div class="form-group" title="<?= lang('DevDetail_Owner_hover');?>">
<label class="col-sm-3 control-label"><?= lang('DevDetail_MainInfo_Owner');?></label>
<div class="col-sm-9">
<div class="input-group">
@@ -173,7 +171,7 @@
</div>
<!-- Type -->
<div class="form-group">
<div class="form-group" title="<?= lang('DevDetail_Type_hover');?>">
<label class="col-sm-3 control-label"><?= lang('DevDetail_MainInfo_Type');?></label>
<div class="col-sm-9">
<div class="input-group">
@@ -191,14 +189,14 @@
</div>
<!-- Icon -->
<div class="form-group">
<div class="form-group" title="<?= lang('DevDetail_Icon_Descr');?>">
<label class="col-sm-3 control-label">
<?= lang('DevDetail_Icon');?>
<a href="https://fontawesome.com/search?q=laptop&o=r&m=free" target="_blank"> <span><i class="fa fa-fw fa-arrow-up-right-from-square"></i></a><span>
<a href="https://github.com/jokob-sk/Pi.Alert/blob/main/docs/ICONS.md" target="_blank"> <span><i class="fa fa-circle-question"></i></a><span>
</label>
<div class="col-sm-9">
<div class="input-group">
<input class="form-control" title="<?= lang('DevDetail_Icon_Descr');?>" id="txtIcon" type="text" value="--">
<input class="form-control" id="txtIcon" type="text" value="--">
<span class="input-group-addon" title='<?= lang('DevDetail_button_OverwriteIcons_Tooltip');?>'><i class="fa fa-copy pointer" onclick="askOverwriteIconType();"></i></span>
<span class="input-group-addon"><i class="fa fa-pencil pointer" onclick="editDrp('txtIcon');"></i></span>
<div class="input-group-btn">
@@ -213,7 +211,7 @@
</div>
<!-- Vendor -->
<div class="form-group">
<div class="form-group" title="<?= lang('DevDetail_Vendor_hover');?>">
<label class="col-sm-3 control-label"><?= lang('DevDetail_MainInfo_Vendor');?></label>
<div class="col-sm-9">
<input class="form-control" id="txtVendor" type="text" value="--">
@@ -324,7 +322,7 @@
<!-- Network -->
<h4 class="bottom-border-aqua"><?= lang('DevDetail_MainInfo_Network_Title');?><span class="networkPageHelp"> <a target="_blank" href="https://github.com/jokob-sk/Pi.Alert/blob/main/docs/NETWORK_TREE.md"><i class="fa fa-circle-question"></i></a><span></h4>
<div class="form-group">
<div class="form-group" title="<?= lang('DevDetail_Network_Node_hover');?>">
<label class="col-sm-3 control-label"><?= lang('DevDetail_MainInfo_Network');?></label>
<div class="col-sm-9">
<div class="input-group">
@@ -341,13 +339,15 @@
</div>
</div>
</div>
<div class="form-group">
<div class="form-group" title="<?= lang('DevDetail_Network_Port_hover');?>">
<label class="col-sm-3 control-label"><?= lang('DevDetail_MainInfo_Network_Port');?></label>
<div class="col-sm-9">
<input class="form-control" id="txtNetworkPort" type="text" value="--">
</div>
</div>
</div>
</div>
@@ -428,7 +428,7 @@
</div>
<!-- Randomized MAC -->
<div class="form-group" >
<div class="form-group" title="<?= lang('RandomMAC_hover');?>" >
<label class="col-sm-5 control-label"><?= lang('DevDetail_EveandAl_RandomMAC');?>:</label>
<div class="col-sm-7" style="padding-top:6px;">
<span id="iconRandomMACinactive" data-toggle="tooltip" data-placement="right" title="Random MAC is Inactive">
@@ -464,10 +464,34 @@
</div>
</div>
</div>
</div>
<h4 class="bottom-border-aqua"><?= lang('DevDetail_Copy_Device_Title');?></h4>
<div class="box-body form-horizontal">
<label class="col-sm-3 control-label">
<?= lang('Navigation_Devices');?>
</label>
<div class="col-sm-9">
<div class="input-group">
<input class="form-control" title="<?= lang('DevDetail_Copy_Device_Tooltip');?>" id="txtFromDevice" type="text" value="--">
<span class="input-group-addon" title='<?= lang('Gen_Copy');?>'><i class="fa fa-copy pointer" onclick="askCopyFromDevice();"></i></span>
<div class="input-group-btn">
<button type="button" class="btn btn-info dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
<span class="fa fa-caret-down"></span>
</button>
<ul id="dropdownDevices" class="dropdown-menu dropdown-menu-right">
</ul>
</div>
</div>
</div>
</div>
</div>
<!-- Buttons -->
<div class="col-xs-12">
<div class="pull-right">
@@ -504,126 +528,20 @@
</div>
<!-- tab page 5 ------------------------------------------------------------ -->
<!-- tab page "Tools" ------------------------------------------------------------ -->
<div class="tab-pane fade" id="panTools">
<div class="tab-pane fade" id="panNmap">
<?php
require 'deviceDetailsTools.php';
?>
<?php
if ($_REQUEST['mac'] == 'Internet') {
?>
<h4 class="">Online Speedtest</h4>
<div style="width:100%; text-align: center; margin-bottom: 50px;">
<button type="button" id="speedtestcli" class="btn btn-primary pa-btn" style="margin: auto;" onclick="speedtestcli()">Start Speedtest</button>
</div>
<script>
function speedtestcli() {
$( "#scanoutput" ).empty();
$.ajax({
method: "POST",
url: "./php/server/speedtestcli.php",
beforeSend: function() { $('#scanoutput').addClass("ajax_scripts_loading"); },
complete: function() { $('#scanoutput').removeClass("ajax_scripts_loading"); },
success: function(data, textStatus) {
$("#scanoutput").html(data);
}
})
}
</script>
<?php
}
?>
<h4 class="">Nmap Scans</h4>
<div style="width:100%; text-align: center;">
<script>
setTimeout(function(){
document.getElementById('piamanualnmap_fast').innerHTML='<?= lang('DevDetail_Nmap_buttonFast');?> (' + document.getElementById('txtLastIP').value +')';
document.getElementById('piamanualnmap_normal').innerHTML='<?= lang('DevDetail_Nmap_buttonDefault');?> (' + document.getElementById('txtLastIP').value +')';
document.getElementById('piamanualnmap_detail').innerHTML='<?= lang('DevDetail_Nmap_buttonDetail');?> (' + document.getElementById('txtLastIP').value +')';
document.getElementById('piamanualnmap_skipdiscovery').innerHTML='<?= lang('DevDetail_Nmap_buttonSkipDiscovery');?> (' + document.getElementById('txtLastIP').value +')';
}, 2000);
</script>
<button type="button" id="piamanualnmap_fast" class="btn btn-primary pa-btn" style="margin-bottom: 20px; margin-left: 10px; margin-right: 10px;" onclick="manualnmapscan(document.getElementById('txtLastIP').value, 'fast')">Loading...</button>
<button type="button" id="piamanualnmap_normal" class="btn btn-primary pa-btn" style="margin-bottom: 20px; margin-left: 10px; margin-right: 10px;" onclick="manualnmapscan(document.getElementById('txtLastIP').value, 'normal')">Loading...</button>
<button type="button" id="piamanualnmap_detail" class="btn btn-primary pa-btn" style="margin-bottom: 20px; margin-left: 10px; margin-right: 10px;" onclick="manualnmapscan(document.getElementById('txtLastIP').value, 'detail')">Loading...</button>
<button type="button" id="piamanualnmap_skipdiscovery" class="btn btn-primary pa-btn" style="margin-bottom: 20px; margin-left: 10px; margin-right: 10px;" onclick="manualnmapscan(document.getElementById('txtLastIP').value, 'skipdiscovery')">Loading...</button>
<div style="text-align: left;">
<ul style="padding:20px;">
<li><?= lang('DevDetail_Nmap_buttonFast_text');?></li>
<li><?= lang('DevDetail_Nmap_buttonDefault_text');?></li>
<li><?= lang('DevDetail_Nmap_buttonDetail_text');?></li>
<li><?= lang('DevDetail_Nmap_buttonSkipDiscovery_text');?></li>
<li><a onclick="setCache('activeMaintenanceTab', 'tab_Logging_id')" href="/maintenance.php#tab_Logging"><?= lang('DevDetail_Nmap_resultsLink');?></a></li>
</ul>
</div>
</div>
<div id="scanoutput" style="margin-top: 30px;"></div>
<script>
function manualnmapscan(targetip, mode) {
$( "#scanoutput" ).empty();
$.ajax({
method: "POST",
url: "./php/server/nmap_scan.php",
data: { scan: targetip, mode: mode },
beforeSend: function() { $('#scanoutput').addClass("ajax_scripts_loading"); },
complete: function() { $('#scanoutput').removeClass("ajax_scripts_loading"); },
success: function(data, textStatus) {
console.log(data);
$("#scanoutput").html(data);
}
})
}
</script>
<h3><?= lang("DevDetail_Tab_NmapTableHeader");?></h3>
<div><?= lang("DevDetail_Tab_NmapTableText");?></div>
<table id="tableNmap" class="table table-bordered table-hover table-striped ">
<thead>
<tr>
<th>Index</th>
<th>Time</th>
<th>Port</th>
<th>State</th>
<th>Service</th>
<th>Extra (Notes)</th>
</tr>
</thead>
<!-- Comment out tbody when trying to implement better table with datatables here -->
<!-- IDEA: Show unmatched pholus entries? -->
<tbody id="tableNmapBody">
<tr id="tableNmapPlc" class="text-center"><td colspan='7'><span><?= lang("DevDetail_Tab_NmapEmpty"); ?></span></td></tr>
</tbody>
</table>
</div>
<!-- ----------------------------------------------------------------------- -->
<!-- tab page 3 ------------------------------------------------------------ -->
<div class="tab-pane fade table-responsive" id="panPresence">
<!-- spinner -->
<div id="loading" style="display: none">
<div class="pa_semitransparent-panel"></div>
<div class="panel panel-default pa_spinner">
<table><td width="130px" align="middle">Loading...</td><td><i class="ion ion-ios-loop-strong fa-spin fa-2x fa-fw"></td></table>
</div>
</div>
<!-- Calendar -->
<div id="calendar">
</div>
@@ -644,35 +562,24 @@
<table id="tableEvents" class="table table-bordered table-hover table-striped ">
<thead>
<tr>
<th>Date</th>
<th>Event type</th>
<th>IP</th>
<th>Additional info</th>
<th><?= lang("DevDetail_Tab_EventsTableDate");?></th>
<th><?= lang("DevDetail_Tab_EventsTableEvent");?></th>
<th><?= lang("DevDetail_Tab_EventsTableIP");?></th>
<th><?= lang("DevDetail_Tab_EventsTableInfo");?></th>
</tr>
</thead>
</table>
</div>
<!-- tab page 6 ------------------------------------------------------------ -->
<div class="tab-pane fade table-responsive" id="panPholus">
<!-- Datatable Events -->
<table id="tablePholus" class="table table-bordered table-hover table-striped ">
<thead>
<tr>
<th>Index</th>
<th>Info</th>
<th>Time</th>
<th>IP</th>
<th>Entry Type</th>
<th>Value</th>
<th>Extra</th>
</tr>
</thead>
<!-- Comment out tbody when trying to implement better table with datatables here -->
<!-- IDEA: Show unmatched pholus entries? -->
<tbody id="tablePholusBody">
<tr id="tablePholusPlc" class="text-center"><td colspan='7'><span><?= lang("DevDetail_Tab_PholusEmpty"); ?></span></td></tr>
</tbody>
</table>
<!-- tab page 7 ------------------------------------------------------------ -->
<div class="tab-pane fade table-responsive" id="panPlugins">
<?php
// Include the other page
include 'pluginsCore.php';
?>
</div>
</div>
@@ -734,20 +641,6 @@ if ($ENABLED_DARKMODE === True) {
return params.mac
}
// ------------------------------------------------------------
function getDevicesListValue(idColumn, idValue, returnColumn)
{
// Read cache
devicesListAll = JSON.parse(getCache('devicesListAll'));
if(emptyArr.includes(devicesListAll) || emptyArr.includes(idValue))
{
return '';
}
return devicesListAll.find((item) => {return item[idColumn] == idValue})[returnColumn]
}
// ------------------------------------------------------------
function getDevicesList()
{
@@ -766,29 +659,8 @@ if ($ENABLED_DARKMODE === True) {
mac = getMac() // can also be rowID!! not only mac
var devicesList = []; // this will contain a list the database row IDs of the devices ordered by the position displayed in the UI
var devicesListAll = []; // this will contain a list off all devices
$.get('php/server/devices.php?action=getDevicesList&status=all&forceDefaultOrder', function(data) {
rawData = JSON.parse (data)
devicesListAll = rawData["data"].map(item => { return {
"name":item[0],
"type":item[2],
"icon":item[3],
"mac":item[11],
"parentMac":item[14],
"rowid":item[13],
"status":item[10]
}})
setCache('devicesListAll', JSON.stringify(devicesListAll))
// Read parameters & Initialize components
main();
});
main();
var pos = -1;
var parPeriod = 'Front_Details_Period';
@@ -807,13 +679,13 @@ if ($ENABLED_DARKMODE === True) {
// -----------------------------------------------------------------------------
function main () {
// Initialize MAC
var urlParams = new URLSearchParams(window.location.search);
if (urlParams.has ('mac') == true) {
mac = urlParams.get ('mac');
setCache("piaDeviceDetailsMac", mac); // set cookie
} else {
$('#pageTitle').html ('Device not found');
}
@@ -949,6 +821,7 @@ function initializeCombos () {
initializeCombo ( '#dropdownNetworkNodeMac', 'getNetworkNodes', 'txtNetworkNodeMac', false);
initializeCombo ( '#dropdownIcon', 'getIcons', 'txtIcon', false);
initializeCombo ( '#dropdownAction', 'getActions', 'txtAction', false);
initializeCombo ( '#dropdownDevices', 'getDevices', 'txtFromDevice', false);
// Initialize static combos
initializeComboSkipRepeated ();
@@ -1084,7 +957,7 @@ function initializeDatatables () {
// Processing
'processing' : true,
'language' : {
processing: '<table><td width="130px" align="middle">Loading...</td>'+
processing: '<table><td width="130px" align="middle"><?= lang("DevDetail_Loading");?></td>'+
'<td><i class="ion ion-ios-loop-strong fa-spin fa-2x fa-fw">'+
'</td></table>',
emptyTable: 'No data',
@@ -1123,7 +996,7 @@ function initializeDatatables () {
// Processing
'processing' : true,
'language' : {
processing: '<table><td width="130px" align="middle">Loading...</td>'+
processing: '<table><td width="130px" align="middle"><?= lang("DevDetail_Loading");?></td>'+
'<td><i class="ion ion-ios-loop-strong fa-spin fa-2x fa-fw">'+
'</td></table>',
emptyTable: 'No data',
@@ -1192,6 +1065,16 @@ function initializeCalendar () {
duration : { month: 1 },
buttonText : '<?= lang('Presence_CalHead_month');?>',
columnHeaderFormat : 'D'
},
agendaWeek: {
buttonText : '<?= lang('Presence_CalHead_week');?>',
},
agendaDay: {
type : 'agenda',
duration : { day: 1 },
buttonText : '<?= lang('Presence_CalHead_day');?>',
slotLabelFormat : 'H',
slotDuration : '01:00:00'
}
},
@@ -1238,16 +1121,16 @@ function initializeCalendar () {
},
eventRender: function (event, element) {
$(element).tooltip({container: 'body', placement: 'right',
$(element).tooltip({container: 'body', placement: 'bottom',
title: event.tooltip});
// element.attr ('title', event.tooltip); // Alternative tooltip
},
loading: function( isLoading, view ) {
if (isLoading) {
$('#loading').show();
showSpinner()
} else {
$('#loading').hide();
hideSpinner()
}
}
@@ -1350,7 +1233,7 @@ function getDeviceData (readAllData=false) {
// Name
if (deviceData['dev_Owner'] == null || deviceData['dev_Owner'] == '' ||
(deviceData['dev_Name']).indexOf (deviceData['dev_Owner']) != -1 ) {
(deviceData['dev_Name'].toString()).indexOf (deviceData['dev_Owner']) != -1 ) {
$('#pageTitle').html (deviceData['dev_Name']);
} else {
$('#pageTitle').html (deviceData['dev_Name'] + ' ('+ deviceData['dev_Owner'] +')');
@@ -1408,9 +1291,12 @@ function getDeviceData (readAllData=false) {
$('#txtGroup').val (deviceData['dev_Group']);
$('#txtLocation').val (deviceData['dev_Location']);
$('#txtComments').val (deviceData['dev_Comments']);
$('#txtNetworkNodeMac').val (getDevicesListValue('mac', deviceData['dev_Network_Node_MAC_ADDR'] ,'name'));
$('#txtNetworkNodeMac').val ( getDeviceDataByMacAddress(deviceData['dev_Network_Node_MAC_ADDR'], "dev_Name")) ;
$('#txtNetworkNodeMac').attr ('data-mynodemac', deviceData['dev_Network_Node_MAC_ADDR']);
$('#txtNetworkPort').val (deviceData['dev_Network_Node_port']);
// disabling network node configuration if root Internet node
$('#txtNetworkNodeMac').prop('readonly', mac == 'Internet' );
$('#txtNetworkPort').prop('readonly', mac == 'Internet' );
$('#txtFirstConnection').val (deviceData['dev_FirstConnection']);
$('#txtLastConnection').val (deviceData['dev_LastConnection']);
@@ -1505,8 +1391,11 @@ function performSwitch(direction)
// get new mac from the devicesList. Don't change to the commented out line below, the mac query string in the URL isn't updated yet!
// mac = params.mac;
mac = devicesList[pos].mac.toString();
setCache("piaDeviceDetailsMac", mac);
getDeviceData (true);
// reload current tab
@@ -1623,6 +1512,29 @@ function deleteDeviceEvents () {
$('#panDetails :input').attr('disabled', true);
}
// -----------------------------------------------------------------------------
function askCopyFromDevice() {
// Ask
showModalWarning('<?= lang('BackDevDetail_Copy_Title');?>', '<?= lang('BackDevDetail_Copy_Ask');?>',
'<?= lang('Gen_Cancel');?>', '<?= lang('Gen_Run');?>', 'copyFromDevice');
}
function copyFromDevice() {
// Execute
$.get('php/server/devices.php?action=copyFromDevice&'
+ '&macTo=' + $('#txtMAC').val()
+ '&macFrom=' + $('#txtFromDevice').val()
, function(msg) {
showMessage (msg);
setTimeout(function() {
window.location.reload();
}, 2000);
});
}
// -----------------------------------------------------------------------------
function askRunAction() {
// Ask
@@ -1784,7 +1696,7 @@ function setTextValue (textElement, textValue) {
if(textElement == "txtNetworkNodeMac")
{
$('#'+textElement).attr ('data-mynodemac', textValue);
$('#'+textElement).val (getDevicesListValue('mac', textValue ,'name') );
$('#'+textElement).val (getDeviceDataByMacAddress(textValue, "dev_Name"));
} else
{
$('#'+textElement).attr ('data-myvalue', textValue);
@@ -1814,101 +1726,13 @@ function initializeTabsNew () {
$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
var target = $(e.target).attr("href") // activated tab
// load tab data only when needed (tab change)
if(target == "#panPholus")
{
loadPholus();
}
if(target == "#panNmap")
{
loadNmap();
}
// if(target == "#panTools")
// {
// // loadTools();
// }
});
}
// -----------------------------------------------------------------------------
function loadNmap()
{
$(".deviceSpecific").remove(); // remove any previous data listed in the table
$.get('php/server/devices.php?action=getNmap&mac='+ mac, function(data) {
data = sanitize(data);
if(data != "false" && $.trim(data) != [])
{
var listData = JSON.parse(data);
var order = 1;
tableRows = "";
// for each item
listData.forEach(function (item, index) {
tableRows += '<tr class="deviceSpecific">\
<td>'+item.Index+'</td>\
<td>'+item.Time+'</td>\
<td>\
<a href="http://'+item.IP+':'+item.Port.split('/')[0]+'" target="_blank">'+item.Port+'</a>\
<a href="https://'+item.IP+':'+item.Port.split('/')[0]+'" target="_blank">\
<span style="padding-left:5px"><i class="fa fa-lock "></i></a></span>\
</td>\
<td>'+item.State+'</td>\
<td>'+item.Service+'</td>\
<td>\
<div class="input-group">\
<input class="form-control" id="port_'+item.Index+'" type="text" value="'+item.Extra+'">\
<span class="input-group-addon"><i class="fa fa-save pointer" onclick="saveNmapPort('+item.Index+')"></i></span>\
</div>\
</td>\
</tr>';
});
$("#tableNmapBody").html($("#tableNmapBody").html()+tableRows);
$("#tableNmapPlc").hide();
}
else
{
// console.log("else")
$("#tableNmapPlc").show();
$(".deviceSpecific").remove();
}
});
}
// -----------------------------------------------------------------------------
function loadPholus()
{
$(".deviceSpecific").remove(); // remove any previous data listed in teh table
$.get('php/server/devices.php?action=getPholus&mac='+ mac, function(data) {
data = sanitize(data);
if(data != "false" && $.trim(data) != [])
{
var listData = JSON.parse(data);
var order = 1;
tableRows = "";
// for each item
listData.forEach(function (item, index) {
tableRows += '<tr class="deviceSpecific"><td>'+item.Index+'</td><td>'+item.Info+'</td><td>'+item.Time+'</td><td>'+item.IP_v4_or_v6+'</td><td>'+item.Record_Type+'</td><td>'+item.Value+'</td><td>'+ item.Extra +'</td></tr>';
});
$("#tablePholusBody").html($("#tablePholusBody").html()+tableRows);
$("#tablePholusPlc").hide();
}
else
{
// console.log("else")
$("#tablePholusPlc").show();
$(".deviceSpecific").remove();
}
});
}
//-----------------------------------------------------------------------------------
@@ -1942,7 +1766,7 @@ function initTable(tableId, mac){
// Processing
'processing' : true,
'language' : {
processing: '<table><td width="130px" align="middle">Loading...</td>'+
processing: '<table><td width="130px" align="middle"><?= lang("DevDetail_Loading");?></td>'+
'<td><i class="ion ion-ios-loop-strong fa-spin fa-2x fa-fw">'+
'</td></table>',
emptyTable: 'No data',
@@ -1980,23 +1804,7 @@ window.onload = function async()
function reloadTab()
{
// tab loaded without switching
if(getCache("activeDevicesTab") == "tabPholus")
{
loadPholus();
}
if(getCache("activeDevicesTab") == "tabNmap")
{
loadNmap();
}
}
//-----------------------------------------------------------------------------------
function saveNmapPort(index)
{
saveData('saveNmapPort', index, $('#port_'+index).val())
}
</script>

214
front/deviceDetailsTools.php Executable file
View File

@@ -0,0 +1,214 @@
<script>
deviceIP = getDeviceDataByMacAddress("<?php echo $_REQUEST["mac"]?>", "dev_LastIP")
</script>
<?php if ($_REQUEST["mac"] == "Internet") { ?>
<h4 class=""><i class="fa-solid fa-globe"></i>
<?= lang("DevDetail_Tab_Tools_Internet_Info_Title") ?>
</h4>
<h5 class="">
<?= lang("DevDetail_Tab_Tools_Internet_Info_Description") ?>
</h5>
<br>
<div style="width:100%; text-align: center; margin-bottom: 50px;">
<button type="button" id="internetinfo" class="btn btn-primary pa-btn" style="margin: auto;" onclick="internetinfo()">
<?= lang("DevDetail_Tab_Tools_Internet_Info_Start") ?></button>
<br>
<div id="internetinfooutput" style="margin-top: 10px;"></div>
</div>
<?php } ?>
<?php if ($_REQUEST["mac"] == "Internet") { ?>
<h4 class=""><i class="fa-solid fa-gauge-high"></i>
<?= lang("DevDetail_Tab_Tools_Speedtest_Title") ?>
</h4>
<h5 class="">
<?= lang("DevDetail_Tab_Tools_Speedtest_Description") ?>
</h5>
<br>
<div style="width:100%; text-align: center; margin-bottom: 50px;">
<button type="button" id="speedtestcli" class="btn btn-primary pa-btn" style="margin: auto;" onclick="speedtestcli()">
<?= lang("DevDetail_Tab_Tools_Speedtest_Start") ?></button>
<br>
<div id="speedtestoutput" style="margin-top: 10px;"></div>
</div>
<?php } ?>
<?php if ($_REQUEST["mac"] != "Internet") { ?>
<h4 class=""><i class="fa-solid fa-route"></i>
<?= lang("DevDetail_Tab_Tools_Traceroute_Title") ?>
</h4>
<h5 class="">
<?= lang("DevDetail_Tab_Tools_Traceroute_Description") ?>
</h5>
<div style="width:100%; text-align: center; margin-bottom: 50px;">
<button type="button" id="traceroute" class="btn btn-primary pa-btn" style="margin: auto;" onclick="traceroute()">
<?= lang("DevDetail_Tab_Tools_Traceroute_Start") ?>
</button>
<br>
<div id="tracerouteoutput" style="margin-top: 10px;"></div>
</div>
<?php } ?>
<?php if ($_REQUEST["mac"] != "Internet") { ?>
<h4 class=""><i class="fa-solid fa-magnifying-glass"></i>
<?= lang("DevDetail_Tab_Tools_Nslookup_Title") ?>
</h4>
<h5 class="">
<?= lang("DevDetail_Tab_Tools_Nslookup_Description") ?>
</h5>
<div style="width:100%; text-align: center; margin-bottom: 50px;">
<button type="button" id="nslookup" class="btn btn-primary pa-btn" style="margin: auto;" onclick="nslookup()">
<?= lang("DevDetail_Tab_Tools_Nslookup_Start") ?>
</button>
<br>
<div id="nslookupoutput" style="margin-top: 10px;"></div>
</div>
<?php } ?>
<h4 class=""><i class="fa-solid fa-ethernet"></i>
<?= lang("DevDetail_Nmap_Scans") ?>
</h4>
<div style="width:100%; text-align: center;">
<div>
<?= lang("DevDetail_Nmap_Scans_desc") ?>
</div>
<button type="button" id="piamanualnmap_fast" class="btn btn-primary pa-btn" style="margin-bottom: 20px; margin-left: 10px; margin-right: 10px;" onclick="manualnmapscan(deviceIP, 'fast')">
<?= lang("DevDetail_Loading") ?>
</button>
<button type="button" id="piamanualnmap_normal" class="btn btn-primary pa-btn" style="margin-bottom: 20px; margin-left: 10px; margin-right: 10px;" onclick="manualnmapscan(deviceIP, 'normal')">
<?= lang("DevDetail_Loading") ?>
</button>
<button type="button" id="piamanualnmap_detail" class="btn btn-primary pa-btn" style="margin-bottom: 20px; margin-left: 10px; margin-right: 10px;" onclick="manualnmapscan(deviceIP, 'detail')">
<?= lang("DevDetail_Loading") ?>
</button>
<button type="button" id="piamanualnmap_skipdiscovery" class="btn btn-primary pa-btn" style="margin-bottom: 20px; margin-left: 10px; margin-right: 10px;" onclick="manualnmapscan(deviceIP, 'skipdiscovery')">
<?= lang("DevDetail_Loading") ?>
</button>
<div style="text-align: left;">
<ul style="padding:20px;">
<li>
<?= lang("DevDetail_Nmap_buttonFast_text") ?>
</li>
<li>
<?= lang("DevDetail_Nmap_buttonDefault_text") ?>
</li>
<li>
<?= lang("DevDetail_Nmap_buttonDetail_text") ?>
</li>
<li>
<?= lang("DevDetail_Nmap_buttonSkipDiscovery_text") ?>
</li>
<li>
<a onclick="setCache('activeMaintenanceTab', 'tab_Logging_id')" href="/maintenance.php#tab_Logging">
<?= lang("DevDetail_Nmap_resultsLink") ?>
</a>
</li>
</ul>
</div>
</div>
<div id="scanoutput" style="margin-top: 30px;"></div>
<script>
// ----------------------------------------------------------------
function manualnmapscan(targetip, mode) {
$( "#scanoutput" ).empty();
$.ajax({
method: "POST",
url: "./php/server/nmap_scan.php",
data: { scan: targetip, mode: mode },
beforeSend: function() { $('#scanoutput').addClass("ajax_scripts_loading"); },
complete: function() { $('#scanoutput').removeClass("ajax_scripts_loading"); },
success: function(data, textStatus) {
console.log(data);
$("#scanoutput").html(data);
}
})
}
// ----------------------------------------------------------------
function speedtestcli() {
$( "#speedtestoutput" ).empty();
$.ajax({
method: "POST",
url: "./php/server/speedtestcli.php",
beforeSend: function() { $('#speedtestoutput').addClass("ajax_scripts_loading"); },
complete: function() { $('#speedtestoutput').removeClass("ajax_scripts_loading"); },
success: function(data, textStatus) {
$("#speedtestoutput").html(data);
}
})
}
// ----------------------------------------------------------------
function traceroute() {
$( "#tracerouteoutput" ).empty();
$.ajax({
method: "GET",
url: "./php/server/traceroute.php?action=get&ip=" + deviceIP + "",
beforeSend: function() { $('#tracerouteoutput').addClass("ajax_scripts_loading"); },
complete: function() { $('#tracerouteoutput').removeClass("ajax_scripts_loading"); },
success: function(data, textStatus) {
$("#tracerouteoutput").html(data);
}
})
}
// ----------------------------------------------------------------
function nslookup() {
$( "#nslookupoutput" ).empty();
$.ajax({
method: "GET",
url: "./php/server/nslookup.php?action=get&ip=" + deviceIP + "",
beforeSend: function() { $('#nslookupoutput').addClass("ajax_scripts_loading"); },
complete: function() { $('#nslookupoutput').removeClass("ajax_scripts_loading"); },
success: function(data, textStatus) {
$("#nslookupoutput").html(data);
}
})
}
// ----------------------------------------------------------------
setTimeout(function(){
document.getElementById('piamanualnmap_fast').innerHTML='<?= lang(
"DevDetail_Nmap_buttonFast"
) ?> (' + deviceIP +')';
document.getElementById('piamanualnmap_normal').innerHTML='<?= lang(
"DevDetail_Nmap_buttonDefault"
) ?> (' + deviceIP +')';
document.getElementById('piamanualnmap_detail').innerHTML='<?= lang(
"DevDetail_Nmap_buttonDetail"
) ?> (' + deviceIP +')';
document.getElementById('piamanualnmap_skipdiscovery').innerHTML='<?= lang(
"DevDetail_Nmap_buttonSkipDiscovery"
) ?> (' + deviceIP +')';
}, 2000);
// ----------------------------------------------------------------
function internetinfo() {
$( "#internetinfooutput" ).empty();
$.ajax({
method: "POST",
url: "./php/server/internetinfo.php",
beforeSend: function() { $('#internetinfooutput').addClass("ajax_scripts_loading"); },
complete: function() { $('#internetinfooutput').removeClass("ajax_scripts_loading"); },
success: function(data, textStatus) {
$("#internetinfooutput").html(data);
}
})
}
</script>

View File

@@ -1,11 +1,16 @@
<!-- ---------------------------------------------------------------------------
# Pi.Alert
# Open Source Network Guard / WIFI & LAN intrusion detector
#
# devices.php - Front module. Devices list page
#-------------------------------------------------------------------------------
# Puche 2021 / 2022+ jokob jokob@duck.com GNU GPLv3
#--------------------------------------------------------------------------- -->
<!--
#---------------------------------------------------------------------------------#
# Pi.Alert #
# Open Source Network Guard / WIFI & LAN intrusion detector #
# #
# devices.php - Front module. Devices list page #
#---------------------------------------------------------------------------------#
# Puche 2021 pi.alert.application@gmail.com GNU GPLv3 #
# jokob-sk 2022 jokob.sk@gmail.com GNU GPLv3 #
# leiweibau 2022 https://github.com/leiweibau GNU GPLv3 #
# cvc90 2023 https://github.com/cvc90 GNU GPLv3 #
#---------------------------------------------------------------------------------#
-->
<?php
@@ -26,7 +31,8 @@
<!-- Content header--------------------------------------------------------- -->
<section class="content-header">
<h1 id="pageTitle">
<?= lang('Device_Title');?>
<i class="fa fa-laptop"></i>
<?= lang('Device_Title');?>
</h1>
</section>
@@ -192,8 +198,8 @@
var tableRows = 10;
var tableOrder = [[3,'desc'], [0,'asc']];
var columnsStr = '[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]';
var tableColumnOrder = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17] ;
var columnsStr = '[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18]';
var tableColumnOrder = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18];
var tableColumnVisible = tableColumnOrder;
// Read parameters & Initialize components
@@ -203,6 +209,8 @@
// -----------------------------------------------------------------------------
function main () {
handleLoadingDialog()
// get from cookie if available (need to use decodeURI as saved as part of URI in PHP)
cookieColumnsVisibleStr = decodeURI(getCookie("Front_Devices_Columns_Visible")).replaceAll('%2C',',')
@@ -225,6 +233,8 @@ function main () {
// save the columns order in the Devices page
tableColumnOrder = numberArrayFromString(data);
//initialize the table headers in the correct order
var headersDefaultOrder = [ '<?= lang('Device_TableHead_Name');?>',
'<?= lang('Device_TableHead_Owner');?>',
@@ -308,21 +318,13 @@ function mapIndx(oldIndex)
function initializeDatatable () {
for(i = 0; i < tableColumnOrder.length; i++)
{
// hide this column if not in the tableColumnVisible variable
// hide this column if not in the tableColumnVisible variable (we need to keep the MAC address (index 11) for functionality reasons)
if(tableColumnVisible.includes(tableColumnOrder[i]) == false)
{
tableColumnHide.push(mapIndx(tableColumnOrder[i]));
}
}
// If the device has a small width (mobile) only show name, ip, and status columns.
if (window.screen.width < 400) {
tableColumnHide = [11,12,13,1,2,4,5,6,7,9];
}
// else {
// // var tableColumnHide = [11, 12, 13];
// tableColumnHide = [11, 12, 13];
// };
var table=
$('#tableDevices').DataTable({
'paging' : true,
@@ -426,7 +428,7 @@ function initializeDatatable () {
default: color='aqua'; break;
};
$(td).html ('<a href="deviceDetails.php?mac='+ rowData[10] +'" class="badge bg-'+ color +'">'+ cellData.replace('-', '') +'</a>');
$(td).html ('<a href="deviceDetails.php?mac='+ rowData[mapIndx(11)] +'" class="badge bg-'+ color +'">'+ cellData.replace('-', '') +'</a>');
} },
],
@@ -542,6 +544,26 @@ function getDevicesList (status) {
'php/server/devices.php?action=getDevicesList&status=' + deviceStatus).load();
};
function handleLoadingDialog()
{
$.get('api/app_state.json?nocache=' + Date.now(), function(appState) {
console.log(appState["showSpinner"])
if(appState["showSpinner"])
{
showSpinner("settings_old")
setTimeout("handleLoadingDialog()", 1000);
} else
{
hideSpinner()
}
})
}
</script>
<script src="js/pialert_common.js"></script>

70
front/donations.php Executable file
View File

@@ -0,0 +1,70 @@
<?php
require 'php/templates/header.php';
?>
<script src="js/pialert_common.js"></script>
<div id="donationsPage" class="content-wrapper">
<!-- Content header--------------------------------------------------------- -->
<section class="content-header">
<h1 id="pageTitle">
<i class="fa fa-heart"></i>
</h1>
</section>
<!-- Main content ---------------------------------------------------------- -->
<section class="content donations">
<div id="donationsText" class="box box-solid"></div>
<div class="content-header">
<h3 class="box-title " id="donationsPlatforms"></h3>
</div>
<div class="box box-solid">
<div class="box-body">
<div class="col-sm-2">
<a target="_blank" href="https://github.com/sponsors/jokob-sk">
<img alt="Sponsor Me on GitHub" src="https://i.imgur.com/X6p5ACK.png" width="150px">
</a>
</div>
<div class="col-sm-2">
<a target="_blank" href="https://www.buymeacoffee.com/jokobsk">
<img alt="Buy Me A Coffee" src="https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png" width="117px" height="30px">
</a>
</div>
<div class="col-sm-2">
<a target="_blank" href="https://www.patreon.com/user?u=84385063">
<img alt="Support me on patreon" src="https://upload.wikimedia.org/wikipedia/commons/thumb/8/82/Patreon_logo_with_wordmark.svg/512px-Patreon_logo_with_wordmark.svg.png" width="117px">
</a>
</div>
</div>
</div>
<div class="content-header">
<h3 class="box-title " id="donationsOthers"></h3>
</div>
<div class="box box-solid">
<div class="box-body">
<div class="col-sm-12">
<ul>
<li>Bitcoin: <code>1N8tupjeCK12qRVU2XrV17WvKK7LCawyZM</code></li>
<li>Ethereum: <code>0x6e2749Cb42F4411bc98501406BdcD82244e3f9C7</code></li>
</ul>
</div>
</div>
</div>
<div>
</section>
</div> <!-- End of class="content-wrapper" -->
<script>
function init()
{
$("#donationsText").html(getString("Donations_Text"))
$("#pageTitle").append(getString("Donations_Title"))
$("#donationsPlatforms").append(getString("Donations_Platforms"))
$("#donationsOthers").append(getString("Donations_Others"))
}
init();
</script>
<?php
require 'php/templates/footer.php';
?>

View File

@@ -1,11 +1,16 @@
<!-- ---------------------------------------------------------------------------
# Pi.Alert
# Open Source Network Guard / WIFI & LAN intrusion detector
#
# events.php - Front module. Events page
#-------------------------------------------------------------------------------
# Puche 2021 / 2022+ jokob jokob@duck.com GNU GPLv3
#--------------------------------------------------------------------------- -->
<!--
#---------------------------------------------------------------------------------#
# Pi.Alert #
# Open Source Network Guard / WIFI & LAN intrusion detector #
# #
# events.php - Front module. Events page #
#---------------------------------------------------------------------------------#
# Puche 2021 pi.alert.application@gmail.com GNU GPLv3 #
# jokob-sk 2022 jokob.sk@gmail.com GNU GPLv3 #
# leiweibau 2022 https://github.com/leiweibau GNU GPLv3 #
# cvc90 2023 https://github.com/cvc90 GNU GPLv3 #
#---------------------------------------------------------------------------------#
-->
<?php
require 'php/templates/header.php';
@@ -17,7 +22,8 @@
<!-- Content header--------------------------------------------------------- -->
<section class="content-header">
<h1 id="pageTitle">
<?= lang('Events_Title');?>
<i class="fa fa-bolt"></i>
<?= lang('Events_Title');?>
</h1>
<!-- period selector -->
@@ -251,7 +257,7 @@ function initializeDatatable () {
// Processing
'processing' : true,
'language' : {
processing: '<table><td width="130px" align="middle">Loading...</td><td><i class="ion ion-ios-loop-strong fa-spin fa-2x fa-fw"></td></table>',
processing: '<table><td width="130px" align="middle"><?= lang("Events_Loading");?></td><td><i class="ion ion-ios-loop-strong fa-spin fa-2x fa-fw"></td></table>',
emptyTable: 'No data',
"lengthMenu": "<?= lang('Events_Tablelenght');?>",
"search": "<?= lang('Events_Searchbox');?>: ",

31
front/flows.php Executable file
View File

@@ -0,0 +1,31 @@
<?php
require 'php/templates/header.php';
require 'php/templates/notification.php';
?>
<script src="js/pialert_common.js"></script>
<!-- Page ------------------------------------------------------------------ -->
<div class="content-wrapper">
<!-- Content header--------------------------------------------------------- -->
<section class="content-header">
<h1 id="pageTitle">
<i class="fa fa-fw fa-plug"></i> <?= lang('Navigation_Flows');?>
<span class="pageHelp"> <a target="_blank" href="https://github.com/jokob-sk/Pi.Alert/tree/main/front/plugins"><i class="fa fa-circle-question"></i></a><span>
</h1>
</section>
<?php
// require 'pluginsCore.php';
?>
</div>
<?php
require 'php/templates/footer.php';
?>

View File

@@ -8,13 +8,17 @@
<section class="content-header">
<?php require 'php/templates/notification.php'; ?>
<h1 id="pageTitle">
<?= lang('HelpFAQ_Title');?>
<i class="fa fa-question"></i>
<?= lang('HelpFAQ_Title');?>
</h1>
</section>
<!-- Main content ---------------------------------------------------------- -->
<section class="content">
<h4><?= lang('HelpFAQ_Cat_General');?></h4>
<h4>
<i class="fa fa-question"></i>
<?= lang('HelpFAQ_Cat_General');?>
</h4>
<div class="panel-group" id="accordion_gen">
<div class="panel panel-default">
@@ -89,10 +93,26 @@
<?= lang('HelpFAQ_Cat_General_103_text');?>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion_net" href="#collapse601">
<?= lang('HelpFAQ_Cat_Network_601_head');?></a>
</h4>
</div>
<div id="collapse601" class="panel-collapse collapse" style="font-size: 16px;">
<div class="panel-body">
<?= lang('HelpFAQ_Cat_Network_601_text');?>
</div>
</div>
</div>
</div>
</div>
<h4><?= lang('Navigation_Devices');?></h4>
<h4>
<i class="fa fa-laptop"></i>
<?= lang('Navigation_Devices');?>
</h4>
<div class="panel-group" id="accordion_dev">
<div class="panel panel-default">
<div class="panel-heading">
@@ -110,7 +130,8 @@
</div>
<h4><?= lang('HelpFAQ_Cat_Detail');?></h4>
<h4>
<i class="fa fa-info-circle"></i><?= lang('HelpFAQ_Cat_Detail');?></h4>
<div class="panel-group" id="accordion_det">
<div class="panel panel-default">
<div class="panel-heading">
@@ -164,10 +185,14 @@
<?= lang('HelpFAQ_Cat_Detail_303_text');?>
</div>
</div>
</div>
</div>
<h4><?= lang('Navigation_Presence');?></h4>
<h4>
<i class="fa fa-calendar"></i>
<?= lang('Navigation_Presence');?>
</h4>
<div class="panel-group" id="accordion_pre">
<div class="panel panel-default">
<div class="panel-heading">
@@ -197,7 +222,8 @@
</div>
</div>
<h4><?= lang('Navigation_Network');?></h4>
<h4>
<i class="fa fa-network-wired"></i><?= lang('Navigation_Network');?></h4>
<div class="panel-group" id="accordion_net">
<div class="panel panel-default">
<div class="panel-heading">
@@ -211,10 +237,11 @@
<?= lang('HelpFAQ_Cat_Network_600_text');?>
</div>
</div>
</div>
</div>
</section>
<br>
<!-- /.content -->
</div>
<!-- /.content-wrapper -->

View File

@@ -1,68 +1,51 @@
function handleVersion(){
//--------------------------------------------------------------
// Handle the UI changes to show or hide notifications about a new version
function versionUpdateUI(){
release_timestamp = getCookie("release_timestamp")
isNewVersion = getCookie("isNewVersion")
if(release_timestamp != "")
{
console.log(isNewVersion)
build_timestamp = parseInt($('#version').attr("data-build-time").match( /\d+/g ).join(''))
// if the release_timestamp is older by 10 min or more as the build timestamp then there is a new release available
if(release_timestamp > build_timestamp + 600 )
{
console.log("New release!")
// handling the navigation menu icon
$('#version').attr("class", $('#version').attr("class").replace("myhidden", ""))
maintenanceDiv = $('#new-version-text')
}
else{
console.log("All up-to-date!")
maintenanceDiv = $('#current-version-text')
}
// handling the maintenance section message
if(emptyArr.includes(maintenanceDiv) == false && $(maintenanceDiv).length != 0)
{
$(maintenanceDiv).attr("class", $(maintenanceDiv).attr("class").replace("myhidden", ""))
}
}
}
//--------------------------------------------------------------
function getVersion()
// if the release_timestamp is older by 10 min or more as the build timestamp then there is a new release available
if(isNewVersion != "false")
{
release_timestamp = getCookie("release_timestamp")
console.log("New release!")
// handling the navigation menu icon
$('#version').attr("class", $('#version').attr("class").replace("myhidden", ""))
// no cached value available
if(release_timestamp == "")
{
// get parameter value
$.get('https://api.github.com/repos/jokob-sk/Pi.Alert/releases', function(data) {
maintenanceDiv = $('#new-version-text')
}
else{
console.log("All up-to-date!")
var releases = data;
if(releases.length > 0)
{
release_datetime = releases[0].published_at;
release_timestamp = new Date(release_datetime).getTime() / 1000;
// cache value
setCookie("release_timestamp", release_timestamp, 30);
handleVersion();
}
});
} else
{
// cache is available, just call the handler
handleVersion()
}
maintenanceDiv = $('#current-version-text')
}
// handling the maintenance section message
if(emptyArr.includes(maintenanceDiv) == false && $(maintenanceDiv).length != 0)
{
$(maintenanceDiv).attr("class", $(maintenanceDiv).attr("class").replace("myhidden", ""))
}
}
//--------------------------------------------------------------
// Checks if a new version is available via the global app_state.json
function checkIfNewVersionAvailable()
{
$.get('api/app_state.json?nocache=' + Date.now(), function(appState) {
console.log(appState["isNewVersionChecked"])
console.log(appState["isNewVersion"])
// cache value
setCookie("isNewVersion", appState["isNewVersion"], 30);
setCookie("isNewVersionChecked", appState["isNewVersionChecked"], 30);
versionUpdateUI();
})
}
// handle the dispaly of the NEW icon
getVersion()
checkIfNewVersionAvailable()

View File

@@ -11,6 +11,9 @@
var timerRefreshData = ''
var modalCallbackFunction = '';
var emptyArr = ['undefined', "", undefined, null, 'null'];
var UI_LANG = "English";
var settingsJSON = {}
// urlParams = new Proxy(new URLSearchParams(window.location.search), {
// get: (searchParams, prop) => searchParams.get(prop.toString()),
@@ -20,13 +23,13 @@ var emptyArr = ['undefined', "", undefined, null, 'null'];
// -----------------------------------------------------------------------------
// Simple session cache withe expiration managed via cookies
// -----------------------------------------------------------------------------
function getCache(key)
function getCache(key, noCookie = false)
{
// check cache
if(sessionStorage.getItem(key))
{
// check if not expired
if(getCookie(key + '_session_expiry') != "")
if(noCookie || getCookie(key + '_session_expiry') != "")
{
return sessionStorage.getItem(key);
}
@@ -39,7 +42,12 @@ function getCache(key)
function setCache(key, data, expirationMinutes='')
{
sessionStorage.setItem(key, data);
setCookie (key + '_session_expiry', 'OK', expirationMinutes='')
// create cookie if expiration set to handle refresh of data
if (expirationMinutes != '')
{
setCookie (key + '_session_expiry', 'OK', expirationMinutes='')
}
}
@@ -96,6 +104,105 @@ function deleteAllCookies() {
}
// -----------------------------------------------------------------------------
// Get settings from the .json file generated by the python backend
// -----------------------------------------------------------------------------
function cacheSettings()
{
$.get('api/table_settings.json', function(res) {
settingsJSON = res;
data = settingsJSON["data"];
data.forEach((set) => {
setCache(`pia_set_${set.Code_Name}`, set.Value)
});
})
}
function getSetting (key) {
result = getCache(`pia_set_${key}`, true);
if (result == "")
{
console.log(`Setting with key "${key}" not found`)
}
return result;
}
// -----------------------------------------------------------------------------
// Get language string
// -----------------------------------------------------------------------------
function cacheStrings()
{
// handle core strings and translations
var allLanguages = ["en_us","es_es","de_de"]; // needs to be same as in lang.php
allLanguages.forEach(function (language_code) {
$.get(`php/templates/language/${language_code}.json`, function(res) {
Object.entries(res).forEach(([language, translations]) => {
Object.entries(translations).forEach(([key, value]) => {
// store as key - value pairs in session
setCache(`pia_lang_${key}_${language}`, value)
});
});
})
});
// handle strings and translations from plugins
$.get('api/table_plugins_language_strings.json', function(res) {
data = res["data"];
data.forEach((langString) => {
setCache(`pia_lang_${langString.String_Key}_${langString.Language_Code}`, langString.String_Value)
});
})
}
// Get translated language string
function getString (key) {
UI_LANG = getSetting("UI_LANG");
lang_code = 'en_us';
switch(UI_LANG)
{
case 'English':
lang_code = 'en_us';
break;
case 'Spanish':
lang_code = 'es_es';
break;
case 'German':
lang_code = 'de_de';
break;
}
result = getCache(`pia_lang_${key}_${lang_code}`, true);
if(isEmpty(result))
{
result = getCache(`pia_lang_${key}_en_us`, true);
}
return result;
}
// -----------------------------------------------------------------------------
// Modal dialog handling
// -----------------------------------------------------------------------------
@@ -200,6 +307,13 @@ function showMessage (textMessage="") {
// -----------------------------------------------------------------------------
// General utilities
// -----------------------------------------------------------------------------
// check if JSON object
function isJsonObject(value) {
return typeof value === 'object' && value !== null && !Array.isArray(value);
}
// remove unnecessary lines from the result
function sanitize(data)
{
@@ -364,11 +478,103 @@ function navigateToDeviceWithIp (ip) {
}
});
});
}
// -----------------------------------------------------------------------------
function getNameByMacAddress(macAddress) {
return getDeviceDataByMacAddress(macAddress, "dev_Name")
}
// -----------------------------------------------------------------------------
//
function getDeviceDataByMacAddress(macAddress, dbColumn) {
const sessionDataKey = 'devicesListAll_JSON';
const sessionData = sessionStorage.getItem(sessionDataKey);
if (!sessionData) {
console.log(`Session variable "${sessionDataKey}" not found.`);
return "Unknown";
}
const devices = JSON.parse(sessionData);
for (const device of devices) {
if (device["dev_MAC"].toLowerCase() === macAddress.toLowerCase()) {
return device[dbColumn];
}
}
return "Unknown"; // Return a default value if MAC address is not found
}
// -----------------------------------------------------------------------------
function initDeviceListAll_JSON()
{
$.get('api/table_devices.json', function(data) {
console.log(data)
devicesListAll_JSON = data["data"]
setCache('devicesListAll_JSON', JSON.stringify(devicesListAll_JSON))
});
}
var devicesListAll_JSON = []; // this will contain a list off all devices
// -----------------------------------------------------------------------------
function isEmpty(value)
{
return emptyArr.includes(value)
}
// -----------------------------------------------------------------------------
// Loading Spinner overlay
// -----------------------------------------------------------------------------
function showSpinner(stringKey='Loading')
{
if($("#loadingSpinner").length)
{
$("#loadingSpinner").show();
}
else{
html = `
<!-- spinner -->
<div id="loadingSpinner" style="display: block">
<div class="pa_semitransparent-panel"></div>
<div class="panel panel-default pa_spinner">
<table>
<td width="130px" align="middle">${getString(stringKey)}</td>
<td><i class="ion ion-ios-loop-strong fa-spin fa-2x fa-fw"></td>
</table>
</div>
</div>
`
$(".wrapper").append(html)
}
}
// -----------------------------------------------------------------------------
function hideSpinner()
{
$("#loadingSpinner").hide()
}
// -----------------------------------------------------------------------------
// initialize
// -----------------------------------------------------------------------------
cacheSettings()
cacheStrings()
initDeviceListAll_JSON()
console.log("init pialert_common.js")

View File

@@ -1,15 +1,15 @@
<?php
//------------------------------------------------------------------------------
// Pi.Alert
// Open Source Network Guard / WIFI & LAN intrusion detector
//
// devices.php - Front module. Server side. Manage Devices
//------------------------------------------------------------------------------
// Puche 2021 pi.alert.application@gmail.com GNU GPLv3
// jokob-sk 2022 jokob.sk@gmail.com GNU GPLv3
// leiweibau 2022 https://github.com/leiweibau GNU GPLv3
//------------------------------------------------------------------------------
#---------------------------------------------------------------------------------#
# Pi.Alert #
# Open Source Network Guard / WIFI & LAN intrusion detector #
# #
# maintenance.php - Front module. Server side. Maintenance #
#---------------------------------------------------------------------------------#
# Puche 2021 pi.alert.application@gmail.com GNU GPLv3 #
# jokob-sk 2022 jokob.sk@gmail.com GNU GPLv3 #
# leiweibau 2022 https://github.com/leiweibau GNU GPLv3 #
# cvc90 2023 https://github.com/cvc90 GNU GPLv3 #
#---------------------------------------------------------------------------------#
// Skin selector config ----------------------------------------------------
//
@@ -44,7 +44,8 @@ $pia_installed_skins = array('skin-black-light',
<section class="content-header">
<?php require 'php/templates/notification.php'; ?>
<h1 id="pageTitle">
<?= lang('Maintenance_Title');?>
<i class="fa fa-wrench"></i>
<?= lang('Maintenance_Title');?>
</h1>
</section>
@@ -118,6 +119,30 @@ if (isset($_POST['submit']) && submit && isset($_POST['skinselector_set'])) {
}
}
}
// Table sizes -----------------------------------------------------------------
$tableSizesHTML = "";
// Open a connection to the SQLite database
$db = new SQLite3($pia_db);
// Retrieve the table names from sqlite_master
$query = "SELECT name FROM sqlite_master WHERE type='table'";
$result = $db->query($query);
// Iterate over the tables and get the row counts
while ($row = $result->fetchArray(SQLITE3_ASSOC)) {
$tableName = $row['name'];
$query = "SELECT COUNT(*) FROM $tableName";
$countResult = $db->querySingle($query);
$tableSizesHTML = $tableSizesHTML . "$tableName (<b>$countResult</b>), ";
}
// Close the database connection
$db->close();
// Language selector -----------------------------------------------------------------
@@ -127,16 +152,34 @@ if (isset($_POST['submit']) && submit && isset($_POST['skinselector_set'])) {
<div class="col-md-12">
<div class="box" id="Maintain-Status">
<div class="box-header with-border">
<h3 class="box-title">Status</h3>
<h3 class="box-title">
<i class="fa fa-display"></i></i>
<?= lang('Maintenance_Status');?>
</h3>
</div>
<div class="box-body" style="padding-bottom: 5px;">
<div class="db_info_table">
<div class="db_info_table_row">
<div class="db_info_table_cell" style="min-width: 140px"><?= lang('Maintenance_version');?></div>
<div class="db_info_table_cell" style="min-width: 140px"><?= lang('Maintenance_version');?>
<a href="https://github.com/jokob-sk/Pi.Alert/blob/main/docs/VERSIONS.md" target="_blank"> <span><i class="fa fa-circle-question"></i></a><span>
</div>
<div class="db_info_table_cell">
<div class="version" id="version" data-build-time="<?php echo file_get_contents( "buildtimestamp.txt");?>"><?php echo '<span id="new-version-text" class="myhidden">' .lang('Maintenance_new_version').'</span>'.'<span id="current-version-text" class="myhidden">' .lang('Maintenance_current_version').'</span>';?></div>
</div>
</div>
<div class="db_info_table_row">
<div class="db_info_table_cell" style="min-width: 140px"><?= lang('Maintenance_built_on');?></div>
<div class="db_info_table_cell">
<?php echo date("Y-m-d", ((int)file_get_contents( "buildtimestamp.txt")));?>
</div>
</div>
<div class="db_info_table_row">
<div class="db_info_table_cell" style="min-width: 140px"><?= lang('Maintenance_Running_Version');?></div>
<div class="db_info_table_cell">
<?php include 'php/templates/version.php'; ?>
</div>
</div>
<div class="db_info_table_row">
<div class="db_info_table_cell" style="min-width: 140px"><?= lang('Maintenance_database_path');?></div>
<div class="db_info_table_cell">
@@ -149,6 +192,12 @@ if (isset($_POST['submit']) && submit && isset($_POST['skinselector_set'])) {
<?php echo $pia_db_size;?>
</div>
</div>
<div class="db_info_table_row">
<div class="db_info_table_cell"><?= lang('Maintenance_database_rows');?></div>
<div class="db_info_table_cell">
<?php echo $tableSizesHTML;?>
</div>
</div>
<div class="db_info_table_row">
<div class="db_info_table_cell"><?= lang('Maintenance_database_lastmod');?></div>
<div class="db_info_table_cell">
@@ -171,16 +220,28 @@ if (isset($_POST['submit']) && submit && isset($_POST['skinselector_set'])) {
<div class="nav-tabs-custom">
<ul class="nav nav-tabs">
<li class="active">
<a id="tab_Settings_id" href="#tab_Settings" data-toggle="tab"><?= lang('Maintenance_Tools_Tab_UISettings');?></a>
<a id="tab_Settings_id" href="#tab_Settings" data-toggle="tab">
<i class="fa fa-cogs"></i>
<?= lang('Maintenance_Tools_Tab_UISettings');?>
</a>
</li>
<li>
<a id="tab_DBTools_id" href="#tab_DBTools" data-toggle="tab"><?= lang('Maintenance_Tools_Tab_Tools');?></a>
<a id="tab_DBTools_id" href="#tab_DBTools" data-toggle="tab">
<i class="fa fa-toolbox"></i>
<?= lang('Maintenance_Tools_Tab_Tools');?>
</a>
</li>
<li>
<a id="tab_BackupRestore_id" href="#tab_BackupRestore" data-toggle="tab"><?= lang('Maintenance_Tools_Tab_BackupRestore');?></a>
<a id="tab_BackupRestore_id" href="#tab_BackupRestore" data-toggle="tab">
<i class="fa fa-file-shield"></i>
<?= lang('Maintenance_Tools_Tab_BackupRestore');?>
</a>
</li>
<li>
<a id="tab_Logging_id" href="#tab_Logging" data-toggle="tab"><?= lang('Maintenance_Tools_Tab_Logging');?></a>
<a id="tab_Logging_id" href="#tab_Logging" data-toggle="tab">
<i class="fa fa-triangle-exclamation"></i>
<?= lang('Maintenance_Tools_Tab_Logging');?>
</a>
</li>
</ul>
<div class="tab-content">
@@ -243,6 +304,7 @@ if (isset($_POST['submit']) && submit && isset($_POST['skinselector_set'])) {
<option value="15"><?= lang('Device_TableHead_Connected_Devices');?></option>
<option value="16"><?= lang('Device_TableHead_Location');?></option>
<option value="17"><?= lang('Device_TableHead_Vendor');?></option>
<option value="18"><?= lang('Device_TableHead_Port');?></option>
</select>
<span class="input-group-addon"><i title="<?= lang('Gen_Save');?>" class="fa fa-save pointer" onclick="saveSelectedColumns();"></i></span>
</div>
@@ -335,7 +397,17 @@ if (isset($_POST['submit']) && submit && isset($_POST['skinselector_set'])) {
<div class="db_info_table">
<div class="log-area">
<div class="row logs-row">
<textarea id="pialert_log" class="logs" cols="70" rows="10" wrap='off' readonly ><?php echo file_get_contents( "./log/pialert.log" ); ?>
<textarea id="pialert_log" class="logs" cols="70" rows="10" wrap='off' readonly >
<?php
if(filesize("./log/pialert.log") > 2000000)
{
echo file_get_contents( "./log/pialert.log", false, null, -2000000);
}
else{
echo file_get_contents( "./log/pialert.log" );
}
?>
</textarea>
</div>
<div class="row logs-row" >
@@ -365,6 +437,23 @@ if (isset($_POST['submit']) && submit && isset($_POST['skinselector_set'])) {
</div>
</div>
</div>
<div class="log-area">
<div class="row logs-row">
<textarea id="pialert_php_log" class="logs" cols="70" rows="10" wrap='off' readonly><?php echo file_get_contents( "./log/pialert.php_errors.log" ); ?>
</textarea>
</div>
<div class="row logs-row" >
<div>
<div class="log-file">pialert.php_errors.log<div class="logs-size"><?php echo number_format((filesize("./log/pialert.php_errors.log") / 1000000),2,",",".") . ' MB';?>
<span class="span-padding"><a href="./log/pialert.php_errors.log"><i class="fa fa-download"></i> </a></span>
</div></div>
<div class="log-purge">
<button class="btn btn-primary" onclick="logManage('pialert.php_errors.log','cleanLog')"><?= lang('Gen_Purge');?></button>
</div>
</div>
</div>
</div>
<div class="log-area">
<div class="row logs-row">
@@ -612,7 +701,7 @@ function askExportCSV() {
function ExportCSV()
{
// Execute
openInNewTab(window.location.origin + "/php/server/devices.php?action=ExportCSV")
openInNewTab("php/server/devices.php?action=ExportCSV")
}
// Import CSV
@@ -624,7 +713,7 @@ function askImportCSV() {
function ImportCSV()
{
// Execute
$.get('/php/server/devices.php?action=ImportCSV', function(msg) {
$.get('php/server/devices.php?action=ImportCSV', function(msg) {
showMessage (msg);
});
}
@@ -702,12 +791,16 @@ function performLogManage() {
// --------------------------------------------------------
function scrollDown()
{
var areaIDs = ['pialert_log', 'pialert_front_log', 'IP_changes_log', 'stdout_log', 'stderr_log', 'pialert_pholus_log', 'pialert_pholus_lastrun_log'];
var areaIDs = ['pialert_log', 'pialert_front_log', 'IP_changes_log', 'stdout_log', 'stderr_log', 'pialert_pholus_log', 'pialert_pholus_lastrun_log', 'pialert_php_log'];
for (let i = 0; i < areaIDs.length; i++) {
var tempArea = $('#' + areaIDs[i]);
$(tempArea[0]).scrollTop(tempArea[0].scrollHeight);
if (tempArea.length > 0)
{
$(tempArea[0]).scrollTop(tempArea[0].scrollHeight);
}
}
}
@@ -715,8 +808,8 @@ function scrollDown()
// --------------------------------------------------------
// Manage displayed columns
// --------------------------------------------------------
colDefaultOrder = ['0','1','2','3','4','5','6','7','8','9','10','12','13','14','15','16','17'];
colDefaultOrderTxt = '[0,1,2,3,4,5,6,7,8,9,10,12,13,14,15,16,17]';
colDefaultOrder = ['0','1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17'];
colDefaultOrderTxt = '[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]';
function saveSelectedColumns () {
@@ -725,8 +818,6 @@ function saveSelectedColumns () {
colDisplayed = $('#columnsSelect').val();
colNewOrder = colDisplayed;
// append the remaining columns in the previous order

View File

@@ -8,7 +8,6 @@
define('circle_online', '<div class="badge bg-green text-white" style="width: 10px; height: 10px; padding:2px; margin-top: -25px;">&nbsp;</div>');
define('circle_offline', '<div class="badge bg-red text-white" style="width: 10px; height: 10px; padding:2px; margin-top: -25px;">&nbsp;</div>');
$NETWORKTYPES = getNetworkTypes();
?>
<!-- Page ------------------------------------------------------------------ -->
@@ -24,8 +23,7 @@
</section>
<div id="networkTree" ></div>
<div id="networkTree" class="drag"></div>
<!-- Main content ---------------------------------------------------------- -->
<section class="content">
@@ -267,7 +265,9 @@
// / \
// Smart TV (leaf) Switch 2 (node (for the PC) and leaf (for Switch 1))
// \
// PC (leaf)
// PC (leaf) <------- leafs are not included in this SQL query
$networkDeviceTypes = str_replace("]", "",(str_replace("[", "", getSettingValue("NETWORK_DEVICE_TYPES"))));
$sql = "SELECT node_name, node_mac, online, node_type, node_ports_count, parent_mac, node_icon
FROM
@@ -279,7 +279,7 @@
a.dev_Network_Node_MAC_ADDR as parent_mac,
a.dev_Icon as node_icon
FROM Devices a
WHERE a.dev_DeviceType in ('AP', 'Gateway', 'Firewall', 'Powerline', 'Switch', 'WLAN', 'PLC', 'Router','USB LAN Adapter', 'USB WIFI Adapter', 'Internet')
WHERE a.dev_DeviceType in (".$networkDeviceTypes.")
) t1
LEFT JOIN
(
@@ -448,6 +448,7 @@
require 'php/templates/footer.php';
?>
<script src="lib/treeviz/index.js"></script>
<script src="lib/treeviz/require.js"></script>
<script src="js/pialert_common.js"></script>
@@ -465,11 +466,16 @@
"parentMac":item[14],
"rowid":item[13],
"status":item[10],
"childrenQty":item[15]
"childrenQty":item[15],
"port":item[18]
}})
setCache('devicesListNew', JSON.stringify(devicesListnew))
// init global variable
deviceListGlobal = devicesListnew;
// create tree
initTree(getHierarchy());
@@ -483,20 +489,6 @@
// ---------------------------------------------------------------------------
// Tree functionality
// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
function getDevicesList()
{
// Read cache
devicesList = getCache('devicesListNew');
if (devicesList != '') {
devicesList = JSON.parse (devicesList);
} else {
devicesList = [];
}
return devicesList;
}
// ---------------------------------------------------------------------------
var leafNodesCount = 0;
@@ -504,6 +496,7 @@
var parentNodesCount = 0;
var hiddenMacs = []; // hidden children
var hiddenChildren = [];
var deviceListGlobal = null;
@@ -541,6 +534,7 @@
name: node.name,
path: path,
mac: node.mac,
port: node.port,
id: node.mac,
parentMac: node.parentMac,
icon: node.icon,
@@ -558,13 +552,11 @@
function getHierarchy()
{
list = getDevicesList();
for(i in list)
for(i in deviceListGlobal)
{
if(list[i].mac == 'Internet')
if(deviceListGlobal[i].mac == 'Internet')
{
return (getChildren(list[i], list, ''))
return (getChildren(deviceListGlobal[i], deviceListGlobal, ''))
break;
}
}
@@ -585,8 +577,6 @@
removeItemFromArray(hiddenMacs, parentMac)
}
list = getDevicesList();
// updatedTree = myHierarchy;
updatedTree = getHierarchy()
@@ -605,9 +595,22 @@
});
}
// ---------------------------------------------------------------------------
function handleNodeClick(event)
{
console.log(event.target.offsetParent)
const targetTabMAC = $(event.target.offsetParent).attr("data-mytreemacmain");
var targetTab = $(`a[data-mytabmac="${targetTabMAC}"]`);
// Simulate a click event on the target tab
targetTab.click();
}
// ---------------------------------------------------------------------------
var myTree;
var treeAreaHeight = 600;
var treeAreaHeight = 800;
var emSize;
var nodeHeight;
@@ -615,20 +618,29 @@
{
// calculate the font size of the leaf nodes to fit everything into the tree area
leafNodesCount == 0 ? 1 : leafNodesCount;
emSize = ((600/(20*leafNodesCount)).toFixed(2));
emSize = ((treeAreaHeight/(25*leafNodesCount)).toFixed(2));
emSize = emSize > 1 ? 1 : emSize;
// nodeHeight = ((emSize*100*0.30).toFixed(0))
nodeHeight = ((emSize*100*0.30).toFixed(0))
$("#networkTree").attr('style', `height:${treeAreaHeight}px; width:${$('.content-header').width()}px`)
console.log('here')
myTree = Treeviz.create({
htmlId: "networkTree",
renderNode: nodeData => {
var fontSize = "font-size:"+emSize+"em;";
(!emptyArr.includes(nodeData.data.port )) ? port = nodeData.data.port : port = "";
(port == "" || port == 0 ) ? portBckgIcon = `<i class="fa fa-wifi"></i>` : portBckgIcon = `<i class="fa fa-ethernet"></i>`;
// Build HTML for individual nodes in the network diagram
deviceIcon = (!emptyArr.includes(nodeData.data.icon )) ? "<div class='netIcon ' ><i class='fa fa-"+nodeData.data.icon +"'></i></div>" : "";
devicePort = `<div class='netPort ' style="width:${emSize*2.7}em;height:${emSize*2.7}em" >${port}</div> <div class="portBckgIcon" style="margin-left:-${emSize*2.5}em;">${portBckgIcon}</div>`;
collapseExpandIcon = nodeData.data.hiddenChildren ? "square-plus" :"square-minus";
collapseExpandHtml = (nodeData.data.hasChildren) ? "<div class='netCollapse' style='font-size:"+emSize*2.5+"em;' data-mytreepath='"+nodeData.data.path+"' data-mytreemac='"+nodeData.data.mac+"'><i class='fa fa-"+ collapseExpandIcon +" pointer'></i></div>" : "";
statusCss = " netStatus-" + nodeData.data.status;
@@ -637,26 +649,20 @@
highlightedCss = nodeData.data.mac == selectedNodeMac ? " highlightedNode" : "";
return result = "<div class='box "+statusCss+" "+highlightedCss+"' data-mytreemacmain='"+nodeData.data.mac+"' \
style='height:"+nodeData.settings.nodeHeight+"px;\
width:180px;\
display:flex;\
flex-direction:column;\
justify-content:center;\
" + fontSize + "\
align-items:center;\
border-radius:5px;'\
>\
return result = `<div class='box ${(nodeData.data.hasChildren)? "pointer":""} ${statusCss} ${highlightedCss}'
data-mytreemacmain='${nodeData.data.mac}'
style='height:${nodeData.settings.nodeHeight}px;${fontSize}
>
<div class='netNodeText '>\
<strong>" + deviceIcon +
"<span class='spanNetworkTree anonymizeDev'>"+nodeData.data.name+"</span>\
</strong>"
+collapseExpandHtml+
"</div></div>";
<strong>${devicePort} ${deviceIcon}
<span class='spanNetworkTree anonymizeDev'>${nodeData.data.name}</span>\
</strong>
${collapseExpandHtml}
</div></div>`;
},
onNodeClick: nodeData => {
// console.log(this)
console.log(this)
},
mainAxisNodeSpacing: 'auto',
// mainAxisNodeSpacing: 3,
@@ -669,9 +675,15 @@
idKey: "id",
hasFlatData: false,
linkWidth: (nodeData) => 3,
linkColor: (nodeData) => "#ffcc80",
onNodeClick: (nodeData) => handleNodeClick(nodeData),
relationnalField: "children",
});
console.log('vvvv')
console.log(myHierarchy)
console.log('^^^^^^^')
myTree.refresh(myHierarchy);
}
@@ -755,10 +767,18 @@
// ---------------------------------------------------------------------------
function updateLeaf(leafMac,nodeMac)
{
console.log(leafMac)
console.log(nodeMac)
saveData('updateNetworkLeaf', leafMac, nodeMac);
setTimeout("location.reload();", 1000); // refresh page after 1s
console.log(leafMac) // child
console.log(nodeMac) // parent
// prevent the assignment of the Internet root node avoiding recursion when generating the network tree topology
if(leafMac.toLowerCase().includes('internet'))
{
showMessage(getString('Network_Cant_Assign'))
}
else{
saveData('updateNetworkLeaf', leafMac, nodeMac);
setTimeout("location.reload();", 500); // refresh page
}
}

View File

@@ -51,13 +51,12 @@
case 'getDeviceTypes': getDeviceTypes(); break;
case 'getGroups': getGroups(); break;
case 'getLocations': getLocations(); break;
case 'getPholus': getPholus(); break;
case 'getNmap': getNmap(); break;
case 'saveNmapPort': saveNmapPort(); break;
case 'updateNetworkLeaf': updateNetworkLeaf(); break;
case 'overwriteIconType': overwriteIconType(); break;
case 'getIcons': getIcons(); break;
case 'getActions': getActions(); break;
case 'getDevices': getDevices(); break;
case 'copyFromDevice': copyFromDevice(); break;
case 'wakeonlan': wakeonlan(); break;
default: logServerConsole ('Action: '. $action); break;
@@ -469,71 +468,66 @@ function ExportCSV() {
// Import CSV of devices
//------------------------------------------------------------------------------
function ImportCSV() {
$file = '../../../config/devices.csv';
if (file_exists($file)) {
global $db;
$skipped = "";
$error = "";
// sql
$sql = 'DELETE FROM Devices';
// Read the CSV file
$data = file_get_contents($file);
$lines = explode("\n", $data);
// execute sql
// Get the column headers from the first line of the CSV
$header = str_getcsv(array_shift($lines));
$header = array_map('trim', $header);
// Delete everything form the DB table
$sql = 'DELETE FROM Devices';
$result = $db->query($sql);
$data = file_get_contents($file);
$data = explode("\n", $data);
$columns = getDevicesColumns();
// Build the SQL statement
$sql = "INSERT INTO Devices (" . implode(', ', $header) . ") VALUES ";
// Parse data from CSV file line by line (max 10000 lines)
foreach($data as $row)
{
// Check if not empty and skipping first line
$rowArray = explode(',',$row);
$index = 0;
foreach($lines as $row) {
$rowArray = str_getcsv($row);
if(count($rowArray) > 20)
{
$cleanMac = str_replace("\"","",$rowArray[0]);
if (count($rowArray) === count($header)) {
// Make sure the number of columns matches the header
$rowArray = array_map(function ($value) {
return "'" . SQLite3::escapeString(trim($value)) . "'";
}, $rowArray);
if(filter_var($cleanMac , FILTER_VALIDATE_MAC) == True || $cleanMac == "Internet")
{
$sql = "INSERT INTO Devices (".implode(',', $columns).") VALUES (" . $row.")";
$result = $db->query($sql);
// check result
if ($result != TRUE) {
$error = $db->lastErrorMsg();
// break the while loop on error
break;
}
}
$sql .= "(" . implode(', ', $rowArray) . "), ";
} else {
$skipped .= ($index + 1) . ",";
}
$index++;
}
if($error == "")
{
// import succesful
echo lang('BackDevices_DBTools_ImportCSV');
// Remove the trailing comma and space from SQL
$sql = rtrim($sql, ', ');
}
else{
// an error occurred while writing to the DB, display the last error message
echo lang('BackDevices_DBTools_ImportCSVError')."\n\n$sql \n\n".$result;
}
// Execute the SQL query
$result = $db->query($sql);
} else {
if($error === "") {
// Import successful
echo lang('BackDevices_DBTools_ImportCSV') . " (Skipped lines: " . $skipped . ") ";
} else {
// An error occurred while writing to the DB, display the last error message
echo lang('BackDevices_DBTools_ImportCSVError') . "\n" . $error . "\n" . $sql . "\n\n" . $result;
}
} else {
echo lang('BackDevices_DBTools_ImportCSVMissing');
}
}
}
//------------------------------------------------------------------------------
// Query total numbers of Devices by status
//------------------------------------------------------------------------------
@@ -570,72 +564,6 @@ function getDevicesTotals() {
}
//------------------------------------------------------------------------------
// Query the List of devices in a determined Status
//------------------------------------------------------------------------------
// function getDevicesListForNetworkTree() {
// global $db;
// $sql = 'SELECT *, CASE
// WHEN t1.dev_AlertDeviceDown=1 AND t1.dev_PresentLastScan=0 THEN "Down"
// WHEN t1.dev_NewDevice=1 THEN "New"
// WHEN t1.dev_PresentLastScan=1 THEN "On-line"
// ELSE "Off-line" END AS dev_Status
// FROM (Devices ) t1
// LEFT JOIN
// (
// SELECT *,
// count() as connected_devices
// FROM Devices b
// WHERE b.dev_Network_Node_MAC_ADDR NOT NULL group by b.dev_Network_Node_MAC_ADDR
// ) t2
// ON (t1.dev_MAC = t2.dev_MAC); ';
// $result = $db->query($sql);
// // arrays of rows
// $tableData = array();
// while ($row = $result -> fetchArray (SQLITE3_ASSOC)) {
// $defaultOrder = array ($row['dev_Name'],
// $row['dev_Owner'],
// handleNull($row['dev_DeviceType']),
// handleNull($row['dev_Icon'], "laptop"),
// $row['dev_Favorite'],
// $row['dev_Group'],
// formatDate ($row['dev_FirstConnection']),
// formatDate ($row['dev_LastConnection']),
// $row['dev_LastIP'],
// ( in_array($row['dev_MAC'][1], array("2","6","A","E","a","e")) ? 1 : 0),
// $row['dev_Status'],
// $row['dev_MAC'], // MAC (hidden)
// formatIPlong ($row['dev_LastIP']), // IP orderable
// $row['rowid'], // Rowid (hidden)
// handleNull($row['dev_Network_Node_MAC_ADDR']), //
// handleNull($row['connected_devices']) //
// );
// $newOrder = array();
// // reorder columns based on user settings
// for($index = 0; $index < count($columnOrderMapping); $index++)
// {
// array_push($newOrder, $defaultOrder[$columnOrderMapping[$index][2]]);
// }
// $tableData['data'][] = $newOrder;
// }
// // Control no rows
// if (empty($tableData['data'])) {
// $tableData['data'] = '';
// }
// // Return json
// echo (json_encode ($tableData));
// }
//------------------------------------------------------------------------------
// Query the List of devices in a determined Status
//------------------------------------------------------------------------------
@@ -649,7 +577,7 @@ function getDevicesList() {
$forceDefaultOrder = TRUE;
}
// This object is used to map from the old order ( second parameter, first number) to the 3rd parameter (Second number (here initialized to -1))
// This object is used to map from the old order ( second parameter, first number) to the new mapping, that is represented by the 3rd parameter (Second number)
$columnOrderMapping = array(
array("dev_Name", 0, 0),
array("dev_Owner", 1, 1),
@@ -668,7 +596,8 @@ function getDevicesList() {
array("dev_Network_Node_MAC_ADDR", 14, 14),
array("connected_devices", 15, 15),
array("dev_Location", 16, 16),
array("dev_Vendor", 17, 17)
array("dev_Vendor", 17, 17),
array("dev_Network_Node_port", 18, 18)
);
if($forceDefaultOrder == FALSE)
@@ -685,8 +614,10 @@ function getDevicesList() {
// init ordered columns
for($i = 0; $i < count($orderedColumns); $i++) {
$columnOrderMapping[$i][2] = $orderedColumns[$i];
}
}
}
@@ -732,7 +663,8 @@ function getDevicesList() {
handleNull($row['dev_Network_Node_MAC_ADDR']),
handleNull($row['connected_devices']),
handleNull($row['dev_Location']),
handleNull($row['dev_Vendor'])
handleNull($row['dev_Vendor']),
handleNull($row['dev_Network_Node_port'])
);
$newOrder = array();
@@ -823,7 +755,12 @@ function getNetworkNodes() {
global $db;
// Device Data
$sql = 'SELECT * FROM Devices WHERE dev_DeviceType in ( "AP", "Gateway", "Firewall", "Powerline", "Switch", "WLAN", "PLC", "Router","USB LAN Adapter", "USB WIFI Adapter")';
$networkDeviceTypes = str_replace("]", "",(str_replace("[", "", getSettingValue("NETWORK_DEVICE_TYPES"))));
$sql = 'SELECT * FROM Devices WHERE dev_DeviceType in ( '. $networkDeviceTypes .' )';
// echo $sql;
$result = $db->query($sql);
@@ -883,6 +820,36 @@ function getActions() {
echo (json_encode ($tableData));
}
//------------------------------------------------------------------------------
function getDevices() {
global $db;
// Device Data
$sql = 'select dev_MAC, dev_Name from Devices';
$result = $db->query($sql);
// arrays of rows
$tableData = array();
while ($row = $result -> fetchArray (SQLITE3_ASSOC)) {
$name = handleNull($row['dev_Name'], "(unknown)");
$mac = handleNull($row['dev_MAC'], "(unknown)");
// Push row data
$tableData[] = array('id' => $mac,
'name' => $name );
}
// Control no rows
if (empty($tableData)) {
$tableData = [];
}
// Return json
echo (json_encode ($tableData));
}
//------------------------------------------------------------------------------
// Query the List of types
@@ -900,7 +867,7 @@ function getDeviceTypes() {
"Laptop", "Mini PC", "PC", "Printer", "Server", "Singleboard Computer (SBC)", "NAS",
"Domotic", "IP Camera", "Game Console", "SmartTV", "TV Decoder", "Virtual Assistance",
"Clock", "House Appliance", "Phone", "Radio",
"AP", "Gateway", "Firewall", "Powerline", "Switch", "WLAN", "PLC", "Router","USB LAN Adapter", "USB WIFI Adapter" )
"AP", "Gateway", "Firewall", "Hypervisor", "Powerline", "Switch", "WLAN", "PLC", "Router","USB LAN Adapter", "USB WIFI Adapter" )
UNION SELECT 1 as dev_Order, "Smartphone"
UNION SELECT 1 as dev_Order, "Tablet"
@@ -929,6 +896,7 @@ function getDeviceTypes() {
UNION SELECT 5 as dev_Order, "AP"
UNION SELECT 5 as dev_Order, "Gateway"
UNION SELECT 5 as dev_Order, "Firewall"
UNION SELECT 5 as dev_Order, "Hypervisor"
UNION SELECT 5 as dev_Order, "Powerline"
UNION SELECT 5 as dev_Order, "Switch"
UNION SELECT 5 as dev_Order, "WLAN"
@@ -1035,134 +1003,11 @@ function getLocations() {
echo (json_encode ($tableData));
}
//------------------------------------------------------------------------------
// Query the List of Pholus entries
//------------------------------------------------------------------------------
function getPholus() {
global $db;
// SQL
$mac = $_REQUEST['mac'];
if ($mac == "Internet") // Not performing data lookup for router (improvement idea for later maybe)
{
echo "false";
return;
}
if (false === filter_var($mac , FILTER_VALIDATE_MAC)) {
throw new Exception('Invalid mac address');
}
else{
$sql = 'SELECT * from Pholus_Scan where MAC ="'.$mac.'" and Record_Type not in ("Question")';
// array
$tableData = array();
// execute query
$result = $db->query($sql);
while ($row = $result -> fetchArray (SQLITE3_ASSOC)){
// Push row data
$tableData[] = array( 'Index' => $row['Index'],
'Info' => $row['Info'],
'Time' => $row['Time'],
'MAC' => $row['MAC'],
'IP_v4_or_v6' => $row['IP_v4_or_v6'],
'Record_Type' => $row['Record_Type'],
'Value' => $row['Value'],
'Extra' => $row['Extra']);
}
if(count($tableData) == 0)
{
echo "false";
} else{
// Return json
echo (json_encode ($tableData));
}
}
}
//------------------------------------------------------------------------------
// Query the List of Nmap entries
//------------------------------------------------------------------------------
function getNmap() {
global $db;
// SQL
$mac = $_REQUEST['mac'];
if ($mac == "Internet") // Not performing data lookup for router (improvement idea for later maybe)
{
echo "false";
return;
}
if (false === filter_var($mac , FILTER_VALIDATE_MAC)) {
throw new Exception('Invalid mac address');
}
else{
// $sql = 'SELECT * from Nmap_Scan where MAC ="'.$mac.'" ';
$sql = 'select * from (select * from Nmap_Scan INNER JOIN Devices on Nmap_Scan.MAC = Devices.dev_MAC) where MAC = "'.$mac.'" ';
// array
$tableData = array();
// execute query
$result = $db->query($sql);
while ($row = $result -> fetchArray (SQLITE3_ASSOC)){
// Push row data
$tableData[] = array( 'Index' => $row['Index'],
'MAC' => $row['MAC'],
'Port' => $row['Port'],
'Time' => $row['Time'],
'State' => $row['State'],
'Service' => $row['Service'],
'IP' => $row['dev_LastIP'],
'Extra' => $row['Extra']);
}
if(count($tableData) == 0)
{
echo "false";
} else{
// Return json
echo (json_encode ($tableData));
}
}
}
// -------------------------------------------------------------------------------------------
function saveNmapPort()
{
$portIndex = $_REQUEST['id'];
$value = $_REQUEST['value'];
if(is_integer((int)$portIndex))
{
global $db;
// sql
$sql = 'UPDATE Nmap_Scan SET "Extra" = "'. $value .'" WHERE "Index"=' . $portIndex ;
// update Data
$result = $db->query($sql);
// check result
if ($result == TRUE) {
echo 'OK';
} else {
echo 'KO';
}
}
}
// ----------------------------------------------------------------------------------------
function updateNetworkLeaf()
{
$nodeMac = $_REQUEST['value'];
$leafMac = $_REQUEST['id'];
$nodeMac = $_REQUEST['value']; // parent
$leafMac = $_REQUEST['id']; // child
if ((false === filter_var($nodeMac , FILTER_VALIDATE_MAC) && $nodeMac != "Internet" && $nodeMac != "") || false === filter_var($leafMac , FILTER_VALIDATE_MAC) ) {
throw new Exception('Invalid mac address');
@@ -1233,6 +1078,56 @@ function wakeonlan() {
echo lang('BackDevDetail_Tools_WOL_okay');
}
//------------------------------------------------------------------------------
// Copy from device
//------------------------------------------------------------------------------
function copyFromDevice() {
$MAC_FROM = $_REQUEST['macFrom'];
$MAC_TO = $_REQUEST['macTo'];
if ((false === filter_var($MAC_FROM , FILTER_VALIDATE_MAC) && $MAC_FROM != "Internet" && $MAC_FROM != "") ) {
throw new Exception('Invalid mac address');
}
if ((false === filter_var($MAC_TO , FILTER_VALIDATE_MAC) && $MAC_TO != "Internet" && $MAC_TO != "") ) {
throw new Exception('Invalid mac address');
}
global $db;
// clean-up temporary table
$sql = "DROP TABLE temp_devices ";
$result = $db->query($sql);
// create temporary table with the source data
$sql = "CREATE TABLE temp_devices AS SELECT * FROM Devices WHERE dev_MAC = '". $MAC_FROM . "';";
$result = $db->query($sql);
// update temporary table with the correct target MAC
$sql = "UPDATE temp_devices SET dev_MAC = '". $MAC_TO . "';";
$result = $db->query($sql);
// delete previous entry
$sql = "DELETE FROM Devices WHERE dev_MAC = '". $MAC_TO . "';";
$result = $db->query($sql);
// insert new entry with the correct target MAC from the temporary table
$sql = "INSERT INTO Devices SELECT * FROM temp_devices WHERE dev_MAC = '".$MAC_TO."'";
$result = $db->query($sql);
// clean-up temporary table
$sql = "DROP TABLE temp_devices ";
$result = $db->query($sql);
// check result
if ($result == TRUE) {
echo 'OK';
} else {
echo lang('BackDevices_Device_UpdDevError');
}
}
//------------------------------------------------------------------------------
// Status Where conditions
//------------------------------------------------------------------------------

View File

@@ -0,0 +1,49 @@
<?php
###################################################################################
# Pi.Alert #
# Open Source Network Guard / WIFI & LAN intrusion detector #
# #
# internetinfo.php # Front module. Server side. System Information #
###################################################################################
# Puche 2021 pi.alert.application@gmail.com GNU GPLv3 #
# jokob#sk 2022 jokob.sk@gmail.com GNU GPLv3 #
# leiweibau 2022 https://github.com/leiweibau GNU GPLv3 #
# cvc90 2023 https://github.com/cvc90 GNU GPLv3 #
###################################################################################
// Get init.php
require dirname(__FILE__).'/../server/init.php';
// Perform a test with the PING command
$output = shell_exec("curl ipinfo.io");
// Check if there is error
if (!isset($output) || empty($output)) {
// Error message
$output = lang('DevDetail_Tab_Tool_Internet_Info_Error');
// Show the result
echo "<pre>";
echo $output;
echo "</pre>";
exit;
}
// Replace "{" with ""
$output = str_replace("{", "", $output);
// Replace "}" with ""
$output = str_replace("}", "", $output);
// Replace "," with ""
$output = str_replace(",", "", $output);
// Replace '"' with ""
$output = str_replace('"', "", $output);
// Show the result
echo "<pre>";
echo $output;
echo "</pre>";
?>

40
front/php/server/nslookup.php Executable file
View File

@@ -0,0 +1,40 @@
<?php
###################################################################################
# Pi.Alert #
# Open Source Network Guard / WIFI & LAN intrusion detector #
# #
# nslookup.php # Front module. Server side. System Information #
###################################################################################
# Puche 2021 pi.alert.application@gmail.com GNU GPLv3 #
# jokob#sk 2022 jokob.sk@gmail.com GNU GPLv3 #
# leiweibau 2022 https://github.com/leiweibau GNU GPLv3 #
# cvc90 2023 https://github.com/cvc90 GNU GPLv3 #
###################################################################################
// Get init.php
require dirname(__FILE__).'/../server/init.php';
// Get IP
$ip = $_GET['ip'];
// Check if IP is valid
if (!filter_var($ip, FILTER_VALIDATE_IP)) {
// Error message
$output = lang('DevDetail_Tab_Tools_Nslookup_Error');
// Show the result
echo "<pre>";
echo $output;
echo "</pre>";
exit;
}
// Test with the "nslookup" command
$output = shell_exec("nslookup $ip");
// Show the result
echo "<pre>";
echo $output;
echo "</pre>";
?>

View File

@@ -1,7 +1,8 @@
<?php
require dirname(__FILE__).'/../server/init.php';
exec('../../../back/speedtest-cli --secure --simple', $output);
echo '<h4>Speedtest Results</h4>';
echo '<h4>'. lang('Speedtest_Results') .'</h4>';
echo '<pre style="border: none;">';
foreach($output as $line){
echo $line . "\n";

40
front/php/server/traceroute.php Executable file
View File

@@ -0,0 +1,40 @@
<?php
###################################################################################
# Pi.Alert #
# Open Source Network Guard / WIFI & LAN intrusion detector #
# #
# traceroute.php # Front module. Server side. System Information #
###################################################################################
# Puche 2021 pi.alert.application@gmail.com GNU GPLv3 #
# jokob-sk 2022 jokob.sk@gmail.com GNU GPLv3 #
# leiweibau 2022 https://github.com/leiweibau GNU GPLv3 #
# cvc90 2023 https://github.com/cvc90 GNU GPLv3 #
###################################################################################
// Get init.php
require dirname(__FILE__).'/../server/init.php';
// Get IP
$ip = $_GET['ip'];
// Check if IP is valid
if (!filter_var($ip, FILTER_VALIDATE_IP)) {
// Error message
$output = lang('DevDetail_Tab_Tools_Traceroute_Error');
// Show the result
echo "<pre>";
echo $output;
echo "</pre>";
exit;
}
// Test with the "Traceroute" command
$output = shell_exec("traceroute $ip");
// Show the result
echo "<pre>";
echo $output;
echo "</pre>";
?>

View File

@@ -202,7 +202,7 @@ function cleanLog($logFile)
$path = "";
$allowedFiles = ['pialert.log', 'pialert_front.log', 'IP_changes.log', 'stdout.log', 'stderr.log', "pialert_pholus_lastrun.log"];
$allowedFiles = ['pialert.log', 'pialert_front.log', 'IP_changes.log', 'stdout.log', 'stderr.log', "pialert_pholus_lastrun.log", 'pialert.php_errors.log'];
if(in_array($logFile, $allowedFiles))
{
@@ -229,7 +229,7 @@ function saveSettings()
{
global $SETTINGS, $FUNCTION, $config_file, $fullConfPath, $configFolderPath, $timestamp;
// save in the file
// save to the file
$new_name = $config_file.'_'.$timestamp.'.backup';
$new_location = $configFolderPath.$new_name;
@@ -259,56 +259,68 @@ function saveSettings()
$txt = $txt."#-----------------AUTOGENERATED FILE-----------------#\n";
// collect all groups
foreach ($SETTINGS as $setting) {
$decodedSettings = json_decode($SETTINGS, true);
foreach ($decodedSettings as $setting) {
if( in_array($setting[0] , $groups) == false) {
array_push($groups ,$setting[0]);
}
}
// go thru the groups and prepare settings to write to file
foreach($groups as $group)
{
$txt = $txt."\n\n# ".$group;
$txt = $txt."\n#---------------------------\n" ;
foreach($SETTINGS as $setting)
{
if($group == $setting[0])
{
if($setting[2] == 'text' or $setting[2] == 'password' or $setting[2] == 'readonly' or $setting[2] == 'selecttext')
{
$val = encode_single_quotes($setting[3]);
$txt = $txt.$setting[1]."='".$val."'\n" ;
} elseif($setting[2] == 'integer' or $setting[2] == 'selectinteger')
{
$txt = $txt.$setting[1]."=".$setting[3]."\n" ;
} elseif($setting[2] == 'boolean')
{
$val = "False";
if($setting[3] == 'true')
{
$val = "True";
}
$txt = $txt.$setting[1]."=".$val."\n" ;
}elseif($setting[2] == 'multiselect' or $setting[2] == 'subnets' or $setting[2] == 'list')
{
$temp = '[';
foreach ($groups as $group) {
$txt .= "\n\n# " . $group;
$txt .= "\n#---------------------------\n";
if (count($setting) > 3 && is_array( $setting[3]) == True){
foreach($setting[3] as $val)
{
$temp = $temp."'". encode_single_quotes($val)."',";
foreach ($decodedSettings as $setting) {
$settingGroup = $setting[0];
$settingKey = $setting[1];
$settingType = $setting[2];
$settingValue = $setting[3];
if ($group == $settingGroup) {
if ($settingType == 'text' || $settingType == 'password' || $settingType == 'readonly' || $settingType == 'text.select') {
$val = encode_single_quotes($settingValue);
$txt .= $settingKey . "='" . $val . "'\n";
} elseif ($settingType == 'integer' || $settingType == 'integer.select') {
$txt .= $settingKey . "=" . $settingValue . "\n";
} elseif ($settingType == 'boolean' || $settingType == 'integer.checkbox') {
if ($settingValue === true || $settingValue === 1 || strtolower($settingValue) === 'true') {
$val = "True";
} else {
$val = "False";
}
$txt .= $settingKey . "=" . $val . "\n";
} elseif ($settingType == 'text.multiselect' || $settingType == 'subnets' || $settingType == 'list') {
$temp = '';
if(is_array($settingValue) == FALSE)
{
$settingValue = json_decode($settingValue);
}
if (count($setting) > 3 && is_array($settingValue) == true) {
foreach ($settingValue as $val) {
$temp .= "'" . encode_single_quotes($val) . "',";
}
$temp = substr_replace($temp, "", -1); // remove last comma ','
}
$temp = '['.$temp.']'; // wrap brackets
$txt .= $settingKey . "=" . $temp . "\n";
} elseif ($settingType == 'json') {
$txt .= $settingKey . "=" . $settingValue . "\n";
}
$temp = substr_replace($temp, "", -1); // remove last comma ','
}
$temp = $temp.']'; // close brackets
$txt = $txt.$setting[1]."=".$temp."\n" ;
}
}
}
}
$txt = $txt."\n\n";
$txt = $txt."#-------------------IMPORTANT INFO-------------------#\n";
$txt = $txt."# This file is ingested by a python script, so if #\n";
@@ -320,9 +332,7 @@ function saveSettings()
fwrite($newConfig, $txt);
fclose($newConfig);
displayMessage("<br/>Settings saved to the <code>".$config_file."</code> file.
<br/><br/>Backup of the previous ".$config_file." created here: <br/><br/><code>".$new_name."</code><br/><br/>
<b>Note:</b> Wait at least <b>5s</b> for the changes to reflect in the UI. (longer if for example a <a href='#state'>Scan is running</a>)",
displayMessage("<br/>Settings saved to the <code>pialert.conf</code> file.<br/><br/>A time-stamped backup of the previous file created. <br/><br/> Reloading...<br/>",
FALSE, TRUE, TRUE, TRUE);
}
@@ -339,6 +349,38 @@ function getString ($codeName, $default) {
return $default;
}
// -------------------------------------------------------------------------------------------
function getSettingValue($codeName) {
// Define the JSON endpoint URL
$url = dirname(__FILE__).'/../../../front/api/table_settings.json';
// Fetch the JSON data
$json = file_get_contents($url);
// Check if the JSON data was successfully fetched
if ($json === false) {
return 'Could not get json data';
}
// Decode the JSON data
$data = json_decode($json, true);
// Check if the JSON decoding was successful
if (json_last_error() !== JSON_ERROR_NONE) {
return 'Could not decode json data';
}
// Search for the setting by Code_Name
foreach ($data['data'] as $setting) {
if ($setting['Code_Name'] === $codeName) {
return $setting['Value'];
// echo $setting['Value'];
}
}
// Return false if the setting was not found
return 'Could not find setting '.$codeName;
}
// -------------------------------------------------------------------------------------------
@@ -353,10 +395,39 @@ function encode_single_quotes ($val) {
// -------------------------------------------------------------------------------------------
function getDateFromPeriod () {
$period = $_REQUEST['period'];
return '"'. date ('Y-m-d', strtotime ('+1 day -'. $period) ) .'"';
$periodDate = $_REQUEST['period'];
$periodDateSQL = "";
$days = "";
switch ($periodDate) {
case '7 days':
$days = "7";
break;
case '1 month':
$days = "30";
break;
case '1 year':
$days = "365";
break;
case '100 years':
$days = "3650"; //10 years
break;
default:
$days = "1";
}
$periodDateSQL = "-".$days." day";
return " date('now', '".$periodDateSQL."') ";
// $period = $_REQUEST['period'];
// return '"'. date ('Y-m-d', strtotime ('+2 day -'. $period) ) .'"';
}
// -------------------------------------------------------------------------------------------
function quotes ($text) {
return str_replace ('"','""',$text);
@@ -380,16 +451,7 @@ function handleNull ($text, $default = "") {
}
// -------------------------------------------------------------------------------------------
function getNetworkTypes(){
$array = array(
"AP", "Gateway", "Firewall", "Powerline", "Switch", "WLAN", "PLC", "Router","USB LAN Adapter", "USB WIFI Adapter"
);
return $array;
}
// -------------------------------------------------------------------------------------------
function getDevicesColumns(){

13
front/php/server/utilDB.php Executable file
View File

@@ -0,0 +1,13 @@
<!-- utils needing a DB connection -->
<?php
require dirname(__FILE__).'/init.php';
// Action functions
if (isset ($_REQUEST['key']))
{
echo lang($_REQUEST['key']);
}
?>

21
front/php/templates/build.php Executable file
View File

@@ -0,0 +1,21 @@
<?php
#---------------------------------------------------------------------------------#
# Pi.Alert #
# Open Source Network Guard / WIFI & LAN intrusion detector #
# #
# build.php - Templates module Template to display the current build version #
#---------------------------------------------------------------------------------#
# Puche 2021 pi.alert.application@gmail.com GNU GPLv3 #
# jokob-sk 2022 jokob.sk@gmail.com GNU GPLv3 #
# leiweibau 2022 https://github.com/leiweibau GNU GPLv3 #
# cvc90 2023 https://github.com/cvc90 GNU GPLv3 #
#---------------------------------------------------------------------------------#
$file = "/home/pi/pialert/front/buildtimestamp.txt";
if (file_exists($file)) {
echo date("Y-m-d", ((int)file_get_contents($file)));
}
else {
echo "File not found";
}
?>

View File

@@ -1,27 +1,34 @@
<!-- ---------------------------------------------------------------------------
# Pi.Alert
# Open Source Network Guard / WIFI & LAN intrusion detector
#
# footer.php - Front module. Common footer to all the web pages
#-------------------------------------------------------------------------------
# Puche 2021 / 2022+ jokob jokob@duck.com GNU GPLv3
#--------------------------------------------------------------------------- -->
<!--
#---------------------------------------------------------------------------------#
# Pi.Alert #
# Open Source Network Guard / WIFI & LAN intrusion detector #
# #
# footer.php - Front module. Common footer to all the web pages #
#---------------------------------------------------------------------------------#
# Puche 2021 pi.alert.application@gmail.com GNU GPLv3 #
# jokob-sk 2022 jokob.sk@gmail.com GNU GPLv3 #
# leiweibau 2022 https://github.com/leiweibau GNU GPLv3 #
# cvc90 2023 https://github.com/cvc90 GNU GPLv3 #
#---------------------------------------------------------------------------------#
-->
<!-- Main Footer -->
<footer class="main-footer">
<!-- Default to the left -->
<!-- &copy; 2020 Puche -->
<?php
echo '<span style="display:inline-block; transform: rotate(180deg)">&copy;</span> 2020 Puche (2022+ <a href="mailto:jokob@duck.com?subject=PiAlert">jokob-sk</a>)';
?>
<!-- &copy; 2022 jokob-sk -->
<span style="display:inline-block; transform: rotate(180deg)">&copy;</span>
2020 Puche (2022+ <a href="mailto:jokob@duck.com?subject=PiAlert">jokob-sk</a>) | <b><?= lang('Maintenance_built_on');?>: </b>
<?php include 'php/templates/build.php'; ?> | <b> Version: </b> <?php include 'php/templates/version.php'; ?> |
<a href="https://github.com/jokob-sk/Pi.Alert/tree/main/docs" target="_blank"><span>Docs <i class="fa fa-circle-question"></i></a>
<span>
<!-- To the right -->
<div class="pull-right no-hidden-xs">
<!-- Pi.Alert 2.50 <small>(2019-12-30)</small> -->
<?php
echo 'Pi.Alert';
?>
<!-- Pi.Alert footer with url -->
<a href="https://github.com/jokob-sk/Pi.Alert" target="_blank">Pi.Alert</a>
</div>
</footer>
@@ -32,8 +39,6 @@
</div>
<!-- ./wrapper -->
<!-- Bootstrap 3.3.7 -->
<script src="lib/AdminLTE/bower_components/bootstrap/dist/js/bootstrap.min.js"></script>

View File

@@ -8,15 +8,43 @@ $Pia_Graph_Device_Online = array();
$Pia_Graph_Device_Down = array();
$Pia_Graph_Device_Arch = array();
$statusesToShow = "'online', 'offline', 'archived'";
$statQuery = $db->query("SELECT * FROM Settings WHERE Code_Name = 'UI_PRESENCE'");
while($r = $statQuery->fetchArray(SQLITE3_ASSOC))
{
$statusesToShow = $r['Value'];
}
$results = $db->query('SELECT * FROM Online_History ORDER BY Scan_Date DESC LIMIT 144');
while ($row = $results->fetchArray()) {
$time_raw = explode(' ', $row['Scan_Date']);
$time = explode(':', $time_raw[1]);
array_push($Pia_Graph_Device_Time, $time[0].':'.$time[1]);
array_push($Pia_Graph_Device_Down, $row['Down_Devices']);
array_push($Pia_Graph_Device_All, $row['All_Devices']);
array_push($Pia_Graph_Device_Online, $row['Online_Devices']);
array_push($Pia_Graph_Device_Arch, $row['Archived_Devices']);
while ($row = $results->fetchArray())
{
$time_raw = explode(' ', $row['Scan_Date']);
$time = explode(':', $time_raw[1]);
array_push($Pia_Graph_Device_Time, $time[0].':'.$time[1]);
// Offline
if(strpos($statusesToShow, 'offline') !== false)
{
array_push($Pia_Graph_Device_Down, $row['Down_Devices']);
}
// All
array_push($Pia_Graph_Device_All, $row['All_Devices']);
// Online
if(strpos($statusesToShow, 'online') !== false)
{
array_push($Pia_Graph_Device_Online, $row['Online_Devices']);
}
// Archived
if(strpos($statusesToShow, 'archived') !== false)
{
array_push($Pia_Graph_Device_Arch, $row['Archived_Devices']);
}
}
function pia_graph_devices_data($Pia_Graph_Array) {
$Pia_Graph_Array_rev = array_reverse($Pia_Graph_Array);

View File

@@ -83,8 +83,13 @@ if ($ENABLED_DARKMODE === True) {
<script>
function updateState(){
getParam("state","Back_App_State", true)
setTimeout("updateState()", 5000);
$.get('api/app_state.json?nocache=' + Date.now(), function(appState) {
document.getElementById('state').innerHTML = appState["currentState"].replaceAll('"', '');
setTimeout("updateState()", 1000);
})
}
function show_pia_servertime() {
@@ -99,12 +104,6 @@ if ($ENABLED_DARKMODE === True) {
setTimeout("show_pia_servertime()", 1000);
}
// refresh page on focus - adds a lot of SQL queries overhead onto the DB - disabling for now
// document.addEventListener("visibilitychange",()=>{
// if(document.visibilityState==="visible"){
// window.location.href = window.location.href.split('#')[0];
// }
// })
</script>
@@ -138,9 +137,25 @@ if ($ENABLED_DARKMODE === True) {
<!-- Navbar Right Menu -->
<div class="navbar-custom-menu">
<ul class="nav navbar-nav">
<!-- Back Button -->
<li>
<a id="back-button" href="javascript:history.go(-1);" role="button" span class='of-bt-icon'><i class='fa fa-arrow-left'></i></a>
</li>
<!-- Next Button -->
<li>
<a id="next-button" href="javascript:history.go(1);" role="button" span class='of-bt-icon'><i class='fa fa-arrow-right'></i></a>
</li>
<!-- Reload -->
<li>
<a id="reload-button" href='#' role="button" span class='of-bt-icon' onclick='location.reload()'><i class='fa fa-repeat'></i></a>
</li>
<!-- Full Screen -->
<li>
<a id="fullscreen-button" href='#' role="button" span class='of-bt-icon' onclick='toggleFullscreen()'><i class='fa fa-arrows-alt'></i></a>
</li>
<!-- Server Status -->
<li>
<a onclick="setCache('activeMaintenanceTab', 'tab_Logging_id')" href="/maintenance.php#tab_Logging">
<a onclick="setCache('activeMaintenanceTab', 'tab_Logging_id')" href="maintenance.php#tab_Logging">
<div class="header-status">
<code id="state"></code>
</div>
@@ -207,23 +222,27 @@ if ($ENABLED_DARKMODE === True) {
<ul class="sidebar-menu" data-widget="tree">
<li class=" <?php if (in_array (basename($_SERVER['SCRIPT_NAME']), array('devices.php', 'deviceDetails.php') ) ){ echo 'active'; } ?>">
<a href="devices.php"><span><i class="fa fa-laptop"></i> <?= lang('Navigation_Devices');?></span></a>
<a href="devices.php"><i class="fa fa-laptop"></i> <span><?= lang('Navigation_Devices');?></span></a>
</li>
<li class=" <?php if (in_array (basename($_SERVER['SCRIPT_NAME']), array('presence.php') ) ){ echo 'active'; } ?>">
<a href="presence.php"><i class="fa fa-calendar"></i> <?= lang('Navigation_Presence');?></span></a>
<a href="presence.php"><i class="fa fa-calendar"></i> <span><?= lang('Navigation_Presence');?></span></a>
</li>
<li class=" <?php if (in_array (basename($_SERVER['SCRIPT_NAME']), array('events.php') ) ){ echo 'active'; } ?>">
<a href="events.php"><i class="fa fa-bolt"></i> <span><?= lang('Navigation_Events');?></span></a>
</li>
<li class=" <?php if (in_array (basename($_SERVER['SCRIPT_NAME']), array('report.php') ) ){ echo 'active'; } ?>">
<a href="report.php"><i class="fa fa-flag"></i> <span><?= lang('Navigation_Report');?></span></a>
</li>
<li class=" <?php if (in_array (basename($_SERVER['SCRIPT_NAME']), array('network.php') ) ){ echo 'active'; } ?>">
<a href="network.php"><span><i class="fa fa-fw fa-network-wired"></i> <?= lang('Navigation_Network');?></span></a>
<a href="network.php"><i class="fa fa-fw fa-network-wired"></i> <span><?= lang('Navigation_Network');?></span></a>
</li>
<li class=" <?php if (in_array (basename($_SERVER['SCRIPT_NAME']), array('plugins.php') ) ){ echo 'active'; } ?>">
<a href="plugins.php"><span><i class="fa fa-fw fa-plug"></i> <?= lang('Navigation_Plugins');?></span></a>
<a href="plugins.php"><i class="fa fa-fw fa-plug"></i> <span><?= lang('Navigation_Plugins');?></span></a>
</li>
<li class=" <?php if (in_array (basename($_SERVER['SCRIPT_NAME']), array('maintenance.php') ) ){ echo 'active'; } ?>">
@@ -233,10 +252,18 @@ if ($ENABLED_DARKMODE === True) {
<li class=" <?php if (in_array (basename($_SERVER['SCRIPT_NAME']), array('settings.php') ) ){ echo 'active'; } ?>">
<a href="settings.php"><i class="fa fa-cog"></i> <span><?= lang('Navigation_Settings');?></span></a>
</li>
<li class=" <?php if (in_array (basename($_SERVER['SCRIPT_NAME']), array('help_faq.php') ) ){ echo 'active'; } ?>">
<!-- <li class=" <?php if (in_array (basename($_SERVER['SCRIPT_NAME']), array('flows.php') ) ){ echo 'active'; } ?>">
<a href="flows.php"><i class="fa fa-shuffle"></i> <span><?= lang('Navigation_Flows');?></span></a>
</li> -->
<li class=" <?php if (in_array (basename($_SERVER['SCRIPT_NAME']), array('systeminfo.php') ) ){ echo 'active'; } ?>">
<a href="systeminfo.php"><i class="fa fa-microchip"></i> <span><?= lang('Navigation_SystemInfo');?></span></a>
</li>
<li class=" <?php if (in_array (basename($_SERVER['SCRIPT_NAME']), array('help_faq.php') ) ){ echo 'active'; } ?>">
<a href="help_faq.php"><i class="fa fa-question"></i> <span><?= lang('Navigation_HelpFAQ');?></span></a>
</li>
<li class=" <?php if (in_array (basename($_SERVER['SCRIPT_NAME']), array('donations.php') ) ){ echo 'active'; } ?>">
<a href="donations.php"><i class="fa fa-heart"></i> <span><?= lang('Navigation_Donations');?></span></a>
</li>
</ul>
<!-- /.sidebar-menu -->
@@ -249,25 +276,17 @@ if ($ENABLED_DARKMODE === True) {
//--------------------------------------------------------------
//--------------------------------------------------------------
function getParam(targetId, key, skipCache = false) {
skipCacheQuery = "";
function toggleFullscreen() {
if(skipCache)
{
skipCacheQuery = "&skipcache";
if (document.fullscreenElement) {
document.exitFullscreen();
}
// get parameter value
$.get('php/server/parameters.php?action=get&defaultValue=NULL&parameter='+ key + skipCacheQuery, function(data) {
var result = data;
document.getElementById(targetId).innerHTML = result.replaceAll('"', '');
});
}
else {
document.documentElement.requestFullscreen();
}
}
//--------------------------------------------------------------
@@ -277,6 +296,4 @@ if ($ENABLED_DARKMODE === True) {
// Update server state in the header
updateState()
</script>

View File

@@ -0,0 +1,428 @@
{
"de_de":{
"About_Title":"Open Source Network Guard",
"About_Design":"Designed for:",
"About_Exit":"Sign out",
"Gen_Delete":"Löschen",
"Gen_Cancel":"Abbrechen",
"Gen_Okay":"Ok",
"Gen_Purge":"Aufräumen",
"Gen_Backup":"Sichern",
"Gen_Restore":"Wiederherstellen",
"Gen_Switch":"Umschalten",
"Gen_AreYouSure":"Sind Sie sich sicher?",
"Login_Box":"Passwort eingeben",
"Login_Remember":"Passwort speichern",
"Login_Remember_small":"(für 7 Tage gültig)",
"Login_Submit":"Anmelden",
"Login_Psw_run":"Um das Passwort zu ändern nutze:",
"Login_Psw_new":"neues_passwort",
"Login_Psw_folder":"im Ordner ~/pialert/config",
"Login_Psw_alert":"Sicherheitshinweis!",
"Login_Psw-box":"Passwort",
"Login_Toggle_Info":"Passwort Informationen",
"Login_Toggle_Info_headline":"Passwort Information",
"Login_Toggle_Alert_headline":"Passwort Warnung!",
"Navigation_Devices":"Geräte",
"Navigation_Presence":"Anwesenheit",
"Navigation_Events":"Ereignisse",
"Navigation_Report":"Bericht",
"Navigation_Maintenance":"Wartung",
"Navigation_Settings":"Einstellung",
"Navigation_SystemInfo":"System info",
"Navigation_Network":"Netzwerk",
"Navigation_HelpFAQ":"Hilfe / FAQ",
"Device_Title":"Geräte",
"Device_Shortcut_AllDevices":"Alle Geräte",
"Device_Shortcut_Connected":"Verbunden",
"Device_Shortcut_Favorites":"Favoriten",
"Device_Shortcut_NewDevices":"Neue Geräte",
"Device_Shortcut_DownAlerts":"Down Meldungen",
"Device_Shortcut_Archived":"Archiviert",
"Device_Shortcut_Devices":"Geräte",
"Device_Shortcut_OnlineChart":"Gerätepräsenz im Laufe der Zeit",
"Device_TableHead_Name":"Name",
"Device_TableHead_Owner":"Eigentümer",
"Device_TableHead_Type":"Typ",
"Device_TableHead_Favorite":"Favorit",
"Device_TableHead_Group":"Gruppe",
"Device_TableHead_FirstSession":"Erste Sitzg.",
"Device_TableHead_LastSession":"Letzte Sitzg.",
"Device_TableHead_LastIP":"Letzte IP",
"Device_TableHead_MAC":"MAC",
"Device_TableHead_LastIPOrder":"Last IP Order",
"Device_TableHead_Rowid":"Zeilennummer",
"Device_TableHead_Status":"Status",
"Device_Searchbox":"Suche",
"Device_Tablelenght":"Zeige _MENU_ Einträge",
"Device_Tablelenght_all":"Alle",
"Device_Table_info":"Zeige _START_ bis _END_ von _TOTAL_ Einträgen",
"Device_Table_nav_next":"Nächste",
"Device_Table_nav_prev":"Zurück",
"Presence_Title":"Anwesenheit pro Gerät",
"Presence_Loading":"Laden...",
"Loading":"Laden...",
"Presence_Shortcut_AllDevices":"Alle Geräte",
"Presence_Shortcut_Connected":"Verbunden",
"Presence_Shortcut_Favorites":"Favoriten",
"Presence_Shortcut_NewDevices":"Neue Geräte",
"Presence_Shortcut_DownAlerts":"Down Meldungen",
"Presence_Shortcut_Archived":"Archiviert",
"Presence_Shortcut_Devices":"Geräte",
"Presence_CallHead_Devices":"Geräte",
"Presence_CalHead_lang":"de",
"Presence_CalHead_year":"Jahr",
"Presence_CalHead_quarter":"Quartal",
"Presence_CalHead_month":"Monat",
"Presence_CalHead_week":"Woche",
"Events_Title":"Ereignisse",
"Events_Loading":"Laden...",
"Events_Periodselect_today":"Heute",
"Events_Periodselect_LastWeek":"Letzte Woche",
"Events_Periodselect_LastMonth":"Letzter Monat",
"Events_Periodselect_LastYear":"Letztes Jahr",
"Events_Periodselect_All":"Alle Ereignisse",
"Events_Shortcut_AllEvents":"Alle Ereignisse",
"Events_Shortcut_Sessions":"Sitzungen",
"Events_Shortcut_MissSessions":"fehlende Sitzungen",
"Events_Shortcut_VoidSessions":"beendete Sitzungen",
"Events_Shortcut_NewDevices":"Neue Geräte",
"Events_Shortcut_DownAlerts":"Down Meldungen",
"Events_Shortcut_Events":"Ereignisse",
"Events_TableHead_Order":"Order",
"Events_TableHead_Device":"Gerät",
"Events_TableHead_Owner":"Eigentümer",
"Events_TableHead_Date":"Datum",
"Events_TableHead_EventType":"Ereignis Typ",
"Events_TableHead_Connection":"Verbindung",
"Events_TableHead_Disconnection":"Trennung",
"Events_TableHead_Duration":"Dauer",
"Events_TableHead_DurationOrder":"Duration Order",
"Events_TableHead_IP":"IP",
"Events_TableHead_IPOrder":"IP Order",
"Events_TableHead_AdditionalInfo":"Zusätzliche Info",
"Events_Searchbox":"Suche",
"Events_Tablelenght":"Zeige _MENU_ Einträge",
"Events_Tablelenght_all":"Alle",
"Events_Table_info":"Zeige _START_ bis _END_ von _TOTAL_ Einträgen",
"Events_Table_nav_next":"Nächste",
"Events_Table_nav_prev":"Zurück",
"DevDetail_Loading":"Laden ...",
"DevDetail_Periodselect_today":"Heute",
"DevDetail_Periodselect_LastWeek":"Letzte Woche",
"DevDetail_Periodselect_LastMonth":"Letzter Monat",
"DevDetail_Periodselect_LastYear":"Letztes Jahr",
"DevDetail_Periodselect_All":"Alle Infos",
"DevDetail_Shortcut_CurrentStatus":"aktueller Status",
"DevDetail_Shortcut_Sessions":"Sitzungen",
"DevDetail_Shortcut_Presence":"Anwesenheit",
"DevDetail_Shortcut_DownAlerts":"Down Meldungen",
"DevDetail_Tab_Details":"Details",
"DevDetail_Tab_Tools":"<i class=\"fa fa-screwdriver-wrench\"></i> Tools",
"DevDetail_Tab_Tools_Internet_Info_Title":"Internetinformationen",
"DevDetail_Tab_Tools_Internet_Info_Description":"Das Internet-Info-Tool zeigt Informationen über die Internetverbindung an, wie z. B. IP-Adresse, Stadt, Land, Ortsvorwahl und Zeitzone.",
"DevDetail_Tab_Tools_Internet_Info_Start":"Internet-Info starten",
"DevDetail_Tab_Tools_Internet_Info_Error":"Es ist ein Fehler aufgetreten",
"DevDetail_Tab_Tools_Nslookup_Title":"Nslookup",
"DevDetail_Tab_Tools_Nslookup_Description":"Nslookup ist ein Befehlszeilentool zur Abfrage des Domain Name System (DNS). DNS ist ein System, das Domainnamen wie www.google.com in IP-Adressen wie 172.217.0.142 übersetzt. ",
"DevDetail_Tab_Tools_Nslookup_Start":"Nslookup starten",
"DevDetail_Tab_Tools_Nslookup_Error":"Fehler: IP-Adresse ist ungültig",
"DevDetail_Tab_Tools_Speedtest_Title":"Speedtest test",
"DevDetail_Tab_Tools_Speedtest_Description":"Das Speedtest-Tool misst die Download-Geschwindigkeit, Upload-Geschwindigkeit und Latenz der Internetverbindung.",
"DevDetail_Tab_Tools_Speedtest_Start":"Speedtest starten",
"DevDetail_Tab_Tools_Traceroute_Title":"Traceroute",
"DevDetail_Tab_Tools_Traceroute_Description":"Traceroute ist ein Netzwerkdiagnosebefehl, mit dem der Pfad verfolgt wird, den Datenpakete von einem Host zu einem anderen nehmen.<br><br>Der Befehl verwendet das Internet Control Message Protocol (ICMP), um Pakete an Zwischenknoten auf der Route zu senden, jeden Zwischenknoten Der Knoten antwortet mit einem ICMP-Timeout-Paket (TTL-Zeitüberschreitung).<br><br>Die Ausgabe des Traceroute-Befehls zeigt die IP-Adresse jedes Zwischenknotens auf der Route an.<br><br>Die Ausgabe der Traceroute Der Befehl zeigt die IP-Adresse jedes Zwischenknotens auf der Route an.<br><br>Der Befehl „traceroute“ kann zur Diagnose von Netzwerkproblemen wie Verzögerungen, Paketverlust und blockierten Routen verwendet werden.<br><br>Das ist auch möglich kann verwendet werden, um den Standort eines Zwischenknotens in einem Netzwerk zu identifizieren.",
"DevDetail_Tab_Tools_Traceroute_Start":"Traceroute starten",
"DevDetail_Tab_Tools_Traceroute_Error":"Fehler: IP-Adresse ist ungültig",
"DevDetail_Tab_Nmap":"Nmap",
"DevDetail_Tab_NmapTableIndex":"Index",
"DevDetail_Tab_NmapTableTime":"Zeit",
"DevDetail_Tab_NmapTablePort":"Port",
"DevDetail_Tab_NmapTableState":"Status",
"DevDetail_Tab_NmapTableService":"Dienst",
"DevDetail_Tab_NmapTableExtra":"Extra",
"DevDetail_Tab_Sessions":"Sitzungen",
"DevDetail_Tab_Presence":"Anwesenheit",
"DevDetail_Tab_Events":"Ereignisse",
"DevDetail_Tab_EventsTableDate":"Datum",
"DevDetail_Tab_EventsTableEvent":"Ereignistype",
"DevDetail_Tab_EventsTableIP":"IP",
"DevDetail_Tab_EventsTableInfo":"Zusätzliche Informationen",
"DevDetail_MainInfo_Title":"Haupt Infos",
"DevDetail_MainInfo_mac":"MAC",
"DevDetail_MainInfo_Name":"Name",
"DevDetail_MainInfo_Owner":"Eigen-&shy;tümer",
"DevDetail_MainInfo_Type":"Typ",
"DevDetail_MainInfo_Vendor":"Hersteller",
"DevDetail_MainInfo_Favorite":"Favorit",
"DevDetail_MainInfo_Group":"Gruppe",
"DevDetail_MainInfo_Location":"Standort",
"DevDetail_MainInfo_Comments":"Notiz",
"DevDetail_MainInfo_Network":"Netzwerk Knoten",
"DevDetail_MainInfo_Network_Port":"Netzwerk Knoten Port",
"DevDetail_SessionInfo_Title":"Sitzungsinfos",
"DevDetail_SessionInfo_Status":"Status",
"DevDetail_SessionInfo_FirstSession":"Erste Sitzung",
"DevDetail_SessionInfo_LastSession":"Letzte Sitzung",
"DevDetail_SessionInfo_LastIP":"Letzte IP",
"DevDetail_SessionInfo_StaticIP":"Statische IP",
"DevDetail_EveandAl_Title":"Ereignisse & Alarme einstellen",
"DevDetail_EveandAl_ScanCycle":"Scan Abstand",
"DevDetail_EveandAl_AlertAllEvents":"Melde alle Ereignisse",
"DevDetail_EveandAl_AlertDown":"Melde Down",
"DevDetail_EveandAl_Skip":"pausiere wiederhol. Meldungen für",
"DevDetail_EveandAl_NewDevice":"Neues Gerät",
"DevDetail_EveandAl_Archived":"Archivierung",
"DevDetail_EveandAl_RandomMAC":"Zufällige MAC",
"DevDetail_EveandAl_ScanCycle_a":"Gerät scannen",
"DevDetail_EveandAl_ScanCycle_z":"Gerät nicht scannen",
"DevDetail_button_Delete":"Lösche Gerät",
"DevDetail_button_Reset":"Verwerfen",
"DevDetail_button_Save":"Speichern",
"DevDetail_button_DeleteEvents":"Lösche Events",
"DevDetail_button_DeleteEvents_Warning":"Sind Sie sicher, dass Sie alle Ereignisse dieses Geräts löschen möchten? (dies löscht den Ereignisverlauf und die Sitzungen und könnte bei ständigen (anhaltenden) Benachrichtigungen helfen)",
"DevDetail_SessionTable_Order":"Order",
"DevDetail_SessionTable_Connection":"Verbindung",
"DevDetail_SessionTable_Disconnection":"Trennung",
"DevDetail_SessionTable_Duration":"Dauer",
"DevDetail_SessionTable_IP":"IP",
"DevDetail_SessionTable_Additionalinfo":"Zusätzliche Info",
"DevDetail_Events_CheckBox":"Blende Verbindungs-Ereignisse aus",
"DevDetail_Nmap_buttonFast":"Schneller Scan",
"DevDetail_Nmap_buttonDefault":"Standard Scan",
"DevDetail_Nmap_buttonDetail":"Detailierter Scan",
"DevDetail_Nmap_buttonFast_text":"Schneller Scan: Überprüft nur die wichtigsten 100 Ports (wenige Sekunden)",
"DevDetail_Nmap_buttonDefault_text":"Standard Scan: Nmap scannt die ersten 1.000 Ports für jedes angeforderte Scan-Protokoll. Damit werden etwa 93 % der TCP-Ports und 49 % der UDP-Ports erfasst. (ca. 5-10 Sekunden)",
"DevDetail_Nmap_buttonDetail_text":"Detailierter Scan: Standardscan mit aktivierter Betriebssystemerkennung, Versionserkennung, Skript-Scan und Traceroute (bis zu 30 oder mehr Sekunden)",
"DevDetail_Nmap_buttonSkipDiscovery":"Ohne Erreichbarkeitsprüfung",
"DevDetail_Nmap_buttonSkipDiscovery_text":"Ohne Erreichbarkeitsprüfung (-Pn Parameter): Standard Scan bei dem nmap annimmt, dass der Host erreichbar ist.",
"DevDetail_Nmap_Scans":"Nmap Scans",
"Maintenance_Title":"Wartungswerkzeuge",
"Maintenance_database_path":"Datenbank-Pfad",
"Maintenance_database_size":"Datenbank-Größe",
"Maintenance_database_lastmod":"Letzte Änderung",
"Maintenance_database_backup":"DB Sicherungen",
"Maintenance_database_backup_found":"Sicherungen verfügbar",
"Maintenance_database_backup_total":"Speicherplatz insgesamt",
"Maintenance_arp_status":"Scan Status",
"Maintenance_arp_status_off":"ist im Moment deaktiviert",
"Maintenance_arp_status_on":"Scan(s) sind gerade aktiv",
"Maintenance_themeselector_lable":"Skin Auswahl",
"Maintenance_themeselector_empty":"Skin wählen",
"Maintenance_themeselector_text":"Die Änderung findet serverseitig statt, betrifft also alle verwendeten Geräte.",
"Maintenance_themeselector_apply":"Übernehmen",
"Maintenance_lang_selector_lable":"Sprachauswahl",
"Maintenance_lang_selector_empty":"Sprache wählen",
"Maintenance_lang_en_us":"Englisch (US)",
"Maintenance_lang_de_de":"Deutsch (DE)",
"Maintenance_lang_es_es":"Spanisch (ES)",
"Maintenance_lang_selector_text":"Die Änderung findet serverseitig statt, betrifft also alle verwendeten Geräte.",
"Maintenance_lang_selector_apply":"Übernehmen",
"Maintenance_Tools_Tab_Settings":"Einstellungen",
"Maintenance_Tools_Tab_Tools":"Werkzeuge",
"Maintenance_Tools_Tab_BackupRestore":"Sicherg. / Wiederherstellg.",
"Maintenance_Tools_Tab_Logging":"Logs",
"Maintenance_Tool_darkmode":"Darstellungswechsel (Dunkel/Hell)",
"Maintenance_Tool_darkmode_text":"Wechselt zwischen der hellen und der dunklen Darstellung. Wenn der Wechsel nicht richtig funktionieren sollte, versuchen Sie den Browsercache zu löschen. Die Änderung findet serverseitig statt, betrifft also alle verwendeten Geräte.",
"Maintenance_Tool_darkmode_noti":"Darstellungswechsel",
"Maintenance_Tool_darkmode_noti_text":"Wechselt zwischen der hellen und der dunklen Darstellung. Wenn die Umschaltung nicht ordentlich funktionieren sollte, versuchen Sie den Browsercache zu löschen.",
"Maintenance_Tool_arpscansw":"arp-Scan stoppen/starten",
"Maintenance_Tool_arpscansw_text":"Schaltet den arp-Scan an oder aus. Wenn der Scan aus ist, bleibt er so lange aus bis er wieder aktiviert wird. Bereits laufende Scans werden dabei nicht beendet.",
"Maintenance_Tool_arpscansw_noti":"arp-Scan stoppen/starten",
"Maintenance_Tool_arpscansw_noti_text":"Wenn der Scan aus ist, bleibt er so lange aus bis er wieder aktiviert wird.",
"Maintenance_Tool_del_empty_macs":"Alle Geräte ohne MAC löschen",
"Maintenance_Tool_del_empty_macs_text":"Machen Sie ein Backup, bevor Sie diese Funk&shy;tion nutzen. Der Vor&shy;gang kann ohne Back&shy;up nicht rück&shy;gängig gemacht werden. Alle Geäte ohne MAC-Adresse werden aus der Datenbank ge&shy;löscht.",
"Maintenance_Tool_del_empty_macs_noti":"Geräte löschen",
"Maintenance_Tool_del_empty_macs_noti_text":"Sind Sie sicher, dass Sie alle Geräte ohne MAC-Adresse löschen wollen?<br>(Vielleicht bevorzugenn Sie eine Archivierung.)",
"Maintenance_Tool_upgrade_database_noti":"Aktualisiere Datenbank",
"Maintenance_Tool_upgrade_database_text":"Mit dieser Schaltfläche wird die Datenbank aktualisiert, um das Diagramm der Netzwerkaktivitäten der letzten 12 Stunden zu aktivieren. Bitte sichern Sie Ihre Datenbank, falls Probleme auftreten.",
"Maintenance_Tool_upgrade_database_noti_text":"Machen Sie ein Backup, bevor Sie diese Funk&shy;tion nutzen.",
"Maintenance_Tool_del_alldev":"Alle Geräte löschen",
"Maintenance_Tool_del_alldev_text":"Machen Sie ein Backup, bevor Sie diese Funk&shy;tion nutzen. Der Vor&shy;gang kann ohne Back&shy;up nicht rück&shy;gängig gemacht werden. Alle Geräte werden in der Datenbank ge&shy;löscht.",
"Maintenance_Tool_del_alldev_noti":"Geräte löschen",
"Maintenance_Tool_del_alldev_noti_text":"Sind Sie sich sicher, dass Sie alle Geräte löschen wollen?",
"Maintenance_Tool_del_unknowndev":"Löschen der (unknown) Geräte",
"Maintenance_Tool_del_unknowndev_text":"Machen Sie ein Backup, bevor Sie diese Funk&shy;tion nutzen. Der Vor&shy;gang kann ohne Back&shy;up nicht rück&shy;gängig gemacht werden. Alle Gräte mit dem Namen (unknown) werden aus der Datenbank ge&shy;löscht.",
"Maintenance_Tool_del_unknowndev_noti":"Lösche (unknown) Geräte",
"Maintenance_Tool_del_unknowndev_noti_text":"Sind Sie sicher, dass Sie alle (unknown) Geräte aus der Datenbank löschen wollen?",
"Maintenance_Tool_del_allevents":"Alle Ereignisse löschen",
"Maintenance_Tool_del_allevents_text":"Machen Sie ein Backup, bevor Sie diese Funk&shy;tion nutzen. Der Vor&shy;gang kann ohne Back&shy;up nicht rück&shy;gängig gemacht werden. Alle Ereignisse werden aus der Datenbank ge&shy;löscht. Dies setzt auch die Anwesenheit zu&shy;rück. Es kann ab dem Moment zu ungültigen Sitzungen kommen. Ein Scan, während das betreffende Gerät online ist, sollte das Problem lösen.",
"Maintenance_Tool_del_allevents_noti":"Alle Ereignisse löschen",
"Maintenance_Tool_del_allevents_noti_text":"Sind Sie sicher, dass Sie alle Ereignisse aus der Datenbank löschen wollen. Dies setzt die Anwesenheit aller Geräte zurück.",
"Maintenance_Tool_backup":"DB Sicherung",
"Maintenance_Tool_backup_text":"Die Datenbank-Sicher&shy;ungen befinden sich im Datenbank-Ver&shy;zeich&shy;nis, gepackt als zip-Archive, benannt mit dem Erstellungs&shy;datum. Es gibt keine maximale Anzahl von Backups.",
"Maintenance_Tool_backup_noti":"DB Sicherung",
"Maintenance_Tool_backup_noti_text":"Sind Sie sicher, dass Sie die Datenbank jetzt sichern möchten. Prüfen Sie, dass gerade keine Scans stattfinden.",
"Maintenance_Tool_restore":"DB Wiederherstellung",
"Maintenance_Tool_restore_text":"Das neuste Backup kann über diese Funk&shy;tion wiederhergestellt werden. Ältere Sicher&shy;ungen müssen manuell wieder&shy;hergestellt wer&shy;den. Es empfiehlt sich eine Integritäts&shy;prüfung nach der Wieder&shy;her&shy;stellung zu machen, falls die Datenbank bei der Sicherung geöffnet war.",
"Maintenance_Tool_restore_noti":"DB Wiederherstellung",
"Maintenance_Tool_restore_noti_text":"Sind Sie sicher, dass Sie die Datenbank aus der neusten Sicherung wiederherstellen möchten? Prüfen Sie, dass gerade keine Scans stattfinden.",
"Maintenance_Tool_purgebackup":"Sicherungen aufräumen",
"Maintenance_Tool_purgebackup_text":"Es werden, bis auf die letzten 3 Backups, alle übrigen Backups gelöscht.",
"Maintenance_Tool_purgebackup_noti":"Sicherungen aufräumen",
"Maintenance_Tool_purgebackup_noti_text":"Sind Sie sicher, alle Backups, bis auf die letzten 3 löschen möchten?",
"Maintenance_Tool_del_ActHistory":"Löschen der Netzwerkaktivität",
"Maintenance_Tool_del_ActHistory_text":"Der Graph für die Netzwerkaktivität wird zurückgesetzt. Hierbei werden die Events nicht beeinflusst.",
"Maintenance_Tool_del_ActHistory_noti":"Netzwerkaktivität löschen",
"Maintenance_Tool_del_ActHistory_noti_text":"Sind Sie sicher, dass Sie die Netzwerkaktivität zurücksetzen möchten?",
"BackDevices_Arpscan_disabled":"Automatischer Arp-Scan deaktiviert.",
"BackDevices_Arpscan_enabled":"Automatischer Arp-Scan aktiviert.",
"BackDevices_darkmode_disabled":"Heller Modus aktiviert.",
"BackDevices_darkmode_enabled":"Dunkler Modus aktiviert.",
"BackDevices_Restore_CopError":"Die originale Datenbank konnte nicht kopiert werden.",
"BackDevices_Restore_okay":"Die Wiederherstellung wurde erfolgreich ausgeführt.",
"BackDevices_Restore_Failed":"Die Wiederherstellung ist fehlgeschlagen. Stellen Sie das Backup manuell her.",
"BackDevices_Backup_CopError":"Die originale Datenbank konnte nicht gesichert werden.",
"BackDevices_Backup_okay":"Das Backup wurde erfolgreich beendet.",
"BackDevices_Backup_Failed":"Das Backup wurde teilweise ausgeführt. Das Archiv ist entweder leer oder nicht vorhanden.",
"BackDevices_DBTools_DelDev_a":"Gerät erfolgreich gelöscht.",
"BackDevices_DBTools_DelDev_b":"Geräte erfolgreich gelöscht.",
"BackDevices_DBTools_DelEvents":"Events erfolgreich gelöscht.",
"BackDevices_DBTools_DelEventsError":"Fehler beim Löschen der Ereignisse.",
"BackDevices_DBTools_DelDevError_a":"Fehler beim Löschen des Gerätes.",
"BackDevices_DBTools_DelDevError_b":"Fehler beim Löschen der Geräte.",
"BackDevices_DBTools_UpdDev":"Gerät erfolgreich aktualisiert.",
"BackDevices_DBTools_UpdDevError":"Fehler beim Aktualisieren des Gerätes.",
"BackDevices_DBTools_Upgrade":"Datenbank erfolgreich aktualisiert.",
"BackDevices_DBTools_UpgradeError":"Fehler beim Aktualisieren der Datenbank.",
"BackDevices_DBTools_Purge":"Die ältesten Backups wurden gelöscht.",
"BackDevices_DBTools_DelActHistory":"Die Anzeige der Netzwerkaktivität wurde zurückgesetzt.",
"BackDevices_DBTools_DelActHistoryError":"Fehler beim Zurücksetzen der Netzwerkaktivitätsanzeige.",
"Network_Title":"Netzwerkübersicht",
"Network_ManageDevices":"Geräte verwalten",
"Network_ManageAdd":"Gerät hinzufügen",
"Network_ManageEdit":"Gerät bearbeiten",
"Network_ManageDel":"Gerät löschen",
"Network_ManageAdd_Name":"Name des Gerätes",
"Network_ManageAdd_Name_text":"Name ohne Sonderzeichen",
"Network_ManageAdd_Type":"Gerätetyp",
"Network_ManageAdd_Type_text":"-- Typ wählen --",
"Network_ManageAdd_Port":"Portanzahl",
"Network_ManageAdd_Port_text":"bei WLAN oder Powerline leer lassen",
"Network_ManageAdd_Submit":"Hinzufügen",
"Network_ManageEdit_ID":"Gerät zum Bearbeiten auswählen",
"Network_ManageEdit_ID_text":"-- Gerät wählen --",
"Network_ManageEdit_Name":"Neuer Name",
"Network_ManageEdit_Name_text":"Name ohne Sonderzeichen",
"Network_ManageEdit_Type":"Neuer Typ",
"Network_ManageEdit_Type_text":"-- Typ wählen --",
"Network_ManageEdit_Port":"Neue Portanzahl",
"Network_ManageEdit_Port_text":"bei WLAN oder Powerline leer lassen",
"Network_ManageEdit_Submit":"Speichern",
"Network_ManageDel_Name":"Gerät zum Löschen auswählen",
"Network_ManageDel_Name_text":"-- Gerät wählen --",
"Network_ManageDel_Submit":"Löschen",
"Network_Table_State":"Status",
"Network_Table_Hostname":"Gerätename",
"Network_Table_IP":"IP",
"HelpFAQ_Title":"Hilfe / FAQ",
"HelpFAQ_Cat_General":"Allgemein",
"HelpFAQ_Cat_Detail":"Detailansicht",
"HelpFAQ_Cat_General_100_head":"Die Uhr oben rechts und die Zeiten der Events/Anwesenheit stimmen nicht (Zeitverschiebung).",
"HelpFAQ_Cat_General_100_text_a":"Auf deinem PC ist für die PHP Umgebung folgende Zeitzone voreingestellt:",
"HelpFAQ_Cat_General_100_text_b":"Sollte dies nicht die Zeitzone sein, in der du dich aufhältst, solltest du die Zeitzone in der PHP Konfigurationsdatei anpassen. Diese findest du in diesem Verzeichnis:",
"HelpFAQ_Cat_General_100_text_c":"Suche in dieser Datei nach dem Eintrag 'date.timezone', entferne ggf. das führende ';' und trage die gewünschte Zeitzone ein. Eine Liste mit den unterstützten Zeitzonen findest du hier (<a href=\"https://www.php.net/manual/de/timezones.php\" target=\"blank\">Link</a>).",
"HelpFAQ_Cat_General_101_head":"Mein Netzwerk scheint langsamer zu werden, Streaming ruckelt.",
"HelpFAQ_Cat_General_101_text":"Es kann durchaus sein, das leistungsschwache Geräte mit der Art und Weise, wie Pi.Alert neue Geräte im Netzwerk erkennt, an ihre Leistungsgrenzen kommen. Dies verstärkt sich noch einmal, <br/> wenn diese Geräte per WLAN mit dem Netzwerk kommunizieren. Lösungen wären hier, wenn möglich ein Wechsel auf eine Kabelverbindung oder, falls das Geräte nur einen begrenzten Zeitraum genutzt <br/> werden soll, den arp-Scan auf der Wartungsseite zu pausieren.",
"HelpFAQ_Cat_General_102_head":"Ich bekomme die Meldung, dass die Datenbank schreibgeschützt (read only) ist.",
"HelpFAQ_Cat_General_102_text":"Prüfe im Pi.Alert verzeichnis ob der Ordner der Datenbank (db) die richtigen Rechte zugewiesen bekommen hat:<br> <span class=\"text-danger help_faq_code\">drwxrwx--- 2 (dein Username) www-data</span><br> Sollte die Berechtigung nicht stimmen, kannst du sie mit folgenden Befehlen im Terminal oder der Konsole wieder setzen:<br> <span class=\"text-danger help_faq_code\"> sudo chgrp -R www-data ~/pialert/db<br> chmod -R 770 ~/pialert/db </span><br> Wenn die Datenbank danach noch immer schreibgeschützt ist, versuche eine erneute Installation, oder das Zuückspielen eines Datenbank-Backups über die Wartungsseite.",
"HelpFAQ_Cat_General_102docker_head":"(🐳 Docker only) Database issues (AJAX errors, read-only, not found)",
"HelpFAQ_Cat_General_102docker_text":"Double-check you have followed the <a href=\"https://github.com/jokob-sk/Pi.Alert/tree/main/dockerfiles\">dockerfile readme (most up-to-date info)</a>. <br/> <br/> <ul data-sourcepos=\"49:4-52:146\" dir=\"auto\"> <li data-sourcepos=\"49:4-49:106\">Download the <a href=\"https://github.com/jokob-sk/Pi.Alert/blob/main/db/pialert.db\">original DB from GitHub</a>.</li> <li data-sourcepos=\"50:4-50:195\">Map the <code>pialert.db</code> file (<g-emoji class=\"g-emoji\" alias=\"warning\" fallback-src=\"https://github.githubassets.com/images/icons/emoji/unicode/26a0.png\">⚠</g-emoji> not folder) from above to <code>/home/pi/pialert/db/pialert.db</code> (see <a href=\"https://github.com/jokob-sk/Pi.Alert/tree/main/dockerfiles#-examples\">Examples</a> for details).</li><li data-sourcepos=\"51:4-51:161\">If facing issues (AJAX errors, can not write to DB, etc,) make sure permissions are set correctly, alternatively check the logs under <code>/home/pi/pialert/front/log</code>.</li> <li data-sourcepos=\"52:4-52:146\">To solve permission issues you can also try to create a DB backup and then run a DB Restore via the <strong>Maintenance &gt; Backup/Restore</strong> section.</li> <li data-sourcepos=\"53:4-53:228\">If the database is in read-only mode you can solve this by setting the owner and group by executing the following command on the host system: <code>docker exec pialert chown -R www-data:www-data /home/pi/pialert/db/pialert.db</code>.</li></ul>",
"HelpFAQ_Cat_General_103_head":"Die Login-Seite erscheint nicht, auch nicht nach der Passwortänderung.",
"HelpFAQ_Cat_General_103_text":"Neben dem Passwort, muss in der Konfigurationsdatei <span class=\"text-danger help_faq_code\">~/pialert/config/pialert.conf</span> auch der Parameter <span class=\"text-danger help_faq_code\">PIALERT_WEB_PROTECTION</span> auf <span class=\"text-danger help_faq_code\">True</span> gesetzt sein.",
"HelpFAQ_Cat_Device_200_head":"Ich habe, mir nicht bekannte, Geräte in meiner Liste. Nach dem Löschen tauchen diese immer wieder auf.",
"HelpFAQ_Cat_Device_200_text":"Wenn du Pi-hole verwendest, beachte bitte, dass Pi.Alert Informationen von Pi-hole abruft. Pausiere Pi.Alert, gehe in Pi-hole auf die Settings-Seite und lösche ggf. die betreffende DHCP-Lease. Anschließend schaue, ebenfalls in Pi-hole, unter Tools -> Network, ob sich dort die immer wiederkehrenden Hosts finden lassen. Wenn ja, lösche diese dort ebenfalls. Nun kannst du Pi.Alert wieder starten. Jetzt sollte das Gerät/die Geräte nicht mehr auftauchen.",
"HelpFAQ_Cat_Detail_300_head":"Was bedeutet ",
"HelpFAQ_Cat_Detail_300_text_a":"meint ein Netzwerkgerät (welches den typ AP, Gateway, Firewall, Hypervisor, Powerline, Switch, WLAN, PLC, Router,USB LAN Adapter, USB WIFI Adapter, or Internet eingestellt hat)",
"HelpFAQ_Cat_Detail_300_text_b":"bezeichnet die Anschlussnummer/Portnummer, an der das gerade bearbeitete Gerät mit diesem Netzwerkgerät verbunden ist.",
"HelpFAQ_Cat_Detail_301_head_a":"Wann wird nun gescannt? Bei ",
"HelpFAQ_Cat_Detail_301_head_b":" steht 1min aber der Graph zeigt 5min - Abstände an.",
"HelpFAQ_Cat_Detail_301_text":"Den zeitlichen Abstand zwischen den Scans legt der \"Cronjob\" fest, welcher standardmäßig auf 5min eingestellt ist. Die Benennung \"1min\" bezieht sich auf die zu erwartende Dauer des Scans. Abhängig vor der Netzwerkkonfiguration kann diese Zeitangabe variieren. Um den Cronjob zu bearbeiten, kannst du im Terminal/der Konsole <span class=\"text-danger help_faq_code\">crontab -e</span> eingeben und den Intervall ändern.",
"HelpFAQ_Cat_Detail_302_head_a":"Was bedeutet ",
"HelpFAQ_Cat_Detail_302_head_b":" und warum kann ich das nicht auswählen?",
"HelpFAQ_Cat_Detail_302_text":"Einige moderne Geräte generieren aus Datenschutzgründen zufällige MAC-Adressen, die keinem Hersteller mehr zugeordnet werden können und welche sich mit jeder neuen Verbindung wieder ändern. Pi.Alert erkennt, ob es sich um eine solche zufällige MAC-Adresse handelt und aktiviert diese \"Feld\" automatisch. Um das Verhalten abzustellen, muss du in deinem Endgerät schauen, wie du die MAC-Adressen-Generierung deaktivierst.",
"HelpFAQ_Cat_Detail_303_head":"Was ist Nmap und wozu dient es?",
"HelpFAQ_Cat_Detail_303_text":"Nmap ist ein Netzwerkscanner mit vielfältigen Möglichkeiten.<br> Wenn ein neues Gerät in deiner Liste auftaucht, hast du die Möglichkeit über den Nmap-Scan genauere Informationen über das Gerät zu erhalten.",
"HelpFAQ_Cat_Presence_400_head":"Geräte werden mit einer gelben Markierung und dem Hinweis \"missing Event\" angezeigt.",
"HelpFAQ_Cat_Presence_400_text":"Wenn dies geschieht hast du die Möglickeit, bei dem betreffenden Gerät (Detailsansicht) die Events zu löschen. Eine andere Möglichkeit wäre, das Gerät einzuschalten und zu warten, bis Pi.Alert mit dem nächsten Scan das Gerät als \"Online\" erkennt und anschließend das Gerät einfach wieder ausschalten. Nun sollte Pi.Alert mit dem nächsten Scan den Zustand des Gerätes ordentlich in der Datenbank vermerken.",
"HelpFAQ_Cat_Presence_401_head":"Ein Gerät wird als Anwesend angezeigt, obwohl es \"Offline\" ist.",
"HelpFAQ_Cat_Presence_401_text":"Wenn dies geschieht hast du die Möglickeit, bei dem betreffenden Gerät (Detailsansicht) die Events zu löschen. Eine andere Möglichkeit wäre, das Gerät einzuschalten und zu warten, bis Pi.Alert mit dem nächsten Scan das Gerät als \"Online\" erkennt und anschließend das Gerät einfach wieder ausschalten. Nun sollte Pi.Alert mit dem nächsten Scan den Zustand des Gerätes ordentlich in der Datenbank vermerken.",
"HelpFAQ_Cat_Network_600_head":"Was bringt mir diese Seite?",
"HelpFAQ_Cat_Network_600_text":"Diese Seite soll dir die Möglichkeit bieten, die Belegung deiner Netzwerkgeräte abzubilden. Dazu kannst du einen oder mehrere Switches, WLANs, Router, etc. erstellen, sie ggf. mit einer Portanzahl versehen und bereits erkannte Geräte diesen zuordnen. Diese Zuordnung erfolgt in der Detailansicht, des zuzuordnenden Gerätes. So ist es dir möglich, schnell festzustellen an welchem Port ein Host angeschlossen und ob er online ist.",
"REPORT_TITLE":"Bericht",
"REPORT_ERROR":"Die gesuchte Seite ist vorübergehend nicht verfügbar. Bitte versuchen Sie es nach ein paar Sekunden erneut",
"SYSTEM_TITLE":"Systeminformationen",
"Plugins_Out_of":"von",
"Speedtest_Results":"Ergebnisse des Geschwindigkeitstests",
"Systeminfo_General":"Allgemein",
"Systeminfo_General_Full_Date":"Vollständiges Datum:",
"Systeminfo_General_Date":"Datum:",
"Systeminfo_General_Date2":"Datum2:",
"Systeminfo_General_TimeZone":"Zeitzone:",
"Systeminfo_This_Client":"Dieser Mandant",
"Systeminfo_Client_User_Agent":"Benutzeragent:",
"Systeminfo_Client_Resolution":"Browserauflösung:",
"Systeminfo_CPU":"CPU",
"Systeminfo_CPU_Vendor":"CPU-Anbieter:",
"Systeminfo_CPU_Name":"CPU-Name:",
"Systeminfo_CPU_Cores":"CPU-Kerne:",
"Systeminfo_CPU_Speed":"CPU-Geschwindigkeit:",
"Systeminfo_CPU_Temp":"CPU-Temp:",
"Systeminfo_Memory":"Speicher",
"Systeminfo_Memory_Usage":"Speichernutzung:",
"Systeminfo_Memory_Usage_Percent":"Speicher %:",
"Systeminfo_Memory_Total_Memory":"Gesamtspeicher:",
"Systeminfo_Motherboard":"Hauptplatine",
"Systeminfo_Motherboard_BIOS":"BIOS:",
"Systeminfo_Motherboard_BIOS_Date":"BIOS-Datum:",
"Systeminfo_Motherboard_BIOS_Vendor":"BIOS-Anbieter:",
"Systeminfo_Motherboard_Manufactured":"Hergestellt von:",
"Systeminfo_Motherboard_Name":"Name:",
"Systeminfo_Motherboard_Revision":"Revision:",
"Systeminfo_Storage":"Lagerung",
"Systeminfo_Storage_Mount":"Mountpunkt:",
"Systeminfo_Storage_Device":"Gerät:",
"Systeminfo_Storage_Size":"Größe:",
"Systeminfo_Storage_Type":"Typ:",
"Systeminfo_Storage_Usage":"Speicherverwendung",
"Systeminfo_Storage_Usage_Mount":"Mountpunkt:",
"Systeminfo_Storage_Usage_Total":"Gesamt:",
"Systeminfo_Storage_Usage_Used":"Verwendet:",
"Systeminfo_Storage_Usage_Free":"Kostenlos:",
"Systeminfo_Network":"Netzwerk",
"Systeminfo_Network_Accept_Encoding":"Kodierung akzeptieren:",
"Systeminfo_Network_Accept_Language":"Sprache akzeptieren:",
"Systeminfo_Network_Connection_Port":"Verbindungsport:",
"Systeminfo_Network_HTTP_Host":"HTTP-Host:",
"Systeminfo_Network_HTTP_Referer":"HTTP-Referer:",
"Systeminfo_Network_HTTP_Referer_String":"Kein HTTP-Referer",
"Systeminfo_Network_IP":"IP Internet:",
"Systeminfo_Network_IP_Connection":"IP-Verbindung:",
"Systeminfo_Network_IP_Server":"Server-IP:",
"Systeminfo_Network_MIME":"MIME:",
"Systeminfo_Network_Request_Method":"Anfragemethode:",
"Systeminfo_Network_Request_URI":"URI anfordern:",
"Systeminfo_Network_Request_Time":"Anfragezeit:",
"Systeminfo_Network_Secure_Connection":"Sichere Verbindung:",
"Systeminfo_Network_Secure_Connection_String":"Nein (HTTP)",
"Systeminfo_Network_Server_Name":"Servername:",
"Systeminfo_Network_Server_Name_String":"Servername nicht gefunden",
"Systeminfo_Network_Server_Query":"Serverabfrage:",
"Systeminfo_Network_Server_Query_String":"Keine Abfragezeichenfolge",
"Systeminfo_Network_Server_Version":"Serverversion:",
"Systeminfo_Network_Hardware":"Netzwerk Hardware",
"Systeminfo_Services":"Dienste",
"Systeminfo_Services_Name":"Dienstname",
"Systeminfo_Services_Description":"Dienstbeschreibung",
"Systeminfo_System":"System",
"Systeminfo_System_Architecture":"Architektur:",
"Systeminfo_System_AVG":"AVG laden:",
"Systeminfo_System_Kernel":"Kernel:",
"Systeminfo_System_OSVersion":"Betriebssystem:",
"Systeminfo_System_Running_Processes":"Laufende Prozesse:",
"Systeminfo_System_System":"System:",
"Systeminfo_System_Uname":"Uname:",
"Systeminfo_System_Uptime":"Betriebszeit:",
"Systeminfo_USB_Devices":"USB-Geräte"
}
}

View File

@@ -1,414 +0,0 @@
<?php
$lang['de_de'] = array(
//////////////////////////////////////////////////////////////////
// About - Update by @TeroRERO 07ago2022
//////////////////////////////////////////////////////////////////
'About_Title' => 'Open Source Network Guard',
'About_Design' => 'Designed for:',
'About_Exit' => 'Sign out',
//////////////////////////////////////////////////////////////////
// General
//////////////////////////////////////////////////////////////////
'Gen_Delete' => 'Löschen',
'Gen_Cancel' => 'Abbrechen',
'Gen_Okay' => 'Ok',
'Gen_Purge' => 'Aufräumen',
'Gen_Backup' => 'Sichern',
'Gen_Restore' => 'Wiederherstellen',
'Gen_Switch' => 'Umschalten',
'Gen_AreYouSure' => 'Sind Sie sich sicher?',
//////////////////////////////////////////////////////////////////
// Login Page - Update by @TeroRERO 03ago2022
//////////////////////////////////////////////////////////////////
'Login_Box' => 'Passwort eingeben',
'Login_Remember' => 'Passwort speichern',
'Login_Remember_small' => '(für 7 Tage gültig)',
'Login_Submit' => 'Anmelden',
'Login_Psw_run' => 'Um das Passwort zu ändern nutze:',
'Login_Psw_new' => 'neues_passwort',
'Login_Psw_folder' => 'im Ordner "~/pialert/config"',
'Login_Psw_alert' => 'Sicherheitshinweis!',
'Login_Psw-box' => 'Passwort',
'Login_Toggle_Info' => 'Passwort Informationen',
'Login_Toggle_Info_headline' => 'Passwort Information',
'Login_Toggle_Alert_headline' => 'Passwort Warnung!',
//////////////////////////////////////////////////////////////////
// Sidebar
//////////////////////////////////////////////////////////////////
'Navigation_Devices' => 'Geräte',
'Navigation_Presence' => 'Anwesenheit',
'Navigation_Events' => 'Ereignisse',
'Navigation_Maintenance' => 'Wartung',
'Navigation_Settings' => 'Einstellung',
'Navigation_Network' => 'Netzwerk',
'Navigation_HelpFAQ' => 'Hilfe / FAQ',
//////////////////////////////////////////////////////////////////
// Device Page
//////////////////////////////////////////////////////////////////
'Device_Title' => 'Geräte',
'Device_Shortcut_AllDevices' => 'Alle Geräte',
'Device_Shortcut_Connected' => 'Verbunden',
'Device_Shortcut_Favorites' => 'Favoriten',
'Device_Shortcut_NewDevices' => 'Neue Geräte',
'Device_Shortcut_DownAlerts' => 'Down Meldungen',
'Device_Shortcut_Archived' => 'Archiviert',
'Device_Shortcut_Devices' => 'Geräte',
'Device_Shortcut_OnlineChart' => 'Gerätepräsenz im Laufe der Zeit',
'Device_TableHead_Name' => 'Name',
'Device_TableHead_Owner' => 'Eigentümer',
'Device_TableHead_Type' => 'Typ',
'Device_TableHead_Favorite' => 'Favorit',
'Device_TableHead_Group' => 'Gruppe',
'Device_TableHead_FirstSession' => 'Erste Sitzg.',
'Device_TableHead_LastSession' => 'Letzte Sitzg.',
'Device_TableHead_LastIP' => 'Letzte IP',
'Device_TableHead_MAC' => 'MAC',
'Device_TableHead_LastIPOrder' => 'Last IP Order',
'Device_TableHead_Rowid' => 'Zeilennummer',
'Device_TableHead_Status' => 'Status',
'Device_Searchbox' => 'Suche',
'Device_Tablelenght' => 'Zeige _MENU_ Einträge',
'Device_Tablelenght_all' => 'Alle',
'Device_Table_info' => 'Zeige _START_ bis _END_ von _TOTAL_ Einträgen',
'Device_Table_nav_next' => 'Nächste',
'Device_Table_nav_prev' => 'Zurück',
//////////////////////////////////////////////////////////////////
// Presence Page
//////////////////////////////////////////////////////////////////
'Presence_Title' => 'Anwesenheit pro Gerät',
'Presence_Shortcut_AllDevices' => 'Alle Geräte',
'Presence_Shortcut_Connected' => 'Verbunden',
'Presence_Shortcut_Favorites' => 'Favoriten',
'Presence_Shortcut_NewDevices' => 'Neue Geräte',
'Presence_Shortcut_DownAlerts' => 'Down Meldungen',
'Presence_Shortcut_Archived' => 'Archiviert',
'Presence_Shortcut_Devices' => 'Geräte',
// Localizationfiles under pialert/front/lib/AdminLTE/bower_components/fullcalendar/dist/locale
'Presence_CallHead_Devices' => 'Geräte',
'Presence_CalHead_lang' => 'de',
'Presence_CalHead_year' => 'Jahr',
'Presence_CalHead_quarter' => 'Quartal',
'Presence_CalHead_month' => 'Monat',
'Presence_CalHead_week' => 'Woche',
//////////////////////////////////////////////////////////////////
// Events Page
//////////////////////////////////////////////////////////////////
'Events_Title' => 'Ereignisse',
'Events_Periodselect_today' => 'Heute',
'Events_Periodselect_LastWeek' => 'Letzte Woche',
'Events_Periodselect_LastMonth' => 'Letzter Monat',
'Events_Periodselect_LastYear' => 'Letztes Jahr',
'Events_Periodselect_All' => 'Alle Ereignisse',
'Events_Shortcut_AllEvents' => 'Alle Ereignisse',
'Events_Shortcut_Sessions' => 'Sitzungen',
'Events_Shortcut_MissSessions' => 'fehlende Sitzungen',
'Events_Shortcut_VoidSessions' => 'beendete Sitzungen',
'Events_Shortcut_NewDevices' => 'Neue Geräte',
'Events_Shortcut_DownAlerts' => 'Down Meldungen',
'Events_Shortcut_Events' => 'Ereignisse',
'Events_TableHead_Order' => 'Order',
'Events_TableHead_Device' => 'Gerät',
'Events_TableHead_Owner' => 'Eigentümer',
'Events_TableHead_Date' => 'Datum',
'Events_TableHead_EventType' => 'Ereignis Typ',
'Events_TableHead_Connection' => 'Verbindung',
'Events_TableHead_Disconnection' => 'Trennung',
'Events_TableHead_Duration' => 'Dauer',
'Events_TableHead_DurationOrder' => 'Duration Order',
'Events_TableHead_IP' => 'IP',
'Events_TableHead_IPOrder' => 'IP Order',
'Events_TableHead_AdditionalInfo' => 'Zusätzliche Info',
'Events_Searchbox' => 'Suche',
'Events_Tablelenght' => 'Zeige _MENU_ Einträge',
'Events_Tablelenght_all' => 'Alle',
'Events_Table_info' => 'Zeige _START_ bis _END_ von _TOTAL_ Einträgen',
'Events_Table_nav_next' => 'Nächste',
'Events_Table_nav_prev' => 'Zurück',
//////////////////////////////////////////////////////////////////
// Device Details Page
//////////////////////////////////////////////////////////////////
'DevDetail_Periodselect_today' => 'Heute',
'DevDetail_Periodselect_LastWeek' => 'Letzte Woche',
'DevDetail_Periodselect_LastMonth' => 'Letzter Monat',
'DevDetail_Periodselect_LastYear' => 'Letztes Jahr',
'DevDetail_Periodselect_All' => 'Alle Infos',
'DevDetail_Shortcut_CurrentStatus' => 'aktueller Status',
'DevDetail_Shortcut_Sessions' => 'Sitzungen',
'DevDetail_Shortcut_Presence' => 'Anwesenheit',
'DevDetail_Shortcut_DownAlerts' => 'Down Meldungen',
'DevDetail_Tab_Details' => 'Details',
'DevDetail_Tab_Nmap' => 'Nmap',
'DevDetail_Tab_Sessions' => 'Sitzungen',
'DevDetail_Tab_Presence' => 'Anwesenheit',
'DevDetail_Tab_Events' => 'Ereignisse',
'DevDetail_MainInfo_Title' => 'Haupt Infos',
'DevDetail_MainInfo_mac' => 'MAC',
'DevDetail_MainInfo_Name' => 'Name',
'DevDetail_MainInfo_Owner' => 'Eigen-&shy;tümer',
'DevDetail_MainInfo_Type' => 'Typ',
'DevDetail_MainInfo_Vendor' => 'Hersteller',
'DevDetail_MainInfo_Favorite' => 'Favorit',
'DevDetail_MainInfo_Group' => 'Gruppe',
'DevDetail_MainInfo_Location' => 'Standort',
'DevDetail_MainInfo_Comments' => 'Notiz',
'DevDetail_MainInfo_Network' => 'Netzwerk Knoten',
'DevDetail_MainInfo_Network_Port' => 'Netzwerk Knoten Port',
'DevDetail_SessionInfo_Title' => 'Sitzungsinfos',
'DevDetail_SessionInfo_Status' => 'Status',
'DevDetail_SessionInfo_FirstSession' => 'Erste Sitzung',
'DevDetail_SessionInfo_LastSession' => 'Letzte Sitzung',
'DevDetail_SessionInfo_LastIP' => 'Letzte IP',
'DevDetail_SessionInfo_StaticIP' => 'Statische IP',
'DevDetail_EveandAl_Title' => 'Ereignisse & Alarme einstellen',
'DevDetail_EveandAl_ScanCycle' => 'Scan Abstand',
'DevDetail_EveandAl_AlertAllEvents' => 'Melde alle Ereignisse',
'DevDetail_EveandAl_AlertDown' => 'Melde Down',
'DevDetail_EveandAl_Skip' => 'pausiere wiederhol. Meldungen für',
'DevDetail_EveandAl_NewDevice' => 'Neues Gerät',
'DevDetail_EveandAl_Archived' => 'Archivierung',
'DevDetail_EveandAl_RandomMAC' => 'Zufällige MAC',
'DevDetail_EveandAl_ScanCycle_a' => 'Gerät scannen',
'DevDetail_EveandAl_ScanCycle_z' => 'Gerät nicht scannen',
'DevDetail_button_Delete' => 'Lösche Gerät',
'DevDetail_button_Reset' => 'Verwerfen',
'DevDetail_button_Save' => 'Speichern',
'DevDetail_button_DeleteEvents' => 'Lösche Events',
'DevDetail_button_DeleteEvents_Warning' => 'Sind Sie sicher, dass Sie alle Ereignisse dieses Geräts löschen möchten? (dies löscht den Ereignisverlauf und die Sitzungen und könnte bei ständigen (anhaltenden) Benachrichtigungen helfen)',
'DevDetail_SessionTable_Order' => 'Order',
'DevDetail_SessionTable_Connection' => 'Verbindung',
'DevDetail_SessionTable_Disconnection' => 'Trennung',
'DevDetail_SessionTable_Duration' => 'Dauer',
'DevDetail_SessionTable_IP' => 'IP',
'DevDetail_SessionTable_Additionalinfo' => 'Zusätzliche Info',
'DevDetail_Events_CheckBox' => 'Blende Verbindungs-Ereignisse aus',
'DevDetail_Nmap_buttonFast' => 'Schneller Scan',
'DevDetail_Nmap_buttonDefault' => 'Standard Scan',
'DevDetail_Nmap_buttonDetail' => 'Detailierter Scan',
'DevDetail_Nmap_buttonFast_text' => 'Schneller Scan: Überprüft nur die wichtigsten 100 Ports (wenige Sekunden)',
'DevDetail_Nmap_buttonDefault_text' => 'Standard Scan: Nmap scannt die ersten 1.000 Ports für jedes angeforderte Scan-Protokoll. Damit werden etwa 93 % der TCP-Ports und 49 % der UDP-Ports erfasst. (ca. 5-10 Sekunden)',
'DevDetail_Nmap_buttonDetail_text' => 'Detailierter Scan: Standardscan mit aktivierter Betriebssystemerkennung, Versionserkennung, Skript-Scan und Traceroute (bis zu 30 oder mehr Sekunden)',
'DevDetail_Nmap_buttonSkipDiscovery' => 'Ohne Erreichbarkeitsprüfung',
'DevDetail_Nmap_buttonSkipDiscovery_text' => 'Ohne Erreichbarkeitsprüfung (-Pn Parameter): Standard Scan bei dem nmap annimmt, dass der Host erreichbar ist.',
//////////////////////////////////////////////////////////////////
// Maintenance Page
//////////////////////////////////////////////////////////////////
'Maintenance_Title' => 'Wartungswerkzeuge',
'Maintenance_database_path' => 'Datenbank-Pfad',
'Maintenance_database_size' => 'Datenbank-Größe',
'Maintenance_database_lastmod' => 'Letzte Änderung',
'Maintenance_database_backup' => 'DB Sicherungen',
'Maintenance_database_backup_found' => 'Sicherungen verfügbar',
'Maintenance_database_backup_total' => 'Speicherplatz insgesamt',
'Maintenance_arp_status' => 'Scan Status',
'Maintenance_arp_status_off' => 'ist im Moment deaktiviert',
'Maintenance_arp_status_on' => 'Scan(s) sind gerade aktiv',
'Maintenance_themeselector_lable' => 'Skin Auswahl',
'Maintenance_themeselector_empty' => 'Skin wählen',
'Maintenance_themeselector_text' => 'Die Änderung findet serverseitig statt, betrifft also alle verwendeten Geräte.',
'Maintenance_themeselector_apply' => 'Übernehmen',
'Maintenance_lang_selector_lable' => 'Sprachauswahl',
'Maintenance_lang_selector_empty' => 'Sprache wählen',
'Maintenance_lang_en_us' => 'Englisch (US)',
'Maintenance_lang_de_de' => 'Deutsch (DE)',
'Maintenance_lang_es_es' => 'Spanisch (ES)',
'Maintenance_lang_selector_text' => 'Die Änderung findet serverseitig statt, betrifft also alle verwendeten Geräte.',
'Maintenance_lang_selector_apply' => 'Übernehmen',
'Maintenance_Tools_Tab_Settings' => 'Einstellungen',
'Maintenance_Tools_Tab_Tools' => 'Werkzeuge',
'Maintenance_Tools_Tab_BackupRestore' => 'Sicherg. / Wiederherstellg.',
'Maintenance_Tools_Tab_Logging' => 'Logs',
'Maintenance_Tool_darkmode' => 'Darstellungswechsel (Dunkel/Hell)',
'Maintenance_Tool_darkmode_text' => 'Wechselt zwischen der hellen und der dunklen Darstellung. Wenn der Wechsel nicht richtig funktionieren sollte, versuchen Sie den Browsercache zu löschen. Die Änderung findet serverseitig statt, betrifft also alle verwendeten Geräte.',
'Maintenance_Tool_darkmode_noti' => 'Darstellungswechsel',
'Maintenance_Tool_darkmode_noti_text' => 'Wechselt zwischen der hellen und der dunklen Darstellung. Wenn die Umschaltung nicht ordentlich funktionieren sollte, versuchen Sie den Browsercache zu löschen.',
'Maintenance_Tool_arpscansw' => 'arp-Scan stoppen/starten',
'Maintenance_Tool_arpscansw_text' => 'Schaltet den arp-Scan an oder aus. Wenn der Scan aus ist, bleibt er so lange aus bis er wieder aktiviert wird. Bereits laufende Scans werden dabei nicht beendet.',
'Maintenance_Tool_arpscansw_noti' => 'arp-Scan stoppen/starten',
'Maintenance_Tool_arpscansw_noti_text' => 'Wenn der Scan aus ist, bleibt er so lange aus bis er wieder aktiviert wird.',
'Maintenance_Tool_del_empty_macs' => 'Alle Geräte ohne MAC löschen',
'Maintenance_Tool_del_empty_macs_text' => 'Machen Sie ein Backup, bevor Sie diese Funk&shy;tion nutzen. Der Vor&shy;gang kann ohne Back&shy;up nicht rück&shy;gängig gemacht werden. Alle Geäte ohne MAC-Adresse werden aus der Datenbank ge&shy;löscht.',
'Maintenance_Tool_del_empty_macs_noti' => 'Geräte löschen',
'Maintenance_Tool_del_empty_macs_noti_text' => 'Sind Sie sicher, dass Sie alle Geräte ohne MAC-Adresse löschen wollen?<br>(Vielleicht bevorzugenn Sie eine Archivierung.)',
'Maintenance_Tool_upgrade_database_noti' => 'Aktualisiere Datenbank',
'Maintenance_Tool_upgrade_database_text' => 'Mit dieser Schaltfläche wird die Datenbank aktualisiert, um das Diagramm der Netzwerkaktivitäten der letzten 12 Stunden zu aktivieren. Bitte sichern Sie Ihre Datenbank, falls Probleme auftreten.',
'Maintenance_Tool_upgrade_database_noti_text' => 'Machen Sie ein Backup, bevor Sie diese Funk&shy;tion nutzen.',
'Maintenance_Tool_del_alldev' => 'Alle Geräte löschen',
'Maintenance_Tool_del_alldev_text' => 'Machen Sie ein Backup, bevor Sie diese Funk&shy;tion nutzen. Der Vor&shy;gang kann ohne Back&shy;up nicht rück&shy;gängig gemacht werden. Alle Geräte werden in der Datenbank ge&shy;löscht.',
'Maintenance_Tool_del_alldev_noti' => 'Geräte löschen',
'Maintenance_Tool_del_alldev_noti_text' => 'Sind Sie sich sicher, dass Sie alle Geräte löschen wollen?',
'Maintenance_Tool_del_unknowndev' => 'Löschen der (unknown) Geräte',
'Maintenance_Tool_del_unknowndev_text' => 'Machen Sie ein Backup, bevor Sie diese Funk&shy;tion nutzen. Der Vor&shy;gang kann ohne Back&shy;up nicht rück&shy;gängig gemacht werden. Alle Gräte mit dem Namen (unknown) werden aus der Datenbank ge&shy;löscht.',
'Maintenance_Tool_del_unknowndev_noti' => 'Lösche (unknown) Geräte',
'Maintenance_Tool_del_unknowndev_noti_text' => 'Sind Sie sicher, dass Sie alle (unknown) Geräte aus der Datenbank löschen wollen?',
'Maintenance_Tool_del_allevents' => 'Alle Ereignisse löschen',
'Maintenance_Tool_del_allevents_text' => 'Machen Sie ein Backup, bevor Sie diese Funk&shy;tion nutzen. Der Vor&shy;gang kann ohne Back&shy;up nicht rück&shy;gängig gemacht werden. Alle Ereignisse werden aus der Datenbank ge&shy;löscht. Dies setzt auch die Anwesenheit zu&shy;rück. Es kann ab dem Moment zu ungültigen Sitzungen kommen. Ein Scan, während das betreffende Gerät "online" ist, sollte das Problem lösen.',
'Maintenance_Tool_del_allevents_noti' => 'Alle Ereignisse löschen',
'Maintenance_Tool_del_allevents_noti_text' => 'Sind Sie sicher, dass Sie alle Ereignisse aus der Datenbank löschen wollen. Dies setzt die Anwesenheit aller Geräte zurück.',
'Maintenance_Tool_backup' => 'DB Sicherung',
'Maintenance_Tool_backup_text' => 'Die Datenbank-Sicher&shy;ungen befinden sich im Datenbank-Ver&shy;zeich&shy;nis, gepackt als zip-Archive, benannt mit dem Erstellungs&shy;datum. Es gibt keine maximale Anzahl von Backups.',
'Maintenance_Tool_backup_noti' => 'DB Sicherung',
'Maintenance_Tool_backup_noti_text' => 'Sind Sie sicher, dass Sie die Datenbank jetzt sichern möchten. Prüfen Sie, dass gerade keine Scans stattfinden.',
'Maintenance_Tool_restore' => 'DB Wiederherstellung',
'Maintenance_Tool_restore_text' => 'Das neuste Backup kann über diese Funk&shy;tion wiederhergestellt werden. Ältere Sicher&shy;ungen müssen manuell wieder&shy;hergestellt wer&shy;den. Es empfiehlt sich eine Integritäts&shy;prüfung nach der Wieder&shy;her&shy;stellung zu machen, falls die Datenbank bei der Sicherung geöffnet war.',
'Maintenance_Tool_restore_noti' => 'DB Wiederherstellung',
'Maintenance_Tool_restore_noti_text' => 'Sind Sie sicher, dass Sie die Datenbank aus der neusten Sicherung wiederherstellen möchten? Prüfen Sie, dass gerade keine Scans stattfinden.',
'Maintenance_Tool_purgebackup' => 'Sicherungen aufräumen',
'Maintenance_Tool_purgebackup_text' => 'Es werden, bis auf die letzten 3 Backups, alle übrigen Backups gelöscht.',
'Maintenance_Tool_purgebackup_noti' => 'Sicherungen aufräumen',
'Maintenance_Tool_purgebackup_noti_text' => 'Sind Sie sicher, alle Backups, bis auf die letzten 3 löschen möchten?',
'Maintenance_Tool_del_ActHistory' => 'Löschen der Netzwerkaktivität',
'Maintenance_Tool_del_ActHistory_text' => 'Der Graph für die Netzwerkaktivität wird zurückgesetzt. Hierbei werden die Events nicht beeinflusst.',
'Maintenance_Tool_del_ActHistory_noti' => 'Netzwerkaktivität löschen',
'Maintenance_Tool_del_ActHistory_noti_text' => 'Sind Sie sicher, dass Sie die Netzwerkaktivität zurücksetzen möchten?',
//////////////////////////////////////////////////////////////////
// Maintenance Page
//////////////////////////////////////////////////////////////////
'BackDevices_Arpscan_disabled' => 'Automatischer Arp-Scan deaktiviert.',
'BackDevices_Arpscan_enabled' => 'Automatischer Arp-Scan aktiviert.',
'BackDevices_darkmode_disabled' => 'Heller Modus aktiviert.',
'BackDevices_darkmode_enabled' => 'Dunkler Modus aktiviert.',
'BackDevices_Restore_CopError' => 'Die originale Datenbank konnte nicht kopiert werden.',
'BackDevices_Restore_okay' => 'Die Wiederherstellung wurde erfolgreich ausgeführt.',
'BackDevices_Restore_Failed' => 'Die Wiederherstellung ist fehlgeschlagen. Stellen Sie das Backup manuell her.',
'BackDevices_Backup_CopError' => 'Die originale Datenbank konnte nicht gesichert werden.',
'BackDevices_Backup_okay' => 'Das Backup wurde erfolgreich beendet.',
'BackDevices_Backup_Failed' => 'Das Backup wurde teilweise ausgeführt. Das Archiv ist entweder leer oder nicht vorhanden.',
'BackDevices_DBTools_DelDev_a' => 'Gerät erfolgreich gelöscht.',
'BackDevices_DBTools_DelDev_b' => 'Geräte erfolgreich gelöscht.',
'BackDevices_DBTools_DelEvents' => 'Events erfolgreich gelöscht.',
'BackDevices_DBTools_DelEventsError' => 'Fehler beim Löschen der Ereignisse.',
'BackDevices_DBTools_DelDevError_a' => 'Fehler beim Löschen des Gerätes.',
'BackDevices_DBTools_DelDevError_b' => 'Fehler beim Löschen der Geräte.',
'BackDevices_DBTools_UpdDev' => 'Gerät erfolgreich aktualisiert.',
'BackDevices_DBTools_UpdDevError' => 'Fehler beim Aktualisieren des Gerätes.',
'BackDevices_DBTools_Upgrade' => 'Datenbank erfolgreich aktualisiert.',
'BackDevices_DBTools_UpgradeError' => 'Fehler beim Aktualisieren der Datenbank.',
'BackDevices_DBTools_Purge' => 'Die ältesten Backups wurden gelöscht.',
'BackDevices_DBTools_DelActHistory' => 'Die Anzeige der Netzwerkaktivität wurde zurückgesetzt.',
'BackDevices_DBTools_DelActHistoryError' => 'Fehler beim Zurücksetzen der Netzwerkaktivitätsanzeige.',
//////////////////////////////////////////////////////////////////
// Network Page
//////////////////////////////////////////////////////////////////
'Network_Title' => 'Netzwerkübersicht',
'Network_ManageDevices' => 'Geräte verwalten',
'Network_ManageAdd' => 'Gerät hinzufügen',
'Network_ManageEdit' => 'Gerät bearbeiten',
'Network_ManageDel' => 'Gerät löschen',
'Network_ManageAdd_Name' => 'Name des Gerätes',
'Network_ManageAdd_Name_text' => 'Name ohne Sonderzeichen',
'Network_ManageAdd_Type' => 'Gerätetyp',
'Network_ManageAdd_Type_text' => '-- Typ wählen --',
'Network_ManageAdd_Port' => 'Portanzahl',
'Network_ManageAdd_Port_text' => 'bei WLAN oder Powerline leer lassen',
'Network_ManageAdd_Submit' => 'Hinzufügen',
'Network_ManageEdit_ID' => 'Gerät zum Bearbeiten auswählen',
'Network_ManageEdit_ID_text' => '-- Gerät wählen --',
'Network_ManageEdit_Name' => 'Neuer Name',
'Network_ManageEdit_Name_text' => 'Name ohne Sonderzeichen',
'Network_ManageEdit_Type' => 'Neuer Typ',
'Network_ManageEdit_Type_text' => '-- Typ wählen --',
'Network_ManageEdit_Port' => 'Neue Portanzahl',
'Network_ManageEdit_Port_text' => 'bei WLAN oder Powerline leer lassen',
'Network_ManageEdit_Submit' => 'Speichern',
'Network_ManageDel_Name' => 'Gerät zum Löschen auswählen',
'Network_ManageDel_Name_text' => '-- Gerät wählen --',
'Network_ManageDel_Submit' => 'Löschen',
'Network_Table_State' => 'Status',
'Network_Table_Hostname' => 'Gerätename',
'Network_Table_IP' => 'IP',
//////////////////////////////////////////////////////////////////
// Help Page
//////////////////////////////////////////////////////////////////
'HelpFAQ_Title' => 'Hilfe / FAQ',
'HelpFAQ_Cat_General' => 'Allgemein',
'HelpFAQ_Cat_Detail' => 'Detailansicht',
'HelpFAQ_Cat_General_100_head' => 'Die Uhr oben rechts und die Zeiten der Events/Anwesenheit stimmen nicht (Zeitverschiebung).',
'HelpFAQ_Cat_General_100_text_a' => 'Auf deinem PC ist für die PHP Umgebung folgende Zeitzone voreingestellt:',
'HelpFAQ_Cat_General_100_text_b' => 'Sollte dies nicht die Zeitzone sein, in der du dich aufhältst, solltest du die Zeitzone in der PHP Konfigurationsdatei anpassen. Diese findest du in diesem Verzeichnis:',
'HelpFAQ_Cat_General_100_text_c' => 'Suche in dieser Datei nach dem Eintrag "date.timezone", entferne ggf. das führende ";" und trage die gewünschte Zeitzone ein. Eine Liste mit den unterstützten Zeitzonen findest du hier (<a href="https://www.php.net/manual/de/timezones.php" target="blank">Link</a>).',
'HelpFAQ_Cat_General_101_head' => 'Mein Netzwerk scheint langsamer zu werden, Streaming "ruckelt".',
'HelpFAQ_Cat_General_101_text' => 'Es kann durchaus sein, das leistungsschwache Geräte mit der Art und Weise, wie Pi.Alert neue Geräte im Netzwerk erkennt, an ihre Leistungsgrenzen kommen. Dies verstärkt sich noch einmal,
wenn diese Geräte per WLAN mit dem Netzwerk kommunizieren. Lösungen wären hier, wenn möglich ein Wechsel auf eine Kabelverbindung oder, falls das Geräte nur einen begrenzten Zeitraum genutzt
werden soll, den arp-Scan auf der Wartungsseite zu pausieren.',
'HelpFAQ_Cat_General_102_head' => 'Ich bekomme die Meldung, dass die Datenbank schreibgeschützt (read only) ist.',
'HelpFAQ_Cat_General_102_text' => 'Prüfe im Pi.Alert verzeichnis ob der Ordner der Datenbank (db) die richtigen Rechte zugewiesen bekommen hat:<br>
<span class="text-danger help_faq_code">drwxrwx--- 2 (dein Username) www-data</span><br>
Sollte die Berechtigung nicht stimmen, kannst du sie mit folgenden Befehlen im Terminal oder der Konsole wieder setzen:<br>
<span class="text-danger help_faq_code">
sudo chgrp -R www-data ~/pialert/db<br>
chmod -R 770 ~/pialert/db
</span><br>
Wenn die Datenbank danach noch immer schreibgeschützt ist, versuche eine erneute Installation, oder das Zuückspielen eines Datenbank-Backups über die Wartungsseite.',
'HelpFAQ_Cat_General_102docker_head' => '(🐳 Docker only) Database issues (AJAX errors, read-only, not found)',
'HelpFAQ_Cat_General_102docker_text' => 'Double-check you\'ve followed the <a href="https://github.com/jokob-sk/Pi.Alert/tree/main/dockerfiles">dockerfile readme (most up-to-date info)</a>. <br/> <br/> <ul data-sourcepos="49:4-52:146" dir="auto">
<li data-sourcepos="49:4-49:106">Download the <a href="https://github.com/jokob-sk/Pi.Alert/blob/main/db/pialert.db">original DB from GitHub</a>.</li>
<li data-sourcepos="50:4-50:195">Map the <code>pialert.db</code> file (<g-emoji class="g-emoji" alias="warning" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/26a0.png">⚠</g-emoji> not folder) from above to <code>/home/pi/pialert/db/pialert.db</code> (see <a href="https://github.com/jokob-sk/Pi.Alert/tree/main/dockerfiles#-examples">Examples</a> for details).</li>
<li data-sourcepos="51:4-51:161">If facing issues (AJAX errors, can\'t write to DB, etc,) make sure permissions are set correctly, alternatively check the logs under <code>/home/pi/pialert/front/log</code>.</li>
<li data-sourcepos="52:4-52:146">To solve permission issues you can also try to create a DB backup and then run a DB Restore via the <strong>Maintenance &gt; Backup/Restore</strong> section.</li>
<li data-sourcepos="53:4-53:228">If the database is in read-only mode you can solve this by setting the owner and group by executing the following command on the host system: <code>docker exec pialert chown -R www-data:www-data /home/pi/pialert/db/pialert.db</code>.</li>
</ul>',
'HelpFAQ_Cat_General_103_head' => 'Die Login-Seite erscheint nicht, auch nicht nach der Passwortänderung.',
'HelpFAQ_Cat_General_103_text' => 'Neben dem Passwort, muss in der Konfigurationsdatei <span class="text-danger help_faq_code">~/pialert/config/pialert.conf</span>
auch der Parameter <span class="text-danger help_faq_code">PIALERT_WEB_PROTECTION</span> auf <span class="text-danger help_faq_code">True</span> gesetzt sein.',
'HelpFAQ_Cat_Device_200_head' => 'Ich habe, mir nicht bekannte, Geräte in meiner Liste. Nach dem Löschen tauchen diese immer wieder auf.',
'HelpFAQ_Cat_Device_200_text' => 'Wenn du Pi-hole verwendest, beachte bitte, dass Pi.Alert Informationen von Pi-hole abruft. Pausiere Pi.Alert, gehe in Pi-hole auf die Settings-Seite und
lösche ggf. die betreffende DHCP-Lease. Anschließend schaue, ebenfalls in Pi-hole, unter Tools -> Network, ob sich dort die immer wiederkehrenden Hosts finden lassen.
Wenn ja, lösche diese dort ebenfalls. Nun kannst du Pi.Alert wieder starten. Jetzt sollte das Gerät/die Geräte nicht mehr auftauchen.',
'HelpFAQ_Cat_Detail_300_head' => 'Was bedeutet ',
'HelpFAQ_Cat_Detail_300_text_a' => 'meint ein Netzwerkgerät (welches den typ AP, Gateway, Firewall, Powerline, Switch, WLAN, PLC, Router,USB LAN Adapter, USB WIFI Adapter, or Internet eingestellt hat)',
'HelpFAQ_Cat_Detail_300_text_b' => 'bezeichnet die Anschlussnummer/Portnummer, an der das gerade bearbeitete Gerät mit diesem Netzwerkgerät verbunden ist.',
'HelpFAQ_Cat_Detail_301_head_a' => 'Wann wird nun gescannt? Bei ',
'HelpFAQ_Cat_Detail_301_head_b' => ' steht 1min aber der Graph zeigt 5min - Abstände an.',
'HelpFAQ_Cat_Detail_301_text' => 'Den zeitlichen Abstand zwischen den Scans legt der "Cronjob" fest, welcher standardmäßig auf 5min eingestellt ist. Die Benennung "1min" bezieht sich auf die zu erwartende Dauer des Scans.
Abhängig vor der Netzwerkkonfiguration kann diese Zeitangabe variieren. Um den Cronjob zu bearbeiten, kannst du im Terminal/der Konsole <span class="text-danger help_faq_code">crontab -e</span>
eingeben und den Intervall ändern.',
'HelpFAQ_Cat_Detail_302_head_a' => 'Was bedeutet ',
'HelpFAQ_Cat_Detail_302_head_b' => ' und warum kann ich das nicht auswählen?',
'HelpFAQ_Cat_Detail_302_text' => 'Einige moderne Geräte generieren aus Datenschutzgründen zufällige MAC-Adressen, die keinem Hersteller mehr zugeordnet werden können und welche sich mit jeder neuen Verbindung wieder ändern.
Pi.Alert erkennt, ob es sich um eine solche zufällige MAC-Adresse handelt und aktiviert diese "Feld" automatisch. Um das Verhalten abzustellen, muss du in deinem Endgerät schauen, wie du die
MAC-Adressen-Generierung deaktivierst.',
'HelpFAQ_Cat_Detail_303_head' => 'Was ist Nmap und wozu dient es?',
'HelpFAQ_Cat_Detail_303_text' => 'Nmap ist ein Netzwerkscanner mit vielfältigen Möglichkeiten.<br>
Wenn ein neues Gerät in deiner Liste auftaucht, hast du die Möglichkeit über den Nmap-Scan genauere Informationen über das Gerät zu erhalten.',
'HelpFAQ_Cat_Presence_400_head' => 'Geräte werden mit einer gelben Markierung und dem Hinweis "missing Event" angezeigt.',
'HelpFAQ_Cat_Presence_400_text' => 'Wenn dies geschieht hast du die Möglickeit, bei dem betreffenden Gerät (Detailsansicht) die Events zu löschen. Eine andere Möglichkeit wäre, das Gerät einzuschalten und zu warten, bis Pi.Alert mit dem nächsten
Scan das Gerät als "Online" erkennt und anschließend das Gerät einfach wieder ausschalten. Nun sollte Pi.Alert mit dem nächsten Scan den Zustand des Gerätes ordentlich in der Datenbank vermerken.',
'HelpFAQ_Cat_Presence_401_head' => 'Ein Gerät wird als Anwesend angezeigt, obwohl es "Offline" ist.',
'HelpFAQ_Cat_Presence_401_text' => 'Wenn dies geschieht hast du die Möglickeit, bei dem betreffenden Gerät (Detailsansicht) die Events zu löschen. Eine andere Möglichkeit wäre, das Gerät einzuschalten und zu warten, bis Pi.Alert mit dem nächsten
Scan das Gerät als "Online" erkennt und anschließend das Gerät einfach wieder ausschalten. Nun sollte Pi.Alert mit dem nächsten Scan den Zustand des Gerätes ordentlich in der Datenbank vermerken.',
'HelpFAQ_Cat_Network_600_head' => 'Was bringt mir diese Seite?',
'HelpFAQ_Cat_Network_600_text' => 'Diese Seite soll dir die Möglichkeit bieten, die Belegung deiner Netzwerkgeräte abzubilden. Dazu kannst du einen oder mehrere Switches, WLANs, Router, etc. erstellen,
sie ggf. mit einer Portanzahl versehen und bereits erkannte Geräte diesen zuordnen. Diese Zuordnung erfolgt in der Detailansicht, des zuzuordnenden Gerätes. So ist es dir möglich, schnell festzustellen
an welchem Port ein Host angeschlossen und ob er online ist.',
//////////////////////////////////////////////////////////////////
// Settings
//////////////////////////////////////////////////////////////////
);
?>

View File

@@ -0,0 +1,667 @@
{
"en_us": {
"About_Title": "Open Source Network Guard",
"About_Design" : "Designed for:",
"About_Exit" : "Sign out",
"Gen_Delete" : "Delete",
"Gen_DeleteAll" : "Delete all",
"Gen_Cancel" : "Cancel",
"Gen_Okay" : "Ok",
"Gen_Save" : "Save",
"Gen_Saved" : "Saved",
"Gen_Run" : "Run",
"Gen_Copy" : "Run",
"Gen_Action" : "Action",
"Gen_Purge" : "Purge",
"Gen_Backup" : "Run Backup",
"Gen_Restore" : "Run Restore",
"Gen_Switch" : "Switch",
"Gen_AreYouSure" : "Are you sure?",
"Gen_Upd" : "Updated successfully",
"Gen_Upd_Fail" : "Update failed",
"Gen_ReadDocs" : "Read more in the docs.",
"Gen_DataUpdatedUITakesTime" : "OK - It may take a while for the UI to update if a scan is runnig.",
"Gen_LockedDB" : "ERROR - DB might be locked - Check F12 Dev tools -> Console or try later.",
"Login_Box" : "Enter your password",
"Login_Remember" : "Remember",
"Login_Remember_small" : "(valid for 7 days)",
"Login_Submit" : "Log in",
"Login_Psw_run" : "To change the password run:",
"Login_Psw_new" : "new_password",
"Login_Psw_folder" : "in the config folder.",
"Login_Psw_alert" : "Password Alert!",
"Login_Psw-box" : "Password",
"Login_Toggle_Info" : "Password Information",
"Login_Toggle_Info_headline" : "Password Information",
"Login_Toggle_Alert_headline" : "Password Alert!",
"Login_Default_PWD" : "Default password \"123456\" is still active.",
"Navigation_Devices" : "Devices",
"Navigation_Presence" : "Presence",
"Navigation_Events" : "Events",
"Navigation_Report" : "Report",
"Navigation_Network" : "Network",
"Navigation_Plugins" : "Plugins",
"Navigation_Maintenance" : "Maintenance",
"Navigation_Settings" : "Settings",
"Navigation_SystemInfo" : "System info",
"Navigation_Flows" : "Flows",
"Navigation_HelpFAQ" : "Help / FAQ",
"Navigation_Donations" : "Donations",
"Device_Title" : "Devices",
"Device_Shortcut_AllDevices" : "All Devices",
"Device_Shortcut_Connected" : "Connected",
"Device_Shortcut_Favorites" : "Favorites",
"Device_Shortcut_NewDevices" : "New Devices",
"Device_Shortcut_DownAlerts" : "Down Alerts",
"Device_Shortcut_Archived" : "Archived",
"Device_Shortcut_Devices" : "Devices",
"Device_Shortcut_OnlineChart" : "Device presence over time",
"Device_TableHead_Name" : "Name",
"Device_TableHead_Owner" : "Owner",
"Device_TableHead_Type" : "Type",
"Device_TableHead_Icon" : "Icon",
"Device_TableHead_RowID" : "Row ID",
"Device_TableHead_Rowid" : "Row ID",
"Device_TableHead_Parent_MAC" : "Parent node MAC",
"Device_TableHead_Connected_Devices" : "Connected Devices",
"Device_TableHead_Location" : "Location",
"Device_TableHead_Vendor" : "Vendor",
"Device_TableHead_Port" : "Port",
"Device_TableHead_Favorite" : "Favorite",
"Device_TableHead_Group" : "Group",
"Device_TableHead_FirstSession" : "First Session",
"Device_TableHead_LastSession" : "Last Session",
"Device_TableHead_LastIP" : "Last IP",
"Device_TableHead_MAC" : "MAC",
"Device_TableHead_MAC_full" : "Full MAC",
"Device_TableHead_LastIPOrder" : "Last IP Order",
"Device_TableHead_Status" : "Status",
"Device_Searchbox" : "Search",
"Device_Tablelenght" : "Show _MENU_ entries",
"Device_Tablelenght_all" : "All",
"Device_Table_info" : "Showing _START_ to _END_ of _TOTAL_ entries",
"Device_Table_nav_next" : "Next",
"Device_Table_nav_prev" : "Previous",
"Presence_Title" : "Presence by Device",
"Presence_Loading" : "Loading...",
"Loading" : "Loading...",
"Presence_Shortcut_AllDevices" : "All Devices",
"Presence_Shortcut_Connected" : "Connected",
"Presence_Shortcut_Favorites" : "Favorites",
"Presence_Shortcut_NewDevices" : "New Devices",
"Presence_Shortcut_DownAlerts" : "Down Alerts",
"Presence_Shortcut_Archived" : "Archived",
"Presence_Shortcut_Devices" : "Devices",
"Presence_CallHead_Devices" : "Devices",
"Presence_CalHead_lang" : "en-us",
"Presence_CalHead_year" : "year",
"Presence_CalHead_quarter" : "quarter",
"Presence_CalHead_month" : "month",
"Presence_CalHead_week" : "week",
"Presence_CalHead_day" : "day",
"Events_Title" : "Events",
"Events_Loading" : "Loading...",
"Events_Periodselect_today" : "Today",
"Events_Periodselect_LastWeek" : "Last Week",
"Events_Periodselect_LastMonth" : "Last Month",
"Events_Periodselect_LastYear" : "Last Year",
"Events_Periodselect_All" : "All Info",
"Events_Shortcut_AllEvents" : "All Events",
"Events_Shortcut_Sessions" : "Sessions",
"Events_Shortcut_MissSessions" : "Missing Sessions",
"Events_Shortcut_VoidSessions" : "Voided Sessions",
"Events_Shortcut_NewDevices" : "New Devices",
"Events_Shortcut_DownAlerts" : "Down Alerts",
"Events_Shortcut_Events" : "Events",
"Events_TableHead_Order" : "Order",
"Events_TableHead_Device" : "Device",
"Events_TableHead_Owner" : "Owner",
"Events_TableHead_Date" : "Date",
"Events_TableHead_EventType" : "Event Type",
"Events_TableHead_Connection" : "Connection",
"Events_TableHead_Disconnection" : "Disconnection",
"Events_TableHead_Duration" : "Duration",
"Events_TableHead_DurationOrder" : "Duration Order",
"Events_TableHead_IP" : "IP",
"Events_TableHead_IPOrder" : "IP Order",
"Events_TableHead_AdditionalInfo" : "Additional Info",
"Events_Searchbox" : "Search",
"Events_Tablelenght" : "Show _MENU_ entries",
"Events_Tablelenght_all" : "All",
"Events_Table_info" : "Showing _START_ to _END_ of _TOTAL_ entries",
"Events_Table_nav_next" : "Next",
"Events_Table_nav_prev" : "Previous",
"DevDetail_Loading" : "Loading...",
"DevDetail_Periodselect_today" : "Today",
"DevDetail_Periodselect_LastWeek" : "Last Week",
"DevDetail_Periodselect_LastMonth" : "Last Month",
"DevDetail_Periodselect_LastYear" : "Last Year",
"DevDetail_Periodselect_All" : "All Info",
"DevDetail_Shortcut_CurrentStatus" : "Current Status",
"DevDetail_Shortcut_Sessions" : "Sessions",
"DevDetail_Shortcut_Presence" : "Presence",
"DevDetail_Shortcut_DownAlerts" : "Down Alerts",
"DevDetail_Tab_Details" : "<i class=\"fa fa-info-circle\"></i> Details",
"DevDetail_Tab_Tools": "<i class=\"fa fa-screwdriver-wrench\"></i> Tools",
"DevDetail_Tab_Tools_Internet_Info_Title": "Internet Info",
"DevDetail_Tab_Tools_Internet_Info_Description": "The Internet info tool displays information about the Internet connection, such as IP address, city, country, area code and time zone.",
"DevDetail_Tab_Tools_Internet_Info_Start": "Start Internet Info",
"DevDetail_Tab_Tools_Internet_Info_Error": "An error has occurred",
"DevDetail_Tab_Tools_Nslookup_Title": "Nslookup",
"DevDetail_Tab_Tools_Nslookup_Description": "Nslookup is a command-line tool used to query the Domain Name System (DNS). DNS is a system that translates domain names, such as www.google.com, into IP addresses , such as 172.217.0.142.",
"DevDetail_Tab_Tools_Nslookup_Start": "Start Nslookup",
"DevDetail_Tab_Tools_Nslookup_Error": "Error: IP address is not valid",
"DevDetail_Tab_Tools_Speedtest_Title" : "Online Speedtest",
"DevDetail_Tab_Tools_Speedtest_Description" : "The Speedtest tool measures the download speed, upload speed and latency of the internet connection.",
"DevDetail_Tab_Tools_Speedtest_Start" : "Start Speedtest",
"DevDetail_Tab_Tools_Traceroute_Title": "Traceroute",
"DevDetail_Tab_Tools_Traceroute_Description": "Traceroute is a network diagnostic command used to trace the path that data packets take from one host to another.<br><br>The command uses the Internet Control Message Protocol (ICMP) to send packets to intermediate nodes on the route, each intermediate node responds with an ICMP time-out (TTL timed out) packet.<br><br>The output of the traceroute command displays the IP address of each intermediate node on the route.<br><br>The traceroute command can be used to diagnose network problems, such as delays, packet loss, and blocked routes.<br><br>It can also be used to identify the location of an intermediate node on a network.",
"DevDetail_Tab_Tools_Traceroute_Start": "Start Traceroute",
"DevDetail_Tab_Tools_Traceroute_Error": "Error: IP address is not valid",
"DevDetail_Tab_Nmap" : "<i class=\"fa fa-ethernet\"></i> Nmap",
"DevDetail_Tab_Sessions" : "<i class=\"fa fa-list-ol\"></i> Sessions",
"DevDetail_Tab_Presence" : "<i class=\"fa fa-calendar\"></i> Presence",
"DevDetail_Tab_Events" : "<i class=\"fa fa-bolt\"></i> Events",
"DevDetail_Tab_EventsTableDate" : "Date",
"DevDetail_Tab_EventsTableEvent" : "Event type",
"DevDetail_Tab_EventsTableIP" : "IP",
"DevDetail_Tab_EventsTableInfo" : "Additional info",
"DevDetail_Tab_Plugins" : "<i class=\"fa fa-plug\"></i> Plugins",
"DevDetail_Tab_NmapTableHeader" : "Scheduled scan results",
"DevDetail_Tab_NmapTableText" : "Set up a schedule in <a href=\"/settings.php#NMAP_ACTIVE\">Settings</a>",
"DevDetail_Tab_NmapEmpty" : "No ports detected with Nmap on this device.",
"DevDetail_Tab_NmapTableIndex" : "Index",
"DevDetail_Tab_NmapTableTime" : "Time",
"DevDetail_Tab_NmapTablePort" : "Port",
"DevDetail_Tab_NmapTableState" : "State",
"DevDetail_Tab_NmapTableService" : "Service",
"DevDetail_Tab_NmapTableExtra" : "Extra",
"DevDetail_MainInfo_Title" : "<i class=\"fa fa-pencil\"></i> Main Info",
"DevDetail_MainInfo_mac" : "MAC",
"DevDetail_MainInfo_Name" : "Name",
"DevDetail_MainInfo_Owner" : "Owner",
"DevDetail_Owner_hover" : "Who owns this device. Free text field.",
"DevDetail_MainInfo_Type" : "Type",
"DevDetail_Type_hover" : "The Type of the device. If you select any of the pre-defined network devices (e.g.: AP, Firewall, Router, Switch...) they will show up in the Network tree configuration as possible parent network nodes.",
"DevDetail_Icon" : "Icon",
"DevDetail_Icon_Descr" : "Enter a font awesome icon name without the fa- prefix or with complete class, e.g.: fa fa-brands fa-apple.",
"DevDetail_MainInfo_Vendor" : "Vendor",
"DevDetail_Vendor_hover" : "Vendor should be auto-detected. You can overwrite or add your custom value.",
"DevDetail_MainInfo_Favorite" : "Favorite",
"DevDetail_MainInfo_Group" : "Group",
"DevDetail_MainInfo_Location" : "Location",
"DevDetail_MainInfo_Comments" : "Comments",
"DevDetail_MainInfo_Network_Title" : "<i class=\"fa fa-network-wired\"></i> Network",
"DevDetail_MainInfo_Network" : "<i class=\"fa fa-server\"></i> Node (MAC)",
"DevDetail_Network_Node_hover" : "Select the parent network device the current device is connected to to populate the Network tree.",
"DevDetail_GoToNetworkNode" : "Navigate to the Network page of the given node.",
"DevDetail_MainInfo_Network_Port" : "<i class=\"fa fa-ethernet\"></i> Port",
"DevDetail_Network_Port_hover" : "The port this device is connected to on the parent network device. If left empty a wifi icon is displayed in the Network tree.",
"DevDetail_SessionInfo_Title" : "<i class=\"fa fa-calendar\"></i> Session Info",
"DevDetail_SessionInfo_Status" : "Status",
"DevDetail_SessionInfo_FirstSession" : "First Session",
"DevDetail_SessionInfo_LastSession" : "Last Session",
"DevDetail_SessionInfo_LastIP" : "Last IP",
"DevDetail_SessionInfo_StaticIP" : "Static IP",
"DevDetail_EveandAl_Title" : "<i class=\"fa fa-bolt\"></i> Events & Alerts config",
"DevDetail_EveandAl_ScanCycle" : "Scan device",
"DevDetail_EveandAl_AlertAllEvents" : "Alert All Events",
"DevDetail_EveandAl_AlertDown" : "Alert Down",
"DevDetail_EveandAl_Skip" : "Skip repeated notifications for",
"DevDetail_EveandAl_NewDevice" : "New Device",
"DevDetail_EveandAl_Archived" : "Archived",
"DevDetail_EveandAl_RandomMAC" : "Random MAC",
"RandomMAC_hover" : "Autodetected - indicates if the device randomizes it's MAC address.",
"DevDetail_EveandAl_ScanCycle_a" : "Scan Device",
"DevDetail_EveandAl_ScanCycle_z" : "Don&#39;t Scan Device",
"DevDetail_button_Delete" : "Delete Device",
"DevDetail_button_DeleteEvents" : "Delete Events",
"DevDetail_button_DeleteEvents_Warning" : "Are you sure you want to delete all Events of this device?<br><br>(this will clear the <b>Events history</b> and the <b>Sessions</b> and might help with constant (persistent) notifications)",
"DevDetail_button_Reset" : "Reset Changes",
"DevDetail_button_Save" : "Save",
"DevDetail_button_OverwriteIcons" : "Overwrite Icons",
"DevDetail_button_OverwriteIcons_Tooltip" : "Overwrite icons of all devices with the same device type",
"DevDetail_button_OverwriteIcons_Warning" : "Are you sure you want to overwrite all icons of all devices with the same device type as the current device type?",
"DevDetail_SessionTable_Order" : "Order",
"DevDetail_SessionTable_Connection" : "Connection",
"DevDetail_SessionTable_Disconnection" : "Disconnection",
"DevDetail_SessionTable_Duration" : "Duration",
"DevDetail_SessionTable_IP" : "IP",
"DevDetail_SessionTable_Additionalinfo" : "Additional info",
"DevDetail_Events_CheckBox" : "Hide Connection Events",
"DevDetail_Nmap_buttonFast" : "Fast Scan",
"DevDetail_Nmap_buttonDefault" : "Default Scan",
"DevDetail_Nmap_buttonDetail" : "Detailed Scan",
"DevDetail_Nmap_buttonFast_text" : "Fast Scan: Scan fewer ports (100) than the default scan (a few seconds)",
"DevDetail_Nmap_buttonDefault_text" : "Default Scan: Nmap scans the top 1,000 ports for each scan protocol requested. This catches roughly 93% of the TCP ports and 49% of the UDP ports. (about 5 seconds)",
"DevDetail_Nmap_buttonDetail_text" : "Detailed Scan: Default scan with enabled OS detection, version detection, script scanning and traceroute (up to 30 seconds or more)",
"DevDetail_Nmap_buttonSkipDiscovery" : "Skip host discovery",
"DevDetail_Nmap_buttonSkipDiscovery_text" : "Skip host discovery (-Pn option): Default scan without host discovery",
"DevDetail_Nmap_resultsLink" : "You can leave this page after starting a scan. Results will be also available in the <code>pialert_front.log</code> file.",
"DevDetail_Nmap_Scans": "Manual Nmap Scans",
"DevDetail_Nmap_Scans_desc": "Here you can execute manual NMAP scans. You can also schedule regular automatic NMAP scans via the Services & Ports (NMAP) plugin. Head to <a href='/settings.php' target='_blank'>Settings</a> to find out more",
"BackDevDetail_Actions_Title_Run" : "Run action",
"BackDevDetail_Actions_Not_Registered" : "Action not registered: ",
"BackDevDetail_Actions_Ask_Run" : "Do you want to execute the action?",
"BackDevDetail_Tools_WOL_okay" : "The command was executed.",
"BackDevDetail_Tools_WOL_error" : "The command was NOT executed.",
"DevDetail_Tools_WOL_noti" : "Wake-on-LAN",
"DevDetail_Tools_WOL_noti_text" : "The Wake-on-LAN command is sent to the broadcast address. If the target is not in the subnet/vlan of Pi.Alert, the target device will not respond.",
"DevDetail_Tools_WOL" : "Send Wol command to ",
"DevDetail_WOL_Title" : "<i class=\"fa fa-power-off\"></i> Wake-on-LAN",
"DevDetail_Run_Actions_Title" : "<i class=\"fa fa-play\"></i> Run action on device",
"DevDetail_Run_Actions_Tooltip" : "Run an action on the current device from the dropdown list.",
"DevDetail_Copy_Device_Title" : "<i class=\"fa fa-copy\"></i> Copy details from device",
"DevDetail_Copy_Device_Tooltip" : "Copy details from device from the dropdown list. Everything on this page will be overwritten",
"BackDevDetail_Copy_Title" : "Copy details",
"BackDevDetail_Copy_Ask" : "Copy details from device from the dropdown list (Everything on this page will be overwritten)?",
"Maintenance_Title" : "Maintenance tools",
"Maintenance_version" : "App updates",
"Maintenance_new_version" : "🆕 A new version is available. Check out the <a href=\"https://github.com/jokob-sk/Pi.Alert/releases\" target=\"_blank\">release notes</a>.",
"Maintenance_current_version" : "You are up-to-date. Check out what <a href=\"https://github.com/jokob-sk/Pi.Alert/issues/138\" target=\"_blank\">I am working on</a>.",
"Maintenance_built_on" : "Built on",
"Maintenance_Running_Version" : "Installed version",
"Maintenance_database_path" : "Database-Path",
"Maintenance_database_size" : "Database-Size",
"Maintenance_database_rows" : "Table (Rows)",
"Maintenance_database_lastmod" : "Last Modification",
"Maintenance_database_backup" : "DB Backups",
"Maintenance_database_backup_found" : "backups were found",
"Maintenance_database_backup_total" : "total disk usage",
"Maintenance_arp_status" : "Scan Status",
"Maintenance_arp_status_off" : "is currently disabled",
"Maintenance_arp_status_on" : "scan(s) currently running",
"Maintenance_themeselector_lable" : "Select Skin",
"Maintenance_themeselector_empty" : "Choose a Skin",
"Maintenance_themeselector_apply" : "Apply",
"Maintenance_themeselector_text" : "The change takes place on the server side, so it affects all devices in use.",
"Maintenance_lang_selector_lable" : "Select Language",
"Maintenance_lang_selector_empty" : "Choose Language",
"Maintenance_lang_en_us" : "English (US)",
"Maintenance_lang_de_de" : "German (DE)",
"Maintenance_lang_es_es" : "Spanish (ES)",
"Maintenance_lang_selector_text" : "The change takes place on the client side, so it affects only the current browser.",
"Maintenance_lang_selector_apply" : "Apply",
"Maintenance_Status" : "Status",
"Maintenance_Tools_Tab_Settings" : "Settings",
"Maintenance_Tools_Tab_UISettings" : "UI Settings",
"Maintenance_Tools_Tab_Tools" : "Tools",
"Maintenance_Tools_Tab_BackupRestore" : "Backup / Restore",
"Maintenance_Tools_Tab_Logging" : "Logs",
"Maintenance_Tool_displayed_columns_text" : "Change the visibility and order of the columns in the <a href=\"devices.php\"><b> <i class=\"fa fa-laptop\"></i> Devices</b></a> page. (The drag-and-drop is a bit clunky, but for now workable, not a common task - will not fix for now (tried for <a href=\"https://github.com/jokob-sk/Pi.Alert/commit/94b32f0f7332879f5a7d2af05dafa2e5d5cfa5da\">like 3h</a> - happy for someone to submit a PR :) )).",
"Maintenance_Tool_order_columns_text" : "",
"Maintenance_Tool_darkmode" : "Toggle Modes (Dark/Light)",
"Maintenance_Tool_drag_me" : "Drag me to reorder columns.",
"Maintenance_Tool_check_visible" : "Uncheck to hide column.",
"Maintenance_Tool_darkmode_text" : "Toggle between dark mode and light mode. If the switch does not work properly, try to clear the browser cache. The change takes place on the server side, so it affects all devices in use.",
"Maintenance_Tool_darkmode_noti" : "Toggle Modes",
"Maintenance_Tool_darkmode_noti_text" : "After the theme switch, the page tries to reload itself to activate the change. If necessary, the cache must be cleared.",
"Maintenance_Tool_arpscansw" : "Toggle arp-Scan (on/off)",
"Maintenance_Tool_arpscansw_text" : "Switching the arp-scan on or off. When the scan has been switched off it remains off until it is activated again. Active scans are not canceled.",
"Maintenance_Tool_arpscansw_noti" : "Toggle arp-Scan on or off",
"Maintenance_Tool_arpscansw_noti_text" : "When the scan has been switched off it remains off until it is activated again.",
"Maintenance_Tool_del_empty_macs" : "Delete Devices with empty MACs",
"Maintenance_Tool_del_empty_macs_text" : "Before using this function, please make a backup. The deletion cannot be undone. All devices without MAC will be deleted from the database.",
"Maintenance_Tool_del_empty_macs_noti" : "Delete Devices",
"Maintenance_Tool_del_empty_macs_noti_text" : "Are you sure you want to delete all devices with empty MAC addresses?<br>(maybe you prefer to archive it)",
"Maintenance_Tool_upgrade_database_noti" : "Upgrade database",
"Maintenance_Tool_upgrade_database_text" : "This button will upgrade the database to enable the Network activity over last 12 hours chart. Please backup your database in case of issues.",
"Maintenance_Tool_upgrade_database_noti_text" : "Are you sure you want to upgrade the database?<br>(maybe you prefer to archive it)",
"Maintenance_Tool_del_alldev" : "Delete all Devices",
"Maintenance_Tool_del_alldev_text" : "Before using this function, please make a backup. The deletion cannot be undone. All devices will be deleted from the database.",
"Maintenance_Tool_del_alldev_noti" : "Delete Devices",
"Maintenance_Tool_del_alldev_noti_text" : "Are you sure you want to delete all devices?",
"Maintenance_Tool_del_unknowndev" : "Delete (unknown) Devices",
"Maintenance_Tool_del_unknowndev_text" : "Before using this function, please make a backup. The deletion cannot be undone. All devices named (unknown) will be deleted from the database.",
"Maintenance_Tool_del_unknowndev_noti" : "Delete (unknown) Devices",
"Maintenance_Tool_del_unknowndev_noti_text" : "Are you sure you want to delete all (unknown) devices?",
"Maintenance_Tool_del_allevents" : "Delete Events (Reset Presence)",
"Maintenance_Tool_del_allevents_text" : "Before using this function, please make a backup. The deletion cannot be undone. All events in the database will be deleted. At that moment the presence of all devices will be reset. This can lead to invalid sessions. This means that devices are displayed as \"present\" although they are offline. A scan while the device in question is online solves the problem.",
"Maintenance_Tool_del_allevents_noti" : "Delete Events",
"Maintenance_Tool_del_allevents_noti_text" : "Are you sure you want to delete all Events? This resets Presence of all Devices.",
"Maintenance_Tool_del_allevents30" : "Delete all Events older than 30 days",
"Maintenance_Tool_del_allevents30_text" : "Before using this function, please make a backup. The deletion cannot be undone. All events older than 30 days in the database will be deleted. At that moment the presence of all devices will be reset. This can lead to invalid sessions. This means that devices are displayed as \"present\" although they are offline. A scan while the device in question is online solves the problem.",
"Maintenance_Tool_del_allevents30_noti" : "Delete Events",
"Maintenance_Tool_del_allevents30_noti_text" : "Are you sure you want to delete all Events older than 30 days? This resets Presence of all Devices.",
"Maintenance_Tool_backup" : "DB Backup",
"Maintenance_Tool_backup_text" : "The database backups are located in the database directory as a zip-archive, named with the creation date. There is no maximum number of backups.",
"Maintenance_Tool_backup_noti" : "DB Backup",
"Maintenance_Tool_backup_noti_text" : "Are you sure you want to execute the the DB Backup? Be sure that no scan is currently running.",
"Maintenance_Tool_restore" : "DB Restore",
"Maintenance_Tool_restore_text" : "The latest backup can be restored via the button, but older backups can only be restored manually. After the restore, make an integrity check on the database for safety, in case the db was currently in write access when the backup was created.",
"Maintenance_Tool_restore_noti" : "DB Restore",
"Maintenance_Tool_restore_noti_text" : "Are you sure you want to execute the the DB Restore? Be sure that no scan is currently running.",
"Maintenance_Tool_purgebackup" : "Purge Backups",
"Maintenance_Tool_purgebackup_text" : "All other backups will be deleted except for the last 3 backups.",
"Maintenance_Tool_purgebackup_noti" : "Purge Backups",
"Maintenance_Tool_purgebackup_noti_text" : "Are you sure you want to delete all backups except the last 3?",
"Maintenance_Tool_del_ActHistory" : "Deleting the network activity",
"Maintenance_Tool_del_ActHistory_text" : "The network activity graph is reset. This does not affect the events.",
"Maintenance_Tool_del_ActHistory_noti" : "Delete network activity",
"Maintenance_Tool_del_ActHistory_noti_text" : "Are you sure you want to reset the network activity?",
"Maintenance_Tool_ExportCSV" : "CSV Export",
"Maintenance_Tool_ExportCSV_text" : "Generate a CSV (comma separated value) file containing the list of Devices including the Network relationships between Network Nodes and connected devices. You can also trigger this by acessing this URL <code>your pialert url/php/server/devices.php?action=ExportCSV</code>",
"Maintenance_Tool_ExportCSV_noti" : "CSV Export",
"Maintenance_Tool_ExportCSV_noti_text" : "Are you sure you want to generate a CSV file?",
"Maintenance_Tool_ImportCSV" : "CSV Import",
"Maintenance_Tool_ImportCSV_text" : "Before using this function, please make a backup. Import a CSV (comma separated value) file containing the list of Devices including the Network relationships between Network Nodes and connected devices. To do that place the CSV file named <b>devices.csv</b> into your <b>/config</b> folder.",
"Maintenance_Tool_ImportCSV_noti" : "CSV Import",
"Maintenance_Tool_ImportCSV_noti_text" : "Are you sure you want to import the CSV file? This will completely overwrite the devices in your database.",
"BackDevices_Arpscan_disabled" : "Arp-Scan Disabled",
"BackDevices_Arpscan_enabled" : "Arp-Scan Enabled",
"BackDevices_darkmode_disabled" : "Darkmode Disabled",
"BackDevices_darkmode_enabled" : "Darkmode Enabled",
"BackDevices_Restore_CopError" : "The original database could not be saved.",
"BackDevices_Restore_okay" : "Restore executed successfully.",
"BackDevices_Restore_Failed" : "Restore Failed. Please restore the backup manually.",
"BackDevices_Backup_CopError" : "The original database could not be saved.",
"BackDevices_Backup_okay" : "The backup executed successfully with the new archive",
"BackDevices_Backup_Failed" : "The backup executed partially successfully. The archive could not be created or is empty.",
"BackDevices_DBTools_DelDev_a" : "Device deleted successfully",
"BackDevices_DBTools_DelDev_b" : "Devices deleted successfully",
"BackDevices_DBTools_DelEvents" : "Events deleted successfully",
"BackDevices_DBTools_DelEventsError" : "Error deleting Events",
"BackDevices_DBTools_DelDevError_a" : "Error deleting Device",
"BackDevices_DBTools_DelDevError_b" : "Error deleting Devices",
"BackDevices_DBTools_UpdDev" : "Device updated successfully",
"BackDevices_DBTools_UpdDevError" : "Error updating device",
"BackDevices_DBTools_Upgrade" : "Database upgraded successfully",
"BackDevices_DBTools_UpgradeError" : "Database upgrade failed",
"BackDevices_DBTools_Purge" : "The oldest backups were deleted",
"BackDevices_DBTools_ImportCSV" : "The devices from the CSV file were imported successfully.",
"BackDevices_DBTools_ImportCSVError" : "The CSV file could not be imported. Make sure the format is correct.",
"BackDevices_DBTools_ImportCSVMissing" : "The CSV file could not be found under <b>/config/devices.csv.</b>",
"BackDevices_Device_UpdDevError" : "Error updating devices, try later. The database is probably locked due to an ongoing task.",
"Network_Title" : "Network overview",
"Network_ManageDevices" : "Manage Devices",
"Network_ManageAdd" : "Add Device",
"Network_ManageAssign" : "Assign",
"Network_ManageUnassign" : "Unassign",
"Network_ManageEdit" : "Update Device",
"Network_ManageDel" : "Delete Device",
"Network_ManageAdd_Name" : "Device Name",
"Network_ManageAdd_Name_text" : "Name without special characters",
"Network_ManageAdd_Type" : "Device Type",
"Network_ManageAdd_Type_text" : "-- Select Type --",
"Network_ManageAdd_Port" : "Port Count",
"Network_ManageAdd_Port_text" : "leave blank for wifi and powerline",
"Network_ManageAdd_Submit" : "Add Device",
"Network_ManageEdit_ID" : "Device to update",
"Network_ManageEdit_ID_text" : "-- Select Device for editing --",
"Network_ManageEdit_Name" : "New Device Name",
"Network_ManageEdit_Name_text" : "Name without special characters",
"Network_ManageEdit_Type" : "New Device Type",
"Network_ManageEdit_Type_text" : "-- Select Type --",
"Network_ManageEdit_Port" : " New Port Count",
"Network_ManageEdit_Port_text" : "leave blank for wifi and powerline",
"Network_ManageEdit_Submit" : "Save Changes",
"Network_ManageDel_Name" : "Device to delete",
"Network_ManageDel_Name_text" : "-- Select Device --",
"Network_ManageDel_Submit" : "Delete",
"Network_Table_State" : "State",
"Network_Table_Hostname" : "Hostname",
"Network_Table_IP" : "IP",
"Network_UnassignedDevices" : "Unassigned devices",
"Network_Assign" : "Connect to the above <i class=\"fa fa-server\"></i> Network node",
"Network_Connected" : "Connected devices",
"Network_ManageLeaf" : "Manage assignment",
"Network_Node" : "Network node",
"Network_Node_Name" : "Node name",
"Network_Parent" : "Parent network device",
"Network_Cant_Assign" : "Can't assign the root Internet node as a child leaf node.",
"Network_NoAssignedDevices" : "This network node does not have any assigned devices (leaf nodes). Assign one from bellow or go to the <b><i class=\"fa fa-info-circle\"></i> Details</b> tab of any device in <a href=\"devices.php\"><b> <i class=\"fa fa-laptop\"></i> Devices</b></a>, and assign it to a network <b><i class=\"fa fa-server\"></i> Node (MAC)</b> and <b><i class=\"fa fa-ethernet\"></i> Port</b> there.",
"HelpFAQ_Title" : "Help / FAQ",
"HelpFAQ_Cat_General" : "General",
"HelpFAQ_Cat_Detail" : "Details",
"HelpFAQ_Cat_General_100_head" : "The clock on the top right and the times of the events/presence are not correct (time difference).",
"HelpFAQ_Cat_General_100_text_a" : "On your PC the following time zone is set for the PHP environment:",
"HelpFAQ_Cat_General_100_text_b" : "If this is not the timezone you are in, you should change the timezone in the PHP configuration file. You can find it in this directory:",
"HelpFAQ_Cat_General_100_text_c" : "Search in this file for the entry \"date.timezone\", remove the leading \";\" if necessary and enter the desired timezone. A list with the supported timezones can be found here (<a href=\"https://www.php.net/manual/en/timezones.php\" target=\"blank\">Link</a>)",
"HelpFAQ_Cat_General_101_head" : "My network seems to slow down, streaming \"freezes\".",
"HelpFAQ_Cat_General_101_text" : "It may well be that low-powered devices reach their performance limits with the way Pi.Alert detects new devices on the network. This is amplified even more, if these devices communicate with the network via WLAN. Solutions here would be to switch to a wired connection if possible or, if the device is only to be used for a limited period of time, to use the arp scan. pause the arp scan on the maintenance page.",
"HelpFAQ_Cat_General_102_head" : "I get the message that the database is read only.",
"HelpFAQ_Cat_General_102_text" : "Check in the Pi.Alert directory if the database folder (db) has been assigned the correct permissions:<br> <span class=\"text-danger help_faq_code\">drwxrwx--- 2 (your username) www-data</span><br> If the permission is not correct, you can set it again with the following commands in the terminal or the console:<br> <span class=\"text-danger help_faq_code\">sudo chgrp -R www-data ~/pialert/db<br>chmod -R 770 ~/pialert/db</span><br>If the database is still read-only, try reinstalling or restoring a database backup from the maintenance page.",
"HelpFAQ_Cat_General_102docker_head" : "Database issues (AJAX errors, read-only, not found)",
"HelpFAQ_Cat_General_102docker_text" : "Double-check you have followed the <a target=\"_blank\" href=\"https://github.com/jokob-sk/Pi.Alert/tree/main/dockerfiles\">dockerfile readme (most up-to-date info)</a>. <br/> <br/> <ul data-sourcepos=\"49:4-52:146\" dir=\"auto\"><li data-sourcepos=\"49:4-49:106\">Download the <a target=\"_blank\" href=\"https://github.com/jokob-sk/Pi.Alert/blob/main/db/pialert.db\">original DB from GitHub</a>.</li><li data-sourcepos=\"50:4-50:195\">Map the <code>pialert.db</code> file (<g-emoji class=\"g-emoji\" alias=\"warning\" fallback-src=\"https://github.githubassets.com/images/icons/emoji/unicode/26a0.png\">⚠</g-emoji> not folder) from above to <code>/home/pi/pialert/db/pialert.db</code> (see <a target=\"_blank\" href=\"https://github.com/jokob-sk/Pi.Alert/tree/main/dockerfiles#-examples\">Examples</a> for details).</li><li data-sourcepos=\"51:4-51:161\">If facing issues (AJAX errors, can not write to DB, etc,) make sure permissions are set correctly, alternatively check the logs under <code>/home/pi/pialert/front/log</code>.</li><li data-sourcepos=\"52:4-52:146\">To solve permission issues you can also try to create a DB backup and then run a DB Restore via the <strong>Maintenance &gt; Backup/Restore</strong> section.</li><li data-sourcepos=\"53:4-53:228\">If the database is in read-only mode you can solve this by setting the owner and group by executing the following command on the host system: <code>docker exec pialert chown -R www-data:www-data /home/pi/pialert/db/pialert.db</code>.</li></ul>",
"HelpFAQ_Cat_General_103_head" : "The login page does not appear, even after changing the password.",
"HelpFAQ_Cat_General_103_text" : "In addition to the password, the configuration file must contain <span class=\"text-danger help_faq_code\">~/pialert/config/pialert.conf</span> also the parameter <span class=\"text-danger help_faq_code\">PIALERT_WEB_PROTECTION</span> must set to <span class=\"text-danger help_faq_code\">True</span>.",
"HelpFAQ_Cat_Device_200_head" : "I have devices in my list that I do not know about. After deleting them, they always reappear.",
"HelpFAQ_Cat_Device_200_text" : "If you use Pi-hole, please note that Pi.Alert retrieves information from Pi-hole. Pause Pi.Alert, go to the settings page in Pi-hole and delete the DHCP lease if necessary. Then, also in Pi-hole, look under Tools -> Network to see if you can find the recurring hosts there. If yes, delete them there as well. Now you can start Pi.Alert again. Now the device(s) should not show up anymore.",
"HelpFAQ_Cat_Detail_300_head" : "What means ",
"HelpFAQ_Cat_Detail_300_text_a" : "means a network device (a device of the type AP, Gateway, Firewall, Hypervisor, Powerline, Switch, WLAN, PLC, Router,USB LAN Adapter, USB WIFI Adapter, or Internet). Custom types can be added via the <code>NETWORK_DEVICE_TYPES</code> setting.",
"HelpFAQ_Cat_Detail_300_text_b" : "designates the port number where the currently edited device is connected to this network device. Read <a target=\"_blank\" href=\"https://github.com/jokob-sk/Pi.Alert/blob/main/docs/NETWORK_TREE.md\">this guide</a> for more info.",
"HelpFAQ_Cat_Detail_301_head_a" : "When is scanning now? At ",
"HelpFAQ_Cat_Detail_301_head_b" : " says 1min but the graph shows 5min intervals.",
"HelpFAQ_Cat_Detail_301_text" : "The time interval between the scans is defined by the \"Cronjob\", which is set to 5min by default. The designation \"1min\" refers to the expected duration of the scan. Depending on the network configuration, this time may vary. To edit the cronjob, you can use the following command in the terminal/console <span class=\"text-danger help_faq_code\">crontab -e</span>and change the interval.",
"HelpFAQ_Cat_Detail_302_head_a" : "What means ",
"HelpFAQ_Cat_Detail_302_head_b" : "and why can not I select that?",
"HelpFAQ_Cat_Detail_302_text" : "Some modern devices generate random MAC addresses for privacy reasons, which can no longer be associated with any manufacturer and which change again with each new connection. Pi.Alert detects if it is such a random MAC address and activates this \"field\" automatically. To disable this behavior you have to look in your device how to disable MAC address randomization.",
"HelpFAQ_Cat_Detail_303_head" : "What is Nmap and what is it for?",
"HelpFAQ_Cat_Detail_303_text" : "Nmap is a network scanner with multiple capabilities.<br>When a new device appears in your list, you have the possibility to get more detailed information about the device via the Nmap scan.",
"HelpFAQ_Cat_Presence_400_head" : "Devices are displayed with a yellow marker and the note \"missing event\".",
"HelpFAQ_Cat_Presence_400_text" : "If this happens, you have the option to delete the events on the device in question (details view). Another possibility would be to switch on the device and wait until Pi.Alert detects the device as \"online\" with the next scan and then simply turn the device off again. Now Pi.Alert should properly note the state of the device in the database with the next scan.",
"HelpFAQ_Cat_Presence_401_head" : "A device is displayed as present although it is \"Offline\".",
"HelpFAQ_Cat_Presence_401_text" : "If this happens, you have the possibility to delete the events for the device in question (details view). Another possibility would be to switch on the device and wait until Pi.Alert recognizes the device as \"online\" with the next scan and then simply switch the device off again. Now Pi.Alert should properly note the state of the device in the database with the next scan.",
"HelpFAQ_Cat_Network_600_head" : "What is this page for?",
"HelpFAQ_Cat_Network_600_text" : "This page should offer you the possibility to map the assignment of your network devices. For this purpose, you can create one or more switches, WLANs, routers, etc., provide them with a port number if necessary and assign already detected devices to them. This assignment is done in the detailed view of the device to be assigned. So it is possible for you to quickly determine to which port a host is connected and if it is online. Read <a target=\"_blank\" href=\"https://github.com/jokob-sk/Pi.Alert/blob/main/docs/NETWORK_TREE.md\">this guide</a> for more info.",
"HelpFAQ_Cat_Network_601_head" : "Are there other docs?",
"HelpFAQ_Cat_Network_601_text" : "Yes, there are! Check <a target=\"_blank\" href=\"https://github.com/jokob-sk/Pi.Alert/blob/main/docs/\">all docs</a> for more info.",
"test_event_tooltip" : "Save your changes at first before you test your settings.",
"test_event_icon" : "fa-vial-circle-check",
"run_event_tooltip" : "Enable the setting and save your changes at first before you run it.",
"run_event_icon" : "fa-play",
"general_event_title" : "Executing an ad-hoc event",
"general_event_description" : " The event you nove triggered might take a while until background processes finish. The execution ended once you see <code>finished</code> below. Check the <a href='/maintenance.php#tab_Logging'>error log</a> if you didn not get the expected result. <br/> <br/> Status: ",
"Plugins_Unprocessed_Events" : "Unprocessed Events",
"Plugins_Objects" : "Plugin Objects",
"Plugins_DeleteAll" : "Delete all (filters are ignored)",
"Plugins_History" : "Events History",
"Plugins_Filters_Mac" : "Mac Filter",
"Plugins_Out_of" : "out of",
"Plugins_no_control" : "No form control was found to render this value.",
"Settings_Metadata_Toggle" : "Show/hide metadata for the given setting.",
"settings_missing" : "Not all settings loaded, refresh the page! This is probably caused by a high load on the database or app startup sequence.",
"settings_missing_block" : "You can not save your settings without specifying all setting keys. Refresh the page. This is probably caused by a high load on the database.",
"settings_old" : "Importing settings and re-initializing...",
"settings_saved" : "<br/>Settings saved to the <code>pialert.conf</code> file.<br/><br/>A time-stamped backup of the previous file created. <br/><br/> Reloading...<br/>",
"settings_imported" : "Last time settings were imported from the pialert.conf file:",
"settings_expand_all" : "Expand all",
"Setting_Override" : "Override value",
"Setting_Override_Description" : "Enabling this option will override an App supplied default value with the value specified above.",
"General_display_name" : "General",
"General_icon" : "<i class=\"fa fa-gears\"></i>",
"SCAN_SUBNETS_description" : "Arp-scan is a command-line tool that uses the ARP protocol to discover and fingerprint IP hosts on the local network. An alternative to ARP scan is to enable the <a onclick=\"toggleAllSettings()\" href=\"#PIHOLE_RUN\"><code>PIHOLE_RUN</code>PiHole integration settings</a>. The arp-scan time itself depends on the number of IP addresses to check so set this up carefully with the appropriate network mask and interface. Check the <a href=\"https://github.com/jokob-sk/Pi.Alert/blob/main/docs/SUBNETS.md\" target=\"_blank\">subnets documentation</a> for help on setting up VLANs, what VLANs are supported, or how to figure out the network mask and your interface.",
"LOG_LEVEL_name" : "Print additional logging",
"LOG_LEVEL_description" : "This setting will enable more verbose logging. Useful for debugging events writing into the database.",
"TIMEZONE_name" : "Time zone",
"TIMEZONE_description" : "Time zone to display stats correctly. Find your time zone <a target=\"_blank\" href=\"https://en.wikipedia.org/wiki/List_of_tz_database_time_zones\" rel=\"nofollow\">here</a>.",
"ENABLE_PLUGINS_name" : "Enable Plugins",
"ENABLE_PLUGINS_description" : "Enables the <a target=\"_blank\" href=\"https://github.com/jokob-sk/Pi.Alert/tree/main/front/plugins\">plugins</a> functionality. Loading plugins requires more hardware resources so you might want to disable them on low-powered system.",
"PLUGINS_KEEP_HIST_name" : "Plugins History",
"PLUGINS_KEEP_HIST_description" : "How many entries of Plugins History scan results should be kept (per Plugin, not device specific).",
"PIALERT_WEB_PROTECTION_name" : "Enable login",
"PIALERT_WEB_PROTECTION_description" : "When enabled a login dialog is displayed. Read below carefully if you get locked out of your instance.",
"PIALERT_WEB_PASSWORD_name" : "Login password",
"PIALERT_WEB_PASSWORD_description" : "The default password is <code>123456</code>. To change the password run <code>/home/pi/pialert/back/pialert-cli</code> in the container or use the <a onclick=\"toggleAllSettings()\" href=\"#SETPWD_RUN\"><code>SETPWD_RUN</code> Set password plugin</a>.",
"INCLUDED_SECTIONS_name" : "Notify on",
"INCLUDED_SECTIONS_description" : "Specifies which events trigger notifications. Remove the event type(s) you do not want to get notified on. This setting overrides device-specific settings in the UI. (<code>CTRL + Click</code> to select/deselect).",
"DAYS_TO_KEEP_EVENTS_name" : "Delete events older than",
"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.",
"HRS_TO_KEEP_NEWDEV_name" : "Keep new devices for",
"HRS_TO_KEEP_NEWDEV_description" : "This is a maintenance setting. If enabled (<code>0</code> is disabled), devices marked as <b>New Device</b> will be deleted if their <b>First Session</b> time was older than the specified hours in this setting. Use this setting if you want to auto-delete <b>New Devices</b> after <code>X</code> hours.",
"REPORT_DASHBOARD_URL_name" : "Pi.Alert URL",
"REPORT_DASHBOARD_URL_description" : "This URL is used as the base for generating links in the emails. Enter full URL starting with <code>http://</code> including the port number (no trailig slash <code>/</code>).",
"DIG_GET_IP_ARG_name" : "Internet IP discovery",
"DIG_GET_IP_ARG_description" : "Change the <a href=\"https://linux.die.net/man/1/dig\" target=\"_blank\">dig utility</a> arguments if you have issues resolving your Internet IP. Arguments are added at the end of the following command: <code>dig +short </code>.",
"NETWORK_DEVICE_TYPES_name" : "Network device types",
"NETWORK_DEVICE_TYPES_description" : "Which device types are allowed to be used as network devices in the Network view. The device type has to match exactly the <code>Type</code> setting on a specific device in Device details. Do not remove existing types, only add new ones.",
"UI_LANG_name" : "UI Language",
"UI_LANG_description" : "Select the preferred UI language.",
"UI_PRESENCE_name" : "Show in presence chart",
"UI_PRESENCE_description" : "Select what statuses should be shown in the <b>Device presence over time</b> chart in the <a href=\"/devices.php\" target=\"_blank\">Devices</a> page. (<code>CTRL + Click</code> to select/deselect)",
"Email_display_name" : "Email",
"Email_icon" : "<i class=\"fa fa-at\"></i>",
"REPORT_MAIL_name" : "Enable email",
"REPORT_MAIL_description" : "If enabled an email is sent out with a list of changes you nove subscribed to. Please also fill out all remaining settings related to the SMTP setup below. If facing issues, set <code>LOG_LEVEL</code> to <code>debug</code> and check the <a href=\"/maintenance.php#tab_Logging\">error log</a>.",
"SMTP_SERVER_name" : "SMTP server URL",
"SMTP_SERVER_description" : "The SMTP server host URL. For example <code>smtp-relay.sendinblue.com</code>. To use Gmail as an SMTP server <a target=\"_blank\" href=\"https://github.com/jokob-sk/Pi.Alert/blob/main/docs/SMTP.md\">follow this guide</a>",
"SMTP_PORT_name" : "SMTP server PORT",
"SMTP_PORT_description" : "Port number used for the SMTP connection. Set to <code>0</code> if you do not want to use a port when connecting to the SMTP server.",
"SMTP_SKIP_LOGIN_name" : "Skip authentication",
"SMTP_SKIP_LOGIN_description" : "Do not use authentication when connecting to the SMTP server.",
"SMTP_USER_name" : "SMTP user",
"SMTP_USER_description" : "The user name used to login into the SMTP server (sometimes a full email address).",
"SMTP_PASS_name" : "SMTP password",
"SMTP_PASS_description" : "The SMTP server password. ",
"SMTP_SKIP_TLS_name" : "Do not use TLS",
"SMTP_SKIP_TLS_description" : "Disable TLS when connecting to your SMTP server.",
"SMTP_FORCE_SSL_name" : "Force SSL",
"SMTP_FORCE_SSL_description" : "Force SSL when connecting to your SMTP server.",
"SYSTEM_TITLE" : "System Information",
"REPORT_TO_name" : "Send email to",
"REPORT_TO_description" : "Email address to which the notification will be send to.",
"REPORT_FROM_name" : "Email subject",
"REPORT_FROM_description" : "Notification email subject line. Some SMTP servers need this to be an email.",
"Webhooks_display_name" : "Webhooks",
"Webhooks_icon" : "<i class=\"fa fa-circle-nodes\"></i>",
"REPORT_WEBHOOK_name" : "Enable Webhooks",
"REPORT_WEBHOOK_description" : "Enable webhooks for notifications. Webhooks help you to connect to a lot of 3rd party tools, such as IFTTT, Zapier or <a href=\"https://n8n.io/\" target=\"_blank\">n8n</a> to name a few. Check out this simple <a href=\"https://github.com/jokob-sk/Pi.Alert/blob/main/docs/WEBHOOK_N8N.md\" target=\"_blank\">n8n guide here</a> to get started. If enabled, configure related settings below.",
"WEBHOOK_URL_name" : "Target URL",
"WEBHOOK_URL_description" : "Target URL starting with <code>http://</code> or <code>https://</code>.",
"WEBHOOK_PAYLOAD_name" : "Payload type",
"WEBHOOK_PAYLOAD_description" : "The Webhook payload data format for the <code>body</code> > <code>attachments</code> > <code>text</code> attribute in the payload json. See an example of the payload <a target=\"_blank\" href=\"https://github.com/jokob-sk/Pi.Alert/blob/main/back/webhook_json_sample.json\">here</a>. (e.g.: for discord use <code>text</code>)",
"WEBHOOK_REQUEST_METHOD_name" : "Request method",
"WEBHOOK_REQUEST_METHOD_description" : "The HTTP request method to be used for the webhook call.",
"WEBHOOK_SIZE_name" : "Max payload size",
"WEBHOOK_SIZE_description" : "The maximum size of the webhook payload as number of characters in the passed string. If above limit, it will be truncated and a <code>(text was truncated)</code> message is appended.",
"WEBHOOK_SECRET_name": "HMAC Secret",
"WEBHOOK_SECRET_description": "When set, use this secret to generate the SHA256-HMAC hex digest value of the request body, which will be passed as the <code>X-Webhook-Signature</code> header to the request. You can find more informations <a target=\"_blank\" href=\"https://github.com/jokob-sk/Pi.Alert/blob/main/docs/WEBHOOK_SECRET.md\">here</a>.",
"Apprise_display_name" : "Apprise",
"Apprise_icon" : "<i class=\"fa fa-bullhorn\"></i>",
"REPORT_APPRISE_name" : "Enable Apprise",
"REPORT_APPRISE_description" : "Enable sending notifications via <a target=\"_blank\" href=\"https://hub.docker.com/r/caronc/apprise\">Apprise</a>.",
"APPRISE_HOST_name" : "Apprise host URL",
"APPRISE_HOST_description" : "Apprise host URL starting with <code>http://</code> or <code>https://</code>. (do not forget to include <code>/notify</code> at the end)",
"APPRISE_URL_name" : "Apprise notification URL",
"APPRISE_URL_description" : "Apprise notification target URL. For example for Telegram it would be <code>tgram://{bot_token}/{chat_id}</code>.",
"APPRISE_SIZE_name" : "Max payload size",
"APPRISE_SIZE_description" : "The maximum size of the apprise payload as number of characters in the passed string. If above limit, it will be truncated and a <code>(text was truncated)</code> message is appended.",
"NTFY_display_name" : "NTFY",
"NTFY_icon" : "<i class=\"fa fa-terminal\"></i>",
"REPORT_NTFY_name" : "Enable NTFY",
"REPORT_NTFY_description" : "Enable sending notifications via <a target=\"_blank\" href=\"https://ntfy.sh/\">NTFY</a>.",
"NTFY_HOST_name" : "NTFY host URL",
"NTFY_HOST_description" : "NTFY host URL starting with <code>http://</code> or <code>https://</code>. You can use the hosted instance on <a target=\"_blank\" href=\"https://ntfy.sh/\">https://ntfy.sh</a> by simply entering <code>https://ntfy.sh</code>.",
"NTFY_TOPIC_name" : "NTFY topic",
"NTFY_TOPIC_description" : "Your secret topic.",
"NTFY_USER_name" : "NTFY user",
"NTFY_USER_description" : "Enter user if you need (host) an instance with enabled authetication.",
"NTFY_PASSWORD_name" : "NTFY password",
"NTFY_PASSWORD_description" : "Enter password if you need (host) an instance with enabled authetication.",
"PUSHSAFER_display_name" : "Pushsafer",
"PUSHSAFER_icon" : "<i class=\"fa fa-bell\"></i>",
"REPORT_PUSHSAFER_name" : "Enable Pushsafer",
"REPORT_PUSHSAFER_description" : "Enable sending notifications via <a target=\"_blank\" href=\"https://www.pushsafer.com/\">Pushsafer</a>.",
"PUSHSAFER_TOKEN_name" : "Pushsafer token",
"PUSHSAFER_TOKEN_description" : "Your secret Pushsafer API key (token).",
"APPRISE_PAYLOAD_name" : "Payload type",
"APPRISE_PAYLOAD_description" : "Select the payoad type sent to Apprise. For example <code>html</code> works well with emails, <code>text</code> with chat apps, such as Telegram.",
"MQTT_display_name" : "MQTT",
"MQTT_icon" : "<i class=\"fa fa-square-rss\"></i>",
"REPORT_TITLE" : "Report",
"REPORT_ERROR" : "The page you are looking for is temporarily unavailable, please try again after a few seconds",
"REPORT_MQTT_name" : "Enable MQTT",
"REPORT_MQTT_description" : "Enable sending notifications via <a target=\"_blank\" href=\"https://www.home-assistant.io/integrations/mqtt/\">MQTT</a> to your Home Assistance instance.",
"MQTT_BROKER_name" : "MQTT broker URL",
"MQTT_BROKER_description" : "MQTT host URL (do not include <code>http://</code> or <code>https://</code>).",
"MQTT_PORT_name" : "MQTT broker port",
"MQTT_PORT_description" : "Port number where the broker is listening. Usually <code>1883</code>.",
"MQTT_USER_name" : "MQTT user",
"MQTT_USER_description" : "User name used to login into your MQTT broker instance.",
"MQTT_PASSWORD_name" : "MQTT password",
"MQTT_PASSWORD_description" : "Password used to login into your MQTT broker instance.",
"MQTT_QOS_name" : "MQTT Quality of Service",
"MQTT_QOS_description" : "Quality of service setting for MQTT message sending. <code>0</code> - Low quality to <code>2</code> - High quality. The higher the quality the longer the delay.",
"MQTT_DELAY_SEC_name" : "MQTT delay per device",
"MQTT_DELAY_SEC_description" : "A little hack - delay adding to the queue in case the process is restarted and previous publish processes aborted (it takes ~<code>2</code>s to update a sensor config on the broker). Tested with <code>2</code>-<code>3</code> seconds of delay. This delay is only applied when devices are created (during the first notification loop). It doesn not affect subsequent scans or notifications.",
"API_display_name" : "API",
"API_icon" : "<i class=\"fa fa-arrow-down-up-across-line\"></i>",
"API_CUSTOM_SQL_name" : "Custom endpoint",
"API_CUSTOM_SQL_description" : "You can specify a custom SQL query which will generate a JSON file and then expose it via the <a href=\"/api/table_custom_endpoint.json\" target=\"_blank\"><code>table_custom_endpoint.json</code> file endpoint</a>.",
"Speedtest_Results" : "Speedtest Results",
"Systeminfo_General" : "General",
"Systeminfo_General_Full_Date": "Full Date:",
"Systeminfo_General_Date": "Date:",
"Systeminfo_General_Date2": "Date2:",
"Systeminfo_General_TimeZone": "Timezone:",
"Systeminfo_This_Client" : "This Client",
"Systeminfo_Client_User_Agent": "User Agent:",
"Systeminfo_Client_Resolution": "Browser Resolution:",
"Systeminfo_CPU" : "CPU",
"Systeminfo_CPU_Vendor": "CPU Vendor:",
"Systeminfo_CPU_Name": "CPU Name:",
"Systeminfo_CPU_Cores": "CPU Cores:",
"Systeminfo_CPU_Speed": "CPU Speed:",
"Systeminfo_CPU_Temp": "CPU Temp:",
"Systeminfo_Memory" : "Memory",
"Systeminfo_Memory_Usage": "Memory usage:",
"Systeminfo_Memory_Usage_Percent": "Memory %:",
"Systeminfo_Memory_Total_Memory": "Total memory:",
"Systeminfo_Motherboard" : "Motherboard",
"Systeminfo_Motherboard_BIOS": "BIOS:",
"Systeminfo_Motherboard_BIOS_Date": "BIOS date:",
"Systeminfo_Motherboard_BIOS_Vendor": "BIOS vendor:",
"Systeminfo_Motherboard_Manufactured": "Manufactured by:",
"Systeminfo_Motherboard_Name": "Name:",
"Systeminfo_Motherboard_Revision": "Revision:",
"Systeminfo_Network" : "Network",
"Systeminfo_Network_Accept_Encoding": "Accept encoding:",
"Systeminfo_Network_Accept_Language": "Accept language:",
"Systeminfo_Network_Connection_Port": "Connection port:",
"Systeminfo_Network_HTTP_Host": "HTTP host:",
"Systeminfo_Network_HTTP_Referer": "HTTP referer:",
"Systeminfo_Network_HTTP_Referer_String": "No HTTP referer",
"Systeminfo_Network_IP": "IP Internet:",
"Systeminfo_Network_IP_Connection": "IP connection:",
"Systeminfo_Network_IP_Server": "Server IP:",
"Systeminfo_Network_MIME": "MIME:",
"Systeminfo_Network_Request_Method": "Request Method:",
"Systeminfo_Network_Request_URI": "Request URI:",
"Systeminfo_Network_Request_Time": "Request time:",
"Systeminfo_Network_Secure_Connection": "Secure connection:",
"Systeminfo_Network_Secure_Connection_String": "No (HTTP)",
"Systeminfo_Network_Server_Name": "Server name:",
"Systeminfo_Network_Server_Name_String": "Server name not found",
"Systeminfo_Network_Server_Query": "Server query:",
"Systeminfo_Network_Server_Query_String": "No query string",
"Systeminfo_Network_Server_Version": "Server Version:",
"Systeminfo_Network_Hardware" : "Network Hardware",
"Systeminfo_Storage" : "Storage",
"Systeminfo_Storage_Mount" : "Mount point:",
"Systeminfo_Storage_Device" : "Device:",
"Systeminfo_Storage_Size" : "Size:",
"Systeminfo_Storage_Type" : "Type:",
"Systeminfo_Storage_Usage" : "Storage usage",
"Systeminfo_Storage_Usage_Mount" : "Mount point:",
"Systeminfo_Storage_Usage_Total" : "Total:",
"Systeminfo_Storage_Usage_Used" : "Used:",
"Systeminfo_Storage_Usage_Free" : "Free:",
"Systeminfo_Services" : "Services",
"Systeminfo_Services_Name" : "Service Name",
"Systeminfo_Services_Description" : "Service Description",
"Systeminfo_System" : "System",
"Systeminfo_System_Architecture": "Architecture:",
"Systeminfo_System_AVG": "Load average:",
"Systeminfo_System_Kernel": "Kernel:",
"Systeminfo_System_OSVersion": "Operating System:",
"Systeminfo_System_Running_Processes" : "Running processes:",
"Systeminfo_System_System": "System:",
"Systeminfo_System_Uname": "Uname:",
"Systeminfo_System_Uptime": "Uptime:",
"Systeminfo_USB_Devices" : "USB Devices",
"Donations_Title" : "Donations",
"Donations_Text" : "Hey 👋! </br> Thanks for clicking on this menu item 😅 </br> </br> I'm trying to collect some donations to make you better software. Also, it would help me not to get burned out. Me burning out might mean end of support for this app. Any small (recurring or not) sponsorship makes me want ot put more effort into this app. I don't want to lock features (new plugins) behind paywalls 🔐. </br> Currently, I'm waking up 2h before work so I contribute to the app a bit. If I had some recurring income I could shorten my workweek and in the remaining time fully focus on PiAlert. You'd get more functionality, a more polished app and less bugs. </br> </br> Thanks for reading - I'm super grateful for any support ❤🙏 </br> </br> TL;DR: By supporting me you get: </br> </br> <ul><li>Regular updates to keep your data and family safe 🔄</li><li>Less bugs 🐛🔫</li><li>Better and more functionality</li><li>I don't get burned out 🔥🤯</li><li>Less rushed releases 💨</li><li>Better docs📚</li><li>Quicker and better support with issues 🆘</li><li>Less grumpy me 😄</li></ul> </br> 📧Email me to <a href='mailto:jokob@duck.com?subject=PiAlert'>jokob@duck.com</a> if you want to get in touch or if I should add other sponsorship platforms. </br>",
"Donations_Platforms" : "Sponsor platforms",
"Donations_Others" : "Others"
}
}

View File

@@ -1,699 +0,0 @@
<?php
$lang['en_us'] = array(
//////////////////////////////////////////////////////////////////
// About - Update by @TeroRERO 07ago2022
//////////////////////////////////////////////////////////////////
'About_Title' => 'Open Source Network Guard',
'About_Design' => 'Designed for:',
'About_Exit' => 'Sign out',
//////////////////////////////////////////////////////////////////
// General
//////////////////////////////////////////////////////////////////
'Gen_Delete' => 'Delete',
'Gen_DeleteAll' => 'Delete all',
'Gen_Cancel' => 'Cancel',
'Gen_Okay' => 'Ok',
'Gen_Save' => 'Save',
'Gen_Saved' => 'Saved',
'Gen_Run' => 'Run',
'Gen_Action' => 'Action',
'Gen_Purge' => 'Purge',
'Gen_Backup' => 'Run Backup',
'Gen_Restore' => 'Run Restore',
'Gen_Switch' => 'Switch',
'Gen_AreYouSure' => 'Are you sure?',
'Gen_Upd' => 'Updated successfully',
'Gen_Upd_Fail' => 'Update failed',
'Gen_Help' => 'Need help?',
'Gen_DataUpdatedUITakesTime' => 'OK - It may take a while for the UI to update if a scan is runnig.',
'Gen_LockedDB' => 'ERROR - DB might be locked - Check F12 Dev tools -> Console or try later.',
//////////////////////////////////////////////////////////////////
// Login Page - Update by @TeroRERO 03ago2022
//////////////////////////////////////////////////////////////////
'Login_Box' => 'Enter your password',
'Login_Remember' => 'Remember',
'Login_Remember_small' => '(valid for 7 days)',
'Login_Submit' => 'Log in',
'Login_Psw_run' => 'To change the password run:',
'Login_Psw_new' => 'new_password',
'Login_Psw_folder' => 'in the config folder.',
'Login_Psw_alert' => 'Password Alert!',
'Login_Psw-box' => 'Password',
'Login_Toggle_Info' => 'Password Information',
'Login_Toggle_Info_headline' => 'Password Information',
'Login_Toggle_Alert_headline' => 'Password Alert!',
'Login_Default_PWD' => 'Default password "123456" is still active.',
//////////////////////////////////////////////////////////////////
// Device Page
//////////////////////////////////////////////////////////////////
'Navigation_Devices' => 'Devices',
'Navigation_Presence' => 'Presence',
'Navigation_Events' => 'Events',
'Navigation_Network' => 'Network',
'Navigation_Plugins' => 'Plugins',
'Navigation_Maintenance' => 'Maintenance',
'Navigation_Settings' => 'Settings',
'Navigation_HelpFAQ' => 'Help / FAQ',
'Device_Title' => 'Devices',
'Device_Shortcut_AllDevices' => 'All Devices',
'Device_Shortcut_Connected' => 'Connected',
'Device_Shortcut_Favorites' => 'Favorites',
'Device_Shortcut_NewDevices' => 'New Devices',
'Device_Shortcut_DownAlerts' => 'Down Alerts',
'Device_Shortcut_Archived' => 'Archived',
'Device_Shortcut_Devices' => 'Devices',
'Device_Shortcut_OnlineChart' => 'Device presence over time',
'Device_TableHead_Name' => 'Name',
'Device_TableHead_Owner' => 'Owner',
'Device_TableHead_Type' => 'Type',
'Device_TableHead_Icon' => 'Icon',
'Device_TableHead_RowID' => 'Row ID',
'Device_TableHead_Rowid' => 'Row ID',
'Device_TableHead_Parent_MAC' => 'Parent node MAC',
'Device_TableHead_Connected_Devices' => 'Connected Devices',
'Device_TableHead_Location' => 'Location',
'Device_TableHead_Vendor' => 'Vendor',
'Device_TableHead_Favorite' => 'Favorite',
'Device_TableHead_Group' => 'Group',
'Device_TableHead_FirstSession' => 'First Session',
'Device_TableHead_LastSession' => 'Last Session',
'Device_TableHead_LastIP' => 'Last IP',
'Device_TableHead_MAC' => 'MAC',
'Device_TableHead_MAC_full' => 'Full MAC',
'Device_TableHead_LastIPOrder' => 'Last IP Order',
'Device_TableHead_Status' => 'Status',
'Device_Searchbox' => 'Search',
'Device_Tablelenght' => 'Show _MENU_ entries',
'Device_Tablelenght_all' => 'All',
'Device_Table_info' => 'Showing _START_ to _END_ of _TOTAL_ entries',
'Device_Table_nav_next' => 'Next',
'Device_Table_nav_prev' => 'Previous',
//////////////////////////////////////////////////////////////////
// Presence Page
//////////////////////////////////////////////////////////////////
'Presence_Title' => 'Presence by Device',
'Presence_Shortcut_AllDevices' => 'All Devices',
'Presence_Shortcut_Connected' => 'Connected',
'Presence_Shortcut_Favorites' => 'Favorites',
'Presence_Shortcut_NewDevices' => 'New Devices',
'Presence_Shortcut_DownAlerts' => 'Down Alerts',
'Presence_Shortcut_Archived' => 'Archived',
'Presence_Shortcut_Devices' => 'Devices',
// Localizationfiles under pialert/front/lib/AdminLTE/bower_components/fullcalendar/dist/locale
'Presence_CallHead_Devices' => 'Devices',
'Presence_CalHead_lang' => 'en-us',
'Presence_CalHead_year' => 'year',
'Presence_CalHead_quarter' => 'quarter',
'Presence_CalHead_month' => 'month',
'Presence_CalHead_week' => 'week',
//////////////////////////////////////////////////////////////////
// Events Page
//////////////////////////////////////////////////////////////////
'Events_Title' => 'Events',
'Events_Periodselect_today' => 'Today',
'Events_Periodselect_LastWeek' => 'Last Week',
'Events_Periodselect_LastMonth' => 'Last Month',
'Events_Periodselect_LastYear' => 'Last Year',
'Events_Periodselect_All' => 'All Info',
'Events_Shortcut_AllEvents' => 'All Events',
'Events_Shortcut_Sessions' => 'Sessions',
'Events_Shortcut_MissSessions' => 'Missing Sessions',
'Events_Shortcut_VoidSessions' => 'Voided Sessions',
'Events_Shortcut_NewDevices' => 'New Devices',
'Events_Shortcut_DownAlerts' => 'Down Alerts',
'Events_Shortcut_Events' => 'Events',
'Events_TableHead_Order' => 'Order',
'Events_TableHead_Device' => 'Device',
'Events_TableHead_Owner' => 'Owner',
'Events_TableHead_Date' => 'Date',
'Events_TableHead_EventType' => 'Event Type',
'Events_TableHead_Connection' => 'Connection',
'Events_TableHead_Disconnection' => 'Disconnection',
'Events_TableHead_Duration' => 'Duration',
'Events_TableHead_DurationOrder' => 'Duration Order',
'Events_TableHead_IP' => 'IP',
'Events_TableHead_IPOrder' => 'IP Order',
'Events_TableHead_AdditionalInfo' => 'Additional Info',
'Events_Searchbox' => 'Search',
'Events_Tablelenght' => 'Show _MENU_ entries',
'Events_Tablelenght_all' => 'All',
'Events_Table_info' => 'Showing _START_ to _END_ of _TOTAL_ entries',
'Events_Table_nav_next' => 'Next',
'Events_Table_nav_prev' => 'Previous',
//////////////////////////////////////////////////////////////////
// Device Details Page
//////////////////////////////////////////////////////////////////
'DevDetail_Periodselect_today' => 'Today',
'DevDetail_Periodselect_LastWeek' => 'Last Week',
'DevDetail_Periodselect_LastMonth' => 'Last Month',
'DevDetail_Periodselect_LastYear' => 'Last Year',
'DevDetail_Periodselect_All' => 'All Info',
'DevDetail_Shortcut_CurrentStatus' => 'Current Status',
'DevDetail_Shortcut_Sessions' => 'Sessions',
'DevDetail_Shortcut_Presence' => 'Presence',
'DevDetail_Shortcut_DownAlerts' => 'Down Alerts',
'DevDetail_Tab_Details' => '<i class="fa fa-info-circle"></i> Details',
'DevDetail_Tab_Nmap' => '<i class="fa fa-ethernet"></i> Nmap',
'DevDetail_Tab_Sessions' => '<i class="fa fa-list-ol"></i> Sessions',
'DevDetail_Tab_Presence' => '<i class="fa fa-calendar"></i> Presence',
'DevDetail_Tab_Events' => '<i class="fa fa-bolt"></i> Events',
'DevDetail_Tab_Pholus' => '<i class="fa fa-search"></i> Pholus',
'DevDetail_Tab_PholusEmpty' => 'Nothing sniffed out with Pholus for this device.',
'DevDetail_Tab_NmapTableHeader' => 'Scheduled scan results',
'DevDetail_Tab_NmapTableText' => 'Set up a schedule in <a href="/settings.php#NMAP_ACTIVE">Settings</a>',
'DevDetail_Tab_NmapEmpty' => 'No ports detected with Nmap on this device.',
'DevDetail_MainInfo_Title' => '<i class="fa fa-pencil"></i> Main Info',
'DevDetail_MainInfo_mac' => 'MAC',
'DevDetail_MainInfo_Name' => 'Name',
'DevDetail_MainInfo_Owner' => 'Owner',
'DevDetail_MainInfo_Type' => 'Type',
'DevDetail_Icon' => 'Icon',
'DevDetail_Icon_Descr' => 'Enter a font awesome icon name without the fa- prefix or with complete class, e.g.: fa fa-brands fa-apple.',
'DevDetail_MainInfo_Vendor' => 'Vendor',
'DevDetail_MainInfo_Favorite' => 'Favorite',
'DevDetail_MainInfo_Group' => 'Group',
'DevDetail_MainInfo_Location' => 'Location',
'DevDetail_MainInfo_Comments' => 'Comments',
'DevDetail_MainInfo_Network_Title' => '<i class="fa fa-network-wired"></i> Network',
'DevDetail_MainInfo_Network' => '<i class="fa fa-server"></i> Node (MAC)',
'DevDetail_GoToNetworkNode' => 'Navigate to the Network page of the given node.',
'DevDetail_MainInfo_Network_Port' => '<i class="fa fa-ethernet"></i> Port',
'DevDetail_SessionInfo_Title' => '<i class="fa fa-calendar"></i> Session Info',
'DevDetail_SessionInfo_Status' => 'Status',
'DevDetail_SessionInfo_FirstSession' => 'First Session',
'DevDetail_SessionInfo_LastSession' => 'Last Session',
'DevDetail_SessionInfo_LastIP' => 'Last IP',
'DevDetail_SessionInfo_StaticIP' => 'Static IP',
'DevDetail_EveandAl_Title' => '<i class="fa fa-bolt"></i> Events & Alerts config',
'DevDetail_EveandAl_ScanCycle' => 'Scan device',
'DevDetail_EveandAl_AlertAllEvents' => 'Alert All Events',
'DevDetail_EveandAl_AlertDown' => 'Alert Down',
'DevDetail_EveandAl_Skip' => 'Skip repeated notifications for',
'DevDetail_EveandAl_NewDevice' => 'New Device',
'DevDetail_EveandAl_Archived' => 'Archived',
'DevDetail_EveandAl_RandomMAC' => 'Random MAC',
'DevDetail_EveandAl_ScanCycle_a' => 'Scan Device',
'DevDetail_EveandAl_ScanCycle_z' => 'Don&#39;t Scan Device',
'DevDetail_button_Delete' => 'Delete Device',
'DevDetail_button_DeleteEvents' => 'Delete Events',
'DevDetail_button_DeleteEvents_Warning' => 'Are you sure you want to delete all Events of this device?<br><br>(this will clear the <b>Events history</b> and the <b>Sessions</b> and might help with constant (persistent) notifications)',
'DevDetail_button_Reset' => 'Reset Changes',
'DevDetail_button_Save' => 'Save',
'DevDetail_button_OverwriteIcons' => 'Overwrite Icons',
'DevDetail_button_OverwriteIcons_Tooltip' => 'Overwrite icons of all devices with the same type',
'DevDetail_button_OverwriteIcons_Warning' => 'Are you sure you want to overwrite all icons of all devices with the same device type as the current device type?',
'DevDetail_SessionTable_Order' => 'Order',
'DevDetail_SessionTable_Connection' => 'Connection',
'DevDetail_SessionTable_Disconnection' => 'Disconnection',
'DevDetail_SessionTable_Duration' => 'Duration',
'DevDetail_SessionTable_IP' => 'IP',
'DevDetail_SessionTable_Additionalinfo' => 'Additional info',
'DevDetail_Events_CheckBox' => 'Hide Connection Events',
'DevDetail_Nmap_buttonFast' => 'Fast Scan',
'DevDetail_Nmap_buttonDefault' => 'Default Scan',
'DevDetail_Nmap_buttonDetail' => 'Detailed Scan',
'DevDetail_Nmap_buttonFast_text' => 'Fast Scan: Scan fewer ports (100) than the default scan (a few seconds)',
'DevDetail_Nmap_buttonDefault_text' => 'Default Scan: Nmap scans the top 1,000 ports for each scan protocol requested. This catches roughly 93% of the TCP ports and 49% of the UDP ports. (about 5 seconds)',
'DevDetail_Nmap_buttonDetail_text' => 'Detailed Scan: Default scan with enabled OS detection, version detection, script scanning and traceroute (up to 30 seconds or more)',
'DevDetail_Nmap_buttonSkipDiscovery' => 'Skip host discovery',
'DevDetail_Nmap_buttonSkipDiscovery_text' => 'Skip host discovery (-Pn option): Default scan without host discovery',
'DevDetail_Nmap_resultsLink' => 'You can leave this page after starting a scan. Results will be also available in the <code>pialert_front.log</code> file.',
'BackDevDetail_Actions_Title_Run' => 'Run action',
'BackDevDetail_Actions_Not_Registered' => 'Action not registered: ',
'BackDevDetail_Actions_Ask_Run' => 'Do you want to execute the action?',
'BackDevDetail_Tools_WOL_okay' => 'The command was executed.',
'BackDevDetail_Tools_WOL_error' => 'The command was NOT executed.',
'DevDetail_Tools_WOL_noti' => 'Wake-on-LAN',
'DevDetail_Tools_WOL_noti_text' => 'The Wake-on-LAN command is sent to the broadcast address. If the target is not in the subnet/vlan of Pi.Alert, the target device will not respond.',
'DevDetail_Tools_WOL' => 'Send Wol command to ',
'DevDetail_WOL_Title' => '<i class="fa fa-power-off"></i> Wake-on-LAN',
'DevDetail_Run_Actions_Title' => '<i class="fa fa-play"></i> Run action on device',
'DevDetail_Run_Actions_Tooltip' => 'Run an action on the current device from the dropdown list.',
//////////////////////////////////////////////////////////////////
// Maintenance Page
//////////////////////////////////////////////////////////////////
'Maintenance_Title' => 'Maintenance tools',
'Maintenance_version' => 'Application updates',
'Maintenance_new_version' => '🆕 A new version is available. Check out the <a href="https://github.com/jokob-sk/Pi.Alert/releases" target="_blank">release notes</a>.',
'Maintenance_current_version' => 'You are up-to-date. Check out what <a href="https://github.com/jokob-sk/Pi.Alert/issues/138" target="_blank">I\'m working on</a>.',
'Maintenance_database_path' => 'Database-Path',
'Maintenance_database_size' => 'Database-Size',
'Maintenance_database_lastmod' => 'Last Modification',
'Maintenance_database_backup' => 'DB Backups',
'Maintenance_database_backup_found' => 'backups were found',
'Maintenance_database_backup_total' => 'total disk usage',
'Maintenance_arp_status' => 'Scan Status',
'Maintenance_arp_status_off' => 'is currently disabled',
'Maintenance_arp_status_on' => 'scan(s) currently running',
'Maintenance_themeselector_lable' => 'Select Skin',
'Maintenance_themeselector_empty' => 'Choose a Skin',
'Maintenance_themeselector_apply' => 'Apply',
'Maintenance_themeselector_text' => 'The change takes place on the server side, so it affects all devices in use.',
'Maintenance_lang_selector_lable' => 'Select Language',
'Maintenance_lang_selector_empty' => 'Choose Language',
'Maintenance_lang_en_us' => 'English (US)',
'Maintenance_lang_de_de' => 'German (DE)',
'Maintenance_lang_es_es' => 'Spanish (ES)',
'Maintenance_lang_selector_text' => 'The change takes place on the client side, so it affects only the current browser.',
'Maintenance_lang_selector_apply' => 'Apply',
'Maintenance_Tools_Tab_Settings' => 'Settings',
'Maintenance_Tools_Tab_UISettings' => 'UI Settings',
'Maintenance_Tools_Tab_Tools' => 'Tools',
'Maintenance_Tools_Tab_BackupRestore' => 'Backup / Restore',
'Maintenance_Tools_Tab_Logging' => 'Logs',
'Maintenance_Tool_displayed_columns_text' => 'Change the visibility and order of the columns in the <a href="devices.php"><b> <i class="fa fa-laptop"></i> Devices</b></a> page. (The drag-and-drop is a bit clunky, but for now workable, not a common task - won\'t fix for now (tried for <a href="https://github.com/jokob-sk/Pi.Alert/commit/94b32f0f7332879f5a7d2af05dafa2e5d5cfa5da">like 3h</a> - happy for someone to submit a PR :) )).',
'Maintenance_Tool_order_columns_text' => '',
'Maintenance_Tool_darkmode' => 'Toggle Modes (Dark/Light)',
'Maintenance_Tool_drag_me' => 'Drag me to reorder columns.',
'Maintenance_Tool_check_visible' => 'Uncheck to hide column.',
'Maintenance_Tool_darkmode_text' => 'Toggle between dark mode and light mode. If the switch does not work properly, try to clear the browser cache. The change takes place on the server side, so it affects all devices in use.',
'Maintenance_Tool_darkmode_noti' => 'Toggle Modes',
'Maintenance_Tool_darkmode_noti_text' => 'After the theme switch, the page tries to reload itself to activate the change. If necessary, the cache must be cleared.',
'Maintenance_Tool_arpscansw' => 'Toggle arp-Scan (on/off)',
'Maintenance_Tool_arpscansw_text' => 'Switching the arp-scan on or off. When the scan has been switched off it remains off until it is activated again. Active scans are not canceled.',
'Maintenance_Tool_arpscansw_noti' => 'Toggle arp-Scan on or off',
'Maintenance_Tool_arpscansw_noti_text' => 'When the scan has been switched off it remains off until it is activated again.',
'Maintenance_Tool_del_empty_macs' => 'Delete Devices with empty MACs',
'Maintenance_Tool_del_empty_macs_text' => 'Before using this function, please make a backup. The deletion cannot be undone. All devices without MAC will be deleted from the database.',
'Maintenance_Tool_del_empty_macs_noti' => 'Delete Devices',
'Maintenance_Tool_del_empty_macs_noti_text' => 'Are you sure you want to delete all devices with empty MAC addresses?<br>(maybe you prefer to archive it)',
'Maintenance_Tool_upgrade_database_noti' => 'Upgrade database',
'Maintenance_Tool_upgrade_database_text' => 'This button will upgrade the database to enable the Network activity over last 12 hours chart. Please backup your database in case of issues.',
'Maintenance_Tool_upgrade_database_noti_text' => 'Are you sure you want to upgrade the database?<br>(maybe you prefer to archive it)',
'Maintenance_Tool_del_alldev' => 'Delete all Devices',
'Maintenance_Tool_del_alldev_text' => 'Before using this function, please make a backup. The deletion cannot be undone. All devices will be deleted from the database.',
'Maintenance_Tool_del_alldev_noti' => 'Delete Devices',
'Maintenance_Tool_del_alldev_noti_text' => 'Are you sure you want to delete all devices?',
'Maintenance_Tool_del_unknowndev' => 'Delete (unknown) Devices',
'Maintenance_Tool_del_unknowndev_text' => 'Before using this function, please make a backup. The deletion cannot be undone. All devices named (unknown) will be deleted from the database.',
'Maintenance_Tool_del_unknowndev_noti' => 'Delete (unknown) Devices',
'Maintenance_Tool_del_unknowndev_noti_text' => 'Are you sure you want to delete all (unknown) devices?',
'Maintenance_Tool_del_allevents' => 'Delete Events (Reset Presence)',
'Maintenance_Tool_del_allevents_text' => 'Before using this function, please make a backup. The deletion cannot be undone. All events in the database will be deleted. At that moment the presence of all devices will be reset. This can lead to invalid sessions. This means that devices are displayed as "present" although they are offline. A scan while the device in question is online solves the problem.',
'Maintenance_Tool_del_allevents_noti' => 'Delete Events',
'Maintenance_Tool_del_allevents_noti_text' => 'Are you sure you want to delete all Events? This resets Presence of all Devices.',
'Maintenance_Tool_del_allevents30' => 'Delete all Events older than 30 days',
'Maintenance_Tool_del_allevents30_text' => 'Before using this function, please make a backup. The deletion cannot be undone. All events older than 30 days in the database will be deleted. At that moment the presence of all devices will be reset. This can lead to invalid sessions. This means that devices are displayed as "present" although they are offline. A scan while the device in question is online solves the problem.',
'Maintenance_Tool_del_allevents30_noti' => 'Delete Events',
'Maintenance_Tool_del_allevents30_noti_text' => 'Are you sure you want to delete all Events older than 30 days? This resets Presence of all Devices.',
'Maintenance_Tool_backup' => 'DB Backup',
'Maintenance_Tool_backup_text' => 'The database backups are located in the database directory as a zip-archive, named with the creation date. There is no maximum number of backups.',
'Maintenance_Tool_backup_noti' => 'DB Backup',
'Maintenance_Tool_backup_noti_text' => 'Are you sure you want to execute the the DB Backup? Be sure that no scan is currently running.',
'Maintenance_Tool_restore' => 'DB Restore',
'Maintenance_Tool_restore_text' => 'The latest backup can be restored via the button, but older backups can only be restored manually. After the restore, make an integrity check on the database for safety, in case the db was currently in write access when the backup was created.',
'Maintenance_Tool_restore_noti' => 'DB Restore',
'Maintenance_Tool_restore_noti_text' => 'Are you sure you want to execute the the DB Restore? Be sure that no scan is currently running.',
'Maintenance_Tool_purgebackup' => 'Purge Backups',
'Maintenance_Tool_purgebackup_text' => 'All other backups will be deleted except for the last 3 backups.',
'Maintenance_Tool_purgebackup_noti' => 'Purge Backups',
'Maintenance_Tool_purgebackup_noti_text' => 'Are you sure you want to delete all backups except the last 3?',
'Maintenance_Tool_del_ActHistory' => 'Deleting the network activity',
'Maintenance_Tool_del_ActHistory_text' => 'The network activity graph is reset. This does not affect the events.',
'Maintenance_Tool_del_ActHistory_noti' => 'Delete network activity',
'Maintenance_Tool_del_ActHistory_noti_text' => 'Are you sure you want to reset the network activity?',
'Maintenance_Tool_ExportCSV' => 'CSV Export',
'Maintenance_Tool_ExportCSV_text' => 'Generate a CSV (comma separated value) file containing the list of Devices including the Network relationships between Network Nodes and connected devices.',
'Maintenance_Tool_ExportCSV_noti' => 'CSV Export',
'Maintenance_Tool_ExportCSV_noti_text' => 'Are you sure you want to generate a CSV file?',
'Maintenance_Tool_ImportCSV' => 'CSV Import',
'Maintenance_Tool_ImportCSV_text' => 'Before using this function, please make a backup. Import a CSV (comma separated value) file containing the list of Devices including the Network relationships between Network Nodes and connected devices. To do that place the CSV file named <b>devices.csv</b> into your <b>/config</b> folder.',
'Maintenance_Tool_ImportCSV_noti' => 'CSV Import',
'Maintenance_Tool_ImportCSV_noti_text' => 'Are you sure you want to import the CSV file? This will completely overwrite the devices in your database.',
//////////////////////////////////////////////////////////////////
// Maintenance Page
//////////////////////////////////////////////////////////////////
'BackDevices_Arpscan_disabled' => 'Arp-Scan Disabled',
'BackDevices_Arpscan_enabled' => 'Arp-Scan Enabled',
'BackDevices_darkmode_disabled' => 'Darkmode Disabled',
'BackDevices_darkmode_enabled' => 'Darkmode Enabled',
'BackDevices_Restore_CopError' => 'The original database could not be saved.',
'BackDevices_Restore_okay' => 'Restore executed successfully.',
'BackDevices_Restore_Failed' => 'Restore Failed. Please restore the backup manually.',
'BackDevices_Backup_CopError' => 'The original database could not be saved.',
'BackDevices_Backup_okay' => 'The backup executed successfully with the new archive',
'BackDevices_Backup_Failed' => 'The backup executed partially successfully. The archive could not be created or is empty.',
'BackDevices_DBTools_DelDev_a' => 'Device deleted successfully',
'BackDevices_DBTools_DelDev_b' => 'Devices deleted successfully',
'BackDevices_DBTools_DelEvents' => 'Events deleted successfully',
'BackDevices_DBTools_DelEventsError' => 'Error deleting Events',
'BackDevices_DBTools_DelDevError_a' => 'Error deleting Device',
'BackDevices_DBTools_DelDevError_b' => 'Error deleting Devices',
'BackDevices_DBTools_UpdDev' => 'Device updated successfully',
'BackDevices_DBTools_UpdDevError' => 'Error updating device',
'BackDevices_DBTools_Upgrade' => 'Database upgraded successfully',
'BackDevices_DBTools_UpgradeError' => 'Database upgrade failed',
'BackDevices_DBTools_Purge' => 'The oldest backups were deleted',
'BackDevices_DBTools_ImportCSV' => 'The devices from the CSV file were imported successfully.',
'BackDevices_DBTools_ImportCSVError' => 'The CSV file couldn\'t be imported. Make sure the format is correct.',
'BackDevices_DBTools_ImportCSVMissing' => 'The CSV file couldn\'t be found under <b>/config/devices.csv.</b>',
'BackDevices_Device_UpdDevError' => 'Error updating devices, try later. The database is probable locked due to an ongoing task.',
//////////////////////////////////////////////////////////////////
// Network Page
//////////////////////////////////////////////////////////////////
'Network_Title' => 'Network overview',
'Network_ManageDevices' => 'Manage Devices',
'Network_ManageAdd' => 'Add Device',
'Network_ManageAssign' => 'Assign',
'Network_ManageUnassign' => 'Unassign',
'Network_ManageEdit' => 'Update Device',
'Network_ManageDel' => 'Delete Device',
'Network_ManageAdd_Name' => 'Device Name',
'Network_ManageAdd_Name_text' => 'Name without special characters',
'Network_ManageAdd_Type' => 'Device Type',
'Network_ManageAdd_Type_text' => '-- Select Type --',
'Network_ManageAdd_Port' => 'Port Count',
'Network_ManageAdd_Port_text' => 'leave blank for wifi and powerline',
'Network_ManageAdd_Submit' => 'Add Device',
'Network_ManageEdit_ID' => 'Device to update',
'Network_ManageEdit_ID_text' => '-- Select Device for editing --',
'Network_ManageEdit_Name' => 'New Device Name',
'Network_ManageEdit_Name_text' => 'Name without special characters',
'Network_ManageEdit_Type' => 'New Device Type',
'Network_ManageEdit_Type_text' => '-- Select Type --',
'Network_ManageEdit_Port' => ' New Port Count',
'Network_ManageEdit_Port_text' => 'leave blank for wifi and powerline',
'Network_ManageEdit_Submit' => 'Save Changes',
'Network_ManageDel_Name' => 'Device to delete',
'Network_ManageDel_Name_text' => '-- Select Device --',
'Network_ManageDel_Submit' => 'Delete',
'Network_Table_State' => 'State',
'Network_Table_Hostname' => 'Hostname',
'Network_Table_IP' => 'IP',
'Network_UnassignedDevices' => 'Unassigned devices',
'Network_Assign' => 'Connect to the above <i class="fa fa-server"></i> Network node',
'Network_Connected' => 'Connected devices',
'Network_ManageLeaf' => 'Manage assignment',
'Network_Node' => 'Network node',
'Network_Node_Name' => 'Node name',
'Network_Parent' => 'Parent network device',
'Network_NoAssignedDevices' => 'This network node doesn\'t have any assigned devices (leaf nodes). Assign one from bellow or go to the <b><i class="fa fa-info-circle"></i> Details</b> tab of any device in <a href="devices.php"><b> <i class="fa fa-laptop"></i> Devices</b></a>, and assign it to a network <b><i class="fa fa-server"></i> Node (MAC)</b> and <b><i class="fa fa-ethernet"></i> Port</b> there.',
//////////////////////////////////////////////////////////////////
// Help Page
//////////////////////////////////////////////////////////////////
'HelpFAQ_Title' => 'Help / FAQ',
'HelpFAQ_Cat_General' => 'General',
'HelpFAQ_Cat_Detail' => '<i class="fa fa-info-circle"></i> Details',
'HelpFAQ_Cat_General_100_head' => 'The clock on the top right and the times of the events/presence are not correct (time difference).',
'HelpFAQ_Cat_General_100_text_a' => 'On your PC the following time zone is set for the PHP environment:',
'HelpFAQ_Cat_General_100_text_b' => 'If this is not the timezone you are in, you should change the timezone in the PHP configuration file. You can find it in this directory:',
'HelpFAQ_Cat_General_100_text_c' => 'Search in this file for the entry "date.timezone", remove the leading ";" if necessary and enter the desired timezone. A list with the supported timezones can be found here (<a href="https://www.php.net/manual/en/timezones.php" target="blank">Link</a>)',
'HelpFAQ_Cat_General_101_head' => 'My network seems to slow down, streaming "freezes".',
'HelpFAQ_Cat_General_101_text' => 'It may well be that low-powered devices reach their performance limits with the way Pi.Alert detects new devices on the network. This is amplified even more,
if these devices communicate with the network via WLAN. Solutions here would be to switch to a wired connection if possible or, if the device is only to be used for a limited period of time, to use the arp scan.
pause the arp scan on the maintenance page.',
'HelpFAQ_Cat_General_102_head' => 'I get the message that the database is read only.',
'HelpFAQ_Cat_General_102_text' => 'Check in the Pi.Alert directory if the database folder (db) has been assigned the correct permissions:<br>
<span class="text-danger help_faq_code">drwxrwx--- 2 (your username) www-data</span><br>
If the permission is not correct, you can set it again with the following commands in the terminal or the console:<br>
<span class="text-danger help_faq_code">
sudo chgrp -R www-data ~/pialert/db<br>
chmod -R 770 ~/pialert/db
</span><br>
If the database is still read-only, try reinstalling or restoring a database backup from the maintenance page.',
'HelpFAQ_Cat_General_102docker_head' => 'Database issues (AJAX errors, read-only, not found)',
'HelpFAQ_Cat_General_102docker_text' => 'Double-check you\'ve followed the <a target="_blank" href="https://github.com/jokob-sk/Pi.Alert/tree/main/dockerfiles">dockerfile readme (most up-to-date info)</a>. <br/> <br/> <ul data-sourcepos="49:4-52:146" dir="auto">
<li data-sourcepos="49:4-49:106">Download the <a target="_blank" href="https://github.com/jokob-sk/Pi.Alert/blob/main/db/pialert.db">original DB from GitHub</a>.</li>
<li data-sourcepos="50:4-50:195">Map the <code>pialert.db</code> file (<g-emoji class="g-emoji" alias="warning" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/26a0.png">⚠</g-emoji> not folder) from above to <code>/home/pi/pialert/db/pialert.db</code> (see <a target="_blank" href="https://github.com/jokob-sk/Pi.Alert/tree/main/dockerfiles#-examples">Examples</a> for details).</li>
<li data-sourcepos="51:4-51:161">If facing issues (AJAX errors, can\'t write to DB, etc,) make sure permissions are set correctly, alternatively check the logs under <code>/home/pi/pialert/front/log</code>.</li>
<li data-sourcepos="52:4-52:146">To solve permission issues you can also try to create a DB backup and then run a DB Restore via the <strong>Maintenance &gt; Backup/Restore</strong> section.</li>
<li data-sourcepos="53:4-53:228">If the database is in read-only mode you can solve this by setting the owner and group by executing the following command on the host system: <code>docker exec pialert chown -R www-data:www-data /home/pi/pialert/db/pialert.db</code>.</li>
</ul>',
'HelpFAQ_Cat_General_103_head' => 'The login page does not appear, even after changing the password.',
'HelpFAQ_Cat_General_103_text' => 'In addition to the password, the configuration file must contain <span class="text-danger help_faq_code">~/pialert/config/pialert.conf</span>
also the parameter <span class="text-danger help_faq_code">PIALERT_WEB_PROTECTION</span> must set to <span class="text-danger help_faq_code">True</span>.',
'HelpFAQ_Cat_Device_200_head' => 'I have devices in my list that I do not know about. After deleting them, they always reappear.',
'HelpFAQ_Cat_Device_200_text' => 'If you use Pi-hole, please note that Pi.Alert retrieves information from Pi-hole. Pause Pi.Alert, go to the settings page in Pi-hole and
delete the DHCP lease if necessary. Then, also in Pi-hole, look under Tools -> Network to see if you can find the recurring hosts there.
If yes, delete them there as well. Now you can start Pi.Alert again. Now the device(s) should not show up anymore.',
'HelpFAQ_Cat_Detail_300_head' => 'What means ',
'HelpFAQ_Cat_Detail_300_text_a' => 'means a network device (a device of the type AP, Gateway, Firewall, Powerline, Switch, WLAN, PLC, Router,USB LAN Adapter, USB WIFI Adapter, or Internet).',
'HelpFAQ_Cat_Detail_300_text_b' => 'designates the port number where the currently edited device is connected to this network device. Read <a target="_blank" href="https://github.com/jokob-sk/Pi.Alert/blob/main/docs/NETWORK_TREE.md">this guide</a> for more info.',
'HelpFAQ_Cat_Detail_301_head_a' => 'When is scanning now? At ',
'HelpFAQ_Cat_Detail_301_head_b' => ' says 1min but the graph shows 5min intervals.',
'HelpFAQ_Cat_Detail_301_text' => 'The time interval between the scans is defined by the "Cronjob", which is set to 5min by default. The designation "1min" refers to the expected duration of the scan.
Depending on the network configuration, this time may vary. To edit the cronjob, you can use the following command in the terminal/console <span class="text-danger help_faq_code">crontab -e</span>
and change the interval.',
'HelpFAQ_Cat_Detail_302_head_a' => 'What means ',
'HelpFAQ_Cat_Detail_302_head_b' => 'and why can\'t I select that?',
'HelpFAQ_Cat_Detail_302_text' => 'Some modern devices generate random MAC addresses for privacy reasons, which can no longer be associated with any manufacturer and which change again with each new connection.
Pi.Alert detects if it is such a random MAC address and activates this "field" automatically. To disable this behavior you have to look in your device how to disable
MAC address randomization.',
'HelpFAQ_Cat_Detail_303_head' => 'What is Nmap and what is it for?',
'HelpFAQ_Cat_Detail_303_text' => 'Nmap is a network scanner with multiple capabilities.<br>
When a new device appears in your list, you have the possibility to get more detailed information about the device via the Nmap scan.',
'HelpFAQ_Cat_Presence_400_head' => 'Devices are displayed with a yellow marker and the note "missing event".',
'HelpFAQ_Cat_Presence_400_text' => 'If this happens, you have the option to delete the events on the device in question (details view). Another possibility would be to switch on the device and wait until Pi.Alert detects the device as "online" with the next
scan and then simply turn the device off again. Now Pi.Alert should properly note the state of the device in the database with the next scan.',
'HelpFAQ_Cat_Presence_401_head' => 'A device is displayed as present although it is "Offline".',
'HelpFAQ_Cat_Presence_401_text' => 'If this happens, you have the possibility to delete the events for the device in question (details view). Another possibility would be to switch on the device and wait until Pi.Alert recognizes the device as "online" with the next scan
and then simply switch the device off again. Now Pi.Alert should properly note the state of the device in the database with the next scan.',
'HelpFAQ_Cat_Network_600_head' => 'What is this page for?',
'HelpFAQ_Cat_Network_600_text' => 'This page should offer you the possibility to map the assignment of your network devices. For this purpose, you can create one or more switches, WLANs, routers, etc., provide them with a port number if necessary and assign already detected
devices to them. This assignment is done in the detailed view of the device to be assigned. So it is possible for you to quickly determine to which port a host is connected and if it is online. Read <a target="_blank" href="https://github.com/jokob-sk/Pi.Alert/blob/main/docs/NETWORK_TREE.md">this guide</a> for more info.',
//////////////////////////////////////////////////////////////////
// Front end events
//////////////////////////////////////////////////////////////////
'test_event_tooltip' => 'Save your changes at first before you test your settings.',
'test_event_icon' => 'fa-vial-circle-check',
'run_event_tooltip' => 'Enable the setting and save your changes at first before you run it.',
'run_event_icon' => 'fa-play',
'general_event_title' => 'Executing an ad-hoc event',
'general_event_description' => 'The event you\'ve triggered might take a while until background processes finish. The execution ended once you see <code>finished</code> below. Check the <a onclick=\'setCache(\"activeMaintenanceTab\", \"tab_Logging_id\")\' href=\"/maintenance.php#tab_Logging\">error log</a> if you didn\'t get the expected result. <br/> <br/> Status: ',
//////////////////////////////////////////////////////////////////
// Plugins
//////////////////////////////////////////////////////////////////
'Plugins_Unprocessed_Events' => 'Unprocessed Events',
'Plugins_Objects' => 'Plugin Objects',
'Plugins_History' => 'Events History',
//////////////////////////////////////////////////////////////////
// Settings
//////////////////////////////////////////////////////////////////
'settings_missing' => 'Not all settings loaded, refresh the page! This is probably caused by a high load on the database.',
'settings_missing_block' => 'You can\'t save your settings without specifying all setting keys. Refresh the page. This is probably caused by a high load on the database.',
'settings_old' => 'The settings in the DB (shown on this page) are outdated. This is probably caused by a running scan. The settings were saved in the <code>pialert.conf</code> file, but the background process didn\'t have time to import it yet to the DB. You can wait until the settings get refreshed so you don\'t overwrite your old values. Feel free to save your settings either way if you don\'t mind losing the settings between the last save and now. There are also backup files created if you need to compare your settings later.',
'settings_imported' => 'Last time settings were imported from the pialert.conf file:',
'settings_expand_all' => 'Expand all',
//General
'General_display_name' => 'General',
'General_icon' => '<i class="fa fa-gears"></i>',
'ENABLE_ARPSCAN_name' => 'Enable ARP scan',
'ENABLE_ARPSCAN_description' => 'Arp-scan is a command-line tool that uses the ARP protocol to discover and fingerprint IP hosts on the local network. An alternative to ARP scan is to enable the <a onclick="toggleAllSettings()" href="#PIHOLE_ACTIVE"><code>PIHOLE_ACTIVE</code>PiHole integration settings</a>.',
'SCAN_SUBNETS_name' => 'Subnets to scan',
'SCAN_SUBNETS_description' => '
The arp-scan time itself depends on the number of IP addresses to check so set this up carefully with the appropriate network mask and interface. Check the <a href="https://github.com/jokob-sk/Pi.Alert/blob/main/docs/SUBNETS.md" target="_blank">subnets documentation</a> for details.
',
'LOG_LEVEL_name' => 'Print additional logging',
'LOG_LEVEL_description' => 'This setting will enable more verbose logging. Useful for debugging events writing into the database.',
'TIMEZONE_name' => 'Time zone',
'TIMEZONE_description' => 'Time zone to display stats correctly. Find your time zone <a target="_blank" href="https://en.wikipedia.org/wiki/List_of_tz_database_time_zones" rel="nofollow">here</a>.',
'ENABLE_PLUGINS_name' => 'Enable Plugins',
'ENABLE_PLUGINS_description' => 'Enables the <a target="_blank" href="https://github.com/jokob-sk/Pi.Alert/tree/main/front/plugins">plugins</a> functionality. Loading plugins requires more hardware resources so you might want to disable them on low-powered system.',
'PIALERT_WEB_PROTECTION_name' => 'Enable login',
'PIALERT_WEB_PROTECTION_description' => 'When enabled a login dialog is displayed. Read below carefully if you get locked out of your instance.',
'PIALERT_WEB_PASSWORD_name' => 'Login password',
'PIALERT_WEB_PASSWORD_description' => 'The default password is <code>123456</code>. To change the password run <code>/home/pi/pialert/back/pialert-cli</code> in the container',
'INCLUDED_SECTIONS_name' => 'Notify on',
'INCLUDED_SECTIONS_description' => 'Specifies which events trigger notifications. Remove the event type(s) you don\'t want to get notified on. This setting overrides device-specific settings in the UI. (<code>CTRL + Click</code> to select / deselect).',
'SCAN_CYCLE_MINUTES_name' => 'Scan cycle delay',
'SCAN_CYCLE_MINUTES_description' => 'The delay between scans in minutes. If using arp-scan, the scan time itself depends on the number of IP addresses to check. This is influenced by the network mask set in the <a href="#SCAN_SUBNETS"><code>SCAN_SUBNETS</code> setting</a> at the top. Every IP takes a couple seconds to scan.',
'DAYS_TO_KEEP_EVENTS_name' => 'Delete events older than',
'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.',
'REPORT_DASHBOARD_URL_name' => 'Pi.Alert URL',
'REPORT_DASHBOARD_URL_description' => 'This URL is used as the base for generating links in the emails. Enter full URL starting with <code>http://</code> including the port number (no trailig slash <code>/</code>).',
'DIG_GET_IP_ARG_name' => 'Internet IP discovery',
'DIG_GET_IP_ARG_description' => 'Change the <a href="https://linux.die.net/man/1/dig" target="_blank">dig utility</a> arguments if you have issues resolving your Internet IP. Arguments are added at the end of the following command: <code>dig +short </code>.',
'UI_LANG_name' => 'UI Language',
'UI_LANG_description' => 'Select the preferred UI language.',
//Email
'Email_display_name' => 'Email',
'Email_icon' => '<i class="fa fa-at"></i>',
'REPORT_MAIL_name' => 'Enable email',
'REPORT_MAIL_description' => 'If enabled an email is sent out with a list of changes you\'ve subscribed to. Please also fill out all remaining settings related to the SMTP setup below.',
'SMTP_SERVER_name' => 'SMTP server URL',
'SMTP_SERVER_description' => 'The SMTP server host URL. For example <code>smtp-relay.sendinblue.com</code>. To use Gmail as an SMTP server <a target="_blank" href="https://github.com/jokob-sk/Pi.Alert/blob/main/docs/SMTP_GMAIL.md">follow this guide</a>',
'SMTP_PORT_name' => 'SMTP server PORT',
'SMTP_PORT_description' => 'Port number used for the SMTP connection. Set to <code>0</code> if you don\'t want to use a port when connecting to the SMTP server.',
'SMTP_SKIP_LOGIN_name' => 'Skip authentication',
'SMTP_SKIP_LOGIN_description' => 'Don\'t use authentication when connecting to the SMTP server.',
'SMTP_USER_name' => 'SMTP user',
'SMTP_USER_description' => 'The user name used to login into the SMTP server (sometimes a full email address).',
'SMTP_PASS_name' => 'SMTP password',
'SMTP_PASS_description' => 'The SMTP server password. ',
'SMTP_SKIP_TLS_name' => 'Don\'t use TLS',
'SMTP_SKIP_TLS_description' => 'Disable TLS when connecting to your SMTP server.',
'SMTP_FORCE_SSL_name' => 'Force SSL',
'SMTP_FORCE_SSL_description' => 'Force SSL when connecting to your SMTP server.',
'REPORT_TO_name' => 'Send email to',
'REPORT_TO_description' => 'Email address to which the notification will be send to.',
'REPORT_FROM_name' => 'Email subject',
'REPORT_FROM_description' => 'Notification email subject line.',
//Webhooks
'Webhooks_display_name' => 'Webhooks',
'Webhooks_icon' => '<i class="fa fa-circle-nodes"></i>',
'REPORT_WEBHOOK_name' => 'Enable Webhooks',
'REPORT_WEBHOOK_description' => 'Enable webhooks for notifications. Webhooks help you to connect to a lot of 3rd party tools, such as IFTTT, Zapier or <a href="https://n8n.io/" target="_blank">n8n</a> to name a few. Check out this simple <a href="https://github.com/jokob-sk/Pi.Alert/blob/main/docs/WEBHOOK_N8N.md" target="_blank">n8n guide here</a> to get started. If enabled, configure related settings below.',
'WEBHOOK_URL_name' => 'Target URL',
'WEBHOOK_URL_description' => 'Target URL starting with <code>http://</code> or <code>https://</code>.',
'WEBHOOK_PAYLOAD_name' => 'Payload type',
'WEBHOOK_PAYLOAD_description' => 'The Webhook payload data format for the <code>body</code> > <code>attachments</code> > <code>text</code> attribute in the payload json. See an example of the payload <a target="_blank" href="https://github.com/jokob-sk/Pi.Alert/blob/main/back/webhook_json_sample.json">here</a>. (e.g.: for discord use <code>html</code>)',
'WEBHOOK_REQUEST_METHOD_name' => 'Request method',
'WEBHOOK_REQUEST_METHOD_description' => 'The HTTP request method to be used for the webhook call.',
// Apprise
'Apprise_display_name' => 'Apprise',
'Apprise_icon' => '<i class="fa fa-bullhorn"></i>',
'REPORT_APPRISE_name' => 'Enable Apprise',
'REPORT_APPRISE_description' => 'Enable sending notifications via <a target="_blank" href="https://hub.docker.com/r/caronc/apprise">Apprise</a>.',
'APPRISE_HOST_name' => 'Apprise host URL',
'APPRISE_HOST_description' => 'Apprise host URL starting with <code>http://</code> or <code>https://</code>. (don\'t forget to include <code>/notify</code> at the end)',
'APPRISE_URL_name' => 'Apprise notification URL',
'APPRISE_URL_description' => 'Apprise notification target URL. For example for Telegram it would be <code>tgram://{bot_token}/{chat_id}</code>.',
// NTFY
'NTFY_display_name' => 'NTFY',
'NTFY_icon' => '<i class="fa fa-terminal"></i>',
'REPORT_NTFY_name' => 'Enable NTFY',
'REPORT_NTFY_description' => 'Enable sending notifications via <a target="_blank" href="https://ntfy.sh/">NTFY</a>.',
'NTFY_HOST_name' => 'NTFY host URL',
'NTFY_HOST_description' => 'NTFY host URL starting with <code>http://</code> or <code>https://</code>. You can use the hosted instance on <a target="_blank" href="https://ntfy.sh/">https://ntfy.sh</a> by simply entering <code>https://ntfy.sh</code>.',
'NTFY_TOPIC_name' => 'NTFY topic',
'NTFY_TOPIC_description' => 'Your secret topic.',
'NTFY_USER_name' => 'NTFY user',
'NTFY_USER_description' => 'Enter user if you need (host) an instance with enabled authetication.',
'NTFY_PASSWORD_name' => 'NTFY password',
'NTFY_PASSWORD_description' => 'Enter password if you need (host) an instance with enabled authetication.',
// Pushsafer
'PUSHSAFER_display_name' => 'Pushsafer',
'PUSHSAFER_icon' => '<i class="fa fa-bell"></i>',
'REPORT_PUSHSAFER_name' => 'Enable Pushsafer',
'REPORT_PUSHSAFER_description' => 'Enable sending notifications via <a target="_blank" href="https://www.pushsafer.com/">Pushsafer</a>.',
'PUSHSAFER_TOKEN_name' => 'Pushsafer token',
'PUSHSAFER_TOKEN_description' => 'Your secret Pushsafer API key (token).',
'APPRISE_PAYLOAD_name' => 'Payload type',
'APPRISE_PAYLOAD_description' => 'Select the payoad type sent to Apprise. For example <code>html</code> works well with emails, <code>text</code> with chat apps, such as Telegram.',
// MQTT
'MQTT_display_name' => 'MQTT',
'MQTT_icon' => '<i class="fa fa-square-rss"></i>',
'REPORT_MQTT_name' => 'Enable MQTT',
'REPORT_MQTT_description' => 'Enable sending notifications via <a target="_blank" href="https://www.home-assistant.io/integrations/mqtt/">MQTT</a> to your Home Assistance instance.',
'MQTT_BROKER_name' => 'MQTT broker URL',
'MQTT_BROKER_description' => 'MQTT host URL (don\'t include <code>http://</code> or <code>https://</code>).',
'MQTT_PORT_name' => 'MQTT broker port',
'MQTT_PORT_description' => 'Port number where the broker is listening. Usually <code>1883</code>.',
'MQTT_USER_name' => 'MQTT user',
'MQTT_USER_description' => 'User name used to login into your MQTT broker instance.',
'MQTT_PASSWORD_name' => 'MQTT password',
'MQTT_PASSWORD_description' => 'Password used to login into your MQTT broker instance.',
'MQTT_QOS_name' => 'MQTT Quality of Service',
'MQTT_QOS_description' => 'Quality of service setting for MQTT message sending. <code>0</code> - Low quality to <code>2</code> - High quality. The higher the quality the longer the delay.',
'MQTT_DELAY_SEC_name' => 'MQTT delay per device',
'MQTT_DELAY_SEC_description' => 'A little hack - delay adding to the queue in case the process is restarted and previous publish processes aborted (it takes ~<code>2</code>s to update a sensor config on the broker). Tested with <code>2</code>-<code>3</code> seconds of delay. This delay is only applied when devices are created (during the first notification loop). It doesn\'t affect subsequent scans or notifications.',
//DynDNS
'DynDNS_display_name' => 'DynDNS',
'DynDNS_icon' => '<i class="fa fa-globe"></i>',
'DDNS_ACTIVE_name' => 'Enable DynDNS',
'DDNS_ACTIVE_description' => '',
'DDNS_DOMAIN_name' => 'DynDNS domain URL',
'DDNS_DOMAIN_description' => '',
'DDNS_USER_name' => 'DynDNS user',
'DDNS_USER_description' => '',
'DDNS_PASSWORD_name' => 'DynDNS password',
'DDNS_PASSWORD_description' => '',
'DDNS_UPDATE_URL_name' => 'DynDNS update URL',
'DDNS_UPDATE_URL_description' => 'Update URL starting with <code>http://</code> or <code>https://</code>.',
// PiHole
'PiHole_display_name' => 'PiHole',
'PiHole_icon' => '<i class="fa fa-seedling"></i>',
'PIHOLE_ACTIVE_name' => 'Enable PiHole mapping',
'PIHOLE_ACTIVE_description' => 'You need to map<code>:/etc/pihole/pihole-FTL.db</code> in the <code>docker-compose.yml</code> file if you enable this setting.',
'DHCP_ACTIVE_name' => 'Enable PiHole DHCP',
'DHCP_ACTIVE_description' => 'You need to map <code>:/etc/pihole/dhcp.leases</code> in the <code>docker-compose.yml</code> file if you enable this setting.',
// Pholus
'Pholus_display_name' => 'Pholus',
'Pholus_icon' => '<i class="fa fa-search"></i>',
'PHOLUS_ACTIVE_name' => 'Cycle run',
'PHOLUS_ACTIVE_description' => '<a href="https://github.com/jokob-sk/Pi.Alert/tree/main/pholus" target="_blank" >Pholus</a> is a sniffing tool to discover additional information about the devices on the network, including the device name. If enabled this will execute the scan before every network scan cycle until there are no <code>(unknown)</code> or <code>(name not found)</code> devices. Please be aware it can spam the network with unnecessary traffic. Depends on the <a onclick="toggleAllSettings()" href="#SCAN_SUBNETS"><code>SCAN_SUBNETS</code> setting</a>. For a scheduled or one-off scan, check the <a href="#PHOLUS_RUN"><code>PHOLUS_RUN</code> setting</a>.',
'PHOLUS_TIMEOUT_name' => 'Cycle run timeout',
'PHOLUS_TIMEOUT_description' => 'How long in seconds should Pholus be sniffing on each interface if above condition is fulfilled. The longer you leave it on, the more likely devices would broadcast more info. This timeout adds to the time it takes to perform an arp-scan on your network.',
'PHOLUS_FORCE_name' => 'Cycle force scan',
'PHOLUS_FORCE_description' => 'Force scan every network scan, even if there are no <code>(unknown)</code> or <code>(name not found)</code> devices. Be careful enabling this as the sniffing can easily flood your network.',
'PHOLUS_RUN_name' => 'Scheduled run',
'PHOLUS_RUN_description' => 'Enable a regular Pholus scan / sniff on your network. The scheduling settings can be found below. If you select <code>once</code> Pholus is run only once on start for the time specified in <a href="#PHOLUS_RUN_TIMEOUT"><code>PHOLUS_RUN_TIMEOUT</code> setting</a>.',
'PHOLUS_RUN_TIMEOUT_name' => 'Scheduled run timeout',
'PHOLUS_RUN_TIMEOUT_description' => 'The timeout in seconds for the scheduled Pholus scan. Same notes regarding the duration apply as on the <a href="#PHOLUS_TIMEOUT"><code>PHOLUS_TIMEOUT</code> setting</a>. A scheduled scan doesn\'t check if there are <code>(unknown)</code> or <code>(name not found)</code> devices, the scan is executed either way.',
'PHOLUS_RUN_SCHD_name' => 'Schedule',
'PHOLUS_RUN_SCHD_description' => 'Only enabled if you select <code>schedule</code> in the <a href="#PHOLUS_RUN"><code>PHOLUS_RUN</code> setting</a>. Make sure you enter the schedule in the correct cron-like format
(e.g. validate at <a href="https://crontab.guru/" target="_blank">crontab.guru</a>). For example entering <code>0 4 * * *</code> will run the scan after 4 am in the <a onclick="toggleAllSettings()" href="#TIMEZONE"><code>TIMEZONE</code> you set above</a>. Will be run NEXT time the time passes.',
'PHOLUS_DAYS_DATA_name' => 'Data retention',
'PHOLUS_DAYS_DATA_description' => 'How many days of Pholus scan entries should be kept (globally, not device specific!) Enter <code>0</code> to disable.',
// Nmap
'Nmap_display_name' => 'Nmap',
'Nmap_icon' => '<i class="fa fa-ethernet"></i>',
'NMAP_ACTIVE_name' => 'Cycle run',
'NMAP_ACTIVE_description' => 'If enabled this will execute a scan on a newly found device. For a scheduled or one-off scan, check the <a href="#NMAP_RUN"><code>NMAP_RUN</code> setting</a>.',
'NMAP_TIMEOUT_name' => 'Run timeout',
'NMAP_TIMEOUT_description' => 'Maximum time in seconds to wait for an Nmap scan to finish on any device.',
'NMAP_RUN_name' => 'Scheduled run',
'NMAP_RUN_description' => 'Enable a regular Nmap scan on your network on all devices. The scheduling settings can be found below. If you select <code>once</code> Nmap is run only once on start for the time specified in <a href="#NMAP_TIMEOUT"><code>NMAP_TIMEOUT</code> setting</a>.',
'NMAP_RUN_SCHD_name' => 'Schedule',
'NMAP_RUN_SCHD_description' => 'Only enabled if you select <code>schedule</code> in the <a href="#NMAP_RUN"><code>NMAP_RUN</code> setting</a>. Make sure you enter the schedule in the correct cron-like format.',
'NMAP_ARGS_name' => 'Arguments',
'NMAP_ARGS_description' => 'Arguments used to run the Nmap scan. Be careful to specify <a href="https://linux.die.net/man/1/nmap" target="_blank">the arguments</a> correctly. For example <code>-p -10000</code> scans ports from 1 to 10000.',
// API
'API_display_name' => 'API',
'API_icon' => '<i class="fa fa-arrow-down-up-across-line"></i>',
'API_CUSTOM_SQL_name' => 'Custom endpoint',
'API_CUSTOM_SQL_description' => 'You can specify a custom SQL query which will generate a JSON file and then expose it via the <a href="/api/table_custom_endpoint.json" target="_blank"><code>table_custom_endpoint.json</code> file endpoint</a>.',
);
?>

View File

@@ -0,0 +1,648 @@
{
"es_es": {
"About_Title": "Open Source Network Guard",
"About_Design" : "Diseñado para:",
"About_Exit" : "Salir",
"Gen_Delete" : "Eliminar",
"Gen_DeleteAll" : "Eliminar todo",
"Gen_Cancel" : "Cancelar",
"Gen_Okay" : "Aceptar",
"Gen_Save" : "Guardar",
"Gen_Saved" : "Guardado",
"Gen_Run" : "Ejecutar",
"Gen_Copy" : "Ejecutar",
"Gen_Action" : "Acción",
"Gen_Purge" : "Purgar",
"Gen_Backup" : "Ejecutar copia de seguridad",
"Gen_Restore" : "Ejecutar restauración",
"Gen_Switch" : "Cambiar",
"Gen_AreYouSure" : "¿Estás seguro de",
"Gen_Upd" : "Actualizado correctamente",
"Gen_Upd_Fail" : "Fallo al actualizar",
"Gen_ReadDocs" : "Ayuda",
"Gen_DataUpdatedUITakesTime" : "Correcto - La interfaz puede tardar en actualizarse si se está ejecutando un escaneo.",
"Gen_LockedDB" : "Fallo - La base de datos puede estar bloqueada - Pulsa F1 -> Ajustes de desarrolladores -> Consola o prueba más tarde.",
"Login_Box" : "Ingrese su contraseña",
"Login_Remember" : "Recordar",
"Login_Remember_small" : "(válido por 7 días)",
"Login_Submit" : "Ingresar",
"Login_Psw_run" : "Para cambiar contraseña ejecute:",
"Login_Psw_new" : "nueva_contraseña",
"Login_Psw_folder" : "en la carpeta config.",
"Login_Psw_alert" : "¡Alerta de Contraseña!",
"Login_Psw-box" : "Contraseña",
"Login_Toggle_Info" : "Información sobre la contraseña",
"Login_Toggle_Info_headline" : "Información sobre la contraseña",
"Login_Toggle_Alert_headline" : "Alerta de Contraseña!",
"Login_Default_PWD" : "La contraseña por defecto \"123456\" sigue activa.",
"Navigation_Devices" : "Dispositivos",
"Navigation_Presence" : "Historial",
"Navigation_Events" : "Eventos",
"Navigation_Report" : "Reporte",
"Navigation_Network" : "Red",
"Navigation_Plugins" : "Plugins",
"Navigation_Maintenance" : "Mantenimiento",
"Navigation_Settings" : "Configuración",
"Navigation_Flows" : "Flows",
"Navigation_SystemInfo" : "Info del sistema",
"Navigation_HelpFAQ" : "Ayuda / FAQ",
"Device_Title" : "Dispositivos",
"Device_Shortcut_AllDevices" : "Todos",
"Device_Shortcut_Connected" : "Conectado(s)",
"Device_Shortcut_Favorites" : "Favorito(s)",
"Device_Shortcut_NewDevices" : "Nuevo(s)",
"Device_Shortcut_DownAlerts" : "Alerta(s) de caída(s)",
"Device_Shortcut_Archived" : "Archivado(s)",
"Device_Shortcut_Devices" : "Dispositivos",
"Device_Shortcut_OnlineChart" : "Presencia del dispositivo a lo largo del tiempo",
"Device_TableHead_Name" : "Nombre",
"Device_TableHead_Owner" : "Propietario",
"Device_TableHead_Type" : "Tipo",
"Device_TableHead_Icon" : "Icon",
"Device_TableHead_RowID" : "Row ID",
"Device_TableHead_Rowid" : "Row ID",
"Device_TableHead_Parent_MAC" : "Nodo principal de la MAC",
"Device_TableHead_Connected_Devices" : "Dispositivos conectados",
"Device_TableHead_Location" : "Ubicación",
"Device_TableHead_Vendor" : "Fabricante",
"Device_TableHead_Port" : "Puerto",
"Device_TableHead_Favorite" : "Favorito",
"Device_TableHead_Group" : "Grupo",
"Device_TableHead_FirstSession" : "1ra. sesión",
"Device_TableHead_LastSession" : "Última sesión",
"Device_TableHead_LastIP" : "Última IP",
"Device_TableHead_MAC" : "MAC",
"Device_TableHead_MAC_full" : "MAC completa",
"Device_TableHead_LastIPOrder" : "Última orden de IP",
"Device_TableHead_Status" : "Estado",
"Device_Searchbox" : "Búsqueda",
"Device_Tablelenght" : "Mostrar _MENU_ entradas",
"Device_Tablelenght_all" : "Todos",
"Device_Table_info" : "Mostrando el INICIO y el FINAL de TODAS las entradas",
"Device_Table_nav_next" : "Siguiente",
"Device_Table_nav_prev" : "Anterior",
"Presence_Title" : "Historial por dispositivo",
"Presence_Loading" : "Cargando...",
"Loading" : "Cargando...",
"Presence_Shortcut_AllDevices" : "Todos",
"Presence_Shortcut_Connected" : "Conectado(s)",
"Presence_Shortcut_Favorites" : "Favorito(s)",
"Presence_Shortcut_NewDevices" : "Nuevo(s)",
"Presence_Shortcut_DownAlerts" : "Alerta(s) de caída(s)",
"Presence_Shortcut_Archived" : "Archivado(s)",
"Presence_Shortcut_Devices" : "Dispositivos",
"Presence_CallHead_Devices" : "Dispositivos",
"Presence_CalHead_lang" : "es-es",
"Presence_CalHead_year" : "año",
"Presence_CalHead_quarter" : "trimestre",
"Presence_CalHead_month" : "mes",
"Presence_CalHead_week" : "semana",
"Presence_CalHead_day" : "día",
"Events_Title" : "Eventos",
"Events_Loading" : "Cargando...",
"Events_Periodselect_today" : "Hoy",
"Events_Periodselect_LastWeek" : "La semana pasada",
"Events_Periodselect_LastMonth" : "El mes pasado",
"Events_Periodselect_LastYear" : "El año pasado",
"Events_Periodselect_All" : "Toda la información",
"Events_Shortcut_AllEvents" : "Todos los eventos",
"Events_Shortcut_Sessions" : "Sesiones",
"Events_Shortcut_MissSessions" : "Sesiones faltantes",
"Events_Shortcut_VoidSessions" : "Sesiones anuladas",
"Events_Shortcut_NewDevices" : "Nuevo(s)",
"Events_Shortcut_DownAlerts" : "Alerta(s) de caída(s)",
"Events_Shortcut_Events" : "Eventos",
"Events_TableHead_Order" : "Ordenar",
"Events_TableHead_Device" : "Dispositivo",
"Events_TableHead_Owner" : "Propietario",
"Events_TableHead_Date" : "Fecha",
"Events_TableHead_EventType" : "Tipo de evento",
"Events_TableHead_Connection" : "Conexión",
"Events_TableHead_Disconnection" : "Desconexión",
"Events_TableHead_Duration" : "Duración",
"Events_TableHead_DurationOrder" : "Orden de duración",
"Events_TableHead_IP" : "Dirección IP",
"Events_TableHead_IPOrder" : "Orden de IP",
"Events_TableHead_AdditionalInfo" : "Información adicional",
"Events_Searchbox" : "Búsqueda",
"Events_Tablelenght" : "Mostrando entradas del MENÚ",
"Events_Tablelenght_all" : "Todos",
"Events_Table_info" : "Mostrando el INICIO y el FINAL de TODAS las entradas",
"Events_Table_nav_next" : "Siguiente",
"Events_Table_nav_prev" : "Anterior",
"DevDetail_Loading" : "Cargando ...",
"DevDetail_Periodselect_today" : "Hoy",
"DevDetail_Periodselect_LastWeek" : "La semana pasada",
"DevDetail_Periodselect_LastMonth" : "El mes pasado",
"DevDetail_Periodselect_LastYear" : "El año pasado",
"DevDetail_Periodselect_All" : "Toda la información",
"DevDetail_Shortcut_CurrentStatus" : "Estado actual",
"DevDetail_Shortcut_Sessions" : "Sesiones",
"DevDetail_Shortcut_Presence" : "Historial",
"DevDetail_Shortcut_DownAlerts" : "Alerta(s) de caída(s)",
"DevDetail_Tab_Details" : "<i class=\"fa fa-info-circle\"></i> Detalles",
"DevDetail_Tab_Tools": "<i class=\"fa fa-screwdriver-wrench\"></i> Herramientas",
"DevDetail_Tab_Tools_Internet_Info_Title": "Información de Internet",
"DevDetail_Tab_Tools_Internet_Info_Description": "La herramienta de información de internet muestra información sobre la conexión a Internet, como dirección IP, ciudad, país, código de área y zona horaria.",
"DevDetail_Tab_Tools_Internet_Info_Start": "Iniciar información de Internet",
"DevDetail_Tab_Tools_Internet_Info_Error": "Se ha producido un error",
"DevDetail_Tab_Tools_Nslookup_Title": "Nslookup",
"DevDetail_Tab_Tools_Nslookup_Description": "Nslookup es una herramienta de línea de comandos que se utiliza para realizar consultas al Sistema de nombres de dominio (DNS). El DNS es un sistema que traduce nombres de dominio, como www.google.com, a direcciones IP, como 172.217.0.142.",
"DevDetail_Tab_Tools_Nslookup_Start": "Iniciar Nslookup",
"DevDetail_Tab_Tools_Nslookup_Error": "Error: la dirección IP no es válida",
"DevDetail_Tab_Tools_Speedtest_Title": "Prueba Speedtest",
"DevDetail_Tab_Tools_Speedtest_Description": "La herramienta Speedtest mide la velocidad de descarga, la velocidad de subida y la latencia de la conexión a Internet.",
"DevDetail_Tab_Tools_Speedtest_Start": "Iniciar Speedtest",
"DevDetail_Tab_Tools_Traceroute_Title": "Traceroute",
"DevDetail_Tab_Tools_Traceroute_Description": "Traceroute es un comando de diagnóstico de red que se utiliza para rastrear la ruta que toman los paquetes de datos desde un host a otro.<br><br>El comando utiliza el protocolo de mensajes de control de Internet (ICMP) para enviar paquetes a los nodos intermedios en la ruta, cada nodo intermedio responde con un paquete ICMP de tiempo de vida agotado (TTL agotado).<br><br>La salida del comando traceroute muestra la dirección IP de cada nodo intermedio en la ruta.<br><br>El comando traceroute se puede usar para diagnosticar problemas de red, como retrasos, pérdida de paquetes y rutas bloqueadas.<br><br>También se puede usar para identificar la ubicación de un nodo intermedio en una red.",
"DevDetail_Tab_Tools_Traceroute_Start": "Iniciar Traceroute",
"DevDetail_Tab_Tools_Traceroute_Error": "Error: la dirección IP no es válida",
"DevDetail_Tab_Nmap" : "<i class=\"fa fa-ethernet\"></i> Nmap",
"DevDetail_Tab_Sessions" : "<i class=\"fa fa-list-ol\"></i> Sesiones",
"DevDetail_Tab_Presence" : "<i class=\"fa fa-calendar\"></i> Historial",
"DevDetail_Tab_Events" : "<i class=\"fa fa-bolt\"></i> Eventos",
"DevDetail_Tab_EventsTableDate" : "Fecha",
"DevDetail_Tab_EventsTableEvent" : "Tipo de evento",
"DevDetail_Tab_EventsTableIP" : "IP",
"DevDetail_Tab_EventsTableInfo" : "Información adicional",
"DevDetail_Tab_Plugins" : "<i class=\"fa fa-plug\"></i> Plugins",
"DevDetail_Tab_NmapTableHeader" : "Resultados del escaneo programado",
"DevDetail_Tab_NmapTableText" : "Establece la programación en los <a href=\"/settings.php#NMAP_ACTIVE\">Ajustes</a>",
"DevDetail_Tab_NmapEmpty" : "Ningún puerto detectado en este dispositivo con Nmap.",
"DevDetail_Tab_NmapTableIndex": "Índice",
"DevDetail_Tab_NmapTableTime": "Tiempo",
"DevDetail_Tab_NmapTablePort": "Puerto",
"DevDetail_Tab_NmapTableState": "Estado",
"DevDetail_Tab_NmapTableService": "Servicio",
"DevDetail_Tab_NmapTableExtra": "Extra",
"DevDetail_MainInfo_Title" : "<i class=\"fa fa-pencil\"></i> Información principal",
"DevDetail_MainInfo_mac" : "MAC",
"DevDetail_MainInfo_Name" : "Nombre",
"DevDetail_MainInfo_Owner" : "Propietario",
"DevDetail_MainInfo_Type" : "Tipo",
"DevDetail_Icon" : "Icono",
"DevDetail_Icon_Descr" : "Ingrese un nombre de icono de fuente awesome sin el prefijo fa- o con clase completa, por ejemplo: fa fa-skin fa-apple.",
"DevDetail_MainInfo_Vendor" : "Proveedor",
"DevDetail_MainInfo_Favorite" : "Favorito",
"DevDetail_MainInfo_Group" : "Grupo",
"DevDetail_MainInfo_Location" : "Ubicación",
"DevDetail_MainInfo_Comments" : "Comentario",
"DevDetail_MainInfo_Network_Title" : "<i class=\"fa fa-network-wired\"></i> Red",
"DevDetail_MainInfo_Network" : "<i class=\"fa fa-server\"></i> Nodo (MAC)",
"DevDetail_GoToNetworkNode" : "Navegar a la página de Internet del nodo seleccionado.",
"DevDetail_MainInfo_Network_Port" : "<i class=\"fa fa-ethernet\"></i> Puerto de Red HW",
"DevDetail_SessionInfo_Title" : "<i class=\"fa fa-calendar\"></i> Información de sesión",
"DevDetail_SessionInfo_Status" : "Estado",
"DevDetail_SessionInfo_FirstSession" : "1ra. sesión",
"DevDetail_SessionInfo_LastSession" : "Última sesión",
"DevDetail_SessionInfo_LastIP" : "Última IP",
"DevDetail_SessionInfo_StaticIP" : "IP estática",
"DevDetail_EveandAl_Title" : "<i class=\"fa fa-bolt\"></i> Configuración de eventos y alertas",
"DevDetail_EveandAl_ScanCycle" : "Ciclo de escaneo",
"DevDetail_EveandAl_AlertAllEvents" : "Alerta a todos los eventos",
"DevDetail_EveandAl_AlertDown" : "Alerta de caída",
"DevDetail_EveandAl_Skip" : "Omitir notificaciones repetidas durante",
"DevDetail_EveandAl_NewDevice" : "Nuevo dispositivo",
"DevDetail_EveandAl_Archived" : "Archivada",
"DevDetail_EveandAl_RandomMAC" : "MAC al azar",
"DevDetail_EveandAl_ScanCycle_a" : "Escanear Dispositivo",
"DevDetail_EveandAl_ScanCycle_z" : "No Escanear Dispositivo",
"DevDetail_button_Delete" : "Eliminar dispositivo",
"DevDetail_button_DeleteEvents" : "Eliminar eventos",
"DevDetail_button_DeleteEvents_Warning" : "¿Desea eliminar todos los eventos de este dispositivo?<br><br>(se eliminarán el <b>Historial de eventos</b> y las <b>Sesiones</b>, y puede ayudar en el caso de notificaciones constantes)",
"DevDetail_button_Reset" : "Restablecer cambios",
"DevDetail_button_Save" : "Guardar",
"DevDetail_button_OverwriteIcons" : "Sobreescribir iconos",
"DevDetail_button_OverwriteIcons_Tooltip" : "Sobreescribir los iconos de todos los dispositivos con el mismo tipo",
"DevDetail_button_OverwriteIcons_Warning" : "¿Sobreescribir todos los iconos de todos los dispositivos con el mismo tipo que el dispositivo actual?",
"DevDetail_SessionTable_Order" : "Ordenar",
"DevDetail_SessionTable_Connection" : "Conexión",
"DevDetail_SessionTable_Disconnection" : "Desconexión",
"DevDetail_SessionTable_Duration" : "Duración",
"DevDetail_SessionTable_IP" : "Dirección IP",
"DevDetail_SessionTable_Additionalinfo" : "Información adicional",
"DevDetail_Events_CheckBox" : "Ocultar eventos de conexión",
"DevDetail_Nmap_buttonFast" : "Exploración rápida",
"DevDetail_Nmap_buttonDefault" : "Escaneado predeterminado",
"DevDetail_Nmap_buttonDetail" : "Escaneo detallado",
"DevDetail_Nmap_buttonFast_text" : "Escaneo rápido: escanee menos puertos (100) que el escaneo predeterminado (unos pocos segundos)",
"DevDetail_Nmap_buttonDefault_text" : "Escaneo predeterminado: NMAP escanea los 1,000 puertos principales para cada protocolo de escaneo solicitado. Esto atrapa aproximadamente el 93% de los puertos TCP y el 49% de los puertos UDP. (aproximadamente 5 segundos)",
"DevDetail_Nmap_buttonDetail_text" : "Escaneo detallado: escaneo predeterminado con detección de sistema operativo habilitado, detección de versiones, escaneo de script y traceroute (hasta 30 segundos o más)",
"DevDetail_Nmap_buttonSkipDiscovery" : "Omitir detección de host",
"DevDetail_Nmap_buttonSkipDiscovery_text" : "Omitir detección de host (-Pn opción): Escaneo predeterminado sin detección de host",
"DevDetail_Nmap_resultsLink" : "Puedes abandonar esta página después de empezar un escaneo. Los resultados también estarán disponibles en el archivo <code>pialert_front.log</code>.",
"DevDetail_Nmap_Scans": "Escaneos de Nmap",
"BackDevDetail_Actions_Title_Run" : "Ejecutar acción",
"BackDevDetail_Actions_Not_Registered" : "Acción no registrada: ",
"BackDevDetail_Actions_Ask_Run" : "¿Desea ejecutar la acción?",
"BackDevDetail_Tools_WOL_okay" : "El comando se ha ejecutado correctamente.",
"BackDevDetail_Tools_WOL_error" : "Ha ocurrido un error al ejectuar el comando.",
"DevDetail_Tools_WOL_noti" : "Wake-on-LAN",
"DevDetail_Tools_WOL_noti_text" : "El comando de Wake-on-LAN en enviado a la dirección de escucha. Si el dispositivo no está en la misma subred/vlan que Pi.Alert, el dispositivo no responderá.",
"DevDetail_Tools_WOL" : "Enviar comando WOL a ",
"DevDetail_WOL_Title" : "<i class=\"fa fa-power-off\"></i> Wake-on-LAN",
"DevDetail_Run_Actions_Title" : "<i class=\"fa fa-play\"></i> Ejecutar acción en el dispositivo",
"DevDetail_Run_Actions_Tooltip" : "Ejecutar la acción del desplegable sobre el dispositivo actual.",
"DevDetail_Copy_Device_Title": "<i class=\"fa fa-copy\"></i> Copiar detalles del dispositivo",
"DevDetail_Copy_Device_Tooltip": "Copiar detalles del dispositivo de la lista desplegable. Todo en esta página se sobrescribirá",
"BackDevDetail_Copy_Title": "Copiar detalles",
"BackDevDetail_Copy_Ask": "¿Copiar detalles del dispositivo de la lista desplegable (se sobrescribirá todo en esta página)?",
"Maintenance_Title" : "Herramientas de mantenimiento",
"Maintenance_version" : "Actualizaciones de la aplicación",
"Maintenance_new_version" : "🆕 Una nueva versión está disponible. Comprueba las <a href=\"https://github.com/jokob-sk/Pi.Alert/releases\" target=\"_blank\">notas de lanzamiento</a>.",
"Maintenance_current_version" : "No hay actualizaciones disponibles. Comprueba en que <a href=\"https://github.com/jokob-sk/Pi.Alert/issues/138\" target=\"_blank\">se está trabajando</a>.",
"Maintenance_built_on" : "Creada",
"Maintenance_database_path" : "Ruta de la base de datos:",
"Maintenance_database_size" : "Tamaño de base de datos:",
"Maintenance_database_lastmod" : "Última modificación:",
"Maintenance_database_backup" : "Copias de seguridad de la BD:",
"Maintenance_database_backup_found" : "copia(s) de seguridad encontrada(s)",
"Maintenance_database_backup_total" : "Uso total de disco",
"Maintenance_arp_status" : "Estado de escaneo:",
"Maintenance_arp_status_off" : "está actualmente deshabilitado",
"Maintenance_arp_status_on" : "escaneo(s) actualmente en ejecución",
"Maintenance_themeselector_lable" : "Seleccionar tema",
"Maintenance_themeselector_empty" : "Elige un tema",
"Maintenance_themeselector_apply" : "Aplicar",
"Maintenance_themeselector_text" : "El cambio tiene lugar en el lado del servidor, por lo que afecta todos los dispositivos en uso.",
"Maintenance_lang_selector_lable" : "Seleccione su idioma",
"Maintenance_lang_selector_empty" : "Elija un idioma",
"Maintenance_lang_en_us" : "English (US)",
"Maintenance_lang_de_de" : "German (DE)",
"Maintenance_lang_es_es" : "Spanish (ES)",
"Maintenance_lang_selector_text" : "El cambio tiene lugar en el lado del servidor, por lo que afecta todos los dispositivos en uso.",
"Maintenance_lang_selector_apply" : "Aplicar",
"Maintenance_Status" : "Estado",
"Maintenance_Tools_Tab_Settings" : "Ajustes",
"Maintenance_Tools_Tab_UISettings" : "Ajustes de interfaz",
"Maintenance_Tools_Tab_Tools" : "Herramientas",
"Maintenance_Tools_Tab_BackupRestore" : "Respaldo / Restaurar",
"Maintenance_Tools_Tab_Logging" : "Registros",
"Maintenance_Tool_displayed_columns_text" : "Cambia la visibilidad y el orden de las columnas en la página <a href=\"devices.php\"><b> <i class=\"fa fa-laptop\"></i> Dispositivos</b></a> . (La función de coger y arrastrar funciona un poco mal, pero funciona. (Se intentó arreglar <a href=\"https://github.com/jokob-sk/Pi.Alert/commit/94b32f0f7332879f5a7d2af05dafa2e5d5cfa5da\">como por 3 horas</a> - se agradecerían PRs para arreglarlo)).",
"Maintenance_Tool_order_columns_text" : "",
"Maintenance_Tool_darkmode" : "Cambiar Modo (Dark/Light)",
"Maintenance_Tool_drag_me" : "Coger para rearrastrar columnas.",
"Maintenance_Tool_check_visible" : "Desactivar para ocultar columna.",
"Maintenance_Tool_darkmode_text" : "Alternar entre el modo oscuro y el modo de luz. Si el interruptor no funciona correctamente, intente borrar el caché del navegador. El cambio tiene lugar en el lado del servidor, por lo que afecta todos los dispositivos en uso.",
"Maintenance_Tool_darkmode_noti" : "Cambiar Modo",
"Maintenance_Tool_darkmode_noti_text" : "Después del cambio de tema, la página intenta volver a cargar para activar el cambio. Si es necesario, el caché debe ser eliminado.",
"Maintenance_Tool_arpscansw" : "Activar arp-scan (on/off)",
"Maintenance_Tool_arpscansw_text" : "Encender o desactivar el arp-scan. Cuando el escaneo se ha apagado, permanece apagado hasta que se active nuevamente. Los escaneos activos no se cancelan.",
"Maintenance_Tool_arpscansw_noti" : "Activar arp-scan on or off",
"Maintenance_Tool_arpscansw_noti_text" : "Cuando el escaneo se ha apagado, permanece apagado hasta que se active nuevamente.",
"Maintenance_Tool_del_empty_macs" : "Eliminar dispositivos con MACs vacíos",
"Maintenance_Tool_del_empty_macs_text" : "Antes de usar esta función, haga una copia de seguridad. La eliminación no se puede deshacer. Todos los dispositivos sin Mac se eliminarán de la base de datos.",
"Maintenance_Tool_del_empty_macs_noti" : "Eliminar dispositivos",
"Maintenance_Tool_del_empty_macs_noti_text" : "¿Estás seguro de que quieres eliminar todos los dispositivos con direcciones MAC vacías? <br> (tal vez prefiera archivarlo)",
"Maintenance_Tool_upgrade_database_noti" : "Actualizar la base de datos",
"Maintenance_Tool_upgrade_database_text" : "Este botón actualizará la base de datos para habilitar la actividad de la red en las últimas 12 horas. Haga una copia de seguridad de su base de datos en caso de problemas.",
"Maintenance_Tool_upgrade_database_noti_text" : "¿Estás seguro de que quieres actualizar la base de datos? <br> (tal vez prefieras archivarla)",
"Maintenance_Tool_del_alldev" : "Eliminar todos los dispositivos",
"Maintenance_Tool_del_alldev_text" : "Antes de usar esta función, haga una copia de seguridad. La eliminación no se puede deshacer. Todos los dispositivos se eliminarán de la base de datos.",
"Maintenance_Tool_del_alldev_noti" : "Eliminar dispositivos",
"Maintenance_Tool_del_alldev_noti_text" : "¿Estás seguro de que quieres eliminar todos los dispositivos?",
"Maintenance_Tool_del_unknowndev" : "Eliminar dispositivos (desconocidos)",
"Maintenance_Tool_del_unknowndev_text" : "Antes de usar esta función, haga una copia de seguridad. La eliminación no se puede deshacer. Todos los dispositivos nombrados (desconocidos) se eliminarán de la base de datos.",
"Maintenance_Tool_del_unknowndev_noti" : "Eliminar dispositivos (desconocidos)",
"Maintenance_Tool_del_unknowndev_noti_text" : "¿Estás seguro de que quieres eliminar todos los dispositivos (desconocidos)?",
"Maintenance_Tool_del_allevents" : "Eliminar todo (Restablecer historial)",
"Maintenance_Tool_del_allevents_text" : "Antes de usar esta función, haga una copia de seguridad. La eliminación no se puede deshacer. Se eliminarán todos los eventos en la base de datos. En ese momento se restablecerá la presencia de todos los dispositivos. Esto puede conducir a sesiones no válidas. Esto significa que los dispositivos se muestran como \"presentes\", aunque están fuera de línea. Un escaneo mientras el dispositivo en cuestión está en línea resuelve el problema.",
"Maintenance_Tool_del_allevents_noti" : "Eliminar eventos",
"Maintenance_Tool_del_allevents_noti_text" : "¿Estás seguro de que quieres eliminar todos los eventos? Esto restablece la presencia de todos los dispositivos.",
"Maintenance_Tool_del_allevents30" : "Eliminar eventos antiguos (30 días)",
"Maintenance_Tool_del_allevents30_text" : "Antes de usar esta función, haga una copia de seguridad. La eliminación no se puede deshacer. Se eliminarán todos los eventos mayores a 30 días en la base de datos. En ese momento se restablecerá la presencia de todos los dispositivos. Esto puede conducir a sesiones no válidas. Esto significa que los dispositivos se muestran como \"presentes\", aunque están fuera de línea. Un escaneo mientras el dispositivo en cuestión está en línea resuelve el problema.",
"Maintenance_Tool_del_allevents30_noti" : "Eliminar eventos",
"Maintenance_Tool_del_allevents30_noti_text" : "¿Está seguro de eliminar todos los eventos mayores a 30 días? Esto restablece la presencia de todos los dispositivos.",
"Maintenance_Tool_backup" : "Respaldar DB",
"Maintenance_Tool_backup_text" : "Las copias de seguridad de la base de datos se encuentran en el directorio de la base de datos como una Zip-Archive, nombrada con la fecha de creación. No hay un número máximo de copias de seguridad.",
"Maintenance_Tool_backup_noti" : "Respaldar DB",
"Maintenance_Tool_backup_noti_text" : "¿Estás seguro de que quieres exactos la copia de seguridad de DB? Asegúrese de que ningún escaneo se esté ejecutando actualmente.",
"Maintenance_Tool_restore" : "Restaurar DB",
"Maintenance_Tool_restore_text" : "La última copia de seguridad se puede restaurar a través del botón, pero las copias de seguridad anteriores solo se pueden restaurar manualmente. Después de la restauración, realice una verificación de integridad en la base de datos por seguridad, en caso de que el DB estuviera actualmente en acceso de escritura cuando se creó la copia de seguridad.",
"Maintenance_Tool_restore_noti" : "Restaurar DB",
"Maintenance_Tool_restore_noti_text" : "¿Estás seguro de que quieres hacer exactos la restauración de DB? Asegúrese de que ningún escaneo se esté ejecutando actualmente.",
"Maintenance_Tool_purgebackup" : "Purgar Respaldos",
"Maintenance_Tool_purgebackup_text" : "Todas las copias de seguridad serán eliminadas, excepto las 3 últimas.",
"Maintenance_Tool_purgebackup_noti" : "Purgar Respaldos",
"Maintenance_Tool_purgebackup_noti_text" : "¿Está seguro de borrar todas las copias de seguridad excepto las 3 últimas?",
"Maintenance_Tool_del_ActHistory" : "Eliminar la actividad de la red",
"Maintenance_Tool_del_ActHistory_text" : "El gráfico de actividad de la red se resetea. Esto no afecta a los eventos.",
"Maintenance_Tool_del_ActHistory_noti" : "Borrar la actividad de la red",
"Maintenance_Tool_del_ActHistory_noti_text" : "¿Está seguro de restablecer la actividad de la red?",
"Maintenance_Tool_ExportCSV" : "Exportación CSV",
"Maintenance_Tool_ExportCSV_text" : "Generar un archivo CSV (valores separados por comas) que contenga la lista de dispositivos incluyendo las relaciones de red entre los nodos de red y los dispositivos conectados.",
"Maintenance_Tool_ExportCSV_noti" : "Exportación CSV",
"Maintenance_Tool_ExportCSV_noti_text" : "¿Está seguro de que quiere generar un archivo CSV?",
"Maintenance_Tool_ImportCSV" : "Importación CSV",
"Maintenance_Tool_ImportCSV_text" : "Antes de usar esta función, haga una copia de seguridad. Importe un archivo CSV (valor separado por comas) que contiene la lista de dispositivos, incluidas las relaciones de red entre nodos de red y dispositivos conectados. Para hacer eso, coloque el archivo CSV llamado <b> devices.csv </b> en su carpeta <b>/config </b>.",
"Maintenance_Tool_ImportCSV_noti" : "Importación CSV",
"Maintenance_Tool_ImportCSV_noti_text" : "¿Está seguro de que quiere importar el archivo CSV? Esto sobrescribirá completamente los dispositivos de su base de datos.",
"BackDevices_Arpscan_disabled" : "Arp-Scan Desactivado",
"BackDevices_Arpscan_enabled" : "Arp-Scan Activado",
"BackDevices_darkmode_disabled" : "Darkmode Desactivado",
"BackDevices_darkmode_enabled" : "Darkmode Activado",
"BackDevices_Restore_CopError" : "La base de datos original no se pudo guardar.",
"BackDevices_Restore_okay" : "Restauración ejecutado con éxito.",
"BackDevices_Restore_Failed" : "La restauración falló. Restaurar la copia de seguridad manualmente.",
"BackDevices_Backup_CopError" : "La base de datos original no se pudo guardar.",
"BackDevices_Backup_okay" : "La copia de seguridad ejecutada con éxito con el nuevo archivo",
"BackDevices_Backup_Failed" : "La copia de seguridad se ejecutó parcialmente con éxito. El archivo no se puede crear o está vacío.",
"BackDevices_DBTools_DelDev_a" : "Dispositivo eliminado con éxito",
"BackDevices_DBTools_DelDev_b" : "Dispositivos eliminados con éxito",
"BackDevices_DBTools_DelEvents" : "Eventos eliminados con éxito",
"BackDevices_DBTools_DelEventsError" : "Error de eliminación de eventos",
"BackDevices_DBTools_DelDevError_a" : "Error de eliminación del dispositivo",
"BackDevices_DBTools_DelDevError_b" : "Error de eliminación de dispositivos",
"BackDevices_DBTools_UpdDev" : "Dispositivo actualizado con éxito",
"BackDevices_DBTools_UpdDevError" : "Error al actualizar el dispositivo",
"BackDevices_DBTools_Upgrade" : "Base de datos actualizada correctamente",
"BackDevices_DBTools_UpgradeError" : "Falló la actualización de la base de datos",
"BackDevices_DBTools_Purge" : "Las copias de seguridad más antiguas fueron eliminadas",
"BackDevices_DBTools_ImportCSV" : "Los dispositivos del archivo CSV han sido importados correctamente.",
"BackDevices_DBTools_ImportCSVError" : "El archivo CSV no pudo ser importado. Asegúrate de que el formato es correcto.",
"BackDevices_DBTools_ImportCSVMissing" : "El archivo CSV no se pudo encontrar en <b>/config/devices.csv.</b>",
"BackDevices_Device_UpdDevError" : "Fallo al actualizar dispositivos, pruebe de nuevo más tarde. La base de datos probablemente esté bloqueada por una tarea en curso.",
"Network_Title" : "Descripción general de la red",
"Network_ManageDevices" : "Administrar dispositivos",
"Network_ManageAdd" : "Añadir dispositivo",
"Network_ManageAssign" : "Asignar",
"Network_ManageUnassign" : "Desasignar",
"Network_ManageEdit" : "Actualizar dispositivo",
"Network_ManageDel" : "Eliminar dispositivo",
"Network_ManageAdd_Name" : "Nombre del dispositivo",
"Network_ManageAdd_Name_text" : "Nombre sin caracteres especiales",
"Network_ManageAdd_Type" : "Tipo de dispositivo",
"Network_ManageAdd_Type_text" : "-- Seleccionar tipo --",
"Network_ManageAdd_Port" : "Recuento de puertos",
"Network_ManageAdd_Port_text" : "dejar en blanco para WiFi y Powerline",
"Network_ManageAdd_Submit" : "Añadir dispositivo",
"Network_ManageEdit_ID" : "Dispositivo para actualizar",
"Network_ManageEdit_ID_text" : "-- Seleccione el dispositivo para editar --",
"Network_ManageEdit_Name" : "Nuevo nombre del dispositivo",
"Network_ManageEdit_Name_text" : "Nombre sin caracteres especiales",
"Network_ManageEdit_Type" : "Nuevo tipo de dispositivo",
"Network_ManageEdit_Type_text" : "-- Seleccione tipo --",
"Network_ManageEdit_Port" : " Nuevo recuento de puertos",
"Network_ManageEdit_Port_text" : "Dejar en blanco para WiFi y Powerline",
"Network_ManageEdit_Submit" : "Guardar los cambios",
"Network_ManageDel_Name" : "Dispositivo para eliminar",
"Network_ManageDel_Name_text" : "-- Seleccione el dispositivo --",
"Network_ManageDel_Submit" : "Eliminar",
"Network_Table_State" : "Estado",
"Network_Table_Hostname" : "Nombre de host",
"Network_Table_IP" : "Dirección IP",
"Network_UnassignedDevices" : "Dispositivos sin asignar",
"Network_Assign" : "Conectar al nodo de <i class=\"fa fa-server\"></i> red",
"Network_Connected" : "Dispositivos conectados",
"Network_ManageLeaf" : "Gestionar asignación",
"Network_Node" : "Nodo de red",
"Network_Node_Name" : "Nombre de nodo",
"Network_Parent" : "Dispositivo primario de la red",
"Network_NoAssignedDevices" : "Este nodo de red no tiene asignado ningún dispositivo (nodo externo). Asigna uno de la lista o ve a la pestaña <b><i class=\"fa fa-info-circle\"></i> Detalles</b> de cualquier dispositivo en la página<a href=\"devices.php\"><b> <i class=\"fa fa-laptop\"></i> Dispositivos</b></a>, y asígnalo a un <b><i class=\"fa fa-server\"></i> Nodo (MAC)</b> <b><i class=\"fa fa-ethernet\"></i> Puerto</b> de la red ahí.",
"HelpFAQ_Title" : "Ayuda / FAQ",
"HelpFAQ_Cat_General" : "General",
"HelpFAQ_Cat_Detail" : "Detalles",
"HelpFAQ_Cat_General_100_head" : "El reloj en la parte superior derecha y el tiempo de los eventos/presencia no son correctos (diferencia de tiempo).",
"HelpFAQ_Cat_General_100_text_a" : "En su PC, la siguiente zona horaria está configurada para el entorno PHP:",
"HelpFAQ_Cat_General_100_text_b" : "Si esta no es la zona horaria en la que se encuentra, debe cambiar la zona horaria en el archivo de configuración de PHP. Puedes encontrarlo en este directorio:",
"HelpFAQ_Cat_General_100_text_c" : "Busque en este archivo la entrada \"date.timezone\", elimine el \";\" inicial si es necesario e introduzca la zona horaria deseada. Puede encontrar una lista con las zonas horarias compatibles aquí (<a href=\"https://www.php.net/manual/en/timezones.php\" target=\"blank\">Link</a>)",
"HelpFAQ_Cat_General_101_head" : "Mi red parece ralentizarse, el streaming se \"congela\".",
"HelpFAQ_Cat_General_101_text" : "Es muy posible que los dispositivos de baja potencia alcancen sus límites de rendimiento con la forma en que Pi.Alert detecta nuevos dispositivos en la red. Esto se amplifica aún más, si estos dispositivos se comunican con la red a través de WLAN. Las soluciones aquí serían cambiar a una conexión por cable si es posible o, si el dispositivo sólo se va a utilizar durante un período de tiempo limitado, utilizar el arp scan. pausar el arp scan en la página de mantenimiento.",
"HelpFAQ_Cat_General_102_head" : "Me aparece el mensaje de que la base de datos es de sólo de lectura.",
"HelpFAQ_Cat_General_102_text" : "Compruebe en el directorio Pi.Alert si la carpeta de la base de datos (db) tiene asignados los permisos correctos:<br> <span class=\"text-danger help_faq_code\">drwxrwx--- 2 (nombre de usuario) www-data</span><br> Si el permiso no es correcto, puede establecerlo de nuevo con los siguientes comandos en la terminal o la consola:<br> <span class=\"text-danger help_faq_code\"> sudo chgrp -R www-data ~/pialert/db<br> chmod -R 770 ~/pialert/db </span><br> Si la base de datos sigue siendo de sólo lectura, intente reinstalar o restaurar una copia de seguridad de la base de datos desde la página de mantenimiento.",
"HelpFAQ_Cat_General_102docker_head" : "(🐳 Solo Docker) Problemas con la base de datos (errores de AJAX, solo lectura, no encontrado)",
"HelpFAQ_Cat_General_102docker_text" : "Comprueba que has seguido las instrucciones del <a href=\"https://github.com/jokob-sk/Pi.Alert/tree/main/dockerfiles\">dockerfile (la información más actualizada)</a>. <br/> <br/> <ul data-sourcepos=\"49:4-52:146\" dir=\"auto\"> <li data-sourcepos=\"49:4-49:106\">Descarga la <a href=\"https://github.com/jokob-sk/Pi.Alert/blob/main/db/pialert.db\">base de datos original desde GitHub</a>.</li> <li data-sourcepos=\"50:4-50:195\">Mapea el archivo <code>pialert.db</code> (<g-emoji class=\"g-emoji\" alias=\"warning\" fallback-src=\"https://github.githubassets.com/images/icons/emoji/unicode/26a0.png\">⚠</g-emoji> no carpeta) de arriba a <code>/home/pi/pialert/db/pialert.db</code> (puedes comprobar los <a href=\"https://github.com/jokob-sk/Pi.Alert/tree/main/dockerfiles#-examples\">ejemplos</a> para más detalles).</li> <li data-sourcepos=\"51:4-51:161\">Si aparecen problemas (errores de AJAX, no se puede escribir a la base de datos, etc,) asegúrate que los permisos están establecidos correctamente. También puedes comprobar los registros en <code>/home/pi/pialert/front/log</code>.</li> <li data-sourcepos=\"52:4-52:146\">Para arreglar los problemas de los permisos, puedes probar a crear una copia de seguridad de la base de datos y después restaurarla desde la sección <strong>Mantenimiento &gt; Copia de seguridad/Restaurar</strong>.</li> <li data-sourcepos=\"53:4-53:228\">Si la base de datos está en modo solo lectura, lo puedes arreglar ejecutando el siguiente comando para establecer el propietario y grupo en el sistema host: <code>docker exec pialert chown -R www-data:www-data /home/pi/pialert/db/pialert.db</code>.</li> </ul>",
"HelpFAQ_Cat_General_103_head" : "La página de inicio de sesión no aparece, incluso después de cambiar la contraseña.",
"HelpFAQ_Cat_General_103_text" : "Además de la contraseña, el archivo de configuración debe contener <span class=\"text-danger help_faq_code\">~/pialert/config/pialert.conf</span> además el parámetro <span class=\"text-danger help_faq_code\">PIALERT_WEB_PROTECTION</span> debe ajustarse a <span class=\"text-danger help_faq_code\">True</span>.",
"HelpFAQ_Cat_Device_200_head" : "Tengo dispositivos en mi lista que no conozco. Después de borrarlos, siempre vuelven a aparecer.",
"HelpFAQ_Cat_Device_200_text" : "Si utiliza Pi-hole, tenga en cuenta que Pi.Alert recupera información de Pi-hole. Ponga en pausa Pi.Alert, vaya a la página de configuración de Pi-hole y elimine la concesión DHCP si es necesario. Luego, también en Pi-hole, revise en Herramientas -> Red para ver si puede encontrar los hosts recurrentes allí. Si es así, elimínelos también allí. Ahora puede volver a iniciar Pi.Alert. Ahora el dispositivo(s) no debería aparecer más.",
"HelpFAQ_Cat_Detail_300_head" : "¿Qué significa? ",
"HelpFAQ_Cat_Detail_300_text_a" : "significa un dispositivo de red creado a partir de la página de red.",
"HelpFAQ_Cat_Detail_300_text_b" : "designa el número de puerto en el que el dispositivo editado actualmente está conectado a este dispositivo de red.",
"HelpFAQ_Cat_Detail_301_head_a" : "¿Cuándo está escaneando ahora? En ",
"HelpFAQ_Cat_Detail_301_head_b" : " dice 1min pero el gráfico muestra intervalos de 5min.",
"HelpFAQ_Cat_Detail_301_text" : "El intervalo de tiempo entre los escaneos está definido por el \"Cronjob\", que está configurado en 5 minutos de forma predeterminada. La designación \"1min\" se refiere a la duración esperada del escaneo. Dependiendo de la configuración de la red, este tiempo puede variar. Para editar el cronjob, puede utilizar el siguiente comando en la terminal/consola <span class=\"text-danger help_faq_code\">crontab -e</span> y cambiar el intervalo.",
"HelpFAQ_Cat_Detail_302_head_a" : "¿Qué significa? ",
"HelpFAQ_Cat_Detail_302_head_b" : "¿y por qué no puedo seleccionarlo?",
"HelpFAQ_Cat_Detail_302_text" : "Algunos dispositivos modernos generan direcciones MAC aleatorias por razones de privacidad, que ya no pueden asociarse a ningún fabricante y que vuelven a cambiar con cada nueva conexión. Pi.Alert detecta si se trata de una dirección MAC aleatoria y activa este \"campo\" automáticamente. Para deshabilitar este comportamiento, debe buscar en su dispositivo cómo deshabilitar la aleatorización de direcciones MAC.",
"HelpFAQ_Cat_Detail_303_head" : "¿Qué es Nmap y para qué sirve?",
"HelpFAQ_Cat_Detail_303_text" : "Nmap es un escáner de red con múltiples capacidades.<br> Cuando aparece un nuevo dispositivo en su lista, tiene la posibilidad de obtener información más detallada sobre el dispositivo a través del escaneo de Nmap.",
"HelpFAQ_Cat_Presence_400_head" : "Los dispositivos se muestran con un marcador amarillo y la nota \"evento faltante\".",
"HelpFAQ_Cat_Presence_400_text" : "Si esto sucede, tiene la opción de eliminar los eventos en el dispositivo en cuestión (vista de detalles). Otra posibilidad sería encender el dispositivo y esperar hasta que Pi.Alert detecte el dispositivo como \"online\" con el siguiente escaneo y luego simplemente apagar el dispositivo nuevamente. Ahora Pi.Alert debería anotar correctamente el estado del dispositivo en la base de datos con el próximo escaneo.",
"HelpFAQ_Cat_Presence_401_head" : "Un dispositivo se muestra como presente aunque esté \"Offline\".",
"HelpFAQ_Cat_Presence_401_text" : "Si esto sucede, tiene la posibilidad de eliminar los eventos del dispositivo en cuestión (vista de detalles). Otra posibilidad sería encender el dispositivo y esperar hasta que Pi.Alert reconozca el dispositivo como \"online\" con el siguiente escaneo y luego simplemente apagar el dispositivo nuevamente. Ahora Pi.Alert debería anotar correctamente el estado del dispositivo en la base de datos con el próximo escaneo.",
"HelpFAQ_Cat_Network_600_head" : "¿Para qué sirve esta sección?",
"HelpFAQ_Cat_Network_600_text" : "Esta sección debería ofrecerle la posibilidad de mapear la asignación de sus dispositivos de red. Para ello, puede crear uno o más conmutadores, WLAN, enrutadores, etc., proporcionarles un número de puerto si es necesario y asignarles dispositivos ya detectados. Esta asignación se realiza en la vista detallada del dispositivo a asignar. Por lo tanto, es posible determinar rápidamente a qué puerto está conectado un host y si está en línea. Es posible asignar un dispositivo a múltiples puertos (agrupación de puertos), así como múltiples dispositivos a un puerto (máquinas virtuales).",
"HelpFAQ_Cat_Network_601_head" : "¿Hay otros documentos?",
"HelpFAQ_Cat_Network_601_text" : "¡Sí, los hay! Marque <a target=\"_blank\" href=\"https://github.com/jokob-sk/Pi.Alert/blob/main/docs/\">todos los documentos</a> para más información.",
"test_event_tooltip" : "Guarda tus cambios antes de probar nuevos ajustes.",
"test_event_icon" : "fa-vial-circle-check",
"run_event_tooltip" : "Activa el ajuste y guarda tus cambios antes de ejecutarlo.",
"run_event_icon" : "fa-play",
"general_event_title" : "Ejecutar un evento ad-hoc",
"general_event_description" : "El evento que has ejecutado puede tardar un rato mientras finalizan procesos en segundo plano. La ejecución ha terminado cuando ves <code>finalizado</code> abajo. Comprueba el <a href='/maintenance.php#tab_Logging'>registro de error</a> si no has obtenido el resultado esperado. <br/> <br/> Estado: ",
"Plugins_Unprocessed_Events" : "Eventos sin procesar",
"Plugins_Objects" : "Objetos del Plugin",
"Plugins_DeleteAll" : "Eliminar todo (se ignoran los filtros)",
"Plugins_History" : "Historial de eventos",
"Plugins_Filters_Mac" : "Filtro MAC",
"Plugins_Out_of" : "de",
"Settings_Title" : "<i class=\"fa fa-cog\"> Configuración</i>",
"settings_missing" : "Actualiza la página, no todos los ajustes se han cargado. Probablemente sea por una sobrecarga de la base de datos.",
"settings_missing_block" : "No puedes guardar los ajustes sin establecer todas las claves. Actualiza la página. Problabmente esté causado por una sobrecarga de la base de datos.",
"settings_old" : "N/A",
"settings_imported" : "Última vez que los ajustes fueron importados desde el archivo pialert.conf:",
"settings_expand_all" : "Expandir todo",
"Setting_Override" : "Sobreescribir el valor",
"Setting_Override_Description": "Habilitar esta opción anulará un valor predeterminado proporcionado por la aplicación con el valor especificado anteriormente.",
"General_display_name" : "General",
"General_icon" : "<i class=\"fa fa-gears\"></i>",
"SCAN_SUBNETS_name" : "Subredes para escanear",
"SCAN_SUBNETS_description" : "El escaneo Arp es una herramienta de la línea de comandos que usa el protocolo ARP para encontrar e identificar la ip de los dispositivos. Una alternativa a este escaneo sería activar los ajustes de la <a onclick=\"toggleAllSettings()\" href=\"#PIHOLE_RUN\"><code>PIHOLE_RUN</code>integración con PiHole</a>. El tiempo del escaneo ARP depende del número de ips a comprobar, así que es importante establecer correctamente la máscara y la interfaz de red. Comprueba la <a href=\"https://github.com/jokob-sk/Pi.Alert/blob/main/docs/SUBNETS.md\" target=\"_blank\">documentación sobre sudredes</a> para obtener ayuda para establecer VLANs, cuáles son soportadas o como averiguar la máscara y la interfaz de red.",
"LOG_LEVEL_name" : "Imprimir registros adicionales",
"LOG_LEVEL_description" : "Esto hará que el registro tenga más información. Util para depurar que eventos se van guardando en la base de datos.",
"TIMEZONE_name" : "Zona horaria",
"TIMEZONE_description" : "La zona horaria para mostrar las estadísticas correctamente. Encuentra tu zona horaria <a target=\"_blank\" href=\"https://en.wikipedia.org/wiki/List_of_tz_database_time_zones\" rel=\"nofollow\">aquí</a>.",
"ENABLE_PLUGINS_name" : "Habilitar complementos",
"ENABLE_PLUGINS_description" : "Habilita la funcionalidad de los <a target=\"_blank\" href=\"https://github.com/jokob-sk/Pi.Alert/tree/main/front/plugins\">complementos</a>. Cargar los complementos requiere más recursos de hardware, así que quizás quieras desactivarlo en hardware poco potente.",
"PLUGINS_KEEP_HIST_name": "Historial de complementos",
"PLUGINS_KEEP_HIST_description": "¿Cuántas entradas de los resultados del análisis del historial de complementos deben conservarse (globalmente, no específico del dispositivo!).",
"PIALERT_WEB_PROTECTION_name" : "Habilitar inicio de sesión",
"PIALERT_WEB_PROTECTION_description" : "Cuando está habilitado, se muestra un cuadro de diálogo de inicio de sesión. Lea detenidamente a continuación si se le bloquea el acceso a su instancia.",
"PIALERT_WEB_PASSWORD_name" : "Contraseña de inicio de sesión",
"PIALERT_WEB_PASSWORD_description" : "La contraseña predeterminada es <code>123456</code>. Para cambiar la contraseña, ejecute <code>/home/pi/pialert/back/pialert-cli</code> en el contenedor",
"INCLUDED_SECTIONS_name" : "Notificar en",
"INCLUDED_SECTIONS_description" : "Especifica que eventos envían notificaciones. Elimina los tipos de eventos de los que no quieras recibir notificaciones. Este ajuste sobreescribe los ajustes específicos de los dispositivos en la interfaz. (<code>CTRL + Clic</code> para seleccionar / deseleccionar).",
"DAYS_TO_KEEP_EVENTS_name" : "Eliminar eventos anteriores a",
"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.",
"HRS_TO_KEEP_NEWDEV_name": "Guardar nuevos dispositivos para",
"HRS_TO_KEEP_NEWDEV_description": "Esta es una configuración de mantenimiento. Si está habilitado (<code>0</code> está deshabilitado), los dispositivos marcados como <b>Nuevo dispositivo</b> se eliminarán si su <b>Primera sesión</ b> el tiempo era anterior a las horas especificadas en esta configuración. Utilice esta configuración si desea eliminar automáticamente <b>Nuevos dispositivos</b> después de <code>X</code> horas.",
"REPORT_DASHBOARD_URL_name" : "URL de Pi.Alert",
"REPORT_DASHBOARD_URL_description" : "Esta URL se utiliza como base para generar enlaces en los correos electrónicos. Ingrese la URL completa que comienza con <code>http://</code>, incluido el número de puerto (sin barra inclinada al final <code>/</code>).",
"DIG_GET_IP_ARG_name" : "Descubrir de IP de Internet",
"DIG_GET_IP_ARG_description" : "Cambie los argumentos de la <a href=\"https://linux.die.net/man/1/dig\" target=\"_blank\">utilidad de dig</a> si tiene problemas para resolver su IP de Internet. Los argumentos se agregan al final del siguiente comando: <code>dig +short </code>.",
"UI_LANG_name" : "Idioma de interfaz",
"UI_LANG_description" : "Seleccione el idioma de interfaz de usuario preferido.",
"UI_PRESENCE_name" : "Mostrar en el gráfico de presencia",
"UI_PRESENCE_description" : "Elige que estados del dispositivo deben mostrarse en la gráfica de <b>Presencia del dispositivo a lo largo del tiempo</b> de la página de <a href=\"/devices.php\" target=\"_blank\">Dispositivos</a>. (<code>CTRL + Clic</code> para seleccionar / deseleccionar)",
"Email_display_name" : "Email",
"Email_icon" : "<i class=\"fa fa-at\"></i>",
"REPORT_MAIL_name" : "Habilitar email",
"REPORT_MAIL_description" : "Si está habilitado, se envía un correo electrónico con una lista de cambios a los que se ha suscrito. Complete también todas las configuraciones restantes relacionadas con la configuración de SMTP a continuación",
"SMTP_SERVER_name" : "URL del servidor SMTP",
"SMTP_SERVER_description" : "La URL del host del servidor SMTP. Por ejemplo, <code>smtp-relay.sendinblue.com</code>. Para utilizar Gmail como servidor SMTP <a target=\"_blank\" href=\"https://github.com/jokob-sk/Pi.Alert/blob/main/docs/SMTP.md\">siga esta guía</a >",
"SMTP_PORT_name" : "Puerto del servidor SMTP",
"SMTP_PORT_description" : "Número de puerto utilizado para la conexión SMTP. Establézcalo en <code>0</code> si no desea utilizar un puerto al conectarse al servidor SMTP.",
"SMTP_SKIP_LOGIN_name" : "Omitir autenticación",
"SMTP_SKIP_LOGIN_description" : "No utilice la autenticación cuando se conecte al servidor SMTP.",
"SMTP_USER_name" : "Nombre de usuario SMTP",
"SMTP_USER_description" : "El nombre de usuario utilizado para iniciar sesión en el servidor SMTP (a veces, una dirección de correo electrónico completa).",
"SMTP_PASS_name" : "Contraseña de SMTP",
"SMTP_PASS_description" : "La contraseña del servidor SMTP.",
"SMTP_SKIP_TLS_name" : "No usar TLS",
"SMTP_SKIP_TLS_description" : "Deshabilite TLS cuando se conecte a su servidor SMTP.",
"SMTP_FORCE_SSL_name" : "Forzar SSL",
"SMTP_FORCE_SSL_description" : "Forzar SSL al conectarse a su servidor SMTP",
"SYSTEM_TITLE" : "Información del sistema",
"REPORT_TO_name" : "Enviar el email a",
"REPORT_TO_description" : "Dirección de correo electrónico a la que se enviará la notificación.",
"REPORT_FROM_name" : "Asunto del email",
"REPORT_FROM_description" : "Asunto del correo electrónico de notificación.",
"Webhooks_display_name" : "Webhooks",
"Webhooks_icon" : "<i class=\"fa fa-circle-nodes\"></i>",
"REPORT_WEBHOOK_name" : "Habilitar webhooks",
"REPORT_WEBHOOK_description" : "Habilite webhooks para notificaciones. Los webhooks lo ayudan a conectarse a muchas herramientas de terceros, como IFTTT, Zapier o <a href=\"https://n8n.io/\" target=\"_blank\">n8n</a>, por nombrar algunas. Consulte esta sencilla <a href=\"https://github.com/jokob-sk/Pi.Alert/blob/main/docs/WEBHOOK_N8N.md\" target=\"_blank\">guía de n8n aquí</a> para obtener comenzó. Si está habilitado, configure los ajustes relacionados a continuación.",
"WEBHOOK_URL_name" : "URL de destino",
"WEBHOOK_URL_description" : "URL de destino comienza con <code>http://</code> o <code>https://</code>.",
"WEBHOOK_PAYLOAD_name" : "Tipo de carga",
"WEBHOOK_PAYLOAD_description" : "El formato de datos de carga de Webhook para el atributo <code>body</code> > <code>attachments</code> > <code>text</code> en el json de carga. Vea un ejemplo de la carga <a target=\"_blank\" href=\"https://github.com/jokob-sk/Pi.Alert/blob/main/back/webhook_json_sample.json\">aquí</a>. (por ejemplo: para discord use <code>text</code>)",
"WEBHOOK_REQUEST_METHOD_name" : "Método de solicitud",
"WEBHOOK_REQUEST_METHOD_description" : "El método de solicitud HTTP que se utilizará para la llamada de webhook.",
"Webhooks_settings_group" : "<i class=\"fa fa-circle-nodes\"></i> Webhooks",
"WEBHOOK_SIZE_name": "Tamaño máximo de carga útil",
"WEBHOOK_SIZE_description": "El tamaño máximo de la carga útil del webhook como número de caracteres en la cadena pasada. Si supera el límite, se truncará y se agregará un mensaje <code>(text was truncated)</code>.",
"Apprise_display_name" : "Apprise",
"Apprise_icon" : "<i class=\"fa fa-bullhorn\"></i>",
"REPORT_APPRISE_name" : "Habilitar Apprise",
"REPORT_APPRISE_description" : "Habilitar el envío de notificaciones a través de <a target=\"_blank\" href=\"https://hub.docker.com/r/caronc/apprise\">Apprise</a>.",
"APPRISE_HOST_description" : "URL del host de Apprise que comienza con <code>http://</code> o <code>https://</code>. (no olvide incluir <code>/notify</code> al final)",
"APPRISE_HOST_name" : "URL del host de Apprise",
"APPRISE_URL_name" : "URL de notificación de Apprise",
"APPRISE_URL_description" : "Informar de la URL de destino de la notificación. Por ejemplo, para Telegram sería <code>tgram://{bot_token}/{chat_id}</code>.",
"APPRISE_SIZE_name": "Tamaño máximo de carga útil",
"APPRISE_SIZE_description": "El tamaño máximo de la carga útil de información como número de caracteres en la cadena pasada. Si supera el límite, se truncará y se agregará un mensaje <code>(text was truncated)</code>.",
"NTFY_display_name" : "NTFY",
"NTFY_icon" : "<i class=\"fa fa-terminal\"></i>",
"REPORT_NTFY_name" : "Habilitar NTFY",
"REPORT_NTFY_description" : "Habilitar el envío de notificaciones a través de <a target=\"_blank\" href=\"https://ntfy.sh/\">NTFY</a>.",
"NTFY_HOST_name" : "URL del host NTFY",
"NTFY_HOST_description" : "URL de host NTFY que comienza con <code>http://</code> o <code>https://</code>. Puede usar la instancia alojada en <a target=\"_blank\" href=\"https://ntfy.sh/\">https://ntfy.sh</a> simplemente ingresando <code>https://ntfy. sh</código>.",
"NTFY_TOPIC_name" : "Tema de NTFY",
"NTFY_TOPIC_description" : "Tu tema secreto.",
"NTFY_USER_name" : "Usuario de NTFY",
"NTFY_USER_description" : "Ingrese usuario si necesita (alojar) una instancia con autenticación habilitada.",
"NTFY_PASSWORD_name" : "Contraseña de NTFY",
"NTFY_PASSWORD_description" : "Ingrese la contraseña si necesita (host) una instancia con autenticación habilitada.",
"PUSHSAFER_display_name" : "Pushsafer",
"PUSHSAFER_icon" : "<i class=\"fa fa-bell\"></i>",
"REPORT_PUSHSAFER_name" : "Habilitar Pushsafer",
"REPORT_PUSHSAFER_description" : "Habilitar el envío de notificaciones a través de <a target=\"_blank\" href=\"https://www.pushsafer.com/\">Pushsafer</a>.",
"PUSHSAFER_TOKEN_name" : "Token de Pushsafer",
"PUSHSAFER_TOKEN_description" : "Su clave secreta de la API de Pushsafer (token).",
"APPRISE_PAYLOAD_name" : "Tipo de carga",
"APPRISE_PAYLOAD_description" : "Seleccione el tipo de carga útil enviada a Apprise. Por ejemplo, <code>html</code> funciona bien con correos electrónicos, <code>text</code> con aplicaciones de chat, como Telegram.",
"MQTT_display_name" : "MQTT",
"MQTT_icon" : "<i class=\"fa fa-square-rss\"></i>",
"REPORT_TITLE" : "Reporte",
"REPORT_ERROR" : "La página que está buscando no está disponible temporalmente, inténtelo de nuevo después de unos segundos",
"REPORT_MQTT_name" : "Habilitar MQTT",
"REPORT_MQTT_description" : "Habilitar el envío de notificaciones a través de <a target=\"_blank\" href=\"https://www.home-assistant.io/integrations/mqtt/\">MQTT</a> a su Home Assistance.",
"MQTT_BROKER_name" : "URL del broker MQTT",
"MQTT_BROKER_description" : "URL del host MQTT (no incluya <code>http://</code> o <code>https://</code>).",
"MQTT_PORT_name" : "Puerto del broker MQTT",
"MQTT_PORT_description" : "Puerto donde escucha el broker MQTT. Normalmente <code>1883</code>.",
"MQTT_USER_name" : "Usuario de MQTT",
"MQTT_USER_description" : "Nombre de usuario utilizado para iniciar sesión en su instancia de agente de MQTT.",
"MQTT_PASSWORD_name" : "Contraseña de MQTT",
"MQTT_PASSWORD_description" : "Contraseña utilizada para iniciar sesión en su instancia de agente de MQTT.",
"MQTT_QOS_name" : "Calidad de servicio MQTT",
"MQTT_QOS_description" : "Configuración de calidad de servicio para el envío de mensajes MQTT. <code>0</code>: baja calidad a <code>2</code>: alta calidad. Cuanto mayor sea la calidad, mayor será el retraso.",
"MQTT_DELAY_SEC_name" : "Retraso de MQTT por dispositivo",
"MQTT_DELAY_SEC_description" : "Un pequeño truco: retrase la adición a la cola en caso de que el proceso se reinicie y los procesos de publicación anteriores se anulen (se necesitan ~<code>2</code>s para actualizar la configuración de un sensor en el intermediario). Probado con <code>2</code>-<code>3</code> segundos de retraso. Este retraso solo se aplica cuando se crean dispositivos (durante el primer bucle de notificación). No afecta los escaneos o notificaciones posteriores.",
"API_display_name" : "API",
"API_icon" : "<i class=\"fa fa-arrow-down-up-across-line\"></i>",
"API_CUSTOM_SQL_name" : "Endpoint personalizado",
"API_CUSTOM_SQL_description" : "Puede especificar una consulta SQL personalizada que generará un archivo JSON y luego lo expondrá a través del <a href=\"/api/table_custom_endpoint.json\" target=\"_blank\">archivo <code>table_custom_endpoint.json</code ></a>.",
"Speedtest_Results" : "Resultados de la prueba de velocidad",
"Systeminfo_General" : "General",
"Systeminfo_General_Full_Date": "Fecha completa:",
"Systeminfo_General_Date": "Fecha:",
"Systeminfo_General_Date2": "Fecha2:",
"Systeminfo_General_TimeZone": "Zona horaria:",
"Systeminfo_This_Client": "Este cliente",
"Systeminfo_Client_User_Agent": "Agente de usuario:",
"Systeminfo_Client_Resolution": "Resolución del navegador:",
"Systeminfo_CPU" : "CPU",
"Systeminfo_CPU_Vendor": "Proveedor de CPU:",
"Systeminfo_CPU_Name": "Nombre de la CPU:",
"Systeminfo_CPU_Cores": "Núcleos de CPU:",
"Systeminfo_CPU_Speed": "Velocidad de la CPU:",
"Systeminfo_CPU_Temp": "Temperatura de la CPU:",
"Systeminfo_Memory": "Memoria",
"Systeminfo_Memory_Usage": "Memoria en uso:",
"Systeminfo_Memory_Usage_Percent": "Memoria %:",
"Systeminfo_Memory_Total_Memory": "Memoria total:",
"Systeminfo_Motherboard" : "Placa base",
"Systeminfo_Motherboard_BIOS": "BIOS:",
"Systeminfo_Motherboard_BIOS_Date": "Fecha del BIOS:",
"Systeminfo_Motherboard_BIOS_Vendor": "Proveedor de BIOS:",
"Systeminfo_Motherboard_Manufactured": "Fabricado por:",
"Systeminfo_Motherboard_Name": "Nombre:",
"Systeminfo_Motherboard_Revision": "Revisión:",
"Systeminfo_Network": "Red",
"Systeminfo_Network_Accept_Encoding": "Codificación aceptada:",
"Systeminfo_Network_Accept_Language": "Idioma aceptado:",
"Systeminfo_Network_Connection_Port": "Puerto de conexión:",
"Systeminfo_Network_HTTP_Host": "Host HTTP:",
"Systeminfo_Network_HTTP_Referer": "Referido HTTP:",
"Systeminfo_Network_HTTP_Referer_String": "Sin referencia HTTP",
"Systeminfo_Network_IP": "IP Internet:",
"Systeminfo_Network_IP_Connection": "Conexión IP:",
"Systeminfo_Network_IP_Server": "IP del servidor:",
"Systeminfo_Network_MIME": "MIME:",
"Systeminfo_Network_Request_Method": "Método de solicitud:",
"Systeminfo_Network_Request_URI": "URI de solicitud:",
"Systeminfo_Network_Request_Time": "Hora de solicitud:",
"Systeminfo_Network_Secure_Connection": "Conexión segura:",
"Systeminfo_Network_Secure_Connection_String": "No (HTTP)",
"Systeminfo_Network_Server_Name": "Nombre del servidor:",
"Systeminfo_Network_Server_Name_String": "Nombre del servidor no encontrado",
"Systeminfo_Network_Server_Query": "Consulta del servidor:",
"Systeminfo_Network_Server_Query_String": "Sin cadena de consulta",
"Systeminfo_Network_Server_Version": "Versión del servidor:",
"Systeminfo_Network_Hardware": "Hardware de red",
"Systeminfo_Storage": "Almacenamiento",
"Systeminfo_Storage_Mount": "Punto de montaje:",
"Systeminfo_Storage_Device" : "Dispositivo:",
"Systeminfo_Storage_Size": "Tamaño:",
"Systeminfo_Storage_Type": "Tipo:",
"Systeminfo_Storage_Usage": "Uso de almacenamiento",
"Systeminfo_Storage_Usage_Mount": "Punto de montaje:",
"Systeminfo_Storage_Usage_Total": "Total:",
"Systeminfo_Storage_Usage_Used": "Usado:",
"Systeminfo_Storage_Usage_Free": "Libre:",
"Systeminfo_Services": "Servicios",
"Systeminfo_Services_Name": "Nombre del servicio",
"Systeminfo_Services_Description": "Descripción del servicio",
"Systeminfo_System": "Sistema",
"Systeminfo_System_Architecture": "Arquitectura:",
"Systeminfo_System_AVG": "Cargar promedio:",
"Systeminfo_System_Kernel": "Núcleo:",
"Systeminfo_System_OSVersion": "Sistema Operativo:",
"Systeminfo_System_Running_Processes" : "Procesos corriendo:",
"Systeminfo_System_System": "Sistema:",
"Systeminfo_System_Uname": "Uname:",
"Systeminfo_System_Uptime": "Tiempo de actividad:",
"Systeminfo_USB_Devices": "Dispositivos USB"
}
}

View File

@@ -1,607 +0,0 @@
<?php
$lang['es_es'] = array(
//////////////////////////////////////////////////////////////////
// About - Update by @TeroRERO 07ago2022
//////////////////////////////////////////////////////////////////
'About_Title' => 'Guadián de Red <br>(Código Abierto)',
'About_Design' => 'Diseñado para:',
'About_Exit' => 'Salir',
//////////////////////////////////////////////////////////////////
// General - Update by @TeroRERO 01ago2022
//////////////////////////////////////////////////////////////////
'Gen_Delete' => 'Eliminar',
'Gen_Cancel' => 'Cancelar',
'Gen_Okay' => 'Ok',
'Gen_Purge' => 'Purgar',
'Gen_Backup' => 'Ejecutar copia de seguridad',
'Gen_Restore' => 'Ejecutar restauración',
'Gen_Switch' => 'Cambiar',
'Gen_AreYouSure' => '¿Estás seguro de',
//////////////////////////////////////////////////////////////////
// Login Page - Update by @TeroRERO 03ago2022
//////////////////////////////////////////////////////////////////
// TeroRERO Off 'Login_Box' => 'Inicie su sesión',
'Login_Box' => 'Ingrese su contraseña',
'Login_Remember' => 'Recordar',
'Login_Remember_small' => '(válido por 7 días)',
'Login_Submit' => 'Ingresar',
'Login_Psw_run' => 'Para cambiar contraseña ejecute:',
'Login_Psw_new' => 'nueva_contraseña',
'Login_Psw_folder' => 'en la carpeta config.',
'Login_Psw_alert' => '¡Alerta de Contraseña!',
'Login_Psw-box' => 'Contraseña',
'Login_Toggle_Info' => 'Información sobre la contraseña',
'Login_Toggle_Info_headline' => 'Información sobre la contraseña',
'Login_Toggle_Alert_headline' => 'Alerta de Contraseña!',
//////////////////////////////////////////////////////////////////
// Device Page - Update by @TeroRERO 03ago2022
//////////////////////////////////////////////////////////////////
'Navigation_Devices' => 'Dispositivos',
'Navigation_Presence' => 'Historial',
'Navigation_Events' => 'Eventos',
'Navigation_Maintenance' => 'Mantenimiento',
'Navigation_Settings' => 'Configuración',
'Navigation_Network' => 'Red',
'Navigation_HelpFAQ' => 'Ayuda / FAQ',
'Device_Title' => 'Dispositivos',
'Device_Shortcut_AllDevices' => 'Todos',
'Device_Shortcut_Connected' => 'Conectado(s)',
'Device_Shortcut_Favorites' => 'Favorito(s)',
'Device_Shortcut_NewDevices' => 'Nuevo(s)',
'Device_Shortcut_DownAlerts' => 'Alerta(s) de caída(s)',
'Device_Shortcut_Archived' => 'Archivado(s)',
'Device_Shortcut_Devices' => 'Dispositivos',
'Device_Shortcut_OnlineChart' => 'Presencia del dispositivo a lo largo del tiempo',
'Device_TableHead_Name' => 'Nombre',
'Device_TableHead_Owner' => 'Propietario',
'Device_TableHead_Type' => 'Tipo',
'Device_TableHead_Favorite' => 'Favorito',
'Device_TableHead_Group' => 'Grupo',
'Device_TableHead_FirstSession' => '1ra. sesión',
'Device_TableHead_LastSession' => 'Última sesión',
'Device_TableHead_LastIP' => 'Última IP',
'Device_TableHead_MAC' => 'MAC',
'Device_TableHead_LastIPOrder' => 'Última orden de IP',
'Device_TableHead_Rowid' => 'Rowid',
'Device_TableHead_Status' => 'Estado',
'Device_Searchbox' => 'Búsqueda',
'Device_Tablelenght' => 'Mostrar _MENU_ entradas',
'Device_Tablelenght_all' => 'Todos',
'Device_Table_info' => 'Mostrando el INICIO y el FINAL de TODAS las entradas',
'Device_Table_nav_next' => 'Siguiente',
'Device_Table_nav_prev' => 'Anterior',
//////////////////////////////////////////////////////////////////
// Presence Page - Update by @TeroRERO 25jul2022
//////////////////////////////////////////////////////////////////
'Presence_Title' => 'Historial por dispositivo',
'Presence_Shortcut_AllDevices' => 'Todos',
'Presence_Shortcut_Connected' => 'Conectado(s)',
'Presence_Shortcut_Favorites' => 'Favorito(s)',
'Presence_Shortcut_NewDevices' => 'Nuevo(s)',
'Presence_Shortcut_DownAlerts' => 'Alerta(s) de caída(s)',
'Presence_Shortcut_Archived' => 'Archivado(s)',
'Presence_Shortcut_Devices' => 'Dispositivos',
// Localizationfiles under pialert/front/lib/AdminLTE/bower_components/fullcalendar/dist/locale
'Presence_CallHead_Devices' => 'Dispositivos',
'Presence_CalHead_lang' => 'es-es',
'Presence_CalHead_year' => 'año',
'Presence_CalHead_quarter' => 'trimestre',
'Presence_CalHead_month' => 'mes',
'Presence_CalHead_week' => 'semana',
//////////////////////////////////////////////////////////////////
// Events Page - Update by @TeroRERO 25jul2022
//////////////////////////////////////////////////////////////////
'Events_Title' => 'Eventos',
'Events_Periodselect_today' => 'Hoy',
'Events_Periodselect_LastWeek' => 'La semana pasada',
'Events_Periodselect_LastMonth' => 'El mes pasado',
'Events_Periodselect_LastYear' => 'El año pasado',
'Events_Periodselect_All' => 'Toda la información',
'Events_Shortcut_AllEvents' => 'Todos los eventos',
'Events_Shortcut_Sessions' => 'Sesiones',
'Events_Shortcut_MissSessions' => 'Sesiones faltantes',
'Events_Shortcut_VoidSessions' => 'Sesiones anuladas',
'Events_Shortcut_NewDevices' => 'Nuevo(s)',
'Events_Shortcut_DownAlerts' => 'Alerta(s) de caída(s)',
'Events_Shortcut_Events' => 'Eventos',
'Events_TableHead_Order' => 'Ordenar',
'Events_TableHead_Device' => 'Dispositivo',
'Events_TableHead_Owner' => 'Propietario',
'Events_TableHead_Date' => 'Fecha',
'Events_TableHead_EventType' => 'Tipo de evento',
'Events_TableHead_Connection' => 'Conexión',
'Events_TableHead_Disconnection' => 'Desconexión',
'Events_TableHead_Duration' => 'Duración',
'Events_TableHead_DurationOrder' => 'Orden de duración',
'Events_TableHead_IP' => 'Dirección IP',
'Events_TableHead_IPOrder' => 'Orden de IP',
'Events_TableHead_AdditionalInfo' => 'Información adicional',
'Events_Searchbox' => 'Búsqueda',
'Events_Tablelenght' => 'Mostrando entradas del MENÚ',
'Events_Tablelenght_all' => 'Todos',
'Events_Table_info' => 'Mostrando el INICIO y el FINAL de TODAS las entradas',
'Events_Table_nav_next' => 'Siguiente',
'Events_Table_nav_prev' => 'Anterior',
//////////////////////////////////////////////////////////////////
// Device Details Page - Update by @TeroRERO 01ago2022
//////////////////////////////////////////////////////////////////
'DevDetail_Periodselect_today' => 'Hoy',
'DevDetail_Periodselect_LastWeek' => 'La semana pasada',
'DevDetail_Periodselect_LastMonth' => 'El mes pasado',
'DevDetail_Periodselect_LastYear' => 'El año pasado',
'DevDetail_Periodselect_All' => 'Toda la información',
'DevDetail_Shortcut_CurrentStatus' => 'Estado actual',
'DevDetail_Shortcut_Sessions' => 'Sesiones',
'DevDetail_Shortcut_Presence' => 'Historial',
'DevDetail_Shortcut_DownAlerts' => 'Alerta(s) de caída(s)',
'DevDetail_Tab_Details' => 'Detalles',
'DevDetail_Tab_Nmap' => 'Nmap',
'DevDetail_Tab_Sessions' => 'Sesiones',
'DevDetail_Tab_Presence' => 'Historial',
'DevDetail_Tab_Events' => 'Eventos',
'DevDetail_MainInfo_Title' => 'Información principal',
'DevDetail_MainInfo_mac' => 'MAC',
'DevDetail_MainInfo_Name' => 'Nombre',
'DevDetail_MainInfo_Owner' => 'Propietario',
'DevDetail_MainInfo_Type' => 'Tipo',
'DevDetail_MainInfo_Vendor' => 'Proveedor',
'DevDetail_MainInfo_Favorite' => 'Favorito',
'DevDetail_MainInfo_Group' => 'Grupo',
'DevDetail_MainInfo_Location' => 'Ubicación',
'DevDetail_MainInfo_Comments' => 'Comentario',
'DevDetail_MainInfo_Network' => 'Hardware de Red (ID)',
'DevDetail_MainInfo_Network_Port' => 'Puerto de Red HW',
'DevDetail_SessionInfo_Title' => 'Información de sesión',
'DevDetail_SessionInfo_Status' => 'Estado',
'DevDetail_SessionInfo_FirstSession' => '1ra. sesión',
'DevDetail_SessionInfo_LastSession' => 'Última sesión',
'DevDetail_SessionInfo_LastIP' => 'Última IP',
'DevDetail_SessionInfo_StaticIP' => 'IP estática',
'DevDetail_EveandAl_Title' => 'Configuración de eventos y alertas',
'DevDetail_EveandAl_ScanCycle' => 'Ciclo de escaneo',
'DevDetail_EveandAl_AlertAllEvents' => 'Alerta a todos los eventos',
'DevDetail_EveandAl_AlertDown' => 'Alerta de caída',
'DevDetail_EveandAl_Skip' => 'Omitir notificaciones repetidas durante',
'DevDetail_EveandAl_NewDevice' => 'Nuevo dispositivo',
'DevDetail_EveandAl_Archived' => 'Archivada',
'DevDetail_EveandAl_RandomMAC' => 'MAC al azar',
'DevDetail_EveandAl_ScanCycle_a' => 'Escanear Dispositivo',
'DevDetail_EveandAl_ScanCycle_z' => 'No Escanear Dispositivo',
'DevDetail_button_Delete' => 'Eliminar dispositivo',
'DevDetail_button_Reset' => 'Restablecer cambios',
'DevDetail_button_Save' => 'Guardar',
'DevDetail_SessionTable_Order' => 'Ordenar',
'DevDetail_SessionTable_Connection' => 'Conexión',
'DevDetail_SessionTable_Disconnection' => 'Desconexión',
'DevDetail_SessionTable_Duration' => 'Duración',
'DevDetail_SessionTable_IP' => 'Dirección IP',
'DevDetail_SessionTable_Additionalinfo' => 'Información adicional',
'DevDetail_Events_CheckBox' => 'Ocultar eventos de conexión',
'DevDetail_Nmap_buttonFast' => 'Exploración rápida',
'DevDetail_Nmap_buttonDefault' => 'Escaneado predeterminado',
'DevDetail_Nmap_buttonDetail' => 'Escaneo detallado',
'DevDetail_Nmap_buttonFast_text' => 'Escaneo rápido: escanee menos puertos (100) que el escaneo predeterminado (unos pocos segundos)',
'DevDetail_Nmap_buttonDefault_text' => 'Escaneo predeterminado: NMAP escanea los 1,000 puertos principales para cada protocolo de escaneo solicitado. Esto atrapa aproximadamente el 93% de los puertos TCP y el 49% de los puertos UDP. (aproximadamente 5 segundos)',
'DevDetail_Nmap_buttonDetail_text' => 'Escaneo detallado: escaneo predeterminado con detección de sistema operativo habilitado, detección de versiones, escaneo de script y traceroute (hasta 30 segundos o más)',
'DevDetail_Nmap_buttonSkipDiscovery' => 'Omitir detección de host',
'DevDetail_Nmap_buttonSkipDiscovery_text' => 'Omitir detección de host (-Pn opción): Escaneo predeterminado sin detección de host',
//////////////////////////////////////////////////////////////////
// Maintenance Page - Update by @TeroRERO 07ago2022
//////////////////////////////////////////////////////////////////
'Maintenance_Title' => 'Herramientas de mantenimiento',
'Maintenance_database_path' => 'Ruta de la base de datos:',
'Maintenance_database_size' => 'Tamaño de base de datos:',
'Maintenance_database_lastmod' => 'Última modificación:',
'Maintenance_database_backup' => 'Copias de seguridad de la BD:',
'Maintenance_database_backup_found' => 'copia(s) de seguridad encontrada(s)',
'Maintenance_database_backup_total' => 'Uso total de disco',
'Maintenance_arp_status' => 'Estado de escaneo:',
'Maintenance_arp_status_off' => 'está actualmente deshabilitado',
'Maintenance_arp_status_on' => 'escaneo(s) actualmente en ejecución',
'Maintenance_themeselector_lable' => 'Seleccionar Skin',
'Maintenance_themeselector_empty' => 'Elija un Skin',
'Maintenance_themeselector_text' => 'El cambio tiene lugar en el lado del servidor, por lo que afecta todos los dispositivos en uso.',
'Maintenance_themeselector_apply' => 'Aplicar',
'Maintenance_lang_selector_lable' => 'Seleccione su idioma',
'Maintenance_lang_selector_empty' => 'Elija un idioma',
'Maintenance_lang_en_us' => 'English (US)',
'Maintenance_lang_de_de' => 'German (DE)',
'Maintenance_lang_es_es' => 'Spanish (ES)',
'Maintenance_lang_selector_text' => 'El cambio tiene lugar en el lado del servidor, por lo que afecta todos los dispositivos en uso.',
'Maintenance_lang_selector_apply' => 'Aplicar',
'Maintenance_Tools_Tab_Settings' => 'Ajustes',
'Maintenance_Tools_Tab_Tools' => 'Tools',
'Maintenance_Tools_Tab_BackupRestore' => 'Respaldo / Restaurar',
'Maintenance_Tools_Tab_Logging' => 'Logs',
'Maintenance_Tool_darkmode' => 'Cambiar Modo (Dark/Light)',
'Maintenance_Tool_darkmode_text' => 'Alternar entre el modo oscuro y el modo de luz. Si el interruptor no funciona correctamente, intente borrar el caché del navegador. El cambio tiene lugar en el lado del servidor, por lo que afecta todos los dispositivos en uso.',
'Maintenance_Tool_darkmode_noti' => 'Cambiar Modo',
'Maintenance_Tool_darkmode_noti_text' => 'Después del cambio de tema, la página intenta volver a cargar para activar el cambio. Si es necesario, el caché debe ser eliminado.',
'Maintenance_Tool_arpscansw' => 'Activar arp-scan (on/off)',
'Maintenance_Tool_arpscansw_text' => 'Encender o desactivar el arp-scan. Cuando el escaneo se ha apagado, permanece apagado hasta que se active nuevamente. Los escaneos activos no se cancelan.',
'Maintenance_Tool_arpscansw_noti' => 'Activar arp-scan on or off',
'Maintenance_Tool_arpscansw_noti_text' => 'Cuando el escaneo se ha apagado, permanece apagado hasta que se active nuevamente.',
'Maintenance_Tool_del_empty_macs' => 'Eliminar dispositivos con MACs vacíos',
'Maintenance_Tool_del_empty_macs_text' => 'Antes de usar esta función, haga una copia de seguridad. La eliminación no se puede deshacer. Todos los dispositivos sin Mac se eliminarán de la base de datos.',
'Maintenance_Tool_del_empty_macs_noti' => 'Eliminar dispositivos',
'Maintenance_Tool_del_empty_macs_noti_text' => '¿Estás seguro de que quieres eliminar todos los dispositivos con direcciones MAC vacías? <br> (tal vez prefiera archivarlo)',
'Maintenance_Tool_upgrade_database_noti' => 'Actualizar la base de datos',
'Maintenance_Tool_upgrade_database_text' => 'Este botón actualizará la base de datos para habilitar la actividad de la red en las últimas 12 horas. Haga una copia de seguridad de su base de datos en caso de problemas.',
'Maintenance_Tool_upgrade_database_noti_text' => '¿Estás seguro de que quieres actualizar la base de datos? <br> (tal vez prefieras archivarla)',
'Maintenance_Tool_del_alldev' => 'Eliminar todos los dispositivos',
'Maintenance_Tool_del_alldev_text' => 'Antes de usar esta función, haga una copia de seguridad. La eliminación no se puede deshacer. Todos los dispositivos se eliminarán de la base de datos.',
'Maintenance_Tool_del_alldev_noti' => 'Eliminar dispositivos',
'Maintenance_Tool_del_alldev_noti_text' => '¿Estás seguro de que quieres eliminar todos los dispositivos?',
'Maintenance_Tool_del_unknowndev' => 'Eliminar dispositivos (desconocidos)',
'Maintenance_Tool_del_unknowndev_text' => 'Antes de usar esta función, haga una copia de seguridad. La eliminación no se puede deshacer. Todos los dispositivos nombrados (desconocidos) se eliminarán de la base de datos.',
'Maintenance_Tool_del_unknowndev_noti' => 'Eliminar dispositivos (desconocidos)',
'Maintenance_Tool_del_unknowndev_noti_text' => '¿Estás seguro de que quieres eliminar todos los dispositivos (desconocidos)?',
'Maintenance_Tool_del_allevents' => 'Eliminar todo (Restablecer historial)',
'Maintenance_Tool_del_allevents_text' => 'Antes de usar esta función, haga una copia de seguridad. La eliminación no se puede deshacer. Se eliminarán todos los eventos en la base de datos. En ese momento se restablecerá la presencia de todos los dispositivos. Esto puede conducir a sesiones no válidas. Esto significa que los dispositivos se muestran como "presentes", aunque están fuera de línea. Un escaneo mientras el dispositivo en cuestión está en línea resuelve el problema.',
'Maintenance_Tool_del_allevents_noti' => 'Eliminar eventos',
'Maintenance_Tool_del_allevents_noti_text' => '¿Estás seguro de que quieres eliminar todos los eventos? Esto restablece la presencia de todos los dispositivos.',
'Maintenance_Tool_del_allevents30' => 'Eliminar eventos antiguos (30 días)',
'Maintenance_Tool_del_allevents30_text' => 'Antes de usar esta función, haga una copia de seguridad. La eliminación no se puede deshacer. Se eliminarán todos los eventos mayores a 30 días en la base de datos. En ese momento se restablecerá la presencia de todos los dispositivos. Esto puede conducir a sesiones no válidas. Esto significa que los dispositivos se muestran como "presentes", aunque están fuera de línea. Un escaneo mientras el dispositivo en cuestión está en línea resuelve el problema.',
'Maintenance_Tool_del_allevents30_noti' => 'Eliminar eventos',
'Maintenance_Tool_del_allevents30_noti_text' => '¿Está seguro de eliminar todos los eventos mayores a 30 días? Esto restablece la presencia de todos los dispositivos.',
'Maintenance_Tool_backup' => 'Respaldar DB',
'Maintenance_Tool_backup_text' => 'Las copias de seguridad de la base de datos se encuentran en el directorio de la base de datos como una Zip-Archive, nombrada con la fecha de creación. No hay un número máximo de copias de seguridad.',
'Maintenance_Tool_backup_noti' => 'Respaldar DB',
'Maintenance_Tool_backup_noti_text' => '¿Estás seguro de que quieres exactos la copia de seguridad de DB? Asegúrese de que ningún escaneo se esté ejecutando actualmente.',
'Maintenance_Tool_restore' => 'Restaurar DB',
'Maintenance_Tool_restore_text' => 'La última copia de seguridad se puede restaurar a través del botón, pero las copias de seguridad anteriores solo se pueden restaurar manualmente. Después de la restauración, realice una verificación de integridad en la base de datos por seguridad, en caso de que el DB estuviera actualmente en acceso de escritura cuando se creó la copia de seguridad.',
'Maintenance_Tool_restore_noti' => 'Restaurar DB',
'Maintenance_Tool_restore_noti_text' => '¿Estás seguro de que quieres hacer exactos la restauración de DB? Asegúrese de que ningún escaneo se esté ejecutando actualmente.',
'Maintenance_Tool_purgebackup' => 'Purgar Respaldos',
'Maintenance_Tool_purgebackup_text' => 'Todas las copias de seguridad serán eliminadas, excepto las 3 últimas.',
'Maintenance_Tool_purgebackup_noti' => 'Purgar Respaldos',
'Maintenance_Tool_purgebackup_noti_text' => '¿Está seguro de borrar todas las copias de seguridad excepto las 3 últimas?',
'Maintenance_Tool_del_ActHistory' => 'Eliminar la actividad de la red',
'Maintenance_Tool_del_ActHistory_text' => 'El gráfico de actividad de la red se resetea. Esto no afecta a los eventos.',
'Maintenance_Tool_del_ActHistory_noti' => 'Borrar la actividad de la red',
'Maintenance_Tool_del_ActHistory_noti_text' => '¿Está seguro de restablecer la actividad de la red?',
'Maintenance_Tool_ExportCSV' => 'Exportación CSV',
'Maintenance_Tool_ExportCSV_text' => 'Generar un archivo CSV (valores separados por comas) que contenga la lista de dispositivos incluyendo las relaciones de red entre los nodos de red y los dispositivos conectados.',
'Maintenance_Tool_ExportCSV_noti' => 'Exportación CSV',
'Maintenance_Tool_ExportCSV_noti_text' => '¿Está seguro de que quiere generar un archivo CSV?',
'Maintenance_Tool_ImportCSV' => 'Importación CSV',
'Maintenance_Tool_ImportCSV_text' => 'Antes de usar esta función, haga una copia de seguridad. Importe un archivo CSV (valor separado por comas) que contiene la lista de dispositivos, incluidas las relaciones de red entre nodos de red y dispositivos conectados. Para hacer eso, coloque el archivo CSV llamado <b> devices.csv </b> en su carpeta <b>/config </b>.',
'Maintenance_Tool_ImportCSV_noti' => 'Importación CSV',
'Maintenance_Tool_ImportCSV_noti_text' => '¿Está seguro de que quiere importar el archivo CSV? Esto sobrescribirá completamente los dispositivos de su base de datos.',
'Maintenance_Github_package_a' => 'La última versión de Pi.Alert (Fork leiweibau) se publicó en ',
'Maintenance_Github_package_b' => '',
//////////////////////////////////////////////////////////////////
// Maintenance Page - Update by @TeroRERO 25jul2022
//////////////////////////////////////////////////////////////////
'BackDevices_Arpscan_disabled' => 'Arp-Scan Desactivado',
'BackDevices_Arpscan_enabled' => 'Arp-Scan Activado',
'BackDevices_darkmode_disabled' => 'Darkmode Desactivado',
'BackDevices_darkmode_enabled' => 'Darkmode Activado',
'BackDevices_Restore_CopError' => 'La base de datos original no se pudo guardar.',
'BackDevices_Restore_okay' => 'Restauración ejecutado con éxito.',
'BackDevices_Restore_Failed' => 'La restauración falló. Restaurar la copia de seguridad manualmente.',
'BackDevices_Backup_CopError' => 'La base de datos original no se pudo guardar.',
'BackDevices_Backup_okay' => 'La copia de seguridad ejecutada con éxito con el nuevo archivo',
'BackDevices_Backup_Failed' => 'La copia de seguridad se ejecutó parcialmente con éxito. El archivo no se puede crear o está vacío.',
'BackDevices_DBTools_DelDev_a' => 'Dispositivo eliminado con éxito',
'BackDevices_DBTools_DelDev_b' => 'Dispositivos eliminados con éxito',
'BackDevices_DBTools_DelEvents' => 'Eventos eliminados con éxito',
'BackDevices_DBTools_DelEventsError' => 'Error de eliminación de eventos',
'BackDevices_DBTools_DelDevError_a' => 'Error de eliminación del dispositivo',
'BackDevices_DBTools_DelDevError_b' => 'Error de eliminación de dispositivos',
'BackDevices_DBTools_UpdDev' => 'Dispositivo actualizado con éxito',
'BackDevices_DBTools_UpdDevError' => 'Error al actualizar el dispositivo',
'BackDevices_DBTools_Upgrade' => 'Base de datos actualizada correctamente',
'BackDevices_DBTools_UpgradeError' => 'Falló la actualización de la base de datos',
'BackDevices_DBTools_Purge' => 'Las copias de seguridad más antiguas fueron eliminadas',
//////////////////////////////////////////////////////////////////
// Network Page - Update by @TeroRERO 01ago2022
//////////////////////////////////////////////////////////////////
'Network_Title' => 'Descripción general de la red',
'Network_ManageDevices' => 'Administrar dispositivos',
'Network_ManageAdd' => 'Añadir dispositivo',
'Network_ManageEdit' => 'Actualizar dispositivo',
'Network_ManageDel' => 'Eliminar dispositivo',
'Network_ManageAdd_Name' => 'Nombre del dispositivo',
'Network_ManageAdd_Name_text' => 'Nombre sin caracteres especiales',
'Network_ManageAdd_Type' => 'Tipo de dispositivo',
'Network_ManageAdd_Type_text' => '-- Seleccionar tipo --',
'Network_ManageAdd_Port' => 'Recuento de puertos',
'Network_ManageAdd_Port_text' => 'dejar en blanco para WiFi y Powerline',
'Network_ManageAdd_Submit' => 'Añadir dispositivo',
'Network_ManageEdit_ID' => 'Dispositivo para actualizar',
'Network_ManageEdit_ID_text' => '-- Seleccione el dispositivo para editar --',
'Network_ManageEdit_Name' => 'Nuevo nombre del dispositivo',
'Network_ManageEdit_Name_text' => 'Nombre sin caracteres especiales',
'Network_ManageEdit_Type' => 'Nuevo tipo de dispositivo',
'Network_ManageEdit_Type_text' => '-- Seleccione tipo --',
'Network_ManageEdit_Port' => ' Nuevo recuento de puertos',
'Network_ManageEdit_Port_text' => 'Dejar en blanco para WiFi y Powerline',
'Network_ManageEdit_Submit' => 'Guardar los cambios',
'Network_ManageDel_Name' => 'Dispositivo para eliminar',
'Network_ManageDel_Name_text' => '-- Seleccione el dispositivo --',
'Network_ManageDel_Submit' => 'Eliminar',
'Network_Table_State' => 'Estado',
'Network_Table_Hostname' => 'Nombre de host',
'Network_Table_IP' => 'Dirección IP',
//////////////////////////////////////////////////////////////////
// Help Page - Update by @TeroRERO 07ago2022
//////////////////////////////////////////////////////////////////
'HelpFAQ_Title' => 'Ayuda / FAQ',
'HelpFAQ_Cat_General' => 'General',
'HelpFAQ_Cat_Detail' => 'Detalles',
'HelpFAQ_Cat_General_100_head' => 'El reloj en la parte superior derecha y el tiempo de los eventos/presencia no son correctos (diferencia de tiempo).',
'HelpFAQ_Cat_General_100_text_a' => 'En su PC, la siguiente zona horaria está configurada para el entorno PHP:',
'HelpFAQ_Cat_General_100_text_b' => 'Si esta no es la zona horaria en la que se encuentra, debe cambiar la zona horaria en el archivo de configuración de PHP. Puedes encontrarlo en este directorio:',
'HelpFAQ_Cat_General_100_text_c' => 'Busque en este archivo la entrada "date.timezone", elimine el ";" inicial si es necesario e introduzca la zona horaria deseada. Puede encontrar una lista con las zonas horarias compatibles aquí (<a href="https://www.php.net/manual/en/timezones.php" target="blank">Link</a>)',
'HelpFAQ_Cat_General_101_head' => 'Mi red parece ralentizarse, el streaming se "congela".',
'HelpFAQ_Cat_General_101_text' => 'Es muy posible que los dispositivos de baja potencia alcancen sus límites de rendimiento con la forma en que Pi.Alert detecta nuevos dispositivos en la red. Esto se amplifica aún más,
si estos dispositivos se comunican con la red a través de WLAN. Las soluciones aquí serían cambiar a una conexión por cable si es posible o, si el dispositivo sólo se va a utilizar durante un período de tiempo limitado, utilizar el arp scan.
pausar el arp scan en la página de mantenimiento.',
'HelpFAQ_Cat_General_102_head' => 'Me aparece el mensaje de que la base de datos es de sólo de lectura.',
'HelpFAQ_Cat_General_102_text' => 'Compruebe en el directorio Pi.Alert si la carpeta de la base de datos (db) tiene asignados los permisos correctos:<br>
<span class="text-danger help_faq_code">drwxrwx--- 2 (nombre de usuario) www-data</span><br>
Si el permiso no es correcto, puede establecerlo de nuevo con los siguientes comandos en la terminal o la consola:<br>
<span class="text-danger help_faq_code">
sudo chgrp -R www-data ~/pialert/db<br>
chmod -R 770 ~/pialert/db
</span><br>
Si la base de datos sigue siendo de sólo lectura, intente reinstalar o restaurar una copia de seguridad de la base de datos desde la página de mantenimiento.',
'HelpFAQ_Cat_General_102docker_head' => '(🐳 Docker only) Database issues (AJAX errors, read-only, not found)',
'HelpFAQ_Cat_General_102docker_text' => 'Double-check you\'ve followed the <a href="https://github.com/jokob-sk/Pi.Alert/tree/main/dockerfiles">dockerfile readme (most up-to-date info)</a>. <br/> <br/> <ul data-sourcepos="49:4-52:146" dir="auto">
<li data-sourcepos="49:4-49:106">Download the <a href="https://github.com/jokob-sk/Pi.Alert/blob/main/db/pialert.db">original DB from GitHub</a>.</li>
<li data-sourcepos="50:4-50:195">Map the <code>pialert.db</code> file (<g-emoji class="g-emoji" alias="warning" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/26a0.png">⚠</g-emoji> not folder) from above to <code>/home/pi/pialert/db/pialert.db</code> (see <a href="https://github.com/jokob-sk/Pi.Alert/tree/main/dockerfiles#-examples">Examples</a> for details).</li>
<li data-sourcepos="51:4-51:161">If facing issues (AJAX errors, can\'t write to DB, etc,) make sure permissions are set correctly, alternatively check the logs under <code>/home/pi/pialert/front/log</code>.</li>
<li data-sourcepos="52:4-52:146">To solve permission issues you can also try to create a DB backup and then run a DB Restore via the <strong>Maintenance &gt; Backup/Restore</strong> section.</li>
<li data-sourcepos="53:4-53:228">If the database is in read-only mode you can solve this by setting the owner and group by executing the following command on the host system: <code>docker exec pialert chown -R www-data:www-data /home/pi/pialert/db/pialert.db</code>.</li>
</ul>',
'HelpFAQ_Cat_General_103_head' => 'La página de inicio de sesión no aparece, incluso después de cambiar la contraseña.',
'HelpFAQ_Cat_General_103_text' => 'Además de la contraseña, el archivo de configuración debe contener <span class="text-danger help_faq_code">~/pialert/config/pialert.conf</span>
además el parámetro <span class="text-danger help_faq_code">PIALERT_WEB_PROTECTION</span> debe ajustarse a <span class="text-danger help_faq_code">True</span>.',
'HelpFAQ_Cat_Device_200_head' => 'Tengo dispositivos en mi lista que no conozco. Después de borrarlos, siempre vuelven a aparecer.',
'HelpFAQ_Cat_Device_200_text' => 'Si utiliza Pi-hole, tenga en cuenta que Pi.Alert recupera información de Pi-hole. Ponga en pausa Pi.Alert, vaya a la página de configuración de Pi-hole y
elimine la concesión DHCP si es necesario. Luego, también en Pi-hole, revise en Herramientas -> Red para ver si puede encontrar los hosts recurrentes allí.
Si es así, elimínelos también allí. Ahora puede volver a iniciar Pi.Alert. Ahora el dispositivo(s) no debería aparecer más.',
'HelpFAQ_Cat_Detail_300_head' => '¿Qué significa? ',
'HelpFAQ_Cat_Detail_300_text_a' => 'significa un dispositivo de red creado a partir de la página de red.',
'HelpFAQ_Cat_Detail_300_text_b' => 'designa el número de puerto en el que el dispositivo editado actualmente está conectado a este dispositivo de red.',
'HelpFAQ_Cat_Detail_301_head_a' => '¿Cuándo está escaneando ahora? En ',
'HelpFAQ_Cat_Detail_301_head_b' => ' dice 1min pero el gráfico muestra intervalos de 5min.',
'HelpFAQ_Cat_Detail_301_text' => 'El intervalo de tiempo entre los escaneos está definido por el "Cronjob", que está configurado en 5 minutos de forma predeterminada. La designación "1min" se refiere a la duración esperada del escaneo.
Dependiendo de la configuración de la red, este tiempo puede variar. Para editar el cronjob, puede utilizar el siguiente comando en la terminal/consola <span class="text-danger help_faq_code">crontab -e</span>
y cambiar el intervalo.',
'HelpFAQ_Cat_Detail_302_head_a' => '¿Qué significa? ',
'HelpFAQ_Cat_Detail_302_head_b' => '¿y por qué no puedo seleccionarlo?',
'HelpFAQ_Cat_Detail_302_text' => 'Algunos dispositivos modernos generan direcciones MAC aleatorias por razones de privacidad, que ya no pueden asociarse a ningún fabricante y que vuelven a cambiar con cada nueva conexión.
Pi.Alert detecta si se trata de una dirección MAC aleatoria y activa este "campo" automáticamente. Para deshabilitar este comportamiento, debe buscar en su dispositivo cómo deshabilitar la
aleatorización de direcciones MAC.',
'HelpFAQ_Cat_Detail_303_head' => '¿Qué es Nmap y para qué sirve?',
'HelpFAQ_Cat_Detail_303_text' => 'Nmap es un escáner de red con múltiples capacidades.<br>
Cuando aparece un nuevo dispositivo en su lista, tiene la posibilidad de obtener información más detallada sobre el dispositivo a través del escaneo de Nmap.',
'HelpFAQ_Cat_Presence_400_head' => 'Los dispositivos se muestran con un marcador amarillo y la nota "evento faltante".',
'HelpFAQ_Cat_Presence_400_text' => 'Si esto sucede, tiene la opción de eliminar los eventos en el dispositivo en cuestión (vista de detalles). Otra posibilidad sería encender el dispositivo y esperar hasta que Pi.Alert detecte el dispositivo como "online" con el siguiente
escaneo y luego simplemente apagar el dispositivo nuevamente. Ahora Pi.Alert debería anotar correctamente el estado del dispositivo en la base de datos con el próximo escaneo.',
'HelpFAQ_Cat_Presence_401_head' => 'Un dispositivo se muestra como presente aunque esté "Offline".',
'HelpFAQ_Cat_Presence_401_text' => 'Si esto sucede, tiene la posibilidad de eliminar los eventos del dispositivo en cuestión (vista de detalles). Otra posibilidad sería encender el dispositivo y esperar hasta que Pi.Alert reconozca el dispositivo como "online" con el siguiente escaneo
y luego simplemente apagar el dispositivo nuevamente. Ahora Pi.Alert debería anotar correctamente el estado del dispositivo en la base de datos con el próximo escaneo.',
'HelpFAQ_Cat_Network_600_head' => '¿Para qué sirve esta sección?',
'HelpFAQ_Cat_Network_600_text' => 'Esta sección debería ofrecerle la posibilidad de mapear la asignación de sus dispositivos de red. Para ello, puede crear uno o más conmutadores, WLAN, enrutadores, etc., proporcionarles un número de puerto si es necesario y asignarles dispositivos
ya detectados. Esta asignación se realiza en la vista detallada del dispositivo a asignar. Por lo tanto, es posible determinar rápidamente a qué puerto está conectado un host y si está en línea. Es posible asignar un dispositivo a múltiples
puertos (agrupación de puertos), así como múltiples dispositivos a un puerto (máquinas virtuales).',
//////////////////////////////////////////////////////////////////
// Settings (based on work of https://github.com/mariorodriguezlopez/Pi.Alert/)
//////////////////////////////////////////////////////////////////
'API_settings_group' => '<i class="fa fa-arrow-down-up-across-line"></i> API',
// General
'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',
'PIALERT_WEB_PASSWORD_description' => 'La contraseña predeterminada es <code>123456</code>. Para cambiar la contraseña, ejecute <code>/home/pi/pialert/back/pialert-cli</code> en el contenedor',
'PIALERT_WEB_PASSWORD_name' => 'Contraseña de inicio de sesión',
'PIALERT_WEB_PROTECTION_description' => 'Cuando está habilitado, se muestra un cuadro de diálogo de inicio de sesión. Lea detenidamente a continuación si se le bloquea el acceso a su instancia.',
'PIALERT_WEB_PROTECTION_name' => 'Habilitar inicio de sesión',
'REPORT_DASHBOARD_URL_description' => 'Esta URL se utiliza como base para generar enlaces en los correos electrónicos. Ingrese la URL completa que comienza con <code>http://</code>, incluido el número de puerto (sin barra inclinada al final <code>/</code>).',
'REPORT_DASHBOARD_URL_name' => 'Pi.Alert URL',
'REPORT_FROM_description' => 'Asunto del correo electrónico de notificación.',
'REPORT_FROM_name' => 'Asunto del email',
'REPORT_MAIL_description' => 'Si está habilitado, se envía un correo electrónico con una lista de cambios a los que se ha suscrito. Complete también todas las configuraciones restantes relacionadas con la configuración de SMTP a continuación',
'REPORT_MAIL_name' => 'Habilitar email',
'REPORT_TO_description' => 'Dirección de correo electrónico a la que se enviará la notificación.',
'REPORT_TO_name' => 'Enviar el email a',
'SCAN_CYCLE_MINUTES_description' => 'El retraso entre escaneos. Si usa arp-scan, el tiempo de escaneo en sí depende de la cantidad de direcciones IP para verificar. Esto está influenciado por la máscara de red configurada en la configuración <a href="#SCAN_SUBNETS"><code>SCAN_SUBNETS</code></a> en la parte superior. Cada IP toma un par de segundos para escanear.',
'SCAN_CYCLE_MINUTES_name' => 'Retraso del ciclo de escaneo',
'SCAN_SUBNETS_description' => 'El tiempo de escaneo arp en sí depende de la cantidad de direcciones IP para verificar.
El número de direcciones IP para comprobar depende de la <a target="_blank" href="https://www.calculator.net/ip-subnet-calculator.html">máscara de red</a> que establezca aquí.
Por ejemplo, una máscara <code>/24</code> da como resultado 256 IP para verificar, mientras que <code>/16</code>
controles de máscara alrededor de 65,536. Cada IP toma un par de segundos. Esto significa que con una configuración incorrecta
el arp-scan tardará horas en completarse en lugar de segundos.
<ol>
<li>Especifique la máscara de red. Por ejemplo, el filtro <code>192.168.1.0/24</code> cubre los rangos de IP 192.168.1.0 a 192.168.1.255.</li>
<li>Ejecute <code>ifconfig</code> en su contenedor para encontrar los nombres de su interfaz (por ejemplo: <code>eth0</code>, <code>eth1</code>)</li>
</ol>
',
'SCAN_SUBNETS_name' => 'Subredes para escanear',
'TIMEZONE_description' => 'Zona horaria para mostrar las estadísticas correctamente. Encuentra tu zona horaria<a target="_blank" href="https://en.wikipedia.org/wiki/List_of_tz_database_time_zones" rel="nofollow">aquí</a>.',
'TIMEZONE_name' => 'Zona horaria',
'UI_LANG_description' => 'Seleccione el idioma de interfaz de usuario preferido.',
'UI_LANG_name' => 'Idioma de interfaz',
// Email
'SMTP_FORCE_SSL_description' => 'Forzar SSL al conectarse a su servidor SMTP',
'SMTP_FORCE_SSL_name' => 'Forzar SSL',
'SMTP_PASS_description' => 'La contraseña del servidor SMTP.',
'SMTP_PASS_name' => 'SMTP password',
'SMTP_PORT_description' => 'Número de puerto utilizado para la conexión SMTP. Establézcalo en <code>0</code> si no desea utilizar un puerto al conectarse al servidor SMTP.',
'SMTP_PORT_name' => 'SMTP server PORT',
'SMTP_SERVER_description' => 'La URL del host del servidor SMTP. Por ejemplo, <code>smtp-relay.sendinblue.com</code>. Para utilizar Gmail como servidor SMTP <a target="_blank" href="https://github.com/jokob-sk/Pi.Alert/blob/main/docs/SMTP_GMAIL.md">siga esta guía</a >',
'SMTP_SERVER_name' => 'SMTP server URL',
'SMTP_SKIP_LOGIN_description' => 'No utilice la autenticación cuando se conecte al servidor SMTP.',
'SMTP_SKIP_LOGIN_name' => 'Omitir autenticación',
'SMTP_SKIP_TLS_description' => 'Deshabilite TLS cuando se conecte a su servidor SMTP.',
'SMTP_SKIP_TLS_name' => 'No usar TLS',
'SMTP_USER_description' => 'El nombre de usuario utilizado para iniciar sesión en el servidor SMTP (a veces, una dirección de correo electrónico completa).',
'SMTP_USER_name' => 'SMTP user',
//API
'API_CUSTOM_SQL_description' => 'Puede especificar una consulta SQL personalizada que generará un archivo JSON y luego lo expondrá a través del <a href="/api/table_custom_endpoint.json" target="_blank">archivo <code>table_custom_endpoint.json</code ></a>.',
'API_CUSTOM_SQL_name' => 'Endpoint personalizado',
// Apprise
'APPRISE_HOST_description' => 'Apprise host URL que comienza con <code>http://</code> o <code>https://</code>. (no olvide incluir <code>/notify</code> al final)',
'APPRISE_HOST_name' => 'Apprise host URL',
'APPRISE_PAYLOAD_description' => 'Seleccione el tipo de carga útil enviada a Apprise. Por ejemplo, <code>html</code> funciona bien con correos electrónicos, <code>text</code> con aplicaciones de chat, como Telegram.',
'APPRISE_PAYLOAD_name' => 'Tipo de carga',
'APPRISE_URL_description' => 'Informar de la URL de destino de la notificación. Por ejemplo, para Telegram sería <code>tgram://{bot_token}/{chat_id}</code>.',
'APPRISE_URL_name' => 'URL de notificación de Apprise',
// Pushsafer
'REPORT_PUSHSAFER_description' => 'Habilitar el envío de notificaciones a través de <a target="_blank" href="https://www.pushsafer.com/">Pushsafer</a>.',
'REPORT_PUSHSAFER_name' => 'Habilitar Pushsafer',
//DYNDNS
'DDNS_ACTIVE_name' => 'Habilitar DynDNS',
'DDNS_DOMAIN_name' => 'URL del dominio DynDNS',
'DDNS_PASSWORD_name' => 'DynDNS password',
'DDNS_UPDATE_URL_description' => 'Actualice la URL que comienza con <code>http://</code> o <code>https://</code>.',
'DDNS_UPDATE_URL_name' => 'DynDNS update URL',
'DDNS_USER_name' => 'DynDNS user',
'DHCP_ACTIVE_description' => 'Debe asignar <code>:/etc/pihole/dhcp.leases</code> en el archivo <code>docker-compose.yml</code> si habilita esta configuración.',
'DHCP_ACTIVE_name' => 'Habilitar PiHole DHCP',
'DIG_GET_IP_ARG_description' => 'Cambie los argumentos de la <a href="https://linux.die.net/man/1/dig" target="_blank">utilidad de dig</a> si tiene problemas para resolver su IP de Internet. Los argumentos se agregan al final del siguiente comando: <code>dig +short </code>.',
'DIG_GET_IP_ARG_name' => 'Descubrir de IP de Internet',
// MQTT
'REPORT_MQTT_description' => 'Habilitar el envío de notificaciones a través de <a target="_blank" href="https://www.home-assistant.io/integrations/mqtt/">MQTT</a> a su Home Assistance.',
'REPORT_MQTT_name' => 'Habilitar MQTT',
'MQTT_BROKER_description' => 'URL del host MQTT (no incluya <code>http://</code> o <code>https://</code>).',
'MQTT_BROKER_name' => 'MQTT broker URL',
'MQTT_DELAY_SEC_description' => 'Un pequeño truco: retrase la adición a la cola en caso de que el proceso se reinicie y los procesos de publicación anteriores se anulen (se necesitan ~<code>2</code>s para actualizar la configuración de un sensor en el intermediario). Probado con <code>2</code>-<code>3</code> segundos de retraso. Este retraso solo se aplica cuando se crean dispositivos (durante el primer bucle de notificación). No afecta los escaneos o notificaciones posteriores.',
'MQTT_DELAY_SEC_name' => 'Retraso de MQTT por dispositivo',
'MQTT_PASSWORD_description' => 'Contraseña utilizada para iniciar sesión en su instancia de agente de MQTT.',
'MQTT_PASSWORD_name' => 'MQTT password',
'MQTT_PORT_description' => 'Puerto donde escucha el broker MQTT. Normalmente <code>1883</code>.',
'MQTT_PORT_name' => 'MQTT broker puerto',
'MQTT_QOS_description' => 'Configuración de calidad de servicio para el envío de mensajes MQTT. <code>0</code>: baja calidad a <code>2</code>: alta calidad. Cuanto mayor sea la calidad, mayor será el retraso.',
'MQTT_QOS_name' => 'Calidad de servicio MQTT',
'MQTT_USER_description' => 'Nombre de usuario utilizado para iniciar sesión en su instancia de agente de MQTT.',
'MQTT_USER_name' => 'MQTT user',
'MQTT_settings_group' => '<i class="fa fa-square-rss"></i> MQTT',
// NMAP
'NMAP_ACTIVE_description' => 'Si está habilitado, ejecutará un escaneo en un dispositivo recién encontrado. Para un análisis programado o único, verifique la configuración de <a href="#NMAP_RUN"><code>NMAP_RUN</code></a>.',
'NMAP_ACTIVE_name' => 'Ejecución del ciclo',
'NMAP_ARGS_description' => 'Argumentos utilizados para ejecutar el análisis de Nmap. Tenga cuidado de especificar <a href="https://linux.die.net/man/1/nmap" target="_blank">los argumentos</a> correctamente. Por ejemplo, <code>-p -10000</code> escanea los puertos del 1 al 10000.',
'NMAP_ARGS_name' => 'Argumentos',
'NMAP_RUN_SCHD_description' => 'Solo está habilitado si selecciona <code>programar</code> en la configuración de <a href="#NMAP_RUN"><code>NMAP_RUN</code></a>. Asegúrese de ingresar el cronograma en el formato tipo cron correcto.',
'NMAP_RUN_SCHD_name' => 'Programar',
'NMAP_RUN_description' => 'Habilite un escaneo regular de Nmap en su red en todos los dispositivos. Los ajustes de programación se pueden encontrar a continuación. Si selecciona <code>una vez</code>, Nmap se ejecuta solo una vez al inicio durante el tiempo especificado en la configuración de <a href="#NMAP_TIMEOUT"><code>NMAP_TIMEOUT</code></a>.',
'NMAP_RUN_name' => 'Ejecución programada',
'NMAP_TIMEOUT_description' => 'Tiempo máximo en segundos para esperar a que finalice un escaneo de Nmap en cualquier dispositivo.',
// NTFY
'REPORT_NTFY_description' => 'Habilitar el envío de notificaciones a través de <a target="_blank" href="https://ntfy.sh/">NTFY</a>.',
'REPORT_NTFY_name' => 'Habilitar NTFY',
'NTFY_HOST_description' => 'URL de host NTFY que comienza con <code>http://</code> o <code>https://</code>. Puede usar la instancia alojada en <a target="_blank" href="https://ntfy.sh/">https://ntfy.sh</a> simplemente ingresando <code>https://ntfy. sh</código>.',
'NTFY_HOST_name' => 'NTFY host URL',
'NTFY_PASSWORD_description' => 'Ingrese la contraseña si necesita (host) una instancia con autenticación habilitada.',
'NTFY_PASSWORD_name' => 'NTFY password',
'NTFY_TOPIC_name' => 'NTFY topic',
'NTFY_USER_description' => 'Ingrese usuario si necesita (alojar) una instancia con autenticación habilitada.',
'NTFY_USER_name' => 'NTFY user',
'NTFY_settings_group' => '<i class="fa fa-terminal"></i> NTFY',
// Pholus
'Pholus_settings_group' => '<i class="fa fa-search"></i> Pholus',
'PHOLUS_ACTIVE_description' => '<a href="https://github.com/jokob-sk/Pi.Alert/tree/main/pholus" target="_blank" >Pholus</a> es una herramienta de rastreo para descubrir información adicional sobre los dispositivos en la red, incluido el nombre del dispositivo. Si está habilitado, ejecutará el escaneo antes de cada ciclo de escaneo de red hasta que no haya dispositivos <code>(unknown)</code> o <code>(name not found)</code>. Tenga en cuenta que puede enviar spam a la red con tráfico innecesario. Depende de la configuración de <a onclick="toggleAllSettings()" href="#SCAN_SUBNETS"><code>SCAN_SUBNETS</code></a>. Para un análisis programado o único, verifique la configuración de <a href="#PHOLUS_RUN"><code>PHOLUS_RUN</code></a>.',
'PHOLUS_ACTIVE_name' => 'Ejecución del ciclo',
'PHOLUS_DAYS_DATA_description' => 'Cuántos días de entradas de escaneo de Pholus deben conservarse (globalmente, ¡no específico del dispositivo!). El archivo <a href="/maintenance.php#tab_Logging">pialert_pholus.log</a> no se modifica. Introduzca <code>0</code> para desactivar.',
'PHOLUS_DAYS_DATA_name' => 'Retención de datos',
'PHOLUS_FORCE_description' => 'Fuerce el escaneo de cada escaneo de red, incluso si no hay dispositivos <code>(unknown)</code> o <code>(name not found)</code>. Tenga cuidado al habilitar esto, ya que la detección puede inundar fácilmente su red.',
'PHOLUS_FORCE_name' => 'Escaneo de fuerza de ciclo',
'PHOLUS_RUN_SCHD_description' => 'Solo está habilitado si selecciona <code>programar</code> en la configuración de <a href="#PHOLUS_RUN"><code>PHOLUS_RUN</code></a>. Asegúrese de ingresar el horario en el formato similar a cron correcto
(por ejemplo, validar en <a href="https://crontab.guru/" target="_blank">crontab.guru</a>). Por ejemplo, ingresar <code>0 4 * * *</code> ejecutará el escaneo después de las 4 am en el <a onclick="toggleAllSettings()" href="#TIMEZONE"><code>TIMEZONE</code> que configuró arriba</a>. Se ejecutará la PRÓXIMA vez que pase el tiempo.',
'PHOLUS_RUN_SCHD_name' => 'Programar',
'PHOLUS_RUN_TIMEOUT_description' => 'El tiempo de espera en segundos para el escaneo Pholus programado. Se aplican las mismas notas con respecto a la duración que en la configuración de <a href="#PHOLUS_TIMEOUT"><code>PHOLUS_TIMEOUT</code></a>. Un escaneo programado no verifica si hay dispositivos <code>(unknown)</code> o <code>(name not found)</code>, el escaneo se ejecuta de cualquier manera.',
'PHOLUS_RUN_TIMEOUT_name' => 'Tiempo de espera de ejecución programado',
'PHOLUS_RUN_description' => 'Habilite un escaneo regular de Pholus en su red. Los ajustes de programación se pueden encontrar a continuación. Si selecciona <code>una vez</code>, Pholus se ejecuta solo una vez al inicio durante el tiempo especificado en la configuración de <a href="#PHOLUS_RUN_TIMEOUT"><code>PHOLUS_RUN_TIMEOUT</code></a>.',
'PHOLUS_RUN_name' => 'Ejecución programada',
'PHOLUS_TIMEOUT_description' => '¿Cuánto tiempo en segundos debe rastrear Pholus en cada interfaz si se cumple la condición anterior? Cuanto más tiempo lo deje encendido, es más probable que los dispositivos transmitan más información. Este tiempo de espera se suma al tiempo que lleva realizar un escaneo arp en su red.',
'PHOLUS_TIMEOUT_name' => 'Tiempo de espera de ciclo',
// PiHole
'PiHole_settings_group' => '<i class="fa fa-seedling"></i> PiHole',
'PIHOLE_ACTIVE_description' => 'Debe mapear <code>:/etc/pihole/pihole-FTL.db</code> en el archivo <code>docker-compose.yml</code> si habilita esta configuración.',
'PIHOLE_ACTIVE_name' => 'Habilitar el mapeo de PiHole',
'PRINT_LOG_description' => 'Esta configuración habilitará un registro más detallado. Útil para depurar eventos que se escriben en la base de datos.',
'PRINT_LOG_name' => 'Imprimir registro adicional',
'PUSHSAFER_TOKEN_description' => 'Su clave secreta de la API de Pushsafer (token).',
'PUSHSAFER_TOKEN_name' => 'Pushsafer token',
'PUSHSAFER_settings_group' => '<i class="fa fa-bell"></i> Pushsafer',
//Apprise
'REPORT_APPRISE_description' => 'Habilitar el envío de notificaciones a través de <a target="_blank" href="https://hub.docker.com/r/caronc/apprise">Apprise</a>.',
'REPORT_APPRISE_name' => 'Habilitar Apprise',
// Webhooks
'REPORT_WEBHOOK_description' => 'Habilite webhooks para notificaciones. Los webhooks lo ayudan a conectarse a muchas herramientas de terceros, como IFTTT, Zapier o <a href="https://n8n.io/" target="_blank">n8n</a>, por nombrar algunas. Consulte esta sencilla <a href="https://github.com/jokob-sk/Pi.Alert/blob/main/docs/WEBHOOK_N8N.md" target="_blank">guía de n8n aquí</a> para obtener comenzó. Si está habilitado, configure los ajustes relacionados a continuación.',
'REPORT_WEBHOOK_name' => 'Habilitar webhooks',
'WEBHOOK_PAYLOAD_description' => 'El formato de datos de carga de Webhook para el atributo <code>body</code> > <code>attachments</code> > <code>text</code> en el json de carga. Vea un ejemplo de la carga <a target="_blank" href="https://github.com/jokob-sk/Pi.Alert/blob/main/back/webhook_json_sample.json">aquí</a>. (por ejemplo: para discord use <code>html</code>)',
'WEBHOOK_PAYLOAD_name' => 'Tipo de carga',
'WEBHOOK_REQUEST_METHOD_description' => 'El método de solicitud HTTP que se utilizará para la llamada de webhook.',
'WEBHOOK_REQUEST_METHOD_name' => 'Método de solicitud',
'WEBHOOK_URL_description' => 'URL de destino comienza con <code>http://</code> o <code>https://</code>.',
'WEBHOOK_URL_name' => 'URL de destino',
'Webhooks_settings_group' => '<i class="fa fa-circle-nodes"></i> Webhooks',
// Other
'general_event_description' => 'El evento que ha activado puede tardar un tiempo hasta que finalicen los procesos en segundo plano. La ejecución terminó una vez que vea <code>finished</code> a continuación. Consulte el <a onclick=\'setCache("activeMaintenanceTab", "tab_Logging_id")\' href="/maintenance.php#tab_Logging">registro de errores</a> si no obtuvo el resultado esperado. <br/> <br/> Estado:',
'general_event_title' => 'Ejecución de un evento ad-hoc',
'run_event_icon' => 'fa-play',
'run_event_tooltip' => 'Habilite la configuración y guarde sus cambios al principio antes de ejecutarlo.',
'settings_expand_all' => 'Expandir todo',
'settings_imported' => 'La última vez que se importó la configuración desde el archivo pialert.conf:',
'settings_missing' => 'No se han cargado todos los ajustes, actualice la página. Esto probablemente se deba a una gran carga en la base de datos.',
'settings_missing_block' => 'No puede guardar su configuración sin especificar todas las claves de configuración. Recarga la página. Esto probablemente se deba a una gran carga en la base de datos.',
'settings_old' => 'La configuración en la base de datos (que se muestra en esta página) está desactualizada. Esto probablemente se deba a un análisis en ejecución. La configuración se guardó en el archivo <code>pialert.conf</code>, pero el proceso en segundo plano aún no tuvo tiempo de importarlo a la base de datos. Puede esperar hasta que la configuración se actualice para no sobrescribir sus valores anteriores. Siéntase libre de guardar su configuración de cualquier manera si no le importa perder la configuración entre la última vez que guardó y ahora. También se crean archivos de respaldo si necesita comparar su configuración más adelante.',
'test_event_icon' => 'fa-vial-circle-check',
'test_event_tooltip' => 'Guarde sus cambios antes de probar su configuración.',
);
?>

View File

@@ -18,54 +18,88 @@ switch($result){
if (isset($pia_lang_selected) == FALSE or (strlen($pia_lang_selected) == 0)) {$pia_lang_selected = $defaultLang;}
//Language_Strings ("Language_Code", "String_Key", "String_Value", "Extra")
$result = $db->query("SELECT * FROM Plugins_Language_Strings");
require dirname(__FILE__).'/../skinUI.php';
// array
$result = $db->query("SELECT * FROM Plugins_Language_Strings");
$strings = array();
while ($row = $result -> fetchArray (SQLITE3_ASSOC)) {
// Push row data
$strings[] = array( 'Language_Code' => $row['Language_Code'],
'String_Key' => $row['String_Key'],
'String_Value' => $row['String_Value'],
'Extra' => $row['Extra']
);
while ($row = $result->fetchArray(SQLITE3_ASSOC)) {
$strings[$row['String_Key']] = $row['String_Value'];
}
require dirname(__FILE__).'/../skinUI.php';
require dirname(__FILE__).'/en_us.php';
require dirname(__FILE__).'/de_de.php';
require dirname(__FILE__).'/es_es.php';
function getLanguageDataFromJson()
{
global $allLanguages;
// Default language
$defaultLanguage = 'en_us';
// Array to hold the language data from the JSON files
$languageData = [];
foreach ($allLanguages as $language) {
// Load and parse the JSON data from .json files
$jsonFilePath = dirname(__FILE__) . '/' . $language . '.json';
if (file_exists($jsonFilePath)) {
$data = json_decode(file_get_contents($jsonFilePath), true);
// Use the default language if the key is not found
$languageData[$language] = $data[$language] ?? $data[$defaultLanguage] ?? [];
} else {
// Handle the case where the JSON file doesn't exist
// For example, you might want to log an error message
echo 'File not found: '.$jsonFilePath;
}
}
return $languageData;
}
// Merge the JSON data with the SQL data, giving priority to SQL data for overlapping keys
function mergeLanguageData($jsonLanguageData, $sqlLanguageData)
{
// Loop through the JSON language data and check for overlapping keys
foreach ($jsonLanguageData as $languageCode => $languageStrings) {
foreach ($languageStrings as $key => $value) {
// Check if the key exists in the SQL data, if yes, use the SQL value
if (isset($sqlLanguageData[$key])) {
$jsonLanguageData[$languageCode][$key] = $sqlLanguageData[$key];
}
}
}
return $jsonLanguageData;
}
function lang($key)
{
global $pia_lang_selected, $lang, $defaultLang, $strings;
global $pia_lang_selected, $lang, $defaultLang, $strings, $db;
// Get the data from JSON files
$languageData = getLanguageDataFromJson();
// get strings from the DB and append them to the ones from the files
foreach ($strings as $string)
{
$lang[$string["Language_Code"]][$string["String_Key"]] = $string["String_Value"];
}
// Get the data from SQL query
$sqlLanguageData = $strings;
// check if key exists in selected language
if(array_key_exists($key, $lang[$pia_lang_selected]) == FALSE)
{
// check if key exists in the default language if not available in the selected
if (array_key_exists($key, $lang[$defaultLang]) == TRUE)
{
// if found, use default language
$temp = $lang[$defaultLang][$key];
// Merge JSON data with SQL data
$mergedLanguageData = mergeLanguageData($languageData, $sqlLanguageData);
} else
{
// String not found in the default or selected language
$temp = "String not found for key: ".$key;
// Check if the key exists in the selected language
if (isset($mergedLanguageData[$pia_lang_selected][$key])) {
$result = $mergedLanguageData[$pia_lang_selected][$key];
} else {
// If key not found in selected language, use "en_us" as fallback
if (isset($mergedLanguageData['en_us'][$key])) {
$result = $mergedLanguageData['en_us'][$key];
} else {
// If key not found in "en_us" either, use a default string
$result = "String Not found for key " . $key;
}
} else
{
// use selected language translation
$temp = $lang[$pia_lang_selected][$key];
}
return $temp;
return $result;
}

21
front/php/templates/version.php Executable file
View File

@@ -0,0 +1,21 @@
<?php
#---------------------------------------------------------------------------------#
# Pi.Alert #
# Open Source Network Guard / WIFI & LAN intrusion detector #
# #
# version.php - Templates module Template to display the current version #
#---------------------------------------------------------------------------------#
# Puche 2021 pi.alert.application@gmail.com GNU GPLv3 #
# jokob-sk 2022 jokob.sk@gmail.com GNU GPLv3 #
# leiweibau 2022 https://github.com/leiweibau GNU GPLv3 #
# cvc90 2023 https://github.com/cvc90 GNU GPLv3 #
#---------------------------------------------------------------------------------#
$filename = "/home/pi/pialert/.VERSION";
if(file_exists($filename)) {
echo file_get_contents($filename);
}
else{
echo "File not found";
}
?>

Some files were not shown because too many files have changed in this diff Show More