Compare commits

...

173 Commits

Author SHA1 Message Date
jokob-sk
4712a2ff29 css fixes, nav menu update, searchable devParentNodeMac
Some checks failed
Deploy MkDocs / deploy (push) Has been cancelled
Code checks / check-url-paths (push) Has been cancelled
docker / docker_dev (push) Has been cancelled
2025-08-06 09:15:45 +10:00
jokob-sk
f9179a1e89 safe device name if number #1131 2025-08-06 07:20:04 +10:00
jokob-sk
a6df204721 github timeout #1124, css fixes, change button on LOADED_PLUGINS
Some checks failed
Code checks / check-url-paths (push) Has been cancelled
docker / docker_dev (push) Has been cancelled
Deploy MkDocs / deploy (push) Has been cancelled
2025-08-05 21:32:35 +10:00
jokob-sk
101189ae7c devParentNodeMac chips in devices list 2025-08-05 20:54:28 +10:00
jokob-sk
f25c012fbe external ip rework #1124
Some checks failed
Code checks / check-url-paths (push) Has been cancelled
docker / docker_dev (push) Has been cancelled
Deploy MkDocs / deploy (push) Has been cancelled
2025-08-05 14:42:00 +10:00
jokob-sk
868a85d84c Merge branch 'main' of https://github.com/jokob-sk/NetAlertX 2025-08-05 14:03:18 +10:00
jokob-sk
771dd4b176 docs 2025-08-05 14:02:48 +10:00
Hosted Weblate
ed4d3bf17c Merge branch 'origin/main' into Weblate. 2025-08-05 03:27:56 +00:00
Massimo Pissarello
7c728fbe36 Translated using Weblate (Italian)
Currently translated at 100.0% (761 of 761 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/it/
2025-08-05 03:27:56 +00:00
jokob-sk
4ff9d01ef5 heuristics docs 2025-08-05 13:27:30 +10:00
jokob-sk
1bce2e80e8 replace external IP check AJAX #1124
Some checks failed
Code checks / check-url-paths (push) Has been cancelled
docker / docker_dev (push) Has been cancelled
Deploy MkDocs / deploy (push) Has been cancelled
2025-08-05 08:15:49 +10:00
jokob-sk
1556d74406 Merge branch 'main' of https://github.com/jokob-sk/NetAlertX 2025-08-05 08:06:48 +10:00
jokob-sk
9b3947cc90 device tools init loading #1130 2025-08-05 08:06:42 +10:00
Sylvain Pichon
18b0309ac4 Translated using Weblate (French)
Currently translated at 100.0% (761 of 761 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/fr/
2025-08-04 19:02:09 +00:00
jokob-sk
0afd4ae115 prometheus metrics docs
Some checks failed
docker / docker_dev (push) Has been cancelled
Code checks / check-url-paths (push) Has been cancelled
Deploy MkDocs / deploy (push) Has been cancelled
2025-08-04 18:13:35 +10:00
jokob-sk
09e360c746 prometheus metrics endpoint 2025-08-04 15:12:51 +10:00
jokob-sk
5dbe79ba2f Merge branch 'main' of https://github.com/jokob-sk/NetAlertX 2025-08-04 13:25:23 +10:00
jokob-sk
779707761f heuristics refactor #1129 2025-08-04 13:25:17 +10:00
Hosted Weblate
16992bb2bd Merge branch 'origin/main' into Weblate.
Some checks failed
Code checks / check-url-paths (push) Has been cancelled
docker / docker_dev (push) Has been cancelled
Deploy MkDocs / deploy (push) Has been cancelled
2025-08-03 15:08:18 +02:00
Максим Горпиніч
3374f83255 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (761 of 761 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/uk/
2025-08-03 15:08:17 +02:00
jokob-sk
8f420a14cd fix 2025-08-03 23:06:43 +10:00
jokob-sk
57024c0cb1 Merge branch 'main' of https://github.com/jokob-sk/NetAlertX
Some checks failed
Code checks / check-url-paths (push) Has been cancelled
docker / docker_dev (push) Has been cancelled
Deploy MkDocs / deploy (push) Has been cancelled
2025-08-03 09:37:36 +10:00
jokob-sk
db7fb825fe Copy to clipboard IP 2025-08-03 09:37:18 +10:00
Hosted Weblate
49e8c6a4f2 Merge branch 'origin/main' into Weblate. 2025-08-02 22:40:40 +00:00
Максим Горпиніч
66bf4241b2 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (760 of 760 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/uk/
2025-08-02 22:40:39 +00:00
Massimo Pissarello
76a5dda553 Translated using Weblate (Italian)
Currently translated at 100.0% (760 of 760 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/it/
2025-08-02 22:40:38 +00:00
Sylvain Pichon
6393aa7f2c Translated using Weblate (French)
Currently translated at 100.0% (760 of 760 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/fr/
2025-08-02 22:40:37 +00:00
Ettore Atalan
c5f938113f Translated using Weblate (German)
Currently translated at 81.3% (618 of 760 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/de/
2025-08-02 22:40:35 +00:00
jokob-sk
dac7eaba6d localized spinner support 2025-08-03 08:40:09 +10:00
jokob-sk
35e6059068 Merge branch 'main' of https://github.com/jokob-sk/NetAlertX 2025-08-03 07:44:17 +10:00
jokob-sk
afebc8dc39 systeminfo refactor #1124 2025-08-03 07:44:11 +10:00
Hosted Weblate
34151a86b1 Merge branch 'origin/main' into Weblate.
Some checks failed
Code checks / check-url-paths (push) Has been cancelled
docker / docker_dev (push) Has been cancelled
Deploy MkDocs / deploy (push) Has been cancelled
2025-08-01 21:57:38 +00:00
Massimo Pissarello
72d6934345 Translated using Weblate (Italian)
Currently translated at 100.0% (759 of 759 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/it/
2025-08-01 21:57:37 +00:00
jokob-sk
f5f7031030 copy icon issue #1128 2025-08-02 07:56:57 +10:00
jokob-sk
ffccca9424 Merge branch 'main' of https://github.com/jokob-sk/NetAlertX
Some checks failed
Code checks / check-url-paths (push) Has been cancelled
docker / docker_dev (push) Has been cancelled
Deploy MkDocs / deploy (push) Has been cancelled
2025-08-01 08:15:38 +10:00
jokob-sk
3f5ae334a2 new device button #1126 2025-08-01 08:15:32 +10:00
Максим Горпиніч
bb45c4d345 Translated using Weblate (Ukrainian)
Some checks failed
Code checks / check-url-paths (push) Has been cancelled
docker / docker_dev (push) Has been cancelled
Deploy MkDocs / deploy (push) Has been cancelled
Currently translated at 100.0% (759 of 759 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/uk/
2025-07-31 16:02:16 +02:00
Sylvain Pichon
bad3c76de9 Translated using Weblate (French)
Currently translated at 100.0% (759 of 759 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/fr/
2025-07-31 16:02:14 +02:00
jokob-sk
4ee652cfda Merge branch 'main' of https://github.com/jokob-sk/NetAlertX
Some checks failed
Code checks / check-url-paths (push) Has been cancelled
docker / docker_dev (push) Has been cancelled
Deploy MkDocs / deploy (push) Has been cancelled
2025-07-30 22:31:55 +10:00
jokob-sk
abaffa4042 better Apprise settings description 2025-07-30 22:31:38 +10:00
Hosted Weblate
ad4b5d7c64 Merge branch 'origin/main' into Weblate. 2025-07-30 13:59:20 +02:00
Максим Горпиніч
3b38476c5a Translated using Weblate (Ukrainian)
Currently translated at 100.0% (758 of 758 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/uk/
2025-07-30 13:59:17 +02:00
jokob-sk
a42f6a20e4 Merge branch 'main' of https://github.com/jokob-sk/NetAlertX 2025-07-30 21:58:37 +10:00
jokob-sk
da2afb2fb7 code refactor 2025-07-30 21:58:31 +10:00
Hosted Weblate
dda0d6a898 Merge branch 'origin/main' into Weblate.
Some checks failed
Code checks / check-url-paths (push) Has been cancelled
docker / docker_dev (push) Has been cancelled
Deploy MkDocs / deploy (push) Has been cancelled
2025-07-29 23:45:45 +00:00
jokob-sk
36068aaf77 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 99.8% (755 of 756 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/zh_Hans/
2025-07-29 23:45:43 +00:00
Safeguard
3cb65fa4ec Translated using Weblate (Russian)
Currently translated at 91.9% (695 of 756 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/ru/
2025-07-29 23:45:42 +00:00
jokob-sk
26cc757f75 Merge branch 'main' of https://github.com/jokob-sk/NetAlertX 2025-07-30 09:31:39 +10:00
jokob-sk
2337f96685 Available Ips in System Info #1127 2025-07-30 09:31:34 +10:00
Hosted Weblate
82ec3b239e Merge branch 'origin/main' into Weblate.
Some checks failed
Code checks / check-url-paths (push) Has been cancelled
docker / docker_dev (push) Has been cancelled
Deploy MkDocs / deploy (push) Has been cancelled
2025-07-29 12:09:14 +02:00
jokob-sk
aa72b0216d Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 92.0% (696 of 756 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/zh_Hans/
2025-07-29 12:09:13 +02:00
jokob-sk
b002bc34ac Merge branch 'main' of https://github.com/jokob-sk/NetAlertX 2025-07-29 20:01:58 +10:00
jokob-sk
a84f0d4faf cache fix on details page, small css fixes 2025-07-29 20:01:50 +10:00
Hosted Weblate
a9715cb087 Merge branch 'origin/main' into Weblate.
Some checks failed
Code checks / check-url-paths (push) Has been cancelled
docker / docker_dev (push) Has been cancelled
Deploy MkDocs / deploy (push) Has been cancelled
2025-07-28 23:27:47 +02:00
Marco Rios
827b0d15d1 Translated using Weblate (Spanish)
Currently translated at 100.0% (756 of 756 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/es/
2025-07-28 23:27:46 +02:00
jokob-sk
4b4b2f914f Merge branch 'main' of https://github.com/jokob-sk/NetAlertX 2025-07-29 07:25:26 +10:00
jokob-sk
bf679cdc5d strings cleanup, small fixes 2025-07-29 07:25:22 +10:00
Jokob @NetAlertX
4c430c6d5d Merge pull request #1123 from dougmaitelli/feat/apprise-tag
Add support for Apprise Tags
2025-07-29 07:22:24 +10:00
Максим Горпиніч
905279aabe Translated using Weblate (Ukrainian)
Some checks failed
Code checks / check-url-paths (push) Has been cancelled
docker / docker_dev (push) Has been cancelled
Deploy MkDocs / deploy (push) Has been cancelled
Currently translated at 100.0% (756 of 756 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/uk/
2025-07-28 08:02:18 +02:00
Massimo Pissarello
d92a5da029 Translated using Weblate (Italian)
Currently translated at 100.0% (756 of 756 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/it/
2025-07-28 08:02:16 +02:00
Sylvain Pichon
a3a27fc27a Translated using Weblate (French)
Currently translated at 100.0% (756 of 756 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/fr/
2025-07-28 08:02:14 +02:00
Douglas Maitelli
0d6bc71d2b Review comments 2025-07-28 00:29:14 +00:00
Douglas Maitelli
41397be1bd Review comments 2025-07-27 23:09:48 +00:00
Douglas Maitelli
8fbcb07267 Review comments 2025-07-27 23:09:20 +00:00
Douglas Maitelli
3c18540c8c Add support for Apprise Tags 2025-07-27 22:35:04 +00:00
Douglas Maitelli
ab9c940d01 Add support for Apprise Tags 2025-07-27 22:29:19 +00:00
Hosted Weblate
7e573282d0 Merge branch 'origin/main' into Weblate.
Some checks failed
Code checks / check-url-paths (push) Has been cancelled
docker / docker_dev (push) Has been cancelled
Deploy MkDocs / deploy (push) Has been cancelled
2025-07-27 01:42:30 +00:00
jokob-sk
d08368e4f5 net devices fix 2025-07-27 11:26:12 +10:00
Hosted Weblate
2c1718bb0e Merge branch 'origin/main' into Weblate. 2025-07-27 01:22:48 +00:00
Deleted User
5a0bf03b81 Translated using Weblate (Ukrainian)
Currently translated at 92.7% (701 of 756 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/uk/
2025-07-27 01:22:46 +00:00
anton garcias
6978c9446c Translated using Weblate (Catalan)
Currently translated at 90.0% (681 of 756 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/ca/
2025-07-27 01:22:45 +00:00
HAMAD ABDULLA
d3fd160cf3 Translated using Weblate (Arabic)
Currently translated at 89.9% (680 of 756 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/ar/
2025-07-27 01:22:44 +00:00
Ondřej Karaffa
c3421c8699 Translated using Weblate (Czech)
Currently translated at 7.1% (54 of 756 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/cs/
2025-07-27 01:22:43 +00:00
blomusti
0a3ebc931b Translated using Weblate (Turkish)
Currently translated at 60.4% (457 of 756 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/tr/
2025-07-27 01:22:42 +00:00
Ptsa Daniel
83c593a1e2 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 92.7% (701 of 756 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/zh_Hans/
2025-07-27 01:22:41 +00:00
Adam Stańczyk
60c812327a Translated using Weblate (Polish)
Currently translated at 91.2% (690 of 756 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/pl/
2025-07-27 01:22:40 +00:00
Cesar Osvaldo Müller
d27ba5c046 Translated using Weblate (Portuguese (Brazil))
Currently translated at 53.5% (405 of 756 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/pt_BR/
2025-07-27 01:22:39 +00:00
Massimo Pissarello
120a88d12d Translated using Weblate (Italian)
Currently translated at 92.5% (700 of 756 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/it/
2025-07-27 01:22:38 +00:00
Safeguard
054df2ed79 Translated using Weblate (Russian)
Currently translated at 91.2% (690 of 756 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/ru/
2025-07-27 01:22:37 +00:00
Marcus Isdahl
94240f61ca Translated using Weblate (Norwegian Bokmål)
Currently translated at 74.4% (563 of 756 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/nb_NO/
2025-07-27 01:22:36 +00:00
BlueTurtle
9c77a25d9a Translated using Weblate (French)
Currently translated at 92.7% (701 of 756 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/fr/
2025-07-27 01:22:35 +00:00
Anonymous
7819f2774c Translated using Weblate (Spanish)
Currently translated at 89.0% (673 of 756 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/es/
2025-07-27 01:22:34 +00:00
Ettore Atalan
a07bdd7469 Translated using Weblate (German)
Currently translated at 82.4% (623 of 756 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/de/
2025-07-27 01:22:32 +00:00
jokob-sk
68c3712539 Merge branch 'main' of https://github.com/jokob-sk/NetAlertX 2025-07-27 11:16:58 +10:00
jokob-sk
be5fc6dccb css fixes, removal of ionicons 2025-07-27 11:16:35 +10:00
Hosted Weblate
414110e575 Merge branch 'origin/main' into Weblate. 2025-07-26 23:02:37 +00:00
Sylvain Pichon
bd641273ff Translated using Weblate (French)
Currently translated at 100.0% (755 of 755 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/fr/
2025-07-26 23:02:35 +00:00
jokob-sk
404a97fb89 network devices list, strings cleanup 2025-07-27 08:58:54 +10:00
Hosted Weblate
e3cab610ec Merge branch 'origin/main' into Weblate.
Some checks failed
Code checks / check-url-paths (push) Has been cancelled
docker / docker_dev (push) Has been cancelled
Deploy MkDocs / deploy (push) Has been cancelled
2025-07-26 09:34:03 +02:00
Максим Горпиніч
cd87f6db0d Translated using Weblate (Ukrainian)
Currently translated at 100.0% (755 of 755 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/uk/
2025-07-26 09:34:02 +02:00
kkumakuma
dc015077e4 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (755 of 755 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/zh_Hans/
2025-07-26 09:34:02 +02:00
jokob-sk
f778932fd6 weblate 2025-07-26 17:19:54 +10:00
jokob-sk
c284d27d31 Merge branch 'main' of https://github.com/jokob-sk/NetAlertX 2025-07-26 17:19:23 +10:00
jokob-sk
acac02a672 fixes 2025-07-26 17:19:05 +10:00
Максим Горпиніч
e8d3d5c2a9 Translated using Weblate (Ukrainian)
Some checks failed
Code checks / check-url-paths (push) Has been cancelled
docker / docker_dev (push) Has been cancelled
Deploy MkDocs / deploy (push) Has been cancelled
Currently translated at 99.8% (754 of 755 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/uk/
2025-07-26 05:02:50 +02:00
Ashtin
d4b898358f Translated using Weblate (Catalan)
Currently translated at 97.0% (733 of 755 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/ca/
2025-07-26 05:02:50 +02:00
Ashtin
bd5a9b4f72 Translated using Weblate (Arabic)
Currently translated at 97.0% (733 of 755 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/ar/
2025-07-26 05:02:50 +02:00
Ondřej Karaffa
5f1d2ee26c Translated using Weblate (Czech)
Currently translated at 7.4% (56 of 755 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/cs/
2025-07-26 05:02:50 +02:00
Ashtin
9175a5a45f Translated using Weblate (Turkish)
Currently translated at 65.8% (497 of 755 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/tr/
2025-07-26 05:02:50 +02:00
kkumakuma
2af60c034f Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 88.3% (667 of 755 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/zh_Hans/
2025-07-26 05:02:49 +02:00
Adam Stańczyk
c503aeaf00 Translated using Weblate (Polish)
Currently translated at 98.4% (743 of 755 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/pl/
2025-07-26 05:02:49 +02:00
Ashtin
3f9922b7df Translated using Weblate (Portuguese (Brazil))
Currently translated at 57.2% (432 of 755 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/pt_BR/
2025-07-26 05:02:49 +02:00
Massimo Pissarello
91fc1da896 Translated using Weblate (Italian)
Currently translated at 99.8% (754 of 755 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/it/
2025-07-26 05:02:49 +02:00
Safeguard
3d2e4f6343 Translated using Weblate (Russian)
Currently translated at 98.4% (743 of 755 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/ru/
2025-07-26 05:02:49 +02:00
Ashtin
39d44689de Translated using Weblate (Norwegian Bokmål)
Currently translated at 80.0% (604 of 755 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/nb_NO/
2025-07-26 05:02:49 +02:00
Sylvain Pichon
2547e6e805 Translated using Weblate (French)
Currently translated at 99.8% (754 of 755 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/fr/
2025-07-26 05:02:49 +02:00
Ashtin
3c5a76b512 Translated using Weblate (Spanish)
Currently translated at 96.0% (725 of 755 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/es/
2025-07-26 05:02:48 +02:00
Ettore Atalan
dc76ba2fda Translated using Weblate (German)
Currently translated at 88.7% (670 of 755 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/de/
2025-07-26 05:02:48 +02:00
Hosted Weblate
386ee473bd Merge branch 'origin/main' into Weblate. 2025-07-26 02:59:43 +00:00
kkumakuma
feebe96fec Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 88.0% (665 of 755 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/zh_Hans/
2025-07-26 02:59:41 +00:00
jokob-sk
86f83eff5b Merge branch 'main' of https://github.com/jokob-sk/NetAlertX 2025-07-26 12:59:00 +10:00
jokob-sk
54fa2743f9 refactor, tab async loading on focus 2025-07-26 12:58:45 +10:00
Hosted Weblate
2475133405 Merge branch 'origin/main' into Weblate. 2025-07-25 22:46:56 +00:00
kkumakuma
cdb3dee8ed Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 86.8% (656 of 755 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/zh_Hans/
2025-07-25 22:46:54 +00:00
Massimo Pissarello
e667abf6fb Translated using Weblate (Italian)
Currently translated at 100.0% (755 of 755 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/it/
2025-07-25 22:46:53 +00:00
Sylvain Pichon
d5b2e2f0ee Translated using Weblate (French)
Currently translated at 100.0% (755 of 755 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/fr/
2025-07-25 22:46:52 +00:00
jokob-sk
cd7cbcc4c8 weblate 2025-07-26 08:45:52 +10:00
jokob-sk
a055c2450a Merge branch 'main' of https://github.com/jokob-sk/NetAlertX 2025-07-26 08:45:13 +10:00
jokob-sk
170a3c0ae1 presence rework #1119, plugin history filter 2025-07-26 08:45:07 +10:00
Максим Горпиніч
6fe865e115 Translated using Weblate (Ukrainian)
Some checks failed
Deploy MkDocs / deploy (push) Has been cancelled
Code checks / check-url-paths (push) Has been cancelled
docker / docker_dev (push) Has been cancelled
Currently translated at 100.0% (755 of 755 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/uk/
2025-07-24 16:46:53 +02:00
Anonymous
1c1c5bd32b Translated using Weblate (Catalan)
Currently translated at 96.9% (732 of 755 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/ca/
2025-07-24 16:46:53 +02:00
Anonymous
d40ad8bd09 Translated using Weblate (Arabic)
Currently translated at 96.9% (732 of 755 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/ar/
2025-07-24 16:46:53 +02:00
Anonymous
2b70e1c2e5 Translated using Weblate (Turkish)
Currently translated at 65.6% (496 of 755 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/tr/
2025-07-24 16:46:53 +02:00
Anonymous
da8ea98c28 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 81.1% (613 of 755 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/zh_Hans/
2025-07-24 16:46:52 +02:00
Anonymous
caac65f4f9 Translated using Weblate (Polish)
Currently translated at 98.5% (744 of 755 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/pl/
2025-07-24 16:46:52 +02:00
Anonymous
a92d66c981 Translated using Weblate (Portuguese (Brazil))
Currently translated at 57.0% (431 of 755 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/pt_BR/
2025-07-24 16:46:52 +02:00
Massimo Pissarello
5fd709ed35 Translated using Weblate (Italian)
Currently translated at 99.8% (754 of 755 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/it/
2025-07-24 16:46:52 +02:00
Anonymous
29f120e66b Translated using Weblate (Russian)
Currently translated at 98.5% (744 of 755 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/ru/
2025-07-24 16:46:52 +02:00
Anonymous
74f5933627 Translated using Weblate (Norwegian Bokmål)
Currently translated at 79.8% (603 of 755 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/nb_NO/
2025-07-24 16:46:52 +02:00
Sylvain Pichon
56a93ee75b Translated using Weblate (French)
Currently translated at 99.8% (754 of 755 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/fr/
2025-07-24 16:46:51 +02:00
Anonymous
3a8634844f Translated using Weblate (Spanish)
Currently translated at 95.8% (724 of 755 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/es/
2025-07-24 16:46:51 +02:00
Anonymous
26d546f6ec Translated using Weblate (German)
Currently translated at 88.8% (671 of 755 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/de/
2025-07-24 16:46:51 +02:00
jokob-sk
0265c41612 partial rollback #1119 2025-07-24 22:13:19 +10:00
jokob-sk
a53b410713 double-bars work #1119
Some checks failed
Code checks / check-url-paths (push) Has been cancelled
docker / docker_dev (push) Has been cancelled
Deploy MkDocs / deploy (push) Has been cancelled
2025-07-24 21:44:23 +10:00
jokob-sk
3035b5b6b2 double-bars work #1119 2025-07-24 21:15:36 +10:00
jokob-sk
266d7c25da weblate 2025-07-24 21:06:17 +10:00
jokob-sk
77b25a9740 Merge branch 'main' of https://github.com/jokob-sk/NetAlertX 2025-07-24 21:05:39 +10:00
jokob-sk
618bafa514 miss match work #1119 2025-07-24 21:05:33 +10:00
Максим Горпиніч
415f589716 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (755 of 755 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/uk/
2025-07-24 12:33:00 +02:00
Massimo Pissarello
54c7c820b8 Translated using Weblate (Italian)
Currently translated at 100.0% (755 of 755 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/it/
2025-07-24 12:32:59 +02:00
Sylvain Pichon
89864f7070 Translated using Weblate (French)
Currently translated at 100.0% (755 of 755 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/fr/
2025-07-24 12:32:59 +02:00
anton garcias
b4916cd3b6 Translated using Weblate (Catalan)
Some checks failed
Code checks / check-url-paths (push) Has been cancelled
docker / docker_dev (push) Has been cancelled
Deploy MkDocs / deploy (push) Has been cancelled
Currently translated at 96.9% (732 of 755 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/ca/
2025-07-24 05:44:30 +02:00
HAMAD ABDULLA
97567ad472 Translated using Weblate (Arabic)
Currently translated at 96.9% (732 of 755 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/ar/
2025-07-24 05:44:30 +02:00
Bekir Kayra Çiğdem
b00dbd560f Translated using Weblate (Turkish)
Currently translated at 65.6% (496 of 755 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/tr/
2025-07-24 05:44:30 +02:00
Ptsa Daniel
c41fbab8ee Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 81.1% (613 of 755 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/zh_Hans/
2025-07-24 05:44:30 +02:00
Adam Stańczyk
771db9fa0e Translated using Weblate (Polish)
Currently translated at 98.5% (744 of 755 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/pl/
2025-07-24 05:44:30 +02:00
GoldBull3t
dd6ccf830c Translated using Weblate (Portuguese (Brazil))
Currently translated at 57.0% (431 of 755 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/pt_BR/
2025-07-24 05:44:30 +02:00
Massimo Pissarello
b0e079aeb2 Translated using Weblate (Italian)
Currently translated at 99.7% (753 of 755 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/it/
2025-07-24 05:44:29 +02:00
Safeguard
d1d49572e2 Translated using Weblate (Russian)
Currently translated at 98.5% (744 of 755 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/ru/
2025-07-24 05:44:29 +02:00
Marcus Isdahl
774078df9c Translated using Weblate (Norwegian Bokmål)
Currently translated at 79.8% (603 of 755 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/nb_NO/
2025-07-24 05:44:29 +02:00
Sylvain Pichon
8c708f2c96 Translated using Weblate (French)
Currently translated at 99.7% (753 of 755 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/fr/
2025-07-24 05:44:29 +02:00
Deleted User
3c68b0151d Translated using Weblate (Spanish)
Currently translated at 95.8% (724 of 755 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/es/
2025-07-24 05:44:29 +02:00
Norbert (Noschvie)
6cb252c0ed Translated using Weblate (German)
Currently translated at 88.8% (671 of 755 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/de/
2025-07-24 05:44:29 +02:00
Hosted Weblate
11f2a74b5d Merge branch 'origin/main' into Weblate. 2025-07-24 04:54:34 +02:00
Максим Горпиніч
9bba3c9e50 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (755 of 755 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/uk/
2025-07-24 04:54:34 +02:00
jokob-sk
b3d71a5fec Merge branch 'main' of https://github.com/jokob-sk/NetAlertX 2025-07-24 12:54:10 +10:00
jokob-sk
a111ed929b nnetwork and link tweaks 2025-07-24 12:53:24 +10:00
Jokob @NetAlertX
21dd85f62f Merge pull request #1121 from fuad00/patch-1
hotfix: invalid volume variable
2025-07-24 07:40:13 +10:00
Fuad
b08bca5ce4 hotfix: invalid volume variable 2025-07-23 17:59:57 +03:00
jokob-sk
dff6cba2d8 Merge branch 'main' of https://github.com/jokob-sk/NetAlertX
Some checks failed
Code checks / check-url-paths (push) Has been cancelled
docker / docker_dev (push) Has been cancelled
Deploy MkDocs / deploy (push) Has been cancelled
2025-07-23 22:25:47 +10:00
jokob-sk
10a0921e35 plugins columns cleanup, devDetail cleanup, better icon selector CUSTPROP 2025-07-23 22:25:35 +10:00
Massimo Pissarello
70443942ff Translated using Weblate (Italian)
Some checks failed
Code checks / check-url-paths (push) Has been cancelled
docker / docker_dev (push) Has been cancelled
Deploy MkDocs / deploy (push) Has been cancelled
Currently translated at 100.0% (754 of 754 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/it/
2025-07-22 06:03:06 +02:00
jokob-sk
7d26966250 Merge branch 'main' of https://github.com/jokob-sk/NetAlertX
Some checks failed
Code checks / check-url-paths (push) Has been cancelled
docker / docker_dev (push) Has been cancelled
Deploy MkDocs / deploy (push) Has been cancelled
2025-07-21 17:57:08 +10:00
jokob-sk
9ada27cf7e sync plugin, plugins UI css fixes 2025-07-21 17:56:49 +10:00
jokob-sk
752322bbad network tree filter counts 2025-07-21 09:38:28 +10:00
jokob-sk
0444e338ec indexes 4 the win 2025-07-21 09:15:40 +10:00
Максим Горпиніч
a669abd47e Translated using Weblate (Ukrainian)
Some checks failed
Code checks / check-url-paths (push) Has been cancelled
docker / docker_dev (push) Has been cancelled
Deploy MkDocs / deploy (push) Has been cancelled
Currently translated at 100.0% (754 of 754 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/uk/
2025-07-20 16:03:11 +02:00
Sylvain Pichon
4e46fcb9e6 Translated using Weblate (French)
Currently translated at 100.0% (754 of 754 strings)

Translation: NetAlertX/core
Translate-URL: https://hosted.weblate.org/projects/pialert/core/fr/
2025-07-20 16:03:10 +02:00
jokob-sk
31d7d0c143 docs and refactor 2025-07-20 22:45:17 +10:00
jokob-sk
b470b985e9 network page refactor
Some checks failed
Code checks / check-url-paths (push) Has been cancelled
docker / docker_dev (push) Has been cancelled
Deploy MkDocs / deploy (push) Has been cancelled
2025-07-20 08:31:50 +10:00
jokob-sk
c90c6b5c90 network topology refactor
Some checks failed
Code checks / check-url-paths (push) Has been cancelled
docker / docker_dev (push) Has been cancelled
Deploy MkDocs / deploy (push) Has been cancelled
2025-07-19 22:00:57 +10:00
jokob-sk
26f0d0ac2f network topology refactor 2025-07-19 20:45:46 +10:00
jokob-sk
5e3365935e docs
Some checks failed
Deploy MkDocs / deploy (push) Has been cancelled
Code checks / check-url-paths (push) Has been cancelled
docker / docker_dev (push) Has been cancelled
2025-07-17 19:09:56 +10:00
130 changed files with 7700 additions and 4909 deletions

View File

@@ -13,7 +13,7 @@ ENV PATH="/opt/venv/bin:$PATH"
COPY . ${INSTALL_DIR}/
RUN pip install openwrt-luci-rpc asusrouter asyncio aiohttp graphene flask tplink-omada-client wakeonlan pycryptodome requests paho-mqtt scapy cron-converter pytz json2table dhcp-leases pyunifi speedtest-cli chardet python-nmap dnspython librouteros yattag git+https://github.com/foreign-sub/aiofreepybox.git \
RUN pip install openwrt-luci-rpc asusrouter asyncio aiohttp graphene flask flask-cors tplink-omada-client wakeonlan pycryptodome requests paho-mqtt scapy cron-converter pytz json2table dhcp-leases pyunifi speedtest-cli chardet python-nmap dnspython librouteros yattag git+https://github.com/foreign-sub/aiofreepybox.git \
&& bash -c "find ${INSTALL_DIR} -type d -exec chmod 750 {} \;" \
&& bash -c "find ${INSTALL_DIR} -type f -exec chmod 640 {} \;" \
&& bash -c "find ${INSTALL_DIR} -type f \( -name '*.sh' -o -name '*.py' -o -name 'speedtest-cli' \) -exec chmod 750 {} \;"

View File

@@ -43,7 +43,7 @@ RUN phpenmod -v 8.2 sqlite3
RUN apt-get install -y python3-venv
RUN python3 -m venv myenv
RUN /bin/bash -c "source myenv/bin/activate && update-alternatives --install /usr/bin/python python /usr/bin/python3 10 && pip3 install openwrt-luci-rpc asusrouter asyncio aiohttp graphene flask tplink-omada-client wakeonlan pycryptodome requests paho-mqtt scapy cron-converter pytz json2table dhcp-leases pyunifi speedtest-cli chardet python-nmap dnspython librouteros yattag "
RUN /bin/bash -c "source myenv/bin/activate && update-alternatives --install /usr/bin/python python /usr/bin/python3 10 && pip3 install openwrt-luci-rpc asusrouter asyncio aiohttp graphene flask flask-cors tplink-omada-client wakeonlan pycryptodome requests paho-mqtt scapy cron-converter pytz json2table dhcp-leases pyunifi speedtest-cli chardet python-nmap dnspython librouteros yattag "
# Create a buildtimestamp.txt to later check if a new version was released
RUN date +%s > ${INSTALL_DIR}/front/buildtimestamp.txt

View File

@@ -24,7 +24,7 @@ LOADED_PLUGINS=['ARPSCAN', 'AVAHISCAN', 'CSVBCKP','DBCLNP', 'DIGSCAN', 'INTRNT',
DAYS_TO_KEEP_EVENTS=90
# Used for generating links in emails. Make sure not to add a trailing slash!
REPORT_DASHBOARD_URL='http://127.0.0.1'
REPORT_DASHBOARD_URL='update_REPORT_DASHBOARD_URL_setting'
# Make sure at least these scanners are enabled for new installs, other defaults are taken from the config.json
INTRNT_RUN='schedule'

200
back/device_heuristics_rules.json Executable file
View File

@@ -0,0 +1,200 @@
[
{
"dev_type": "Gateway",
"icon_html": "<i class=\"fa fa-globe\"></i>",
"matching_pattern": [
{ "mac_prefix": "INTERNET", "vendor": "" }
],
"name_pattern": []
},
{
"dev_type": "Access Point",
"icon_html": "<i class=\"fa fa-network-wired\"></i>",
"matching_pattern": [
{ "mac_prefix": "74ACB9", "vendor": "Ubiquiti" },
{ "mac_prefix": "002468", "vendor": "Cisco" },
{ "mac_prefix": "F4F5D8", "vendor": "TP-Link" },
{ "mac_prefix": "F88E85", "vendor": "Netgear" }
],
"name_pattern": ["router", "gateway", "ap", "access point", "access-point", "switch"]
},
{
"dev_type": "Phone",
"icon_html": "<i class=\"fa-brands fa-apple\"></i>",
"matching_pattern": [
{ "mac_prefix": "001A79", "vendor": "Apple" },
{ "mac_prefix": "B0BE83", "vendor": "Samsung" },
{ "mac_prefix": "BC926B", "vendor": "Motorola" }
],
"name_pattern": ["iphone", "ipad", "pixel", "galaxy", "redmi"]
},
{
"dev_type": "Phone",
"icon_html": "<i class=\"fa-solid fa-mobile\"></i>",
"matching_pattern": [
],
"name_pattern": ["android","samsung"]
},
{
"dev_type": "Tablet",
"icon_html": "<i class=\"fa fa-tablet\"></i>",
"matching_pattern": [
{ "mac_prefix": "001B63", "vendor": "Apple" },
{ "mac_prefix": "BC4C4C", "vendor": "Samsung" }
],
"name_pattern": ["tablet", "pad"]
},
{
"dev_type": "IoT",
"icon_html": "<i class=\"fa-brands fa-raspberry-pi\"></i>",
"matching_pattern": [
{ "mac_prefix": "B827EB", "vendor": "Raspberry Pi" },
{ "mac_prefix": "DCA632", "vendor": "Raspberry Pi" }
],
"name_pattern": ["raspberry", "pi"]
},
{
"dev_type": "IoT",
"icon_html": "<i class=\"fa-solid fa-microchip\"></i>",
"matching_pattern": [
{ "mac_prefix": "840D8E", "vendor": "Espressif" },
{ "mac_prefix": "ECFABC", "vendor": "Espressif" },
{ "mac_prefix": "7C9EBD", "vendor": "Espressif" }
],
"name_pattern": ["raspberry", "pi"]
},
{
"dev_type": "Desktop",
"icon_html": "<i class=\"fa fa-desktop\"></i>",
"matching_pattern": [
{ "mac_prefix": "001422", "vendor": "Dell" },
{ "mac_prefix": "001874", "vendor": "Lenovo" },
{ "mac_prefix": "00E04C", "vendor": "Hewlett Packard" }
],
"name_pattern": ["desktop", "pc", "computer"]
},
{
"dev_type": "Laptop",
"icon_html": "<i class=\"fa fa-laptop\"></i>",
"matching_pattern": [
{ "mac_prefix": "3C0754", "vendor": "HP" },
{ "mac_prefix": "0017A4", "vendor": "Dell" },
{ "mac_prefix": "F4CE46", "vendor": "Lenovo" },
{ "mac_prefix": "409F38", "vendor": "Acer" }
],
"name_pattern": ["macbook", "imac", "laptop", "notebook"]
},
{
"dev_type": "Server",
"icon_html": "<i class=\"fa fa-server\"></i>",
"matching_pattern": [
{ "mac_prefix": "001CBF", "vendor": "Supermicro" },
{ "mac_prefix": "002186", "vendor": "Dell" },
{ "mac_prefix": "D02788", "vendor": "Hewlett Packard" },
{ "mac_prefix": "002590", "vendor": "IBM" }
],
"name_pattern": ["server", "nas"]
},
{
"dev_type": "VM",
"icon_html": "<i class=\"fa fa-server\"></i>",
"matching_pattern": [
{ "mac_prefix": "525400", "vendor": "QEMU" },
{ "mac_prefix": "005056", "vendor": "VMware" },
{ "mac_prefix": "000C29", "vendor": "VMware" },
{ "mac_prefix": "000569", "vendor": "VMware" },
{ "mac_prefix": "00163E", "vendor": "Xen" },
{ "mac_prefix": "080027", "vendor": "VirtualBox" }
]
},
{
"dev_type": "TV",
"icon_html": "<i class=\"fa fa-tv\"></i>",
"matching_pattern": [
{ "mac_prefix": "0013CE", "vendor": "Samsung" },
{ "mac_prefix": "0017C8", "vendor": "LG" },
{ "mac_prefix": "D46E0E", "vendor": "Sony" }
],
"name_pattern": ["tv", "television", "smarttv"]
},
{
"dev_type": "Gaming Console",
"icon_html": "<i class=\"fa fa-gamepad\"></i>",
"matching_pattern": [
{ "mac_prefix": "001FA7", "vendor": "Sony" },
{ "mac_prefix": "7C04D0", "vendor": "Nintendo" },
{ "mac_prefix": "EC26CA", "vendor": "Sony" }
],
"name_pattern": ["playstation", "xbox"]
},
{
"dev_type": "Camera",
"icon_html": "<i class=\"fa fa-camera\"></i>",
"matching_pattern": [
{ "mac_prefix": "A45E60", "vendor": "Hikvision" },
{ "mac_prefix": "00408C", "vendor": "Axis" },
{ "mac_prefix": "00156D", "vendor": "Amcrest" },
{ "mac_prefix": "AC9E17", "vendor": "Reolink" }
],
"name_pattern": ["camera", "cam", "webcam"]
},
{
"dev_type": "Smart Speaker",
"icon_html": "<i class=\"fa fa-volume-up\"></i>",
"matching_pattern": [
{ "mac_prefix": "44650D", "vendor": "Amazon" },
{ "mac_prefix": "74ACB9", "vendor": "Google" }
],
"name_pattern": ["echo", "alexa", "dot"]
},
{
"dev_type": "Router",
"icon_html": "<i class=\"fa fa-random\"></i>",
"matching_pattern": [
{ "mac_prefix": "000C29", "vendor": "Cisco" },
{ "mac_prefix": "00155D", "vendor": "MikroTik" }
],
"name_pattern": ["router", "gateway", "ap", "access point", "access-point"],
"ip_pattern": [
"^192\\.168\\.[0-1]\\.1$",
"^10\\.0\\.0\\.1$"
]
},
{
"dev_type": "Smart Light",
"icon_html": "<i class=\"fa fa-lightbulb\"></i>",
"matching_pattern": [],
"name_pattern": ["hue", "lifx", "bulb"]
},
{
"dev_type": "Smart Home",
"icon_html": "<i class=\"fa fa-house\"></i>",
"matching_pattern": [],
"name_pattern": ["google", "chromecast", "nest"]
},
{
"dev_type": "Smartwatch",
"icon_html": "<i class=\"fa fa-watch\"></i>",
"matching_pattern": [],
"name_pattern": ["watch", "wear"]
},
{
"dev_type": "Printer",
"icon_html": "<i class=\"fa fa-print\"></i>",
"matching_pattern": [],
"name_pattern": ["printer", "print"]
},
{
"dev_type": "Security Device",
"icon_html": "<i class=\"fa fa-shield-alt\"></i>",
"matching_pattern": [],
"name_pattern": ["doorbell", "lock", "security"]
},
{
"dev_type": "Smart Light",
"icon_html": "<i class=\"fa-solid fa-lightbulb\"></i>",
"matching_pattern": [
],
"name_pattern": ["light","bulb"]
}
]

View File

@@ -59,6 +59,9 @@ services:
- ${DEV_LOCATION}/front/presence.php:/app/front/presence.php
- ${DEV_LOCATION}/front/settings.php:/app/front/settings.php
- ${DEV_LOCATION}/front/systeminfo.php:/app/front/systeminfo.php
- ${DEV_LOCATION}/front/systeminfoNetwork.php:/app/front/systeminfoNetwork.php
- ${DEV_LOCATION}/front/systeminfoServer.php:/app/front/systeminfoServer.php
- ${DEV_LOCATION}/front/systeminfoStorage.php:/app/front/systeminfoStorage.php
- ${DEV_LOCATION}/front/cloud_services.php:/app/front/cloud_services.php
- ${DEV_LOCATION}/front/report.php:/app/front/report.php
- ${DEV_LOCATION}/front/workflows.php:/app/front/workflows.php

View File

@@ -221,6 +221,112 @@ Example JSON of the `table_devices.json` endpoint with two Devices (database row
```
## API Endpoint: Prometheus Exporter
* **Endpoint URL**: `/metrics`
* **Host**: (where NetAlertX exporter is running)
* **Port**: as configured in the `GRAPHQL_PORT` setting (`20212` by default)
---
### Example Output of the `/metrics` Endpoint
Below is a representative snippet of the metrics you may find when querying the `/metrics` endpoint for `netalertx`. It includes both aggregate counters and `device_status` labels per device.
```
netalertx_connected_devices 31
netalertx_offline_devices 54
netalertx_down_devices 0
netalertx_new_devices 0
netalertx_archived_devices 31
netalertx_favorite_devices 2
netalertx_my_devices 54
netalertx_device_status{device="Net - Huawei", mac="Internet", ip="1111.111.111.111", vendor="None", first_connection="2021-01-01 00:00:00", last_connection="2025-08-04 17:57:00", dev_type="Router", device_status="Online"} 1
netalertx_device_status{device="Net - USG", mac="74:ac:74:ac:74:ac", ip="192.168.1.1", vendor="Ubiquiti Networks Inc.", first_connection="2022-02-12 22:05:00", last_connection="2025-06-07 08:16:49", dev_type="Firewall", device_status="Archived"} 1
netalertx_device_status{device="Raspberry Pi 4 LAN", mac="74:ac:74:ac:74:74", ip="192.168.1.9", vendor="Raspberry Pi Trading Ltd", first_connection="2022-02-12 22:05:00", last_connection="2025-08-04 17:57:00", dev_type="Singleboard Computer (SBC)", device_status="Online"} 1
...
```
---
### Metrics Explanation
#### 1. Aggregate Device Counts
Metric names prefixed with `netalertx_` provide aggregated counts by device status:
* `netalertx_connected_devices`: number of devices currently connected
* `netalertx_offline_devices`: devices currently offline
* `netalertx_down_devices`: down/unreachable devices
* `netalertx_new_devices`: devices recently detected
* `netalertx_archived_devices`: archived devices
* `netalertx_favorite_devices`: user-marked favorite devices
* `netalertx_my_devices`: devices associated with the current user context
These numeric values give a high-level overview of device distribution.
#### 2. PerDevice Status with Labels
Each individual device is represented by a `netalertx_device_status` metric, with descriptive labels:
* `device`: friendly name of the device
* `mac`: MAC address (or placeholder)
* `ip`: last recorded IP address
* `vendor`: manufacturer or "None" if unknown
* `first_connection`: timestamp when the device was first observed
* `last_connection`: most recent contact timestamp
* `dev_type`: device category or type
* `device_status`: current status (Online / Offline / Archived / Down / ...)
The metric value is always `1` (indicating presence or active state) and the combination of labels identifies the device.
---
### How to Query with `curl`
To fetch the metrics from the NetAlertX exporter:
```sh
curl 'http://<server_ip>:<GRAPHQL_PORT>/metrics' \
-H 'Authorization: Bearer <API_TOKEN>' \
-H 'Accept: text/plain'
```
Replace:
* `<server_ip>`: IP or hostname of the NetAlertX server
* `<GRAPHQL_PORT>`: port specified in your `GRAPHQL_PORT` setting (default: `20212`)
* `<API_TOKEN>` your Bearer token from the `API_TOKEN` setting
---
### Summary
* **Endpoint**: `/metrics` provides both summary counters and per-device status entries.
* **Aggregate metrics** help monitor overall device states.
* **Detailed metrics** expose each devices metadata via labels.
* **Use case**: feed into Prometheus for scraping, monitoring, alerting, or charting dashboard views.
### Prometheus Scraping Configuration
```yaml
scrape_configs:
- job_name: 'netalertx'
metrics_path: /metrics
scheme: http
scrape_interval: 60s
static_configs:
- targets: ['<server_ip>:<GRAPHQL_PORT>']
authorization:
type: Bearer
credentials: <API_TOKEN>
```
### Grafana template
Grafana template sample: [Download json](./samples/API/Grafana_Dashboard.json)
## API Endpoint: /log files
This API endpoint retrieves files from the `/app/log` folder.

111
docs/DEVICE_HEURISTICS.md Executable file
View File

@@ -0,0 +1,111 @@
# Device Heuristics: Icon and Type Guessing
This module is responsible for inferring the most likely **device type** and **icon** based on minimal identifying data like MAC address, vendor, IP, or device name.
It does this using a set of heuristics defined in an external JSON rules file, which it evaluates **in priority order**.
>[!NOTE]
> You can find the full source code of the heuristics module in the `device_heuristics.py` file.
---
## JSON Rule Format
Rules are defined in a file called `device_heuristics_rules.json` (located under `/back`), structured like:
```json
[
{
"dev_type": "Phone",
"icon_html": "<i class=\"fa-brands fa-apple\"></i>",
"matching_pattern": [
{ "mac_prefix": "001A79", "vendor": "Apple" }
],
"name_pattern": ["iphone", "pixel"]
}
]
```
>[!NOTE]
> Feel free to raise a PR in case you'd like to add any rules into the `device_heuristics_rules.json` file. Please place new rules into the correct position and consider the priority of already available rules.
### Supported fields:
| Field | Type | Description |
| ------------------ | -------------------- | --------------------------------------------------------------- |
| `dev_type` | `string` | Type to assign if rule matches (e.g. `"Gateway"`, `"Phone"`) |
| `icon_html` | `string` | Icon (HTML string) to assign if rule matches. Encoded to base64 at load time. |
| `matching_pattern` | `array` | List of `{ mac_prefix, vendor }` objects for first strict and then loose matching |
| `name_pattern` | `array` *(optional)* | List of lowercase substrings (used with regex) |
| `ip_pattern` | `array` *(optional)* | Regex patterns to match IPs |
**Order in this array defines priority** — rules are checked top-down and short-circuit on first match.
---
## Matching Flow (in Priority Order)
The function `guess_device_attributes(...)` runs a series of matching functions in strict order:
1. MAC + Vendor → `match_mac_and_vendor()`
2. Vendor only → `match_vendor()`
3. Name pattern → `match_name()`
4. IP pattern → `match_ip()`
5. Final fallback → defaults defined in the `NEWDEV_devIcon` and `NEWDEV_devType` settings.
### Use of default values
The guessing process runs for every device **as long as the current type or icon still matches the default values**. Even if earlier heuristics return a match, the system continues evaluating additional clues — like name or IP — to try and replace placeholders.
```python
# Still considered a match attempt if current values are defaults
if (not type_ or type_ == default_type) or (not icon or icon == default_icon):
type_, icon = match_ip(ip, default_type, default_icon)
```
In other words: if the type or icon is still `"unknown"` (or matches the default), the system assumes the match isnt final — and keeps looking. It stops only when both values are non-default (defaults are defined in the `NEWDEV_devIcon` and `NEWDEV_devType` settings).
---
## Match Behavior (per function)
These functions are executed in the following order:
### `match_mac_and_vendor(mac_clean, vendor, ...)`
* Looks for MAC prefix **and** vendor substring match
* Most precise
* Stops as soon as a match is found
### `match_vendor(vendor, ...)`
* Falls back to substring match on vendor only
* Ignores rules where `mac_prefix` is present (ensures this is really a fallback)
### `match_name(name, ...)`
* Lowercase name is compared against all `name_pattern` values using regex
* Good for user-assigned labels (e.g. "AP Office", "iPhone")
### `match_ip(ip, ...)`
* If IP is present and matches regex patterns under any rule, it returns that type/icon
* Usually used for gateways or local IP ranges
---
## Icons
* Each rule can define an `icon_html`, which is converted to a `icon_base64` on load
* If missing, it falls back to the passed-in `default_icon` (`NEWDEV_devIcon` setting)
* If a match is found but icon is still blank, default is used
**TL;DR:** Type and icon must both be matched. If only one is matched, the other falls back to the default.
---
## Priority Mechanics
* JSON rules are evaluated **top-to-bottom**
* Matching is **first-hit wins** — no scoring, no weights
* Rules that are more specific (e.g. exact MAC prefixes) should be listed earlier

View File

@@ -69,7 +69,7 @@ services:
network_mode: "host"
restart: unless-stopped
volumes:
- ${APP_DATA_LOCATION}/netalertx/config:/app/config
- ${APP_CONFIG_LOCATION}/netalertx/config:/app/config
- ${APP_DATA_LOCATION}/netalertx/db/:/app/db/
# (optional) useful for debugging if you have issues setting up the container
- ${LOGS_LOCATION}:/app/log

View File

@@ -5,7 +5,7 @@ To download and install NetAlertX on the hardware/server directly use the `curl`
> [!NOTE]
> This is an Experimental feature 🧪 and it relies on community support.
>
> 🙏 Looking for maintainers for this installation method 🙂 Curent community volunteers:
> 🙏 Looking for maintainers for this installation method 🙂 Current community volunteers:
> - [slammingprogramming](https://github.com/slammingprogramming)
>
> There is no guarantee that the install script or any other script will gracefully handle other installed software.

View File

@@ -1,63 +1,104 @@
## How to setup your Network page
## How to Set Up Your Network Page
Make sure you have a root device with the MAC `Internet` (No other MAC addresses are currently supported as the root node) set to a network device type (e.g.: **Type**:`Router`).
The **Network** page lets you map how devices connect — visually and logically.
Its especially useful for planning infrastructure, assigning parent-child relationships, and spotting gaps.
> 💡 Tip: You can add dummy devices via the [Create dummy device](./DEVICE_MANAGEMENT.md#dummy-devices) button in the Devices listing page.
![Network tree details](./img/NETWORK_TREE/Network_Sample.png)
> 💡 Tip: Export your configuration of the Network and Devices once in a while via the Export CSV feature under **Maintenance** -> **Backup/Restore** -> **CSV Export**.
To get started, youll need to define at least one root node and mark certain devices as network nodes (like Switches or Routers).
## ⚡Quick setup:
---
* Go to a Device you want to use as network device (network nodes, such as a Switch).
* 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 (you can create a custom network type device with in Settings -> General -> `NETWORK_DEVICE_TYPES`).
* 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 network node.
* If port is empty or 0 a wifi icon is rendered, otherwise a ethernet port icon.
Start by creating a root device with the MAC address `Internet`, if the application didnt create one already.
This special MAC address (`Internet`) is required for the root network node — no other value is currently supported.
Set its **Type** to a valid network type — such as `Router` or `Gateway`.
> [!TIP]
> If you dont have one, use the [Create new device](./DEVICE_MANAGEMENT.md#dummy-devices) button on the **Devices** page to add a root device.
> [!NOTE]
>
> [Bulk-edit devices](./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:
## ⚡ Quick Setup
In this example you will setup a device named `rapberrypi` as a `Switch` in our network.
1. Open the device you want to use as a network node (e.g. a Switch).
2. Set its **Type** to one of the following:
`AP`, `Firewall`, `Gateway`, `PLC`, `Powerline`, `Router`, `Switch`, `USB LAN Adapter`, `USB WIFI Adapter`, `WLAN`
*(Or add custom types under **Settings → General → `NETWORK_DEVICE_TYPES`**.)*
3. Save the device.
4. Go to the **Network** page — supported device types will appear as tabs.
5. Use the **Assign** button to connect unassigned devices to a network node.
6. If the **Port** is `0` or empty, a Wi-Fi icon is shown. Otherwise, an Ethernet icon appears.
### 1. Device details page
> [!NOTE]
> Use [bulk editing](./DEVICES_BULK_EDITING.md) with _CSV Export_ to fix `Internet` root assignments or update many devices at once.
- Go to the `Devices` (1) page:
---
![Device details](./img/NETWORK_TREE/Device_Details_Network_Type.png)
## Example: Setting up a `raspberrypi` as a Switch
- In the (2) `Details` tab navigate to the the `Type` (3) dropdown and select the type `Switch` (4).
Lets walk through setting up a device named `raspberrypi` to act as a network Switch that other devices connect through.
> Note: Only the following device types will show up as selectable Network nodes ( = devices you can connect other devices to):
> 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).
### 1. Set Device Type and Parent
- Save your changes (7)
- Go to the **Devices** page
- Open the device detail view for `raspberrypi`
- In the **Type** dropdown, select `Switch`
### 2. Network page
![Device details](./img/NETWORK_TREE/Network_Device_Details.png)
- Navigate to your `Network` (1) page:
- Optionally assign a **Parent Node** (where this device connects to) and the **Relationship type** of the connection.
The `nic` relationship type can affect parent notifications — see the setting description and [Notifications documentation](./NOTIFICATIONS.md) for more.
![Network page](./img/NETWORK_TREE/Network_Page.png)
![Device details](./img/NETWORK_TREE/Network_Device_Details_Parent.png)
- Notice the newly added `raspberrypi` (2) tab which now represents a network node, also showing up in the tree (3).
- 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
> [!NOTE]
> Only certain device types can act as network nodes:
> `AP`, `Firewall`, `Gateway`, `Hypervisor`, `PLC`, `Powerline`, `Router`, `Switch`, `USB LAN Adapter`, `USB WIFI Adapter`, `WLAN`
> You can add custom types via the `NETWORK_DEVICE_TYPES` setting.
### 3. Network page with 2 levels
- Click **Save**
- After clicking the `Assign` button in the previous section, the `(AppleTV)` (1) device is now connected to our `raspberrypi` (2).
---
![Network page with 2 levels](./img/NETWORK_TREE/Network_Page_2_Levels.png)
### 2. Confirm The Device Appears as a Network Node
- You can see the `raspberrypi` represents the Network node type `Switch` (3)
- The `(AppleTV)` to `raspberrypi` connection is also displayed in the table of `Connected devices` (4).
- You can also see that our `raspberrypi` node is connected to it's Parent network device node with the MAC `Internet` (5). This connection again shows up in the tree (6) as well.
You can confirm that `raspberrypi` now acts as a network device in two places:
- Navigate to a different device and verify that `raspberrypi` now appears as an option for a **Parent Node**:
![Parent Node dropdown](./img/NETWORK_TREE/Network_Device_ParentDropdown.png)
- Go to the **Network** page — you'll now see a `raspberrypi` tab, meaning it's recognized as a network node (Switch):
![Network page](./img/NETWORK_TREE/Network_Assign.png)
- You can now assign other devices to it.
---
### 3. Assign Connected Devices
- Use the **Assign** button to link other devices (e.g. PCs) to `raspberrypi`.
- After assigning, connected devices will appear beneath the `raspberrypi` switch node.
![Assigned nodes](./img/NETWORK_TREE/Network_Assigned_Nodes.png)
- Relationship lines may vary in color based on the selected Relationship type. These are editable on the device details page where you can also assign a parent node.
![Hover detail](./img/NETWORK_TREE/Network_tree_setup_hover.png)
> Hovering over devices in the tree reveals connection details and tooltips for quick inspection.
---
## ✅ Summary
To configure devices on the **Network** page:
- Ensure a device with MAC `Internet` is set up as the root
- Assign valid **Type** values to switches, routers, and other supported nodes that represent network devices
- Use the **Assign** button to connect devices logically to their parent node
Need to reset or undo changes? [Use backups](./BACKUPS.md) or [bulk editing](./DEVICES_BULK_EDITING.md) to manage devices at scale. You can also automate device assignment with [Workflows](./WORKFLOWS.md).

View File

@@ -15,11 +15,12 @@ There are 4 ways how to influence notifications:
![Device notification settings](./img/NOTIFICATIONS/Device-notification-settings.png)
There are 4 settings on the device for influencing notifications. You can:
The following device properties influence notifications. You can:
1. **Alert Events** - Enables alerts of connections, disconnections, IP changes (down and down reconnected notifications are still sent even if this is disabled).
2. **Alert Down** - Alerts when a device goes down. This setting overrides a disabled **Alert Events** setting, so you will get a notification of a device going down even if you don't have **Alert Events** ticked. Disabling this will disable down and down reconnected notifications on the device.
3. **Skip repeated notifications**, if for example you know there is a temporary issue and want to pause the same notification for this device for a given time.
4. **Require NICs Online** - Indicates whether this device should be considered online only if all associated NICs (devices with the `nic` relationship type) are online. If disabled, the device is considered online if any NIC is online. If a NIC is online it sets the parent (this) device's status to online irrespectivelly of the detected device's status. The Relationship type is set on the childern device.
> [!NOTE]
> Please read through the [NTFPRCS plugin](https://github.com/jokob-sk/NetAlertX/blob/main/front/plugins/notification_processing/README.md) documentation to understand how device and global settings influence the notification processing.

View File

@@ -43,51 +43,50 @@ NetAlertX supports additional plugins to extend its functionality, each with its
Device-detecting plugins insert values into the `CurrentScan` database table. The plugins that are not required are safe to ignore, however, it makes sense to have at least some device-detecting plugins enabled, such as `ARPSCAN` or `NMAPDEV`.
| ID | Type | Description | Features | Required | Data source | Detailed docs |
|---------------|---------|--------------------------------------------|----------|----------|--------------|---------------------------------------------------------------------|
| `APPRISE` | ▶️ | Apprise notification proxy | | | Script | [_publisher_apprise](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/_publisher_apprise/) |
| `ARPSCAN` | 🔍 | ARP-scan on current network | | | Script | [arp_scan](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/arp_scan/) |
| `AVAHISCAN` | 🆎 | Avahi (mDNS-based) name resolution | | | Script | [avahi_scan](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/avahi_scan/) |
| `ASUSWRT` | 🔍 | Import connected devices from AsusWRT | | | Script | [asuswrt_import](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/asuswrt_import/) |
| `CSVBCKP` | ⚙ | CSV devices backup | | | Script | [csv_backup](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/csv_backup/) |
| `CUSTPROP` | ⚙ | Managing custom device properties values | | Yes | Template | [custom_props](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/custom_props/) |
| `DBCLNP` | ⚙ | Database cleanup | | Yes* | Script | [db_cleanup](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/db_cleanup/) |
| `DDNS` | ⚙ | DDNS update | | | Script | [ddns_update](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/ddns_update/) |
| `DHCPLSS` | 🔍/📥/🆎| Import devices from DHCP leases | | | Script | [dhcp_leases](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/dhcp_leases/) |
| `DHCPSRVS` | ♻ | DHCP servers | | | Script | [dhcp_servers](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/dhcp_servers/) |
| `DIGSCAN` | 🆎 | Dig (DNS) Name resolution | | | Script | [dig_scan](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/dig_scan/) |
| `FREEBOX` | 🔍/♻/🆎| Pull data and names from Freebox/Iliadbox | | | Script | [freebox](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/freebox/) |
| `ICMP` | ♻ | ICMP (ping) status checker | | | Script | [icmp_scan](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/icmp_scan/) |
| `INTRNT` | 🔍 | Internet IP scanner | | | Script | [internet_ip](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/internet_ip/) |
| `INTRSPD` | ♻ | Internet speed test | | | Script | [internet_speedtest](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/internet_speedtest/) |
| `IPNEIGH` | 🔍 | Scan ARP (IPv4) and NDP (IPv6) tables | | | Script | [ipneigh](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/ipneigh/) |
| `LUCIRPC` | 🔍 | Import connected devices from OpenWRT | | | Script | [luci_import](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/luci_import/) |
| `MAINT` | ⚙ | Maintenance of logs, etc. | | | Script | [maintenance](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/maintenance/) |
| `MQTT` | ▶️ | MQTT for synching to Home Assistant | | | Script | [_publisher_mqtt](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/_publisher_mqtt/) |
| `NBTSCAN` | 🆎 | Nbtscan (NetBIOS-based) name resolution | | | Script | [nbtscan_scan](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/nbtscan_scan/) |
| `NEWDEV` | ⚙ | New device template | | Yes | Template | [newdev_template](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/newdev_template/) |
| `NMAP` | ♻ | Nmap port scanning & discovery | | | Script | [nmap_scan](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/nmap_scan/) |
| `NMAPDEV` | 🔍 | Nmap dev scan on current network | | | Script | [nmap_dev_scan](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/nmap_dev_scan/) |
| `NSLOOKUP` | 🆎 | NSLookup (DNS-based) name resolution | | | Script | [nslookup_scan](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/nslookup_scan/) |
| `NTFPRCS` | ⚙ | Notification processing | | Yes | Template | [notification_processing](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/notification_processing/)|
| `NTFY` | ▶️ | NTFY notifications | | | Script | [_publisher_ntfy](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/_publisher_ntfy/) |
| `OMDSDN` | 📥/🆎 ❌ | UNMAINTAINED use `OMDSDNOPENAPI` | 🖧 🔄 | | Script | [omada_sdn_imp](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/omada_sdn_imp/) |
| `OMDSDNOPENAPI`| 📥/🆎 | OMADA TP-Link import via OpenAPI | 🖧 | | Script | [omada_sdn_openapi](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/omada_sdn_openapi/) |
| `PIHOLE` | 🔍/🆎/📥| Pi-hole device import & sync | | | SQLite DB | [pihole_scan](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/pihole_scan/) |
| `PUSHSAFER` | ▶️ | Pushsafer notifications | | | Script | [_publisher_pushsafer](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/_publisher_pushsafer/) |
| `PUSHOVER` | ▶️ | Pushover notifications | | | Script | [_publisher_pushover](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/_publisher_pushover/) |
| `SETPWD` | ⚙ | Set password | | Yes | Template | [set_password](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/set_password/) |
| `SMTP` | ▶️ | Email notifications | | | Script | [_publisher_email](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/_publisher_email/) |
| `SNMPDSC` | 🔍/📥 | SNMP device import & sync | | | Script | [snmp_discovery](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/snmp_discovery/) |
| `SYNC` | 🔍/⚙/📥| Sync & import from NetAlertX instances | 🖧 🔄 | Yes | Script | [sync](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/sync/) |
| `TELEGRAM` | ▶️ | Telegram notifications | | | Script | [_publisher_telegram](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/_publisher_telegram/) |
| `UI` | ♻ | UI specific settings | | Yes | Template | [ui_settings](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/ui_settings/) |
| `UNFIMP` | 🔍/📥/🆎| UniFi device import & sync | 🖧 | | Script | [unifi_import](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/unifi_import/) |
| `VNDRPDT` | ⚙ | Vendor database update | | | Script | [vendor_update](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/vendor_update/) |
| `WEBHOOK` | ▶️ | Webhook notifications | | | Script | [_publisher_webhook](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/_publisher_webhook/) |
| `WEBMON` | ♻ | Website down monitoring | | | Script | [website_monitor](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/website_monitor/) |
| `WOL` | ♻ | Automatic wake-on-lan | | | Script | [wake_on_lan](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/wake_on_lan/) |
| ID | Plugin docs | Type | Description | Features | Required |
| --------------- | ------------------------------------------------------------------------------------------------------------------ | -------- | ----------------------------------------- | -------- | -------- |
| `APPRISE` | [_publisher_apprise](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/_publisher_apprise/) | ▶️ | Apprise notification proxy | | |
| `ARPSCAN` | [arp_scan](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/arp_scan/) | 🔍 | ARP-scan on current network | | |
| `AVAHISCAN` | [avahi_scan](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/avahi_scan/) | 🆎 | Avahi (mDNS-based) name resolution | | |
| `ASUSWRT` | [asuswrt_import](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/asuswrt_import/) | 🔍 | Import connected devices from AsusWRT | | |
| `CSVBCKP` | [csv_backup](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/csv_backup/) | ⚙ | CSV devices backup | | |
| `CUSTPROP` | [custom_props](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/custom_props/) | ⚙ | Managing custom device properties values | | Yes |
| `DBCLNP` | [db_cleanup](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/db_cleanup/) | ⚙ | Database cleanup | | Yes\* |
| `DDNS` | [ddns_update](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/ddns_update/) | ⚙ | DDNS update | | |
| `DHCPLSS` | [dhcp_leases](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/dhcp_leases/) | 🔍/📥/🆎 | Import devices from DHCP leases | | |
| `DHCPSRVS` | [dhcp_servers](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/dhcp_servers/) | ♻ | DHCP servers | | |
| `DIGSCAN` | [dig_scan](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/dig_scan/) | 🆎 | Dig (DNS) Name resolution | | |
| `FREEBOX` | [freebox](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/freebox/) | 🔍/♻/🆎 | Pull data and names from Freebox/Iliadbox | | |
| `ICMP` | [icmp_scan](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/icmp_scan/) | ♻ | ICMP (ping) status checker | | |
| `INTRNT` | [internet_ip](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/internet_ip/) | 🔍 | Internet IP scanner | | |
| `INTRSPD` | [internet_speedtest](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/internet_speedtest/) | ♻ | Internet speed test | | |
| `IPNEIGH` | [ipneigh](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/ipneigh/) | 🔍 | Scan ARP (IPv4) and NDP (IPv6) tables | | |
| `LUCIRPC` | [luci_import](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/luci_import/) | 🔍 | Import connected devices from OpenWRT | | |
| `MAINT` | [maintenance](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/maintenance/) | ⚙ | Maintenance of logs, etc. | | |
| `MQTT` | [_publisher_mqtt](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/_publisher_mqtt/) | ▶️ | MQTT for synching to Home Assistant | | |
| `NBTSCAN` | [nbtscan_scan](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/nbtscan_scan/) | 🆎 | Nbtscan (NetBIOS-based) name resolution | | |
| `NEWDEV` | [newdev_template](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/newdev_template/) | ⚙ | New device template | | Yes |
| `NMAP` | [nmap_scan](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/nmap_scan/) | ♻ | Nmap port scanning & discovery | | |
| `NMAPDEV` | [nmap_dev_scan](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/nmap_dev_scan/) | 🔍 | Nmap dev scan on current network | | |
| `NSLOOKUP` | [nslookup_scan](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/nslookup_scan/) | 🆎 | NSLookup (DNS-based) name resolution | | |
| `NTFPRCS` | [notification_processing](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/notification_processing/) | ⚙ | Notification processing | | Yes |
| `NTFY` | [_publisher_ntfy](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/_publisher_ntfy/) | ▶️ | NTFY notifications | | |
| `OMDSDN` | [omada_sdn_imp](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/omada_sdn_imp/) | 📥/🆎 ❌ | UNMAINTAINED use `OMDSDNOPENAPI` | 🖧 🔄 | |
| `OMDSDNOPENAPI` | [omada_sdn_openapi](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/omada_sdn_openapi/) | 📥/🆎 | OMADA TP-Link import via OpenAPI | 🖧 | |
| `PIHOLE` | [pihole_scan](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/pihole_scan/) | 🔍/🆎/📥 | Pi-hole device import & sync | | |
| `PUSHSAFER` | [_publisher_pushsafer](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/_publisher_pushsafer/) | ▶️ | Pushsafer notifications | | |
| `PUSHOVER` | [_publisher_pushover](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/_publisher_pushover/) | ▶️ | Pushover notifications | | |
| `SETPWD` | [set_password](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/set_password/) | ⚙ | Set password | | Yes |
| `SMTP` | [_publisher_email](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/_publisher_email/) | ▶️ | Email notifications | | |
| `SNMPDSC` | [snmp_discovery](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/snmp_discovery/) | 🔍/📥 | SNMP device import & sync | | |
| `SYNC` | [sync](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/sync/) | 🔍/⚙/📥 | Sync & import from NetAlertX instances | 🖧 🔄 | Yes |
| `TELEGRAM` | [_publisher_telegram](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/_publisher_telegram/) | ▶️ | Telegram notifications | | |
| `UI` | [ui_settings](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/ui_settings/) | ♻ | UI specific settings | | Yes |
| `UNFIMP` | [unifi_import](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/unifi_import/) | 🔍/📥/🆎 | UniFi device import & sync | 🖧 | |
| `VNDRPDT` | [vendor_update](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/vendor_update/) | ⚙ | Vendor database update | | |
| `WEBHOOK` | [_publisher_webhook](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/_publisher_webhook/) | ▶️ | Webhook notifications | | |
| `WEBMON` | [website_monitor](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/website_monitor/) | ♻ | Website down monitoring | | |
| `WOL` | [wake_on_lan](https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/wake_on_lan/) | ♻ | Automatic wake-on-lan | | |
> \* The database cleanup plugin (`DBCLNP`) is not _required_ but the app will become unusable after a while if not executed.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 185 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

File diff suppressed because it is too large Load Diff

View File

@@ -1,3 +1,8 @@
<span class="helpIcon">
<a target="_blank" href="https://github.com/jokob-sk/NetAlertX/blob/main/docs/WORKFLOWS_DEBUGGING.md">
<i class="fa fa-circle-question"></i>
</a>
</span>
<section class="content">
<div class="nav-tabs-custom app-event-content" style="margin-bottom: 0px;">
<ul id="tabs-location" class="nav nav-tabs col-sm-2 hidden">

View File

@@ -12,10 +12,12 @@
----------------------------------------------------------------------------- */
:root {
--color-aqua: #00c0ef;
--color-lightblue: #3c8dbc;
--color-blue: #0060df;
--color-green: #00a65a;
--color-yellow: #f39c12;
--color-red: #dd4b39;
--color-gray: #8c8c8c;
}
.input-group .checkbox
@@ -28,6 +30,45 @@ h5
font-size: medium;
}
a[target="_blank"] {
position: relative;
display: inline-block; /* Needed for positioning */
padding-right: 0.6em; /* Space for the icon */
}
a[target="_blank"]::after {
content: '↗';
position: absolute;
top: 0;
right: 0;
font-size: 0.75em;
line-height: 1;
}
.select2 .hover-node-info::after {
padding-left: 1px ;
}
/* .node-standard-device .netNodeText::after
{
right: -7px;
top: 1px;
} */
/* .select2-container--default .select2-selection--multiple .select2-selection__choice
{
padding-right: 15px !important;
} */
.hoverHighlight
{
opacity: 0.7;
}
.hoverHighlight:hover
{
opacity: 1;
}
/* -----------------------------------------------------------------------------
Helper Classes
----------------------------------------------------------------------------- */
@@ -48,6 +89,7 @@ h5
float: inline-end;
}
/* -----------------------------------------------------------------------------
Text Classes
----------------------------------------------------------------------------- */
@@ -340,6 +382,21 @@ body
width: 100%;
}
.networkTable .nav-tabs-custom
{
margin-bottom: 0px;
}
.plugin-content #tabs-location .nav-tabs-custom > .nav-tabs > li
{
display: contents;
}
.plugin-content .left-nav
{
display: contents;
}
.pa-small-box-2 .inner h3 {
margin-left: 0em;
margin-bottom: 1.3em;
@@ -474,7 +531,7 @@ body
}
.bottom-border-primary {
border-bottom-color: #3c8dbc;
border-bottom-color: var(--color-lightblue);
border-bottom-style: solid;
border-bottom-width: 3px
}
@@ -879,6 +936,10 @@ height: 50px;
margin: 10px;
padding: 10px;
}
#notifications .notification-box{
min-height: 90vh;
}
#notificationData textarea{
width: 100%;
@@ -1032,7 +1093,7 @@ height: 50px;
.myhidden
{
display:none;
display:none !important;
}
.center
@@ -1354,11 +1415,13 @@ input[readonly] {
.iconPreview {
min-width: 40px;
/* display: inherit; */
}
.iconPreview svg{
min-width: 20px;
max-width: 20px;
margin-bottom: -3px;
}
@@ -1437,7 +1500,7 @@ input[readonly] {
}
#tableDevicesBox td svg, #tableDevicesBox td i{
height: 1.5em !important;
height: 1em !important;
}
#TileCards .tile .inner
@@ -1459,6 +1522,11 @@ input[readonly] {
text-align: left;
}
#panDetails .input-group {
min-height: 40px;
}
#devicePageInfoPlc
{
display: none;
@@ -1537,10 +1605,6 @@ input[readonly] {
}
/* #panDetails .dataTables_wrapper .bottom .paging_simple_numbers */
#panDetails #NEWDEV_devIcon
{
display: none;
}
#panDetails #NEWDEV_devCustomProps_label
{
@@ -1549,7 +1613,7 @@ input[readonly] {
#deviceDetailsEdit .select2-container--default .select2-selection--multiple .select2-selection__choice a
{
color: #bec5cb;
color: #fff;
}
#deviceDetailsEdit .iconPreview svg
@@ -1596,6 +1660,21 @@ input[readonly] {
pointer-events: none;
}
.custom-badge a
{
color: #fff !important;
font-size: 14px;
}
.custom-badge
{
border: 1px solid #aaa;
border-radius: 4px;
border-style: solid;
padding: 0 5px;
font-size: 14px;
display: inline-block;
}
#deviceDetailsEdit .form-control
{
min-height: 42px;
@@ -1651,10 +1730,30 @@ input[readonly] {
/* NETWORK page */
/* ----------------------------------------------------------------- */
.hide-node-names .node-name {
display: none;
}
#toggleFilters
{
display: block;
position: fixed;
padding-left: 32px;
padding-top: 10px;
background-color: inherit;
z-index: 3;
width: 190px;
box-shadow: 4px 4px 4px rgba(0, 0, 0, 0.1);
}
/* AdminLTE overrides */
.content-wrapper {
min-height: calc(100vh - 31px) !important;
}
#networkTree .box
{
/* border-top:1px; */
border-width:1px;
border-top-color:grey;
padding:0px;
margin:0px;
@@ -1690,6 +1789,7 @@ input[readonly] {
opacity: 0.3;
display: initial;
float: left;
width: 1em;
}
#networkTree
@@ -1713,7 +1813,6 @@ input[readonly] {
width: auto;
}
#hover-box
{
background-color: #ffffff;;
@@ -1757,11 +1856,39 @@ input[readonly] {
right: 0;
margin-right: -3px;
}
/* var(--color-aqua);
--color-aqua: #00c0ef;
--color-blue: #0060df;
--color-green: #00a65a;
--color-yellow: #f39c12;
--color-red: #dd4b39; */
#networkTree .node-inner.node-network-device:hover
{
box-shadow: var(--color-aqua) 0px 0px 20px;
}
#networkTree .node-inner.node-standard-device:hover
{
box-shadow: var(--color-gray) 0px 0px 10px;
}
#networkTree .network-hw-icon
{
position: absolute;
margin-left: -0.4em;
opacity: 0.3;
margin-top: 0.1em;
}
#networkTree .highlightedNode
{
/* border: solid; */
border-color:#3c8dbc;
border-color:var(--color-lightblue);
box-shadow: var(--color-lightblue) 0px 0px 20px;
}
#networkTree .netStatus-Off-line i,
#networkTree .netStatus-Off-line svg
{
@@ -1785,6 +1912,23 @@ input[readonly] {
/* margin-left: 0.2em; */
}
.networkTable
{
padding-bottom: 1px;
z-index: 3;
position: relative;
}
.networkNodeTabHeaders .icon i
{
padding-top: 8px !important;
padding-left: 6px !important;
}
.networkTable .box-body {
padding-top: 5px;
}
.networkTable .networkNodeTabHeaders a {
display: block;
height: 3em;
@@ -1813,6 +1957,8 @@ input[readonly] {
text-wrap: nowrap;
}
@media (max-width: 767px) {
.networkNodeTabHeaders .node-name
@@ -1843,7 +1989,10 @@ input[readonly] {
/* PLUGINS page */
/* ----------------------------------------------------------------- */
#tabs-location
{
padding-right: 0px;
}
.plugin-filters
{
@@ -1858,9 +2007,25 @@ input[readonly] {
padding-bottom: 0px;
}
.plugin-content .left-nav{
.plugin-content .nav-tabs li a
{
border-right-width: 0px;
}
#tabs-content-location-wrap
{
min-height: 90vh;
}
#tabs-content-location textarea {
width: 100%;
}
.plugin-content .left-nav{
width: calc(100%);
padding-right: 0px;
z-index: 2;
background-color: inherit !important;
}
.plugin-content #tabs-content-location
@@ -1934,6 +2099,9 @@ input[readonly] {
.pluginBadge
{
float: right;
margin-right: 10px;
opacity: 0.6;
margin-top: 4px;
}
.pluginBadgeWrap
@@ -1942,42 +2110,56 @@ input[readonly] {
display: ruby;
z-index: 1;
position: sticky;
margin-top: 1px;
margin-top: 4px;
}
/* -----------------------------------------------------------------------------
Spin
----------------------------------------------------------------------------- */
.pa_semitransparent-panel {
position: absolute;
width: 100%; /*calc (100% -40px);*/
height: 100%;
left: 0;
top: 0;
#loadingSpinner {
position: fixed;
z-index: 1000;
/* top: 0; */
/* left: 0; */
/* width: 100%; */
/* height: 100%; */
opacity: 0;
transition: opacity 0.3s ease-in-out;
pointer-events: none;
display: block;
opacity: 0.8;
background-color: #fff;
z-index: 800;
}
.pa_spinner {
position: fixed;
left: 0;
right: 0;
.fa-spinner
{
font-size: initial;
}
#loadingSpinner.visible {
opacity: 1;
pointer-events: auto;
}
.nax_semitransparent-panel {
position: absolute;
width: 100%;
height: 100%;
background-color: #fff;
opacity: 0.5;
z-index: 99;
}
.nax_spinner {
position: absolute;
top: 100px;
margin-left: auto;
margin-right: auto;
left: 50%;
transform: translateX(-50%);
padding: 15px;
width: 200px;
background-color: #fff;
z-index: 801;
z-index: 1000;
}
#loadingSpinner
{
z-index: 100;
}
/* Multi-edit adjustements */
.box-header
@@ -2004,9 +2186,10 @@ input[readonly] {
}
.pia-top-left-logo
.top-left-logo
{
height:50px;
height:35px;
width:35px;
}
/* -----------------------------------------------------------------------------

View File

@@ -10,6 +10,16 @@
*
* Additional fixes For Pi.Alert UI by leiweibau */
:root {
--color-aqua: #00c0ef;
--color-lightblue: #3c8dbc;
--color-blue: #0060df;
--color-green: #00a65a;
--color-yellow: #f39c12;
--color-red: #dd4b39;
--color-gray: #8c8c8c;
}
:root {
--datatable-bgcolor: rgba(64, 76, 88, 0.8);
}
@@ -649,8 +659,14 @@ input[type="password"]::-webkit-caps-lock-indicator {
border-color: #888888;
}
.table-hover tbody tr:hover td, .table-hover tbody tr:hover th {
background-color: rgb(189,192,198);
color: #444;
background-color: var(--datatable-bgcolor);
color: var(--fbc-white);
}
table.dataTable tbody tr.selected, table.dataTable tbody tr .selected
{
background-color: var(--datatable-bgcolor);
color: var(--fbc-white);
}
.db_info_table_cell:nth-child(1) {background: #272c30}
@@ -728,10 +744,40 @@ input[type="password"]::-webkit-caps-lock-indicator {
top: 0.01em;
font-size: 3.25em;
}
.pa_semitransparent-panel{
.nax_semitransparent-panel{
background-color: #000 !important;
}
.select2-container--default .select2-selection--single {
color: initial !important;
background-color: #353c42 !important;
}
/* Chevron color */
.select2-container .select2-selection__arrow::after {
color: #bec5cb;
}
/* Chevron color */
.select2-selection .select2-selection--single {
color: #bec5cb;
}
.select2-container--default .select2-selection--multiple, .select2-container--default .select2-selection--single {
border-color: #3d444b !important;
}
.select2-container--default .select2-selection--single .select2-selection__rendered .custom-chip
{
color: #bec5cb;
}
#hover-box
{
background-color: #353c42 !important;
}
.callout code {
background-color: #fff !important;
color:#000 !important;
@@ -740,4 +786,9 @@ input[type="password"]::-webkit-caps-lock-indicator {
.thresholdFormControl
{
color:#000;
}
.btn:hover
{
color: var(--color-gray);
}

View File

@@ -11,6 +11,17 @@
* Additional fixes For Pi.Alert UI by leiweibau */
@media (prefers-color-scheme: dark) {
:root {
--color-aqua: #00c0ef;
--color-lightblue: #3c8dbc;
--color-blue: #0060df;
--color-green: #00a65a;
--color-yellow: #f39c12;
--color-red: #dd4b39;
--color-gray: #8c8c8c;
--color-white: #fff;
}
:root {
--datatable-bgcolor: rgba(64, 76, 88, 0.8);
@@ -651,8 +662,14 @@
border-color: #888888;
}
.table-hover tbody tr:hover td, .table-hover tbody tr:hover th {
background-color: rgb(189,192,198);
color: #444;
background-color: var(--datatable-bgcolor);
color: var(--fbc-white);
}
table.dataTable tbody tr.selected, table.dataTable tbody tr .selected
{
background-color: var(--datatable-bgcolor);
color: var(--fbc-white);
}
.db_info_table_cell:nth-child(1) {background: #272c30}
@@ -730,7 +747,7 @@
top: 0.01em;
font-size: 3.25em;
}
.pa_semitransparent-panel{
.nax_semitransparent-panel{
background-color: #000 !important;
}
@@ -775,3 +792,7 @@
color:#000;
}
.btn:hover
{
color: var(--color-white);
}

View File

@@ -16,8 +16,9 @@
require 'php/templates/header.php';
?>
<script>
showSpinner();
</script>
<!-- Page ------------------------------------------------------------------ -->
<div class="content-wrapper">
@@ -122,18 +123,14 @@
</div>
</ul>
<div class="tab-content" style="min-height: 430px;">
<div class="tab-content spinnerTarget" style="min-height: 430px;">
<!-- tab page 1 ------------------------------------------------------------ -->
<!--
<div class="tab-pane fade in active" id="panDetails">
-->
<div class="tab-pane fade" id="panDetails">
<div class="tab-pane fade" id="panDetails">
<?php
require 'deviceDetailsEdit.php';
?>
</div>
<!-- tab page 2 ------------------------------------------------------------ -->
@@ -141,51 +138,38 @@
<?php
require 'deviceDetailsSessions.php';
?>
</div>
<!-- tab page "Tools" ------------------------------------------------------------ -->
<div class="tab-pane fade" id="panTools">
<?php
require 'deviceDetailsTools.php';
?>
?>
</div>
<!-- tab page 3 ------------------------------------------------------------ -->
<div class="tab-pane fade table-responsive" id="panPresence">
<div class="tab-pane fade table-responsive" id="panPresence">
<?php
// Include the other page
include 'deviceDetailsPresence.php';
?>
</div>
<!-- tab page 4 ------------------------------------------------------------ -->
<div class="tab-pane fade table-responsive" id="panEvents">
<?php
// Include the other page
include 'deviceDetailsEvents.php';
?>
?>
</div>
<!-- tab page 7 ------------------------------------------------------------ -->
<div class="tab-pane fade table-responsive" id="panPlugins">
<?php
// Include the other page
include 'pluginsCore.php';
?>
</div>
</div>
@@ -241,13 +225,6 @@ switch ($UI_THEME) {
var selectedTab = 'tabDetails';
var emptyArr = ['undefined', "", undefined, null];
// Call renderSmallBoxes, then main
(async () => {
await renderSmallBoxes();
main();
})();
// -----------------------------------------------------------------------------
function main () {
@@ -273,7 +250,7 @@ function main () {
period = '1 day';
sessionsRows = 50;
eventsRows = 50;
$('#chkHideConnectionEvents')[0].checked = eval(eventsHide == 'true');
// $('#chkHideConnectionEvents')[0].checked = eval(eventsHide == 'true');
// Initialize components with parameters
@@ -282,26 +259,7 @@ function main () {
$( document ).ready(function() {
initializeTabs();
});
// Events tab toggle conenction events
$('input').on('ifToggled', function(event){
// Hide / Show Events
if (event.currentTarget.id == 'chkHideConnectionEvents') {
getDeviceEvents();
} else {
// Activate save & restore
// activateSaveRestoreData();
// Ask skip notifications
// if (event.currentTarget.id == 'chkArchived' ) {
// askSkipNotifications();
// }
}
});
}
@@ -328,6 +286,63 @@ function recordSwitch(direction) {
}
}
// ----------------------------------------
// Handle previous/next arrows/chevrons
function updateChevrons(currentMac) {
const devicesList = getDevicesList();
pos = devicesList.findIndex(item => item.devMac === currentMac);
if (pos === -1) {
console.warn('Device not found in cache. Re-caching devices...', currentMac);
showSpinner();
cacheDevices().then(() => {
hideSpinner();
// Retry after re-caching
const refreshedList = getDevicesList();
pos = refreshedList.findIndex(item => item.devMac === currentMac);
if (pos === -1) {
console.error('Still not found after re-cache:', currentMac);
return;
}
console.log('Device found after re-cache:', refreshedList[pos]);
// Proceed with using `refreshedList[pos]`
}).catch((err) => {
hideSpinner();
console.error('Failed to cache devices:', err);
});
return;
}
// Update the record number display
$('#txtRecord').html((pos + 1) + ' / ' + devicesList.length);
// Enable/disable previous button
if (pos <= 0) {
$('#btnPrevious').attr('disabled', '');
$('#btnPrevious').addClass('text-gray50');
} else {
$('#btnPrevious').removeAttr('disabled');
$('#btnPrevious').removeClass('text-gray50');
}
// Enable/disable next button
if (pos >= devicesList.length - 1) {
$('#btnNext').attr('disabled', '');
$('#btnNext').addClass('text-gray50');
} else {
$('#btnNext').removeAttr('disabled');
$('#btnNext').removeClass('text-gray50');
}
}
// -----------------------------------------------------------------------------
function performSwitch(direction)
@@ -338,7 +353,9 @@ function performSwitch(direction)
// Update the global position in the devices list variable 'pos'
if (direction === "next") {
if (pos < devicesList.length - 1) {
console.log("direction:" + direction);
if (pos < devicesList.length) {
pos++;
}
} else if (direction === "prev") {
@@ -358,15 +375,12 @@ function performSwitch(direction)
}
// -----------------------------------------------------------------------------
// Activate save & restore on any value change
$(document).on('input', 'input:text', function() {
settingsChanged();
});
// -----------------------------------------------------------------------------
function initializeTabs () {
@@ -380,8 +394,6 @@ function initializeTabs () {
}
$('.nav-tabs a[id='+ selectedTab +']').tab('show');
// $('.nav-tabs a[id='+ selectedTab +']').parent().click();
// $('.nav-tabs a[id="tabPlugins"]').tab('show');
// When changed save new current tab
$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
@@ -391,11 +403,6 @@ function initializeTabs () {
// events on tab change
$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
var target = $(e.target).attr("href") // activated tab
// if(target == "#panTools")
// {
// // loadTools();
// }
});
}
@@ -415,7 +422,6 @@ async function renderSmallBoxes() {
}
const deviceData = await response.json();
console.log(deviceData);
// Prepare custom data
const customData = [
@@ -447,7 +453,7 @@ async function renderSmallBoxes() {
"labelLang": "DevDetail_Shortcut_Presence",
"iconId": "deviceEventsIcon",
"iconClass": "fa fa-calendar",
"dataValue": `${deviceData.devPresenceHours}h`
"dataValue": `${deviceData.devPresenceHours ?? 0}h`
},
{
"onclickEvent": "$('#tabEvents').trigger('click');",
@@ -482,22 +488,65 @@ async function renderSmallBoxes() {
console.error('Error in renderSmallBoxes:', error);
} finally {
// Hide loading dialog
hideSpinner();
// hideSpinner();
}
}
function updateDevicePageName(mac) {
let name = getDevDataByMac(mac, "devName");
let owner = getDevDataByMac(mac, "devOwner");
// If data is missing, re-cache and retry once
if (mac != 'new' && (name === "Unknown" || owner === "Unknown")) {
console.warn("Device not found in cache, retrying after re-cache:", mac);
showSpinner();
cacheDevices().then(() => {
hideSpinner();
// Retry after successful cache
updateDevicePageName(mac);
}).catch((err) => {
hideSpinner();
console.error("Failed to refresh devices:", err);
});
return; // Exit early to avoid showing bad data
}
// Page title - Name
if (mac == "new") {
$('#pageTitle').html(
`<i title="${getString("Gen_create_new_device")}" class="fa fa-square-plus"></i> ` + getString("Gen_create_new_device")
);
$('#devicePageInfoPlc .inner').html(
`<i class="fa fa-circle-info"></i> ` + getString("Gen_create_new_device_info")
);
$('#devicePageInfoPlc').show();
} else if (!owner || (name.toString()).indexOf(owner) !== -1) {
$('#pageTitle').html(name);
$('#devicePageInfoPlc').hide();
} else {
$('#pageTitle').html(name + ' (' + owner + ')');
$('#devicePageInfoPlc').hide();
}
}
//-----------------------------------------------------------------------------------
// Call renderSmallBoxes, then main
(async () => {
await renderSmallBoxes();
main();
})();
window.onload = function async()
{
initializeTabs();
// initializeTabs();
updateChevrons(mac);
updateDevicePageName(mac);
}
</script>

View File

@@ -39,7 +39,7 @@
// -------------------------------------------------------------------
// Get plugin and settings data from API endpoints
function getDeviceData(readAllData){
function getDeviceData(){
mac = getMac()
@@ -53,17 +53,21 @@
var deviceData = JSON.parse(data);
// Deactivate next previous buttons
if (readAllData) {
$('#btnPrevious').attr ('disabled','');
$('#btnPrevious').addClass ('text-gray50');
$('#btnNext').attr ('disabled','');
$('#btnNext').addClass ('text-gray50');
}
// // Deactivate next previous buttons
// if (readAllData) {
// $('#btnPrevious').attr ('disabled','');
// $('#btnPrevious').addClass ('text-gray50');
// $('#btnNext').attr ('disabled','');
// $('#btnNext').addClass ('text-gray50');
// }
// some race condition, need to implement delay
setTimeout(() => {
$.get('php/server/query_json.php', { file: 'table_settings.json', nocache: Date.now() }, function(res) {
$.get('php/server/query_json.php', {
file: 'table_settings.json',
// nocache: Date.now()
},
function(res) {
settingsData = res["data"];
@@ -96,7 +100,7 @@
DevDetail_MainInfo_Network_Title: {
data: ["devParentMAC", "devParentRelType", "devParentPort", "devSSID", "devSite", "devSyncHubNode"],
docs: "https://github.com/jokob-sk/NetAlertX/blob/main/docs/NETWORK_TREE.md",
iconClass: "fa fa-network-wired",
iconClass: "fa fa-sitemap fa-rotate-270",
inputGroupClasses: "field-group network-group col-lg-4 col-sm-6 col-xs-12",
labelClasses: "col-sm-4 col-xs-12 control-label",
inputClasses: "col-sm-8 col-xs-12 input-group"
@@ -122,9 +126,9 @@
// Group for Children.
DevDetail_Children_Title: {
data: ["devChildrenDynamic"],
docs: "https://github.com/jokob-sk/NetAlertX/blob/main/docs/CUSTOM_PROPERTIES.md",
docs: "https://github.com/jokob-sk/NetAlertX/blob/main/docs/NETWORK_TREE.md",
iconClass: "fa fa-list",
inputGroupClasses: "field-group cutprop-group col-lg-12 col-sm-12 col-xs-12",
inputGroupClasses: "field-group cutprop-group col-lg-6 col-sm-12 col-xs-12",
labelClasses: "col-sm-12 col-xs-12 control-label",
inputClasses: "col-sm-12 col-xs-12 input-group"
},
@@ -133,7 +137,7 @@
data: ["devCustomProps"],
docs: "https://github.com/jokob-sk/NetAlertX/blob/main/docs/CUSTOM_PROPERTIES.md",
iconClass: "fa fa-list",
inputGroupClasses: "field-group cutprop-group col-lg-12 col-sm-12 col-xs-12",
inputGroupClasses: "field-group cutprop-group col-lg-6 col-sm-12 col-xs-12",
labelClasses: "col-sm-12 col-xs-12 control-label",
inputClasses: "col-sm-12 col-xs-12 input-group"
}
@@ -208,15 +212,6 @@
<i class="fa-solid fa-dice" ></i>
</span>`;
}
// handle generate IP for new device
if (setting.setKey == "NEWDEV_devIcon") {
inlineControl += `<span class="input-group-addon pointer"
onclick="showIconSelection()"
title="${getString("Gen_Select")}">
<i class="fa-solid fa-chevron-down" ></i>
</span>`;
}
// handle devChildrenDynamic or NEWDEV_devChildrenNicsDynamic - selected values and options are the same
if (
@@ -260,30 +255,13 @@
updateAllIconPreviews();
// update readonly fields
handleReadOnly(settingsData, disabledFields);
// Page title - Name
if (mac == "new") {
$('#pageTitle').html(`<i title="${getString("Gen_create_new_device")}" class="fa fa-square-plus"></i> ` + getString("Gen_create_new_device"));
$('#devicePageInfoPlc .inner').html(`<i class="fa fa-circle-info"></i> ` + getString("Gen_create_new_device_info"));
$('#devicePageInfoPlc').show();
} else if (deviceData['devOwner'] == null || deviceData['devOwner'] == '' ||
(deviceData['devName'].toString()).indexOf(deviceData['devOwner']) != -1) {
$('#pageTitle').html(deviceData['devName']);
$('#devicePageInfoPlc').hide();
} else {
$('#pageTitle').html(deviceData['devName'] + ' (' + deviceData['devOwner'] + ')');
$('#devicePageInfoPlc').hide();
}
handleReadOnly(settingsData, disabledFields);
};
// console.log(relevantSettings)
generateSimpleForm(relevantSettings);
// <> chevrons
updateChevrons(deviceData)
toggleNetworkConfiguration(mac == 'Internet')
initSelect2();
@@ -299,46 +277,6 @@
}
// ----------------------------------------
// Handle previous/next arrows/chevrons
function updateChevrons(deviceData) {
devicesList = getDevicesList();
// console.log(devicesList);
// Check if device is part of the devicesList
pos = devicesList.findIndex(item => item.rowid == deviceData['rowid']);
// console.log(pos);
if (pos == -1) {
devicesList.push({"rowid" : deviceData['rowid'], "mac" : deviceData['devMac'], "name": deviceData['devName'], "type": deviceData['devType']});
pos=0;
}
// Record number
$('#txtRecord').html (pos+1 +' / '+ devicesList.length);
// Deactivate previous button
if (pos <= 0) {
$('#btnPrevious').attr ('disabled','');
$('#btnPrevious').addClass ('text-gray50');
} else {
$('#btnPrevious').removeAttr ('disabled');
$('#btnPrevious').removeClass ('text-gray50');
}
// Deactivate next button
if (pos >= (devicesList.length-1)) {
$('#btnNext').attr ('disabled','');
$('#btnNext').addClass ('text-gray50');
} else {
$('#btnNext').removeAttr ('disabled');
$('#btnNext').removeClass ('text-gray50');
}
}
// ----------------------------------------
// Handle the read-only fields
function handleReadOnly(settingsData, disabledFields) {
@@ -456,9 +394,47 @@
}
}
// -----------------------------------------------
// INIT with polling for panel element visibility
// -----------------------------------------------
var deviceDetailsPageInitialized = false;
function initdeviceDetailsPage()
{
// Only proceed if .plugin-content is visible
if (!$('#panDetails:visible').length) {
return; // exit early if nothing is visible
}
// init page once
if (deviceDetailsPageInitialized) return; // ENSURE ONCE
deviceDetailsPageInitialized = true;
showSpinner();
getDeviceData();
}
// -----------------------------------------------------------------------------
// Recurring function to monitor the URL and reinitialize if needed
function deviceDetailsPageUpdater() {
initdeviceDetailsPage();
// Run updater again after delay
setTimeout(deviceDetailsPageUpdater, 200);
}
// if visible, load immediately, if not start updater
if (!$('#panDetails:visible').length) {
deviceDetailsPageUpdater();
}
else
{
getDeviceData();
}
// -------------------- INIT ------------------------
getDeviceData(true);
</script>

View File

@@ -7,11 +7,11 @@
<!-- Hide Connections -->
<div class="text-center">
<label>
<input class="checkbox blue hidden" id="chkHideConnectionEvents" type="checkbox" checked>
<?= lang('DevDetail_Events_CheckBox');?>
<div class="col-sm-12 col-xs-12">
<label class="col-sm-3 col-xs-10">
<?= lang('DevDetail_Events_CheckBox');?>
</label>
<input class="checkbox blue col-sm-1 col-xs-2" id="chkHideConnectionEvents" type="checkbox" onChange="loadEventsData()">
</div>
<!-- Datatable Events -->
@@ -19,6 +19,7 @@
<thead>
<tr>
<th><?= lang("DevDetail_Tab_EventsTableDate");?></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>
@@ -29,66 +30,135 @@
<script>
var eventsRows = 10;
var eventsHide = true;
var parEventsRows = 'Front_Details_Events_Rows';
var parEventsHide = 'Front_Details_Events_Hide';
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
function loadEventsData() {
const hideConnections = $('#chkHideConnectionEvents')[0].checked;
const hideConnectionsStr = hideConnections ? 'true' : 'false';
function loadEventsData() {
// Define Events datasource and query dada
hideConnections = $('#chkHideConnectionEvents')[0].checked;
$('#tableEvents').DataTable().ajax.url('php/server/events.php?action=getDeviceEvents&mac=' + mac +'&period='+ period +'&hideConnections='+ hideConnections).load();
}
mac = getMac()
function initializeSessionsDatatable () {
const rawSql = `
SELECT eve_DateTime, eve_DateTime, eve_EventType, eve_IP, eve_AdditionalInfo
FROM Events
WHERE eve_MAC = "${mac}"
AND (
(eve_EventType NOT IN ("Connected", "Disconnected", "VOIDED - Connected", "VOIDED - Disconnected"))
OR "${hideConnectionsStr}" = "false"
)
`;
// Events datatable
$('#tableEvents').DataTable({
'paging' : true,
'lengthChange': true,
'lengthMenu' : [[10, 25, 50, 100, 500, -1], [10, 25, 50, 100, 500, 'All']],
'searching' : true,
'ordering' : true,
'info' : true,
'autoWidth' : false,
'order' : [[0,'desc']],
const apiUrl = `php/server/dbHelper.php?action=read&rawSql=${btoa(encodeURIComponent(rawSql))}`;
// Parameters
'pageLength' : eventsRows,
// Manually load the data first
$.get(apiUrl, function (data) {
const parsed = JSON.parse(data);
const rows = parsed.map(row => {
const rawDate = row.eve_DateTime;
const formattedDate = rawDate ? localizeTimestamp(rawDate) : '-';
return [
formattedDate,
row.eve_DateTime,
row.eve_EventType,
row.eve_IP,
row.eve_AdditionalInfo
];
});
'columnDefs' : [
// Replace HTML codes
{targets: [0],
'createdCell': function (td, cellData, rowData, row, col) {
$(td).html (translateHTMLcodes (localizeTimestamp(cellData)));
} }
],
// Processing
'processing' : true,
'language' : {
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',
"lengthMenu": "<?= lang('Events_Tablelenght');?>",
"search": "<?= lang('Events_Searchbox');?>: ",
"paginate": {
"next": "<?= lang('Events_Table_nav_next');?>",
"previous": "<?= lang('Events_Table_nav_prev');?>"
},
"info": "<?= lang('Events_Table_info');?>",
}
});
// Fill the table manually
const table = $('#tableEvents').DataTable();
table.clear();
table.rows.add(rows); // assuming each row is an array
table.draw();
hideSpinner();
});
}
initializeSessionsDatatable();
loadEventsData();
function initializeEventsDatatable (eventsRows) {
if ($.fn.dataTable.isDataTable('#tableEvents')) {
$('#tableEvents').DataTable().clear().destroy();
}
$('#tableEvents').DataTable({
'paging' : true,
'lengthChange': true,
'lengthMenu' : [[10, 25, 50, 100, 500, -1], [10, 25, 50, 100, 500, 'All']],
'searching' : true,
'ordering' : true,
'info' : true,
'autoWidth' : false,
'order' : [[0,'desc']],
'pageLength' : eventsRows,
'columnDefs' : [
{ orderData: [1], targets: [0] },
{ visible: false, targets: [1] },
{
targets: [0],
'createdCell': function (td, cellData, rowData, row, col) {
$(td).html(translateHTMLcodes(localizeTimestamp(cellData)));
}
}
],
'processing' : true,
'language' : {
processing: '<table><td width="130px" align="middle"><?= lang("DevDetail_Loading");?></td>'+
'<td><i class="fa-solid fa-spinner fa-spin-pulse"></i></td></table>',
emptyTable: 'No data',
"lengthMenu": "<?= lang('Events_Tablelenght');?>",
"search": "<?= lang('Events_Searchbox');?>: ",
"paginate": {
"next": "<?= lang('Events_Table_nav_next');?>",
"previous": "<?= lang('Events_Table_nav_prev');?>"
},
"info": "<?= lang('Events_Table_info');?>",
}
});
}
// -----------------------------------------------
// INIT with polling for panel element visibility
// -----------------------------------------------
var eventsPageInitialized = false;
function initDeviceEventsPage()
{
// Only proceed if .plugin-content is visible
if (!$('#panEvents:visible').length) {
return; // exit early if nothing is visible
}
// init page once
if (eventsPageInitialized) return; // ENSURE ONCE
eventsPageInitialized = true;
showSpinner();
var eventsRows = 10;
var eventsHide = true;
initializeEventsDatatable(eventsRows);
loadEventsData();
}
// -----------------------------------------------------------------------------
// Recurring function to monitor the URL and reinitialize if needed
function deviceEventsPageUpdater() {
initDeviceEventsPage();
// Run updater again after delay
setTimeout(deviceEventsPageUpdater, 200);
}
deviceEventsPageUpdater();
</script>

View File

@@ -23,8 +23,6 @@
<script>
initializeCalendar();
loadPresenceData();
// Force re-render calendar on tab change
// (bugfix for render error at left panel)
@@ -234,6 +232,37 @@ function initializeCalendar() {
})
}
// -----------------------------------------------
// INIT with polling for panel element visibility
// -----------------------------------------------
var presencePageInitialized = false;
function initDevicePresencePage() {
// Only proceed if the Presence tab is visible
if (!$('#panPresence:visible').length) {
return; // Exit early if nothing is visible
}
// Ensure initialization only happens once
if (presencePageInitialized) return;
presencePageInitialized = true;
showSpinner();
initializeCalendar();
loadPresenceData();
}
// Recurring check to initialize when visible
function devicePresencePageUpdater() {
initDevicePresencePage();
setTimeout(devicePresencePageUpdater, 200);
}
devicePresencePageUpdater();
</script>

View File

@@ -24,77 +24,126 @@
<script>
var parSessionsRows = 'Front_Details_Sessions_Rows';
function initializeSessionsDatatable (sessionsRows) {
// Sessions datatable
$('#tableSessions').DataTable({
'paging' : true,
'lengthChange': true,
'lengthMenu' : [[10, 25, 50, 100, 500, -1], [10, 25, 50, 100, 500, 'All']],
'searching' : true,
'ordering' : true,
'info' : true,
'autoWidth' : false,
'order' : [[0,'desc'], [1,'desc']],
// Parameters
'pageLength' : sessionsRows,
'columnDefs' : [
{visible: false, targets: [0]},
// Replace HTML codes
{targets: [3,5],
'createdCell': function (td, cellData, rowData, row, col) {
$(td).html (translateHTMLcodes (cellData));
} },
// Date
{targets: [1,2],
"createdCell": function (td, cellData, rowData, row, col) {
// console.log(cellData);
if (!cellData.includes("missing event") && !cellData.includes("..."))
{
if (cellData.includes("+")) { // Check if timezone offset is present
cellData = cellData.split('+')[0]; // Remove timezone offset
}
// console.log(cellData);
result = localizeTimestamp(cellData);
} else
{
result = translateHTMLcodes(cellData)
}
$(td).html (result);
} }
],
// Processing
'processing' : true,
'language' : {
processing: '<table><td width="130px" align="middle"><?= lang("DevDetail_Loading");?></td>'+
'<td><i class="fa-solid fa-spinner fa-spin-pulse"></i>'+
'</td></table>',
emptyTable: 'No data',
"lengthMenu": "<?= lang('Events_Tablelenght');?>",
"search": "<?= lang('Events_Searchbox');?>: ",
"paginate": {
"next": "<?= lang('Events_Table_nav_next');?>",
"previous": "<?= lang('Events_Table_nav_prev');?>"
},
"info": "<?= lang('Events_Table_info');?>",
}
});
}
// -----------------------------------------------
// INIT with polling for panel element visibility
// -----------------------------------------------
// -----------------------------------------------------------
// Init datatable
function loadSessionsData(period){
const table = $('#tableSessions').DataTable();
showSpinner();
// table.clear().draw(); // Clear existing data before reloading
table.ajax
.url('php/server/events.php?action=getDeviceSessions&mac=' + getMac() + '&period=' + period)
.load(function () {
hideSpinner();
});
}
var sessionsPageInitialized = false;
// -----------------------------------------------------------
// Main init function
function initDeviceSessionsPage()
{
// Only proceed if .plugin-content is visible
if (!$('#panSessions:visible').length) {
return; // exit early if nothing is visible
}
// init page once
if (sessionsPageInitialized) return;
sessionsPageInitialized = true;
showSpinner();
var sessionsRows = 10;
var period = '1 month';
function initializeSessionsDatatable () {
// Sessions datatable
$('#tableSessions').DataTable({
'paging' : true,
'lengthChange': true,
'lengthMenu' : [[10, 25, 50, 100, 500, -1], [10, 25, 50, 100, 500, 'All']],
'searching' : true,
'ordering' : true,
'info' : true,
'autoWidth' : false,
'order' : [[0,'desc'], [1,'desc']],
initializeSessionsDatatable(sessionsRows);
loadSessionsData(period);
}
// Parameters
'pageLength' : sessionsRows,
// -----------------------------------------------------------------------------
// Recurring function to monitor the URL and reinitialize if needed
function deviceSessionsPageUpdater() {
initDeviceSessionsPage();
'columnDefs' : [
{visible: false, targets: [0]},
// Run updater again after delay
setTimeout(deviceSessionsPageUpdater, 200);
}
// Replace HTML codes
{targets: [3,5],
'createdCell': function (td, cellData, rowData, row, col) {
$(td).html (translateHTMLcodes (cellData));
} },
// Date
{targets: [1,2],
"createdCell": function (td, cellData, rowData, row, col) {
// console.log(cellData);
if (!cellData.includes("missing event") && !cellData.includes("..."))
{
if (cellData.includes("+")) { // Check if timezone offset is present
cellData = cellData.split('+')[0]; // Remove timezone offset
}
// console.log(cellData);
result = localizeTimestamp(cellData);
} else
{
result = translateHTMLcodes(cellData)
}
$(td).html (result);
} }
],
// Processing
'processing' : true,
'language' : {
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',
"lengthMenu": "<?= lang('Events_Tablelenght');?>",
"search": "<?= lang('Events_Searchbox');?>: ",
"paginate": {
"next": "<?= lang('Events_Table_nav_next');?>",
"previous": "<?= lang('Events_Table_nav_prev');?>"
},
"info": "<?= lang('Events_Table_info');?>",
}
});
}
function loadSessionsData(){
$('#tableSessions').DataTable().ajax.url('php/server/events.php?action=getDeviceSessions&mac=' + getMac() +'&period='+ period).load();
}
initializeSessionsDatatable();
loadSessionsData();
// start updater
deviceSessionsPageUpdater();
</script>

View File

@@ -443,6 +443,37 @@
}
// init first time
initNmapButtons();
initCopyFromDevice();
// -----------------------------------------------------------
var toolsPageInitialized = false;
function initDeviceToolsPage()
{
// Only proceed if .panTools is visible
if (!$('#panTools:visible').length) {
return; // exit early if nothing is visible
}
// init page once
if (toolsPageInitialized) return;
toolsPageInitialized = true;
initNmapButtons();
initCopyFromDevice();
hideSpinner();
}
// -----------------------------------------------------------------------------
// Recurring function to monitor the URL and reinitialize if needed
function deviceToolsPageUpdater() {
initDeviceToolsPage();
// Run updater again after delay
setTimeout(deviceToolsPageUpdater, 200);
}
// start updater
deviceToolsPageUpdater();
</script>

View File

@@ -148,10 +148,7 @@ function main () {
//initialize the table headers in the correct order
var availableColumns = getSettingOptions("UI_device_columns").split(",");
headersDefaultOrder = availableColumns.map(val => getString(val));
console.log(headersDefaultOrder);
headersDefaultOrder = availableColumns.map(val => getString(val));
var selectedColumns = JSON.parse(getSetting("UI_device_columns").replace(/'/g, '"'));
@@ -266,14 +263,16 @@ function getDevicesTotals() {
function processDeviceTotals(devicesData) {
// Define filter conditions and corresponding objects
const filters = [
{ status: 'my_devices', color: 'bg-aqua', label: getString('Device_Shortcut_AllDevices'), icon: 'fa-laptop' },
{ status: 'all', color: 'bg-aqua', label: getString('Gen_All_Devices'), icon: 'fa-laptop' },
{ status: 'connected', color: 'bg-green', label: getString('Device_Shortcut_Connected'), icon: 'fa-plug' },
{ status: 'favorites', color: 'bg-yellow', label: getString('Device_Shortcut_Favorites'), icon: 'fa-star' },
{ status: 'new', color: 'bg-yellow', label: getString('Device_Shortcut_NewDevices'), icon: 'fa-plus' },
{ status: 'down', color: 'bg-red', label: getString('Device_Shortcut_DownOnly'), icon: 'fa-warning' },
{ status: 'archived', color: 'bg-gray', label: getString('Device_Shortcut_Archived'), icon: 'fa-eye-slash' },
{ status: 'offline', color: 'bg-gray', label: getString('Gen_Offline'), icon: 'fa-xmark' }
{ status: 'my_devices', color: 'bg-aqua', label: getString('Device_Shortcut_AllDevices'), icon: 'fa-laptop' },
{ status: 'all', color: 'bg-aqua', label: getString('Gen_All_Devices'), icon: 'fa-laptop' },
{ status: 'connected', color: 'bg-green', label: getString('Device_Shortcut_Connected'), icon: 'fa-plug' },
{ status: 'favorites', color: 'bg-yellow', label: getString('Device_Shortcut_Favorites'), icon: 'fa-star' },
{ status: 'new', color: 'bg-yellow', label: getString('Device_Shortcut_NewDevices'), icon: 'fa-plus' },
{ status: 'down', color: 'bg-red', label: getString('Device_Shortcut_DownOnly'), icon: 'fa-warning' },
{ status: 'archived', color: 'bg-gray', label: getString('Device_Shortcut_Archived'), icon: 'fa-eye-slash' },
{ status: 'offline', color: 'bg-gray', label: getString('Gen_Offline'), icon: 'fa-xmark' },
{ status: 'all_devices', color: 'bg-gray', label: getString('Gen_All_Devices'), icon: 'fa-laptop' },
{ status: 'network_devices', color: 'bg-aqua', label: getString('Network_Devices'), icon: 'fa-sitemap fa-rotate-270' }
];
// Initialize an empty array to store the final objects
@@ -299,13 +298,7 @@ function processDeviceTotals(devicesData) {
}
});
// Render info boxes/tile cards
console.log(getSetting('UI_hide_empty'));
console.log(dataArray);
console.log(devicesData);
// Render info boxes/tile cards
renderInfoboxes(dataArray);
}
@@ -357,8 +350,6 @@ function initFilters() {
// Clear any existing filters in the DOM
$('#columnFilters').empty();
console.log(displayedFilters);
// Ensure displayedFilters is an array and not empty
if (Array.isArray(displayedFilters) && displayedFilters.length > 0) {
$('#columnFiltersWrap').removeClass("hidden");
@@ -512,36 +503,36 @@ function collectFilters() {
function mapColumnIndexToFieldName(index, tableColumnVisible) {
// the order is important, don't change it!
const columnNames = [
"devName",
"devOwner",
"devType",
"devIcon",
"devFavorite",
"devGroup",
"devFirstConnection",
"devLastConnection",
"devLastIP",
"devIsRandomMac", // resolved on the fly
"devStatus", // resolved on the fly
"devMac",
"devIpLong", //formatIPlong(device.devLastIP) || "", // IP orderable
"rowid",
"devParentMAC",
"devParentChildrenCount", // resolved on the fly
"devLocation",
"devVendor",
"devParentPort",
"devGUID",
"devSyncHubNode",
"devSite",
"devSSID",
"devSourcePlugin",
"devPresentLastScan",
"devAlertDown",
"devCustomProps",
"devFQDN",
"devParentRelType",
"devReqNicsOnline"
"devName", // 0
"devOwner", // 1
"devType", // 2
"devIcon", // 3
"devFavorite", // 4
"devGroup", // 5
"devFirstConnection", // 6
"devLastConnection", // 7
"devLastIP", // 8
"devIsRandomMac", // 9 resolved on the fly
"devStatus", // 10 resolved on the fly
"devMac", // 11
"devIpLong", // 12 formatIPlong(device.devLastIP) || "", // IP orderable
"rowid", // 13
"devParentMAC", // 14
"devParentChildrenCount", // 15 resolved on the fly
"devLocation", // 16
"devVendor", // 17
"devParentPort", // 18
"devGUID", // 19
"devSyncHubNode", // 20
"devSite", // 21
"devSSID", // 22
"devSourcePlugin", // 23
"devPresentLastScan", // 24
"devAlertDown", // 25
"devCustomProps", // 26
"devFQDN", // 27
"devParentRelType", // 28
"devReqNicsOnline" // 29
];
// console.log("OrderBy: " + columnNames[tableColumnOrder[index]]);
@@ -564,15 +555,17 @@ function initializeDatatable (status) {
// Define color & title for the status selected
switch (deviceStatus) {
case 'my_devices': tableTitle = getString('Device_Shortcut_AllDevices'); color = 'aqua'; break;
case 'connected': tableTitle = getString('Device_Shortcut_Connected'); color = 'green'; break;
case 'all': tableTitle = getString('Gen_All_Devices'); color = 'aqua'; break;
case 'favorites': tableTitle = getString('Device_Shortcut_Favorites'); color = 'yellow'; break;
case 'new': tableTitle = getString('Device_Shortcut_NewDevices'); color = 'yellow'; break;
case 'down': tableTitle = getString('Device_Shortcut_DownOnly'); color = 'red'; break;
case 'archived': tableTitle = getString('Device_Shortcut_Archived'); color = 'gray'; break;
case 'offline': tableTitle = getString('Gen_Offline'); color = 'gray'; break;
default: tableTitle = getString('Device_Shortcut_Devices'); color = 'gray'; break;
case 'my_devices': tableTitle = getString('Device_Shortcut_AllDevices'); color = 'aqua'; break;
case 'connected': tableTitle = getString('Device_Shortcut_Connected'); color = 'green'; break;
case 'all': tableTitle = getString('Gen_All_Devices'); color = 'aqua'; break;
case 'favorites': tableTitle = getString('Device_Shortcut_Favorites'); color = 'yellow'; break;
case 'new': tableTitle = getString('Device_Shortcut_NewDevices'); color = 'yellow'; break;
case 'down': tableTitle = getString('Device_Shortcut_DownOnly'); color = 'red'; break;
case 'archived': tableTitle = getString('Device_Shortcut_Archived'); color = 'gray'; break;
case 'offline': tableTitle = getString('Gen_Offline'); color = 'gray'; break;
case 'all_devices': tableTitle = getString('Gen_All_Devices'); color = 'gray'; break;
case 'network_devices': tableTitle = getString('Network_Devices'); color = 'aqua'; break;
default: tableTitle = getString('Device_Shortcut_Devices'); color = 'gray'; break;
}
// Set title and color
@@ -601,7 +594,6 @@ function initializeDatatable (status) {
}
}
// todo: dynamically filter based on status
var table = $('#tableDevices').DataTable({
"serverSide": true,
"processing": true,
@@ -692,8 +684,6 @@ function initializeDatatable (status) {
return JSON.stringify(query); // Send the JSON request
},
"dataSrc": function (json) {
console.log(json);
// Set the total number of records for pagination
json.recordsTotal = json.devices.count || 0;
json.recordsFiltered = json.devices.count || 0;
@@ -780,20 +770,21 @@ function initializeDatatable (status) {
// console.log(cellData)
$(td).html (
`<b class="anonymizeDev hover-node-info"
`<b class="anonymizeDev "
>
<a href="deviceDetails.php?mac=${rowData[mapIndx(11)]}" class="hover-node-info"
data-name="${cellData}"
data-ip="${rowData[mapIndx(8)]}"
data-mac="${rowData[mapIndx(11)]}"
data-vendor="${rowData[mapIndx(17)]}"
data-type="${rowData[mapIndx(2)]}"
data-firstseen="${rowData[mapIndx(6)]}"
data-lastseen="${rowData[mapIndx(7)]}"
data-relationship="${rowData[mapIndx(28)]}"
data-status="${rowData[mapIndx(10)]}"
data-present="${rowData[mapIndx(24)]}"
data-alert="${rowData[mapIndx(25)]}"
data-icon="${rowData[mapIndx(3)]}"
>
<a href="deviceDetails.php?mac=${rowData[mapIndx(11)]}" class="">
data-icon="${rowData[mapIndx(3)]}">
${cellData}
</a>
</b>`
@@ -844,7 +835,7 @@ function initializeDatatable (status) {
<a href="http://${cellData}" class="pointer" target="_blank">
${cellData}
</a>
<span class="alignRight">
<span class="alignRight lockIcon">
<a href="https://${cellData}" class="pointer" target="_blank">
<i class="fa fa-lock "></i>
</a>
@@ -908,6 +899,28 @@ function initializeDatatable (status) {
}
} },
// Parent Mac
{targets: [mapIndx(14)],
'createdCell': function (td, cellData, rowData, row, col) {
if (!isValidMac(cellData)) {
$(td).html('');
return;
}
const data = {
id: cellData, // MAC address
text: cellData // Optional display text (you could use a name or something else)
};
spanWrap = $(`<span class="custom-badge text-white"></span>`)
$(td).html(spanWrap);
const chipHtml = renderDeviceLink(data, spanWrap, true); // pass the td as container
$(spanWrap).append(chipHtml);
}
},
// Status color
{targets: [mapIndx(10)],
'createdCell': function (td, cellData, rowData, row, col) {
@@ -1046,40 +1059,24 @@ function multiEditDevices()
// -----------------------------------------------------------------------------
// Function collects shown devices from the DataTable
function getMacsOfShownDevices() {
rows = $('#tableDevices')[0].rows;
macs = [];
var table = $('#tableDevices').DataTable();
// var devicesDataTableData = $('#tableDevices').dataTable().fnGetData();
var devicesDataTableData = $('#tableDevices').DataTable().rows({ selected: false, page: 'current' }).data().toArray();
var macs = [];
console.log(devicesDataTableData);
// Get all row indexes on current page, in display order
var allIndexes = table.rows({ page: 'current' }).indexes();
var selectedDevices = [];
// first row is the heading, skip
for (var i = 1; i < rows.length; i++) {
var rowIndex = rows[i]._DT_RowIndex;
// Ensure the rowIndex is valid and within bounds of devicesDataTableData
if (rowIndex >= 0 && rowIndex < devicesDataTableData.length) {
selectedDevices.push(devicesDataTableData[rowIndex]);
} else {
console.log(`Invalid rowIndex: ${rowIndex} at row ${i}`);
allIndexes.each(function(idx) {
var rowData = table.row(idx).data();
if (rowData) {
macs.push(rowData[mapIndx(11)]); // mapIndx(11) == MAC column
}
}
for (var j = 0; j < selectedDevices.length; j++) {
// Ensure that selectedDevices[j] is not undefined
if (selectedDevices[j]) {
macs.push(selectedDevices[j][mapIndx(11)]); // mapIndx(11) == MAC
} else {
console.log(`selectedDevices[${j}] is undefined`);
}
}
});
return macs;
}
// -----------------------------------------------------------------------------
// Handle custom actions/properties on a device
function renderCustomProps(custProps, mac) {

View File

@@ -2,6 +2,10 @@
require 'php/templates/header.php';
?>
<script>
showSpinner();
</script>
<!-- ----------------------------------------------------------------------- -->
<!-- Page ------------------------------------------------------------------ -->
@@ -67,7 +71,7 @@
<div class="inner"> <h3 id="eventsNewDevices"> -- </h3>
<p class="infobox_label"><?= lang('Events_Shortcut_NewDevices');?></p>
</div>
<div class="icon"> <i class="ion ion-plus-round text-yellow-40"></i> </div>
<div class="icon"> <i class="fa-solid fa-circle-plus text-yellow-40"></i> </div>
</div>
</a>
</div>
@@ -238,7 +242,7 @@ function initializeDatatable () {
// Processing
'processing' : true,
'language' : {
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>',
processing: '<table><td width="130px" align="middle"><?= lang("Events_Loading");?></td><td><i class="fa-solid fa-spinner fa-spin-pulse"></i></td></table>',
emptyTable: 'No data',
"lengthMenu": "<?= lang('Events_Tablelenght');?>",
"search": "<?= lang('Events_Searchbox');?>: ",
@@ -247,6 +251,9 @@ function initializeDatatable () {
"previous": "<?= lang('Events_Table_nav_prev');?>"
},
"info": "<?= lang('Events_Table_info');?>",
},
initComplete: function(settings, json) {
hideSpinner(); // Called after the DataTable is fully initialized
}
});

View File

@@ -99,18 +99,6 @@ if (isset ($_SESSION["login"]) == FALSE || $_SESSION["login"] != 1)
<!-- Favicon -->
<link id="favicon" rel="icon" type="image/x-icon" href="img/NetAlertX_logo.png">
<!-- Dark-Mode Patch -->
<?php
switch ($UI_THEME) {
case "Dark":
echo '<link rel="stylesheet" href="css/dark-patch.css">';
break;
case "System":
echo '<link rel="stylesheet" href="css/system-dark-patch.css">';
break;
}
?>
<link rel="stylesheet" href="/css/offline-font.css">
</head>
<body class="hold-transition login-page col-sm-12 col-sx-12">

View File

@@ -362,18 +362,64 @@ function getLangCode() {
// -----------------------------------------------------------------------------
// String utilities
// -----------------------------------------------------------------------------
function localizeTimestamp(input) {
let tz = getSetting("TIMEZONE") || 'Europe/Berlin';
// Convert to string and trim
input = String(input || '').trim();
function localizeTimestamp(result)
{
// contains TZ in format Europe/Berlin
tz = getSetting("TIMEZONE")
// Normalize multiple spaces and remove commas
const cleaned = input.replace(',', ' ').replace(/\s+/g, ' ');
// set default if not available or app still loading
tz == "" ? tz = 'Europe/Berlin' : tz = tz;
const date = new Date(result); // Assumes result is a timestamp or ISO string
const formatter = new Intl.DateTimeFormat('default', {
// DD/MM/YYYY format check
const dateTimeParts = cleaned.split(' ');
if (dateTimeParts.length >= 2 && dateTimeParts[0].includes('/')) {
const [day, month, year] = dateTimeParts[0].split('/');
const timePart = dateTimeParts[1];
if (day && month && year && timePart) {
const isoString = `${year}-${month}-${day}T${timePart.length === 5 ? timePart + ':00' : timePart}`;
const date = new Date(isoString);
if (!isFinite(date)) return 'b-';
return new Intl.DateTimeFormat('default', {
timeZone: tz,
year: 'numeric',
month: '2-digit',
day: '2-digit',
hour: '2-digit',
minute: '2-digit',
second: '2-digit',
hour12: false
}).format(date);
}
}
// ISO style YYYY-MM-DD HH:mm(:ss)?
const match = cleaned.match(/^(\d{4}-\d{2}-\d{2}) (\d{2}:\d{2})(:\d{2})?$/);
if (match) {
let iso = `${match[1]}T${match[2]}${match[3] || ':00'}`;
const date = new Date(iso);
if (!isFinite(date)) return 'c-';
return new Intl.DateTimeFormat('default', {
timeZone: tz,
year: 'numeric',
month: '2-digit',
day: '2-digit',
hour: '2-digit',
minute: '2-digit',
second: '2-digit',
hour12: false
}).format(date);
}
// Fallback: try to parse any other string input
const date = new Date(input);
if (!isFinite(date)) return 'Failed conversion: ' + input;
return new Intl.DateTimeFormat('default', {
timeZone: tz,
year: 'numeric',
month: '2-digit',
@@ -381,12 +427,12 @@ function localizeTimestamp(result)
hour: '2-digit',
minute: '2-digit',
second: '2-digit',
hour12: false // change to true if you want AM/PM format
});
return formatter.format(date);
hour12: false
}).format(date);
}
// ----------------------------------------------------
/**
* Replaces double quotes within single-quoted strings, then converts all single quotes to double quotes,
@@ -993,11 +1039,8 @@ function getDevDataByMac(macAddress, dbColumn) {
// Cache the devices as one JSON
function cacheDevices()
{
return new Promise((resolve, reject) => {
// if(!getCache('completedCalls').includes('cacheDevices'))
// {
$.get('php/server/query_json.php', { file: 'table_devices.json', nocache: Date.now() }, function(data) {
// console.log(data)
@@ -1021,8 +1064,7 @@ function cacheDevices()
// console.log(getCache('devicesListAll_JSON'))
}).then(() => handleSuccess('cacheDevices', resolve())).catch(() => handleFailure('cacheDevices', reject("cacheDevices already completed"))); // handle AJAX synchronization
}
// }
);
);
}
var devicesListAll_JSON = []; // this will contain a list off all devices
@@ -1063,47 +1105,102 @@ function getGuid() {
// -----------------------------------------------------------------------------
// Loading Spinner overlay
// -----------------------------------------------------------------------------
spinnerHtml = `
<!-- 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">_text_</td>
<td><i class="ion ion-ios-loop-strong fa-spin fa-2x fa-fw"></td>
</table>
</div>
</div>
`
function showSpinner(stringKey='Loading')
{
let spinnerTimeout = null;
let animationTime = 300
if(stringKey == "")
{
text = ''
} else
{
text = getString(stringKey)
function showSpinner(stringKey = 'Loading') {
const text = isEmpty(stringKey) ? "Loading" : getString(stringKey || "Loading");
const spinner = $("#loadingSpinner");
const target = $(".spinnerTarget").first(); // Only use the first one if multiple exist
$("#loadingSpinnerText").text(text);
if (target.length) {
// Position relative to target
const offset = target.offset();
const width = target.outerWidth();
const height = target.outerHeight();
spinner.css({
position: "absolute",
top: offset.top,
left: offset.left,
width: width,
height: height,
zIndex: 800
});
} else {
// Fullscreen fallback
spinner.css({
position: "fixed",
top: 0,
left: 0,
width: "100%",
height: "100%",
zIndex: 800
});
}
text = isEmpty(text) ? "Loading" : text;
if($("#loadingSpinner").length)
{
$("#loadingSpinner").show();
}
else{
$(".wrapper").append(spinnerHtml.replace('_text_',text))
}
}
// -----------------------------------------------------------------------------
function hideSpinner()
{
$("#loadingSpinner").hide()
requestAnimationFrame(() => {
spinner.addClass("visible");
spinner.fadeIn(animationTime);
});
}
function hideSpinner() {
clearTimeout(spinnerTimeout);
const spinner = $("#loadingSpinner");
if (!spinner.length) return;
const target = $(".spinnerTarget").first();
if (target.length) {
// Lock position to target
const offset = target.offset();
const width = target.outerWidth();
const height = target.outerHeight();
spinner.css({
position: "absolute",
top: offset.top,
left: offset.left,
width: width,
height: height,
zIndex: 800
});
} else {
// Fullscreen fallback
spinner.css({
position: "fixed",
top: 0,
left: 0,
width: "100%",
height: "100%",
zIndex: 800
});
}
// Trigger fade-out and only remove styles AFTER fade completes AND display is none
spinner.removeClass("visible").fadeOut(animationTime, () => {
// Ensure it's really hidden before resetting styles
spinner.css({
display: "none"
});
spinner.css({
position: "",
top: "",
left: "",
width: "",
height: "",
zIndex: ""
});
});
}
// --------------------------------------------------------
// Calls a backend function to add a front-end event to an execution queue
function updateApi(apiEndpoints)

View File

@@ -224,7 +224,7 @@ function modalWarningOK() {
} else if (typeof modalCallbackFunction === "string" && typeof window[modalCallbackFunction] === "function") {
window[modalCallbackFunction](); // Call via window
} else {
console.error("Invalid callback function");
console.error("Invalid callback function: " + modalCallbackFunction);
}
}, 100);
}

View File

@@ -1198,6 +1198,9 @@ if (eventsList.length > 0) {
let eventIcon = "fa-play";
switch (event) {
case "select_icon":
eventIcon = "fa-chevron-down";
break;
case "add_icon":
case "add_option":
eventIcon = "fa-square-plus";
@@ -1209,7 +1212,7 @@ if (eventsList.length > 0) {
eventIcon = "fa-square-up-right";
break;
case "go_to_node":
eventIcon = "fa-network-wired";
eventIcon = "fa-sitemap fa-rotate-270";
break;
case "run":
eventIcon = "fa-play";

View File

@@ -323,8 +323,12 @@ function execute_settingEvent(element) {
() => addIconAsBase64(element), // Wrap in an arrow function
feSourceId // triggered by id
);
} else if (["copy_icons"].includes(feEvent)) {
} else if (["select_icon"].includes(feEvent)) {
showIconSelection(feSetKey)
// myparam-setkey
} else if (["copy_icons"].includes(feEvent)) {
// Ask overwrite icon types
showModalWarning (
@@ -332,7 +336,8 @@ function execute_settingEvent(element) {
getString('DevDetail_button_OverwriteIcons_Warning'),
getString('Gen_Cancel'),
getString('Gen_Okay'),
'overwriteIconType'
'overwriteIconType',
feSourceId // triggered by id
);
} else if (["go_to_device"].includes(feEvent)) {
@@ -343,9 +348,43 @@ function execute_settingEvent(element) {
} else {
console.warn(`🔺Not implemented: ${feEvent}`)
}
}
// -----------------------------------------------------------------------------
// Go to the correct network node in the Network section
function overwriteIconType()
{
const mac = getMac();
if (!isValidMac(mac)) {
showModalOK("Error", getString("Gen_InvalidMac"))
return;
}
// Construct SQL query
const rawSql = `
UPDATE Devices
SET devIcon = (
SELECT devIcon FROM Devices WHERE devMac = "${mac}"
)
WHERE devType IN (
SELECT devType FROM Devices WHERE devMac = "${mac}"
)
`;
const apiUrl = `php/server/dbHelper.php?action=write&rawSql=${btoa(encodeURIComponent(rawSql))}`;
$.get(apiUrl, function(response) {
if (response === 'OK') {
showMessage (response);
updateApi("devices")
} else {
showMessage (response, 3000, "modal_red");
}
});
}
@@ -449,10 +488,11 @@ function addIconAsBase64 (el) {
}
// -----------------------------------------------
// modal pop up for icon selection
function showIconSelection(setKey) {
function showIconSelection() {
const selectElement = document.getElementById('NEWDEV_devIcon');
const selectElement = document.getElementById(setKey);
const modalId = 'dynamicIconModal';
// Create modal HTML dynamically
@@ -560,7 +600,10 @@ function getColumnNameFromLangString(headStringKey) {
"Device_TableHead_SourcePlugin": "devSourcePlugin",
"Device_TableHead_PresentLastScan": "devPresentLastScan",
"Device_TableHead_AlertDown": "devAlertDown",
"Device_TableHead_CustomProps": "devCustomProps"
"Device_TableHead_CustomProps": "devCustomProps",
"Device_TableHead_FQDN": "devFQDN",
"Device_TableHead_ParentRelType": "devParentRelType",
"Device_TableHead_ReqNicsOnline": "devReqNicsOnline"
};
return columnNameMap[headStringKey] || "";
@@ -568,23 +611,23 @@ function getColumnNameFromLangString(headStringKey) {
//--------------------------------------------------------------
// Generating the device status chip
function getStatusBadgeParts(tmp_devPresentLastScan, tmp_devAlertDown, macAddress, statusText = '') {
function getStatusBadgeParts(devPresentLastScan, devAlertDown, devMac, statusText = '') {
let css = 'bg-gray text-white statusUnknown';
let icon = '<i class="fa-solid fa-question"></i>';
let status = 'unknown';
let cssText = '';
if (tmp_devPresentLastScan == 1) {
if (devPresentLastScan == 1) {
css = 'bg-green text-white statusOnline';
cssText = 'text-green';
icon = '<i class="fa-solid fa-plug"></i>';
status = 'online';
} else if (tmp_devAlertDown == 1) {
} else if (devAlertDown == 1) {
css = 'bg-red text-white statusDown';
cssText = 'text-red';
icon = '<i class="fa-solid fa-triangle-exclamation"></i>';
status = 'down';
} else if (tmp_devPresentLastScan != 1) {
} else if (devPresentLastScan != 1) {
css = 'bg-gray text-white statusOffline';
cssText = 'text-gray50';
icon = '<i class="fa-solid fa-xmark"></i>';
@@ -592,13 +635,13 @@ function getStatusBadgeParts(tmp_devPresentLastScan, tmp_devAlertDown, macAddres
}
const cleanedText = statusText.replace(/-/g, '');
const url = `deviceDetails.php?mac=${encodeURIComponent(macAddress)}`;
const url = `deviceDetails.php?mac=${encodeURIComponent(devMac)}`;
return {
cssClass: css,
cssText: cssText,
iconHtml: icon,
mac: macAddress,
mac: devMac,
text: cleanedText,
status: status,
url: url
@@ -672,44 +715,7 @@ function initSelect2() {
{
var selectEl = $(this).select2({
templateSelection: function (data, container) {
if (!data.id) return data.text; // default for placeholder etc.
const device = getDevDataByMac(data.id);
const badge = getStatusBadgeParts(
device.devPresentLastScan,
device.devAlertDown,
device.devMac
)
$(container).addClass(badge.cssClass);
// Custom HTML
const html = $(`
<a href="${badge.url}" target="_blank">
<span class="custom-chip hover-node-info"
data-name="${device.devName}"
data-ip="${device.devLastIP}"
data-mac="${device.devMac}"
data-vendor="${device.devVendor}"
data-lastseen="${device.devLastConnection}"
data-firstseen="${device.devFirstConnection}"
data-relationship="${device.devParentRelType}"
data-status="${device.devStatus}"
data-present="${device.devPresentLastScan}"
data-alert="${device.devAlertDown}"
data-icon="${device.devIcon}"
>
<span class="iconPreview">${atob(device.devIcon)}</span>
${data.text}
<span>
(${badge.iconHtml})
</span
</span>
</a>
`);
return html;
return $(renderDeviceLink(data, container));
},
escapeMarkup: function (m) {
return m; // Allow HTML
@@ -773,6 +779,50 @@ function initSelect2() {
}
}
// ------------------------------------------
// Render a device link with hover-over functionality
function renderDeviceLink(data, container, useName = false) {
if (!data.id) return data.text; // default placeholder etc.
const device = getDevDataByMac(data.id);
const badge = getStatusBadgeParts(
device.devPresentLastScan,
device.devAlertDown,
device.devMac
);
// Add badge class and hover-info class to container
$(container)
.addClass(`${badge.cssClass} hover-node-info`)
.attr({
'data-name': device.devName,
'data-ip': device.devLastIP,
'data-mac': device.devMac,
'data-vendor': device.devVendor,
'data-type': device.devType,
'data-lastseen': device.devLastConnection,
'data-firstseen': device.devFirstConnection,
'data-relationship': device.devParentRelType,
'data-status': device.devStatus,
'data-present': device.devPresentLastScan,
'data-alert': device.devAlertDown,
'data-icon': device.devIcon
});
return `
<a href="${badge.url}" target="_blank">
<span class="custom-chip">
<span class="iconPreview">${atob(device.devIcon)}</span>
${useName ? device.devName : data.text}
<span>
(${badge.iconHtml})
</span>
</span>
</a>
`;
}
// ------------------------------------------
// Display device info on hover (attach only once)
function initHoverNodeInfo() {
@@ -821,6 +871,7 @@ function initHoverNodeInfo() {
const ip = $el.data('ip') || 'N/A';
const mac = $el.data('mac') || 'N/A';
const vendor = $el.data('vendor') || 'Unknown';
const type = $el.data('type') || 'Unknown';
const lastseen = $el.data('lastseen') || 'Unknown';
const firstseen = $el.data('firstseen') || 'Unknown';
const relationship = $el.data('relationship') || 'Unknown';
@@ -844,6 +895,9 @@ function initHoverNodeInfo() {
<div class="line">
<b>Vendor:</b> <span>${vendor}</span><br>
</div>
<div class="line">
<b>Type:</b> <span>${type}</span><br>
</div>
<div class="line">
<b>First seen:</b> <span>${firstseen}</span><br>
</div>

Binary file not shown.

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 326 KiB

After

Width:  |  Height:  |  Size: 305 KiB

Binary file not shown.

Binary file not shown.

BIN
front/lib/fonts/ionicons.woff2 Executable file

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -8,7 +8,10 @@
<!-- Main content ---------------------------------------------------------- -->
<section class="content">
<script>
showSpinner();
</script>
<?php
@@ -143,7 +146,7 @@ $db->close();
</a>
</li>
</ul>
<div class="tab-content">
<div class="tab-content spinnerTarget">
<div class="tab-pane active" id="tab_DBTools">
<div class="db_info_table">
<div class="db_info_table_row">
@@ -182,6 +185,12 @@ $db->close();
</div>
<div class="db_tools_table_cell_b"><?= lang('Maintenance_Tool_del_ActHistory_text');?></div>
</div>
<div class="db_info_table_row">
<div class="db_tools_table_cell_a" >
<button type="button" class="btn btn-default pa-btn pa-btn-delete bg-red dbtools-button" id="btnRestartServer" onclick="askRestartBackend()"><?= lang('Maint_RestartServer');?></button>
</div>
<div class="db_tools_table_cell_b"><?= lang('Maint_Restart_Server_noti_text');?></div>
</div>
</div>
</div>
@@ -709,6 +718,8 @@ window.onload = function asyncFooter() {
</script>
<script>
hideSpinner();
</script>

View File

@@ -28,9 +28,9 @@
</div>
</div>
</div>
<div class="col-md-1">
<i class="fa-solid fa-circle-check" onclick="markAllSelected()" title="<?= lang('Gen_Add_All');?>"></i>
<i class="fa-solid fa-circle-xmark" onclick="markAllNotSelected()" title="<?= lang('Gen_Remove_All');?>"></i>
<div class="col-md-1 hoverHighlight">
<i class="fa-solid fa-circle-check hoverHighlight pointer" onclick="markAllSelected()" title="<?= lang('Gen_Add_All');?>"></i>
<i class="fa-solid fa-circle-xmark hoverHighlight pointer" onclick="markAllNotSelected()" title="<?= lang('Gen_Remove_All');?>"></i>
</div>
</div>

File diff suppressed because it is too large Load Diff

View File

@@ -76,6 +76,7 @@ require_once $_SERVER['DOCUMENT_ROOT'] . '/php/templates/security.php';
switch ($action) {
case 'create': create($defaultValue, $expireMinutes, $dbtable, $columns, $values ); break;
case 'read' : read($rawSql); break;
case 'write' : write($rawSql); break;
case 'update': update($columnName, $id, $defaultValue, $expireMinutes, $dbtable, $columns, $values); break;
case 'delete': delete($columnName, $id, $dbtable); break;
case 'lockDatabase': lockDatabase($delay); break;
@@ -120,6 +121,31 @@ function read($rawSql) {
}
}
//------------------------------------------------------------------------------
// write
//------------------------------------------------------------------------------
function write($rawSql) {
global $db;
// Construct the SQL query to select values
$sql = $rawSql;
// Execute the SQL query
$result = $db->query($sql);
// Check if the query executed successfully
if (! $result == TRUE) {
// Output an error message if the query failed
echo "Error writing data\n\n " .$sql." \n\n". $db->lastErrorMsg();
return;
} else
{
// Output
echo "OK";
return;
}
}
//------------------------------------------------------------------------------
// update

View File

@@ -48,7 +48,6 @@
case 'getDevicesListCalendar': getDevicesListCalendar(); break; //todo: slowly deprecate this
case 'updateNetworkLeaf': updateNetworkLeaf(); break;
case 'overwriteIconType': overwriteIconType(); break;
case 'getIcons': getIcons(); break;
case 'getActions': getActions(); break;
case 'getDevices': getDevices(); break;
@@ -121,93 +120,87 @@ function getServerDeviceData() {
}
// Device Data
$sql = 'SELECT rowid, *,
CASE WHEN devAlertDown !=0 AND devPresentLastScan=0 THEN "Down"
WHEN devPresentLastScan=1 THEN "On-line"
ELSE "Off-line" END as devStatus
FROM Devices
WHERE devMac="'. $mac .'" or cast(rowid as text)="'. $mac. '"';
$result = $db->query($sql);
$row = $result -> fetchArray (SQLITE3_ASSOC);
// Get current date (used in presence calc)
$currentdate = date("Y-m-d H:i:s");
// Fetch Device Info + Children + Events Stats
$sql =<<<SQL
SELECT
d.rowid,
d.*,
CASE
WHEN d.devAlertDown != 0 AND d.devPresentLastScan = 0 THEN "Down"
WHEN d.devPresentLastScan = 1 THEN "On-line"
ELSE "Off-line"
END AS devStatus,
-- Event counters
(SELECT COUNT(*) FROM Sessions
WHERE ses_MAC = d.devMac AND (
ses_DateTimeConnection >= $periodDate OR
ses_DateTimeDisconnection >= $periodDate OR
ses_StillConnected = 1
)
) AS devSessions,
(SELECT COUNT(*) FROM Events
WHERE eve_MAC = d.devMac AND
eve_DateTime >= $periodDate AND
eve_EventType NOT IN ("Connected", "Disconnected")
) AS devEvents,
(SELECT COUNT(*) FROM Events
WHERE eve_MAC = d.devMac AND
eve_DateTime >= $periodDate AND
eve_EventType = "Device Down"
) AS devDownAlerts,
(SELECT CAST(( MAX (0, SUM (julianday (IFNULL (ses_DateTimeDisconnection,'$currentdate'))
- julianday (CASE WHEN ses_DateTimeConnection < $periodDate
THEN $periodDate
ELSE ses_DateTimeConnection END)) *24 )) AS INT)
FROM Sessions
WHERE ses_MAC = d.devMac AND
ses_DateTimeConnection IS NOT NULL AND
(ses_DateTimeDisconnection IS NOT NULL OR ses_StillConnected = 1) AND
(
ses_DateTimeConnection >= $periodDate OR
ses_DateTimeDisconnection >= $periodDate OR
ses_StillConnected = 1
)
) AS devPresenceHours
FROM Devices d
WHERE d.devMac = "$mac" OR CAST(d.rowid AS TEXT) = "$mac"
SQL;
$row = $db->query($sql)->fetchArray(SQLITE3_ASSOC);
$deviceData = $row;
$mac = $deviceData['devMac'];
$deviceData['devParentMAC'] = $row['devParentMAC'];
$deviceData['devParentPort'] = $row['devParentPort'];
$deviceData['devFirstConnection'] = formatDate ($row['devFirstConnection']); // Date formated
$deviceData['devLastConnection'] = formatDate ($row['devLastConnection']); // Date formated
$deviceData['devFirstConnection'] = formatDate($deviceData['devFirstConnection']);
$deviceData['devLastConnection'] = formatDate($deviceData['devLastConnection']);
$deviceData['devIsRandomMAC'] = isRandomMAC($mac);
$deviceData['devIsRandomMAC'] = isRandomMAC($mac);
// devChildrenDynamic
$sql = 'SELECT rowid, * FROM Devices WHERE devParentMAC = "' . $mac . '" order by devPresentLastScan DESC';
// Fetch children once and split in PHP
$sql = 'SELECT rowid, * FROM Devices WHERE devParentMAC = "' . $mac . '" ORDER BY devPresentLastScan DESC';
$result = $db->query($sql);
$children = [];
if ($result) {
while ($row = $result->fetchArray(SQLITE3_ASSOC)) {
$children[] = $row;
}
}
$deviceData['devChildrenDynamic'] = $children;
// devChildrenNicsDynamic
$sql = 'SELECT rowid, * FROM Devices WHERE devParentMAC = "' . $mac . '" and devParentRelType = "nic" order by devPresentLastScan DESC';
$result = $db->query($sql);
$childrenNics = [];
if ($result) {
while ($row = $result->fetchArray(SQLITE3_ASSOC)) {
while ($row = $result->fetchArray(SQLITE3_ASSOC)) {
$children[] = $row;
if ($row['devParentRelType'] === 'nic') {
$childrenNics[] = $row;
}
}
$deviceData['devChildrenDynamic'] = $children;
$deviceData['devChildrenNicsDynamic'] = $childrenNics;
// Count Totals
$condition = ' WHERE eve_MAC="'. $mac .'" AND eve_DateTime >= '. $periodDate;
// Return JSON
echo json_encode($deviceData);
// Connections
$sql = 'SELECT COUNT(*) FROM Sessions
WHERE ses_MAC="'. $mac .'"
AND ( ses_DateTimeConnection >= '. $periodDate .'
OR ses_DateTimeDisconnection >= '. $periodDate .'
OR ses_StillConnected = 1 )';
$result = $db->query($sql);
$row = $result -> fetchArray (SQLITE3_NUM);
$deviceData['devSessions'] = $row[0];
// Events
$sql = 'SELECT COUNT(*) FROM Events '. $condition .' AND eve_EventType <> "Connected" AND eve_EventType <> "Disconnected" ';
$result = $db->query($sql);
$row = $result -> fetchArray (SQLITE3_NUM);
$deviceData['devEvents'] = $row[0];
// Down Alerts
$sql = 'SELECT COUNT(*) FROM Events '. $condition .' AND eve_EventType = "Device Down"';
$result = $db->query($sql);
$row = $result -> fetchArray (SQLITE3_NUM);
$deviceData['devDownAlerts'] = $row[0];
// Get current date using php, sql datetime does not return time respective to timezone.
$currentdate = date("Y-m-d H:i:s");
// Presence hours
$sql = 'SELECT CAST(( MAX (0, SUM (julianday (IFNULL (ses_DateTimeDisconnection,"'. $currentdate .'" ))
- julianday (CASE WHEN ses_DateTimeConnection < '. $periodDate .' THEN '. $periodDate .'
ELSE ses_DateTimeConnection END)) *24 )) AS INT)
FROM Sessions
WHERE ses_MAC="'. $mac .'"
AND ses_DateTimeConnection IS NOT NULL
AND (ses_DateTimeDisconnection IS NOT NULL OR ses_StillConnected = 1 )
AND ( ses_DateTimeConnection >= '. $periodDate .'
OR ses_DateTimeDisconnection >= '. $periodDate .'
OR ses_StillConnected = 1 )';
$result = $db->query($sql);
$row = $result -> fetchArray (SQLITE3_NUM);
$deviceData['devPresenceHours'] = round ($row[0]);
// Return json
echo (json_encode ($deviceData));
}
@@ -930,33 +923,6 @@ function updateNetworkLeaf()
}
// ----------------------------------------------------------------------------------------
function overwriteIconType()
{
$mac = $_REQUEST['mac'];
$icon = $_REQUEST['icon'];
if ((false === filter_var($mac , FILTER_VALIDATE_MAC) && $mac != "Internet" && $mac != "") ) {
throw new Exception('Invalid mac address');
}
else
{
global $db;
// sql
$sql = 'UPDATE Devices SET "devIcon" = "'. $icon .'" where devType in (select devType from Devices where devMac = "' . $mac.'")' ;
// update Data
$result = $db->query($sql);
// check result
if ($result == TRUE) {
echo 'OK';
} else {
echo lang('BackDevices_Device_UpdDevError');
}
}
}
//------------------------------------------------------------------------------
// Wake-on-LAN
// Inspired by @leiweibau: https://github.com/leiweibau/Pi.Alert/commit/30427c7fea180670c71a2b790699e5d9e9e88ffd

View File

@@ -29,7 +29,6 @@ require_once $_SERVER['DOCUMENT_ROOT'] . '/php/templates/security.php';
case 'getEvents': getEvents(); break;
case 'getDeviceSessions': getDeviceSessions(); break;
case 'getDevicePresence': getDevicePresence(); break;
case 'getDeviceEvents': getDeviceEvents(); break;
case 'getEventsCalendar': getEventsCalendar(); break;
default: logServerConsole ('Action: '. $action); break;
}
@@ -410,41 +409,4 @@ function getEventsCalendar() {
echo (json_encode($tableData));
}
//------------------------------------------------------------------------------
// Query Device events
//------------------------------------------------------------------------------
function getDeviceEvents() {
global $db;
// Request Parameters
$mac = $_REQUEST['mac'];
$periodDate = getDateFromPeriod();
$hideConnections = $_REQUEST ['hideConnections'];
// SQL
$SQL = 'SELECT eve_DateTime, eve_EventType, eve_IP, eve_AdditionalInfo
FROM Events
WHERE eve_MAC="'. $mac .'" AND eve_DateTime >= '. $periodDate .'
AND ( (eve_EventType <> "Connected" AND eve_EventType <> "Disconnected" AND
eve_EventType <> "VOIDED - Connected" AND eve_EventType <> "VOIDED - Disconnected")
OR "'. $hideConnections .'" = "false" ) ';
$result = $db->query($SQL);
// arrays of rows
$tableData = array();
while ($row = $result -> fetchArray (SQLITE3_NUM)) {
$row[0] = formatDate ($row[0]);
$tableData['data'][] = $row;
}
// Control no rows
if (empty($tableData['data'])) {
$tableData['data'] = '';
}
// Return json
echo (json_encode ($tableData));
}
?>

View File

@@ -42,7 +42,6 @@
<script src="lib/datatables.net/js/jquery.dataTables.min.js"></script>
<script src="lib/datatables.net-bs/js/dataTables.bootstrap.min.js"></script>
<script src="lib/datatables.net/js/dataTables.select.min.js"></script>
<script src="lib/popper_tooltip/popper.min.js"></script>
<script src="js/common.js?v=<?php include 'php/templates/version.php'; ?>"></script>
<script src="js/modal.js?v=<?php include 'php/templates/version.php'; ?>"></script>
@@ -51,8 +50,6 @@
<script src="js/settings_utils.js?v=<?php include 'php/templates/version.php'; ?>"></script>
<script src="js/device.js?v=<?php include 'php/templates/version.php'; ?>"></script>
<!-- iCheck -->
<link rel="stylesheet" href="lib/iCheck/all.css">
@@ -136,7 +133,21 @@
<!-- ----------------------------------------------------------------------- -->
<!-- Layout Boxed Yellow -->
<!-- spinner -->
<body class="hold-transition fixed <?php echo $pia_skin_selected;?> theme-<?php echo $UI_THEME;?> sidebar-mini" onLoad="update_servertime();" >
<div id="loadingSpinner">
<div class="nax_semitransparent-panel"></div>
<div class="panel panel-default nax_spinner">
<table>
<td id="loadingSpinnerText" width="130px" ></td>
<td><i class="fa-solid fa-spinner fa-spin-pulse"></i></td>
</table>
</div>
</div>
<!-- Site wrapper -->
<div class="wrapper">
@@ -149,7 +160,7 @@
<a href="devices.php" class="logo">
<!-- mini logo for sidebar mini 50x50 pixels -->
<span class="logo-mini">
<img src="img/NetAlertX_logo.png" class="pia-top-left-logo" alt="NetAlertX Logo"/>
<img src="img/NetAlertX_logo.png" class="top-left-logo" alt="NetAlertX Logo"/>
</span>
<!-- logo for regular state and mobile devices -->
<span class="logo-lg">Net<b>Alert</b><sup>x</sup>
@@ -298,7 +309,10 @@
<a href="devices.php#archived" onclick="forceLoadUrl('devices.php#archived')" > <?= lang("Device_Shortcut_Archived");?> </a>
</li>
<li>
<a href="devices.php#all" onclick="forceLoadUrl('devices.php#all_nodes')" > <?= lang("Device_Shortcut_AllNodes");?> </a>
<a href="devices.php#all_devices" onclick="forceLoadUrl('devices.php#all_devices')" > <?= lang("Gen_All_Devices");?> </a>
</li>
<li>
<a href="devices.php#network_devices" onclick="forceLoadUrl('devices.php#network_devices')" > <?= lang("Network_Devices");?> </a>
</li>
</ul>
@@ -332,7 +346,7 @@
<!-- Network menu item -->
<li class=" <?php if (in_array (basename($_SERVER['SCRIPT_NAME']), array('network.php') ) ){ echo 'active'; } ?>">
<a href="network.php"><i class="fa fa-fw fa-network-wired"></i> <span><?= lang('Navigation_Network');?></span></a>
<a href="network.php"><i class="fa fa-fw fa-sitemap fa-rotate-270"></i> <span><?= lang('Navigation_Network');?></span></a>
</li>
<!-- Maintenance menu item -->
@@ -422,8 +436,24 @@
</li>
<!-- system info menu item -->
<li class=" <?php if (in_array (basename($_SERVER['SCRIPT_NAME']), array('systeminfo.php') ) ){ echo 'active'; } ?>">
<a href="systeminfo.php"><i class="fa fa-fw fa-info-circle"></i> <span><?= lang('Navigation_SystemInfo');?></span></a>
<li class=" treeview <?php if (in_array (basename($_SERVER['SCRIPT_NAME']), array('systeminfo.php') ) ){ echo 'active menu-open'; } ?>">
<a href="#">
<i class="fa fa-fw fa-info-circle"></i> <span><?= lang('Navigation_SystemInfo');?></span>
<span class="pull-right-container">
<i class="fa fa-angle-left pull-right"></i>
</span>
</a>
<ul class="treeview-menu " style="display: <?php if (in_array (basename($_SERVER['SCRIPT_NAME']), array('systeminfo.php') ) ){ echo 'block'; } else {echo 'none';} ?>;">
<li>
<a href="systeminfo.php#panServer" onclick="setCache('activeSysinfoTab','tabServer');initializeTabs()"><?= lang('Systeminfo_System');?></a>
</li>
<li>
<a href="systeminfo.php#panNetwork" onclick="setCache('activeSysinfoTab','tabNetwork');initializeTabs()"><?= lang('Systeminfo_Network');?></a>
</li>
<li>
<a href="systeminfo.php#panStorage" onclick="setCache('activeSysinfoTab','tabStorage');initializeTabs()"><?= lang('Systeminfo_Storage');?></a>
</li>
</ul>
</li>
</ul>
@@ -436,24 +466,6 @@
<script defer>
// Generate work-in-progress icons
function workInProgress() {
if($(".work-in-progress").length > 0 && $(".work-in-progress").html().trim() == "")
{
$(".work-in-progress").append(`
<a href="https://github.com/jokob-sk/NetAlertX/issues" target="_blank">
<b class="pointer" title="${getString("Gen_Work_In_Progress")}">🦺</b>
</a>
`)
}
}
//--------------------------------------------------------------
//--------------------------------------------------------------
function toggleFullscreen() {
if (document.fullscreenElement) {
@@ -471,6 +483,5 @@ function workInProgress() {
// Update server state in the header
updateState()
workInProgress()
</script>

View File

@@ -301,6 +301,7 @@
"Gen_Cancel": "إلغاء",
"Gen_Change": "تغيير",
"Gen_Copy": "نسخ",
"Gen_CopyToClipboard": "",
"Gen_DataUpdatedUITakesTime": "تم تحديث البيانات. قد يستغرق تحديث واجهة المستخدم بعض الوقت",
"Gen_Delete": "حذف",
"Gen_DeleteAll": "حذف الكل",
@@ -308,7 +309,9 @@
"Gen_Error": "خطأ",
"Gen_Filter": "تصفية",
"Gen_Generate": "إنشاء",
"Gen_InvalidMac": "",
"Gen_LockedDB": "قاعدة البيانات مقفلة",
"Gen_NetworkMask": "",
"Gen_Offline": "غير متصل",
"Gen_Okay": "موافق",
"Gen_Online": "متصل",
@@ -326,6 +329,7 @@
"Gen_SelectIcon": "اختيار أيقونة",
"Gen_SelectToPreview": "اختر للمعاينة",
"Gen_Selected_Devices": "الأجهزة المحددة",
"Gen_Subnet": "",
"Gen_Switch": "تبديل",
"Gen_Upd": "تحديث",
"Gen_Upd_Fail": "فشل التحديث",
@@ -491,8 +495,10 @@
"Navigation_Workflows": "تدفقات العمل",
"Network_Assign": "تعيين",
"Network_Cant_Assign": "لا يمكن التعيين",
"Network_Cant_Assign_No_Node_Selected": "",
"Network_Configuration_Error": "خطأ في التكوين",
"Network_Connected": "متصل",
"Network_Devices": "",
"Network_ManageAdd": "إضافة إدارة",
"Network_ManageAdd_Name": "اسم الإدارة",
"Network_ManageAdd_Name_text": "نص اسم الإدارة",
@@ -527,6 +533,8 @@
"Network_Root": "الجذر",
"Network_Root_Not_Configured": "الجذر غير مكون",
"Network_Root_Unconfigurable": "الجذر غير قابل للتكوين",
"Network_ShowArchived": "",
"Network_ShowOffline": "",
"Network_Table_Hostname": "اسم المضيف",
"Network_Table_IP": "عنوان IP",
"Network_Table_State": "الحالة",
@@ -590,6 +598,7 @@
"Settings_device_Scanners_desync": "عدم تزامن ماسحات الأجهزة",
"Settings_device_Scanners_desync_popup": "نافذة عدم تزامن ماسحات الأجهزة",
"Speedtest_Results": "نتائج اختبار السرعة",
"Systeminfo_AvailableIps": "",
"Systeminfo_CPU": "المعالج",
"Systeminfo_CPU_Cores": "أنوية المعالج",
"Systeminfo_CPU_Name": "اسم المعالج",
@@ -715,6 +724,7 @@
"devices_old": "الأجهزة القديمة",
"general_event_description": "وصف الحدث العام",
"general_event_title": "عنوان الحدث العام",
"go_to_device_event_tooltip": "",
"go_to_node_event_tooltip": "تلميح الانتقال إلى العقدة",
"new_version_available": "يتوفر إصدار جديد",
"report_guid": "معرف التقرير",
@@ -722,6 +732,7 @@
"report_select_format": "اختر تنسيق التقرير",
"report_time": "وقت التقرير",
"run_event_tooltip": "تلميح تشغيل الحدث",
"select_icon_event_tooltip": "",
"settings_core_icon": "أيقونة الإعدادات الأساسية",
"settings_core_label": "تسمية الإعدادات الأساسية",
"settings_device_scanners": "ماسحات الأجهزة",

View File

@@ -301,6 +301,7 @@
"Gen_Cancel": "Cancel·lar",
"Gen_Change": "Canviar",
"Gen_Copy": "Executar",
"Gen_CopyToClipboard": "",
"Gen_DataUpdatedUITakesTime": "D'acord - Pot passar una estona perquè la interfície d'usuari s'actualitzi si s'està executant una exploració.",
"Gen_Delete": "Esborrar",
"Gen_DeleteAll": "Esborrar tot",
@@ -308,7 +309,9 @@
"Gen_Error": "Error",
"Gen_Filter": "Filtrar",
"Gen_Generate": "Generar",
"Gen_InvalidMac": "",
"Gen_LockedDB": "ERROR - DB podria estar bloquejada - Fes servir F12 Eines desenvolupament -> Consola o provar-ho més tard.",
"Gen_NetworkMask": "",
"Gen_Offline": "Fora de línia",
"Gen_Okay": "Ok",
"Gen_Online": "En línia",
@@ -326,6 +329,7 @@
"Gen_SelectIcon": "<i class=\"fa-solid fa-chevron-down fa-fade\"></i>",
"Gen_SelectToPreview": "Seleccioneu la vista prèvia",
"Gen_Selected_Devices": "Dispositius seleccionats:",
"Gen_Subnet": "",
"Gen_Switch": "Switch",
"Gen_Upd": "Actualitzat correctament",
"Gen_Upd_Fail": "Actualització fallida",
@@ -491,8 +495,10 @@
"Navigation_Workflows": "Workflows",
"Network_Assign": "Connecta el <i class=\"fa fa-server\"></i> node de Xarxa",
"Network_Cant_Assign": "No es pot assignar el node arrel d'Internet com a node fill.",
"Network_Cant_Assign_No_Node_Selected": "",
"Network_Configuration_Error": "Error de configuració",
"Network_Connected": "Dispositius connectats",
"Network_Devices": "",
"Network_ManageAdd": "Afegir dispositiu",
"Network_ManageAdd_Name": "Nom del dispositiu",
"Network_ManageAdd_Name_text": "Nom sense caràcters especials",
@@ -527,6 +533,8 @@
"Network_Root": "Node arrel",
"Network_Root_Not_Configured": "Seleccioneu un tipus de dispositiu de xarxa, per exemple un tipus <b>Gateway</b>, al camp <b>Tipus</b>del <a href=\"deviceDetails.php?mac=Internet\">dispositiu arrel d'Internet</a> per començar a configurar aquesta pantalla. <br/><br/>. Podeu trobar més documentació a la <a href=\"https://github.com/jokob-sk/NetAlertX/blob/main/docs/NETWORK_TREE.md\" target=\"_blank\">Guia de com configurar la vostra pàgina de xarxa</a>",
"Network_Root_Unconfigurable": "Arrel no configurable",
"Network_ShowArchived": "",
"Network_ShowOffline": "",
"Network_Table_Hostname": "Hostname",
"Network_Table_IP": "IP",
"Network_Table_State": "Estat",
@@ -590,6 +598,7 @@
"Settings_device_Scanners_desync": "⚠ Els horaris d'escàner de dispositius no estan en sincronia.",
"Settings_device_Scanners_desync_popup": "Els horaris dels escàners de dispositius (<code>*_RUN_SCHD</code>) no són iguals. Això donarà lloc a notificacions inconsistents del dispositiu en línia / fora de línia. Si no és intencionat, utilitzeu el mateix horari per a tots els <b>🔍 escàners de dispositius</b>.",
"Speedtest_Results": "Speedtest Resultats",
"Systeminfo_AvailableIps": "",
"Systeminfo_CPU": "CPU",
"Systeminfo_CPU_Cores": "Nuclis de CPU:",
"Systeminfo_CPU_Name": "Nom de CPU:",
@@ -715,6 +724,7 @@
"devices_old": "Refrescant...",
"general_event_description": "L'esdeveniment que has desencadenat pot trigar un temps fins que acabin els processos de fons. L'execució acabarà una cop buida la cua d'execució (Comprova el registre d'errors <a href='/maintenance.php#tab_Logging'></a> si hi ha problemes). <br/> <br/> Cua d'execució:",
"general_event_title": "Execució d'un esdeveniment ad-hoc",
"go_to_device_event_tooltip": "",
"go_to_node_event_tooltip": "Navegació a la pàgina de la Xarxa del node donat",
"new_version_available": "Ja està disponible una nova versió.",
"report_guid": "Notificació guid:",
@@ -722,6 +732,7 @@
"report_select_format": "Seleccioneu Format:",
"report_time": "Data de recepció:",
"run_event_tooltip": "Habiliteu la configuració i deseu els canvis al principi abans d'executar-lo.",
"select_icon_event_tooltip": "",
"settings_core_icon": "fa-solid fa-gem",
"settings_core_label": "Nucli",
"settings_device_scanners": "Escàners de dispositius utilitzats per descobrir dispositius que escriuen a la taula de base de dades CurrentScan.",

View File

@@ -301,6 +301,7 @@
"Gen_Cancel": "Zrušit",
"Gen_Change": "Změnit",
"Gen_Copy": "Spustit",
"Gen_CopyToClipboard": "",
"Gen_DataUpdatedUITakesTime": "OK - může zabrat chvíli aktualizovat rozhraní, pokud běží scan.",
"Gen_Delete": "Smazat",
"Gen_DeleteAll": "Smazat vše",
@@ -308,7 +309,9 @@
"Gen_Error": "Chyba",
"Gen_Filter": "Filtr",
"Gen_Generate": "Vygenerovat",
"Gen_InvalidMac": "",
"Gen_LockedDB": "CHYBA - Databáze je možná zamčená - Zkontrolujte F12 -> Nástroje pro vývojáře -> Konzole. nebo to zkuste později.",
"Gen_NetworkMask": "",
"Gen_Offline": "Offline",
"Gen_Okay": "Ok",
"Gen_Online": "Online",
@@ -326,6 +329,7 @@
"Gen_SelectIcon": "<i class=\"fa-solid fa-chevron-down fa-fade\"></i>",
"Gen_SelectToPreview": "Vybrat na náhled",
"Gen_Selected_Devices": "Vybraná zařízení:",
"Gen_Subnet": "",
"Gen_Switch": "Přepnout",
"Gen_Upd": "Úspěšně aktualizováno",
"Gen_Upd_Fail": "Aktualizace se nezdařila",
@@ -491,8 +495,10 @@
"Navigation_Workflows": "",
"Network_Assign": "",
"Network_Cant_Assign": "",
"Network_Cant_Assign_No_Node_Selected": "",
"Network_Configuration_Error": "",
"Network_Connected": "",
"Network_Devices": "",
"Network_ManageAdd": "",
"Network_ManageAdd_Name": "",
"Network_ManageAdd_Name_text": "",
@@ -527,6 +533,8 @@
"Network_Root": "",
"Network_Root_Not_Configured": "",
"Network_Root_Unconfigurable": "",
"Network_ShowArchived": "",
"Network_ShowOffline": "",
"Network_Table_Hostname": "",
"Network_Table_IP": "",
"Network_Table_State": "",
@@ -590,6 +598,7 @@
"Settings_device_Scanners_desync": "",
"Settings_device_Scanners_desync_popup": "",
"Speedtest_Results": "",
"Systeminfo_AvailableIps": "",
"Systeminfo_CPU": "",
"Systeminfo_CPU_Cores": "",
"Systeminfo_CPU_Name": "",
@@ -715,6 +724,7 @@
"devices_old": "Obnovuji…",
"general_event_description": "",
"general_event_title": "",
"go_to_device_event_tooltip": "",
"go_to_node_event_tooltip": "",
"new_version_available": "",
"report_guid": "",
@@ -722,6 +732,7 @@
"report_select_format": "",
"report_time": "",
"run_event_tooltip": "",
"select_icon_event_tooltip": "",
"settings_core_icon": "",
"settings_core_label": "",
"settings_device_scanners": "",

View File

@@ -5,14 +5,6 @@
"API_TOKEN_name": "API-Schlüssel",
"API_display_name": "API",
"API_icon": "<i class=\"fa fa-arrow-down-up-across-line\"></i>",
"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_HOST_name": "Apprise host URL",
"APPRISE_PAYLOAD_description": "Select the payload type sent to Apprise. For example <code>html</code> works well with emails, <code>text</code> with chat apps, such as Telegram.",
"APPRISE_PAYLOAD_name": "Payload type",
"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.",
"APPRISE_SIZE_name": "Max payload size",
"APPRISE_URL_description": "Apprise notification target URL. For example for Telegram it would be <code>tgram://{bot_token}/{chat_id}</code>.",
"APPRISE_URL_name": "Apprise notification URL",
"About_Design": "Entworfen für:",
"About_Exit": "Abmelden",
"About_Title": "Netzwerksicherheitsscanner und Benachrichtigungsframework",
@@ -313,6 +305,7 @@
"Gen_Cancel": "Abbrechen",
"Gen_Change": "Ändern",
"Gen_Copy": "Ausführen",
"Gen_CopyToClipboard": "",
"Gen_DataUpdatedUITakesTime": "OK Es kann einen Moment dauern, bis die Benutzeroberfläche aktualisiert wird, während ein Scan ausgeführt wird.",
"Gen_Delete": "Löschen",
"Gen_DeleteAll": "Alles löschen",
@@ -320,7 +313,9 @@
"Gen_Error": "Fehler",
"Gen_Filter": "Filter",
"Gen_Generate": "Generieren",
"Gen_InvalidMac": "Ungültige MAC-Adresse.",
"Gen_LockedDB": "ERROR - DB eventuell gesperrt - Nutze die Konsole in den Entwickler Werkzeugen (F12) zur Überprüfung oder probiere es später erneut.",
"Gen_NetworkMask": "",
"Gen_Offline": "Offline",
"Gen_Okay": "Ok",
"Gen_Online": "Online",
@@ -338,6 +333,7 @@
"Gen_SelectIcon": "<i class=\"fa-solid fa-chevron-down fa-fade\"></i>",
"Gen_SelectToPreview": "Zur Vorschau auswählen",
"Gen_Selected_Devices": "Ausgewählte Geräte:",
"Gen_Subnet": "",
"Gen_Switch": "Umschalten",
"Gen_Upd": "Aktualisierung erfolgreich",
"Gen_Upd_Fail": "Aktualisierung fehlgeschlagen",
@@ -528,8 +524,10 @@
"Navigation_Workflows": "Arbeitsabläufe",
"Network_Assign": "Zum obigen <i class=\"fa fa-server\"></i> Netzwerkknoten zuweisen",
"Network_Cant_Assign": "Internet-Wurzelknoten kann nicht als äußerer Kindknoten zugewiesen werden.",
"Network_Cant_Assign_No_Node_Selected": "",
"Network_Configuration_Error": "Konfigurationsfehler",
"Network_Connected": "Verbundene Geräte",
"Network_Devices": "",
"Network_ManageAdd": "Gerät hinzufügen",
"Network_ManageAdd_Name": "Name des Gerätes",
"Network_ManageAdd_Name_text": "Name ohne Sonderzeichen",
@@ -564,6 +562,8 @@
"Network_Root": "Wurzelknoten",
"Network_Root_Not_Configured": "",
"Network_Root_Unconfigurable": "Nicht konfigurierbare Wurzel",
"Network_ShowArchived": "",
"Network_ShowOffline": "",
"Network_Table_Hostname": "Gerätename",
"Network_Table_IP": "IP",
"Network_Table_State": "Status",
@@ -659,6 +659,7 @@
"Settings_device_Scanners_desync": "⚠ Die Zeitpläne des Gerätescanners sind nicht synchronisiert.",
"Settings_device_Scanners_desync_popup": "",
"Speedtest_Results": "Ergebnisse des Geschwindigkeitstests",
"Systeminfo_AvailableIps": "",
"Systeminfo_CPU": "CPU",
"Systeminfo_CPU_Cores": "CPU-Kerne:",
"Systeminfo_CPU_Name": "CPU-Name:",
@@ -796,6 +797,7 @@
"devices_old": "Aktualisiert...",
"general_event_description": "Das Ereignis, das Sie ausgelöst haben, könnte eine Weile dauern, bis Hintergrundprozesse abgeschlossen sind. Die Ausführung endet, wenn die unten ausgeführte Warteschlangen abgearbeitet ist. (Siehe <a href='/maintenance.php#tab_Logging'>error log</a>, wenn Probleme auftreten.)<br/> <br/> Ausführungsschlange:",
"general_event_title": "",
"go_to_device_event_tooltip": "",
"go_to_node_event_tooltip": "",
"new_version_available": "Es ist eine neue Version verfügbar.",
"report_guid": "",
@@ -803,6 +805,7 @@
"report_select_format": "Format auswählen:",
"report_time": "Benachrichtigungszeit:",
"run_event_tooltip": "Aktiviere die Einstellung und speichere deine Änderungen, bevor du sie ausführst.",
"select_icon_event_tooltip": "",
"settings_core_icon": "",
"settings_core_label": "Kern",
"settings_device_scanners": "",
@@ -830,4 +833,4 @@
"settings_system_label": "System",
"settings_update_item_warning": "",
"test_event_tooltip": "Speichere die Änderungen, bevor Sie die Einstellungen testen."
}
}

View File

@@ -9,7 +9,7 @@
"About_Exit": "Sign out",
"About_Title": "Network security scanner & notification framework",
"AppEvents_AppEventProcessed": "Processed",
"AppEvents_DateTimeCreated": "Discovered On",
"AppEvents_DateTimeCreated": "Logged",
"AppEvents_Extra": "Extra",
"AppEvents_GUID": "Application Event GUID",
"AppEvents_Helper1": "Helper 1",
@@ -39,8 +39,8 @@
"BackDevices_Backup_CopError": "The original database could not be saved.",
"BackDevices_Backup_Failed": "The backup executed partially successfully. The archive could not be created or is empty.",
"BackDevices_Backup_okay": "The backup executed successfully with the new archive",
"BackDevices_DBTools_DelDevError_a": "Error deleting Device",
"BackDevices_DBTools_DelDevError_b": "Error deleting Devices",
"BackDevices_DBTools_DelDevError_a": "Error deleting device",
"BackDevices_DBTools_DelDevError_b": "Error deleting devices",
"BackDevices_DBTools_DelDev_a": "Device deleted",
"BackDevices_DBTools_DelDev_b": "Devices deleted",
"BackDevices_DBTools_DelEvents": "Events deleted",
@@ -72,18 +72,18 @@
"DevDetail_CustomProperties_Title": "Custom Properties",
"DevDetail_CustomProps_reset_info": "This will remove your custom properties on this device and reset them to the default value.",
"DevDetail_DisplayFields_Title": "Display",
"DevDetail_EveandAl_AlertAllEvents": "Alert Events",
"DevDetail_EveandAl_AlertDown": "Alert Down",
"DevDetail_EveandAl_AlertAllEvents": "Alert events",
"DevDetail_EveandAl_AlertDown": "Alert down",
"DevDetail_EveandAl_Archived": "Archived",
"DevDetail_EveandAl_NewDevice": "New Device",
"DevDetail_EveandAl_NewDevice_Tooltip": "Will show the New status for the device and include it in lists when the New Devices filter is active. Doesn't affect notifications.",
"DevDetail_EveandAl_NewDevice": "New device",
"DevDetail_EveandAl_NewDevice_Tooltip": "Will show the New status for the device and include it in lists when the New devices filter is active. Doesn't affect notifications.",
"DevDetail_EveandAl_RandomMAC": "Random MAC",
"DevDetail_EveandAl_ScanCycle": "Scan device",
"DevDetail_EveandAl_ScanCycle_a": "Scan Device",
"DevDetail_EveandAl_ScanCycle_z": "Don&#39;t Scan Device",
"DevDetail_EveandAl_ScanCycle_a": "Scan device",
"DevDetail_EveandAl_ScanCycle_z": "Don&#39;t scan device",
"DevDetail_EveandAl_Skip": "Skip repeated notifications for",
"DevDetail_EveandAl_Title": "Notifications config",
"DevDetail_Events_CheckBox": "Hide Connection Events",
"DevDetail_Events_CheckBox": "Hide connection events",
"DevDetail_GoToNetworkNode": "Navigate to the Network page of the given node.",
"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.",
@@ -107,7 +107,7 @@
"DevDetail_Network_Node_hover": "Select the parent network device the current device is connected to, to populate the Network tree.",
"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_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",
"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=\"https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/nmap_scan\" target=\"_blank\">Docs</a> to find out more",
"DevDetail_Nmap_buttonDefault": "Default Scan",
"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": "Detailed Scan",
@@ -201,7 +201,7 @@
"Device_MultiEdit_MassActions": "Mass actions:",
"Device_MultiEdit_Tooltip": "Careful. Clicking this will apply the value on the left to all devices selected above.",
"Device_Searchbox": "Search",
"Device_Shortcut_AllDevices": "My Devices",
"Device_Shortcut_AllDevices": "My devices",
"Device_Shortcut_AllNodes": "All Nodes",
"Device_Shortcut_Archived": "Archived",
"Device_Shortcut_Connected": "Connected",
@@ -209,7 +209,7 @@
"Device_Shortcut_DownAlerts": "Down & Offline",
"Device_Shortcut_DownOnly": "Down",
"Device_Shortcut_Favorites": "Favorites",
"Device_Shortcut_NewDevices": "New Devices",
"Device_Shortcut_NewDevices": "New devices",
"Device_Shortcut_OnlineChart": "Device presence",
"Device_TableHead_AlertDown": "Alert Down",
"Device_TableHead_Connected_Devices": "Connections",
@@ -267,7 +267,7 @@
"Events_Shortcut_DownAlerts": "Down Alerts",
"Events_Shortcut_Events": "Events",
"Events_Shortcut_MissSessions": "Missing Sessions",
"Events_Shortcut_NewDevices": "New Devices",
"Events_Shortcut_NewDevices": "New devices",
"Events_Shortcut_Sessions": "Sessions",
"Events_Shortcut_VoidSessions": "Voided Sessions",
"Events_TableHead_AdditionalInfo": "Additional Info",
@@ -293,14 +293,15 @@
"GRAPHQL_PORT_name": "GraphQL port",
"Gen_Action": "Action",
"Gen_Add": "Add",
"Gen_AddDevice": "Add Device",
"Gen_AddDevice": "Add device",
"Gen_Add_All": "Add all",
"Gen_All_Devices": "All Devices",
"Gen_All_Devices": "All devices",
"Gen_AreYouSure": "Are you sure?",
"Gen_Backup": "Run Backup",
"Gen_Cancel": "Cancel",
"Gen_Change": "Change",
"Gen_Copy": "Run",
"Gen_CopyToClipboard": "Copy to clipboard",
"Gen_DataUpdatedUITakesTime": "OK - It may take a while for the UI to update if a scan is running.",
"Gen_Delete": "Delete",
"Gen_DeleteAll": "Delete all",
@@ -308,7 +309,9 @@
"Gen_Error": "Error",
"Gen_Filter": "Filter",
"Gen_Generate": "Generate",
"Gen_InvalidMac": "Invalid Mac address.",
"Gen_LockedDB": "ERROR - DB might be locked - Check F12 Dev tools -> Console or try later.",
"Gen_NetworkMask": "Network mask",
"Gen_Offline": "Offline",
"Gen_Okay": "Ok",
"Gen_Online": "Online",
@@ -325,7 +328,8 @@
"Gen_Select": "Select",
"Gen_SelectIcon": "<i class=\"fa-solid fa-chevron-down fa-fade\"></i>",
"Gen_SelectToPreview": "Select to preview",
"Gen_Selected_Devices": "Selected Devices:",
"Gen_Selected_Devices": "Selected devices:",
"Gen_Subnet": "Subnet",
"Gen_Switch": "Switch",
"Gen_Upd": "Updated successfully",
"Gen_Upd_Fail": "Update failed",
@@ -338,9 +342,9 @@
"Gen_create_new_device_info": "Devices are typically discovered using <a target=\"_blank\" href=\"https://github.com/jokob-sk/NetAlertX/tree/main/docs/PLUGINS.md\">plugins</a>. However, in certain cases, you may need to add devices manually. To explore specific scenarios check the <a target=\"_blank\" href=\"https://github.com/jokob-sk/NetAlertX/blob/main/docs/REMOTE_NETWORKS.md\">Remote Networks documentation</a>.",
"General_display_name": "General",
"General_icon": "<i class=\"fa fa-gears\"></i>",
"HRS_TO_KEEP_NEWDEV_description": "This is a maintenance setting <b>DELETING devices</b>. 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.",
"HRS_TO_KEEP_NEWDEV_description": "This is a maintenance setting <b>DELETING devices</b>. 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.",
"HRS_TO_KEEP_NEWDEV_name": "Delete new devices after",
"HRS_TO_KEEP_OFFDEV_description": "This is a maintenance setting <b>DELETING devices</b>. If enabled (<code>0</code> is disabled), devices that are <b>Offline</b> and their <b>Last Connection</b> date time is older than the specified hours in this setting, will be deleted. Use this setting if you want to auto-delete <b>Offline Devices</b> after <code>X</code> hours being offline.",
"HRS_TO_KEEP_OFFDEV_description": "This is a maintenance setting <b>DELETING devices</b>. If enabled (<code>0</code> is disabled), devices that are <b>Offline</b> and their <b>Last Connection</b> date time is older than the specified hours in this setting, will be deleted. Use this setting if you want to auto-delete <b>Offline devices</b> after <code>X</code> hours being offline.",
"HRS_TO_KEEP_OFFDEV_name": "Delete offline devices after",
"LOADED_PLUGINS_description": "Which Plugins to load. Adding plugins might slow the application. Read more about which plugins need to be enabled, types, or scanning options in the <a target=\"_blank\" href=\"https://github.com/jokob-sk/NetAlertX/tree/main/docs/PLUGINS.md\">plugins docs</a>. Unloaded plugins will lose your settings. Only <code>disabled</code> plugins can be unloaded.",
"LOADED_PLUGINS_name": "Loaded plugins",
@@ -364,20 +368,20 @@
"Maint_PurgeLog": "Purge log",
"Maint_RestartServer": "Restart server",
"Maint_Restart_Server_noti_text": "Are you sure you want to restart the backend server? This may casue app inconsistency. Backup your setup first. <br/> <br/> Note: This may take a few minutes.",
"Maintenance_InitCheck": "Init Check",
"Maintenance_InitCheck": "Init check",
"Maintenance_InitCheck_Checking": "Checking…",
"Maintenance_InitCheck_QuickSetupGuide": "Make sure you followed the <a href=\"https://jokob-sk.github.io/NetAlertX/INITIAL_SETUP/\" target=\"_blank\">quick setup guide</a>.",
"Maintenance_InitCheck_Success": "Application initialized succesfully!",
"Maintenance_ReCheck": "Retry Check",
"Maintenance_ReCheck": "Retry check",
"Maintenance_Running_Version": "Installed version",
"Maintenance_Status": "Status",
"Maintenance_Title": "Maintenance tools",
"Maintenance_Tool_DownloadConfig": "Settings Export",
"Maintenance_Tool_DownloadConfig": "Settings export",
"Maintenance_Tool_DownloadConfig_text": "Download a full backup of your Settings configuration stored in the <code>app.conf</code> file.",
"Maintenance_Tool_DownloadWorkflows": "Workflows Export",
"Maintenance_Tool_DownloadWorkflows": "Workflows export",
"Maintenance_Tool_DownloadWorkflows_text": "Download a full backup of your Workflows stored in the <code>workflows.json</code> file.",
"Maintenance_Tool_ExportCSV": "Devices Export (csv)",
"Maintenance_Tool_ExportCSV_noti": "Devices Export (csv)",
"Maintenance_Tool_ExportCSV": "Devices export (csv)",
"Maintenance_Tool_ExportCSV_noti": "Devices export (csv)",
"Maintenance_Tool_ExportCSV_noti_text": "Are you sure you want to generate a CSV file?",
"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 accessing this URL <code>your_NetAlertX_url/php/server/devices.php?action=ExportCSV</code> or by enabling the <a href=\"settings.php#CSVBCKP_header\">CSV Backup</a> plugin.",
"Maintenance_Tool_ImportCSV": "Devices Import (csv)",
@@ -408,26 +412,26 @@
"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_del_ActHistory_text": "The network activity graph is reset. This does not affect the events.",
"Maintenance_Tool_del_alldev": "Delete all Devices",
"Maintenance_Tool_del_alldev_noti": "Delete Devices",
"Maintenance_Tool_del_alldev": "Delete all devices",
"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_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_allevents": "Delete Events (Reset Presence)",
"Maintenance_Tool_del_allevents30": "Delete all Events older than 30 days",
"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_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_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_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_allevents_noti_text": "Are you sure you want to delete all Events? This resets presence of all devices.",
"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_empty_macs": "Delete Devices with empty MACs",
"Maintenance_Tool_del_empty_macs_noti": "Delete Devices",
"Maintenance_Tool_del_empty_macs": "Delete devices with empty MACs",
"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_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_selecteddev": "Delete selected devices",
"Maintenance_Tool_del_selecteddev_text": "Before using this function, please make a backup. The deletion cannot be undone. Selected devices will be deleted from the database.",
"Maintenance_Tool_del_unknowndev": "Delete (unknown) Devices",
"Maintenance_Tool_del_unknowndev_noti": "Delete (unknown) Devices",
"Maintenance_Tool_del_unknowndev": "Delete (unknown) devices",
"Maintenance_Tool_del_unknowndev_noti": "Delete (unknown) devices",
"Maintenance_Tool_del_unknowndev_noti_text": "Are you sure you want to delete all (unknown) and (name not found) 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_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.",
@@ -471,10 +475,10 @@
"Maintenance_themeselector_lable": "Select Skin",
"Maintenance_themeselector_text": "The change takes place on the server side, so it affects all devices in use.",
"Maintenance_version": "App updates",
"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. Add it on the Device via the <code>+</code> button. Do not remove existing types, only add new ones.",
"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. Add it on the device via the <code>+</code> button. Do not remove existing types, only add new ones.",
"NETWORK_DEVICE_TYPES_name": "Network device types",
"Navigation_About": "About",
"Navigation_AppEvents": "App Events",
"Navigation_AppEvents": "App events",
"Navigation_Devices": "Devices",
"Navigation_Donations": "Donations",
"Navigation_Events": "Events",
@@ -485,38 +489,40 @@
"Navigation_Notifications": "Notifications",
"Navigation_Plugins": "Plugins",
"Navigation_Presence": "Presence",
"Navigation_Report": "Sent Reports",
"Navigation_Report": "Sent reports",
"Navigation_Settings": "Settings",
"Navigation_SystemInfo": "System info",
"Navigation_Workflows": "Workflows",
"Network_Assign": "Connect to the above <i class=\"fa fa-server\"></i> Network node",
"Network_Cant_Assign": "Can't assign the root Internet node as a child leaf node.",
"Network_Cant_Assign_No_Node_Selected": "Can't assign, no parent node selected.",
"Network_Configuration_Error": "Configuration Error",
"Network_Connected": "Connected devices",
"Network_ManageAdd": "Add Device",
"Network_ManageAdd_Name": "Device Name",
"Network_Devices": "Network devices",
"Network_ManageAdd": "Add device",
"Network_ManageAdd_Name": "Device name",
"Network_ManageAdd_Name_text": "Name without special characters",
"Network_ManageAdd_Port": "Port Count",
"Network_ManageAdd_Port_text": "leave blank for wifi and powerline",
"Network_ManageAdd_Submit": "Add Device",
"Network_ManageAdd_Type": "Device Type",
"Network_ManageAdd_Submit": "Add device",
"Network_ManageAdd_Type": "Device type",
"Network_ManageAdd_Type_text": "-- Select Type --",
"Network_ManageAssign": "Assign",
"Network_ManageDel": "Delete Device",
"Network_ManageDel": "Delete device",
"Network_ManageDel_Name": "Device to delete",
"Network_ManageDel_Name_text": "-- Select Device --",
"Network_ManageDel_Name_text": "-- Select device --",
"Network_ManageDel_Submit": "Delete",
"Network_ManageDevices": "Manage Devices",
"Network_ManageEdit": "Update Device",
"Network_ManageDevices": "Manage devices",
"Network_ManageEdit": "Update device",
"Network_ManageEdit_ID": "Device to update",
"Network_ManageEdit_ID_text": "-- Select Device for editing --",
"Network_ManageEdit_Name": "New Device Name",
"Network_ManageEdit_ID_text": "-- Select device for editing --",
"Network_ManageEdit_Name": "New device name",
"Network_ManageEdit_Name_text": "Name without special characters",
"Network_ManageEdit_Port": " New Port Count",
"Network_ManageEdit_Port_text": "leave blank for wifi and powerline",
"Network_ManageEdit_Submit": "Save Changes",
"Network_ManageEdit_Type": "New Device Type",
"Network_ManageEdit_Type_text": "-- Select Type --",
"Network_ManageEdit_Type": "New device type",
"Network_ManageEdit_Type_text": "-- Select type --",
"Network_ManageLeaf": "Manage assignment",
"Network_ManageUnassign": "Unassign",
"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.",
@@ -527,13 +533,15 @@
"Network_Root": "Root node",
"Network_Root_Not_Configured": "Select a network device type, for example a <b>Gateway</b>, in the <b>Type</b> field of the <a href=\"deviceDetails.php?mac=Internet\">the Internet root device</a> to start configuring this screen. <br/><br/> More documentation can be found in the <a href=\"https://github.com/jokob-sk/NetAlertX/blob/main/docs/NETWORK_TREE.md\" target=\"_blank\">How to setup your Network page</a> guide",
"Network_Root_Unconfigurable": "Unconfigurable root",
"Network_ShowArchived": "Show archived",
"Network_ShowOffline": "Show offline",
"Network_Table_Hostname": "Hostname",
"Network_Table_IP": "IP",
"Network_Table_State": "State",
"Network_Title": "Network overview",
"Network_UnassignedDevices": "Unassigned devices",
"Notifications_All": "All Notifications",
"Notifications_Mark_All_Read": "Mark All Read",
"Notifications_All": "All notifications",
"Notifications_Mark_All_Read": "Mark all read",
"PIALERT_WEB_PASSWORD_description": "The default password is <code>123456</code>. To change the password run <code>/app/back/pialert-cli</code> in the container or use the <a onclick=\"toggleAllSettings()\" href=\"#SETPWD_RUN\"><code>SETPWD_RUN</code> Set password plugin</a>.",
"PIALERT_WEB_PASSWORD_name": "Login password",
"PIALERT_WEB_PROTECTION_description": "When enabled a login dialog is displayed. Read below carefully if you get locked out of your instance.",
@@ -559,17 +567,17 @@
"Presence_Key_OnlineNow_desc": "Device detected in the last scan as online.",
"Presence_Key_OnlinePast": "Past online",
"Presence_Key_OnlinePastMiss": "Past online (miss-match)",
"Presence_Key_OnlinePastMiss_desc": "Device online in the past, but currently offline, but the start session might be missing or has conflicting data. (might be a bug - please submit a PR if you know how to fix it - I'm a bit lost in code here)",
"Presence_Key_OnlinePastMiss_desc": "Device online in the past, but currently offline, but the start session might be missing or has conflicting data.",
"Presence_Key_OnlinePast_desc": "Device online in the past, but currently offline.",
"Presence_Loading": "Loading…",
"Presence_Shortcut_AllDevices": "My Devices",
"Presence_Shortcut_AllDevices": "My devices",
"Presence_Shortcut_Archived": "Archived",
"Presence_Shortcut_Connected": "Connected",
"Presence_Shortcut_Devices": "Devices",
"Presence_Shortcut_DownAlerts": "Down Alerts",
"Presence_Shortcut_Favorites": "Favorites",
"Presence_Shortcut_NewDevices": "New Devices",
"Presence_Title": "Presence by Device",
"Presence_Shortcut_NewDevices": "New devices",
"Presence_Title": "Presence by device",
"REFRESH_FQDN_description": "Rescans all devices and refreshes their Fully Qualified Domain Name (FQDN). If disabled, only devices without a known name are scanned to improve performance. In this case, FQDN is updated only during initial device discovery.",
"REFRESH_FQDN_name": "Refresh FQDN",
"REPORT_DASHBOARD_URL_description": "This URL is used as the base for generating links in HTML reports (e.g.: emails). Enter full URL starting with <code>http://</code> including the port number (no trailing slash <code>/</code>).",
@@ -579,8 +587,8 @@
"REPORT_MAIL_name": "Enable email",
"REPORT_TITLE": "Report",
"RandomMAC_hover": "Autodetected - indicates if the device randomizes it's MAC address. You can exclude specific MACs with the UI_NOT_RANDOM_MAC setting. Click to find out more.",
"Reports_Sent_Log": "Sent Reports Log",
"SCAN_SUBNETS_description": "Most on-network scanners (ARP-SCAN, NMAP, NSLOOKUP, DIG) rely on scanning specific network interfaces and subnets. Check the <a href=\"https://github.com/jokob-sk/NetAlertX/blob/main/docs/SUBNETS.md\" target=\"_blank\">subnets documentation</a> for help on this setting, especially VLANs, what VLANs are supported, or how to figure out the network mask and your interface. <br/> <br/> An alternative to on-network scanners is to enable some other Device scanners/importers that don't rely on NetAlert<sup>X</sup> having access to the network (UNIFI, dhcp.leases, PiHole, etc.). <br/> <br/> Note: The scan time itself depends on the number of IP addresses to check, so set this up carefully with the appropriate network mask and interface.",
"Reports_Sent_Log": "Sent reports log",
"SCAN_SUBNETS_description": "Most on-network scanners (ARP-SCAN, NMAP, NSLOOKUP, DIG) rely on scanning specific network interfaces and subnets. Check the <a href=\"https://github.com/jokob-sk/NetAlertX/blob/main/docs/SUBNETS.md\" target=\"_blank\">subnets documentation</a> for help on this setting, especially VLANs, what VLANs are supported, or how to figure out the network mask and your interface. <br/> <br/> An alternative to on-network scanners is to enable some other device scanners/importers that don't rely on NetAlert<sup>X</sup> having access to the network (UNIFI, dhcp.leases, PiHole, etc.). <br/> <br/> Note: The scan time itself depends on the number of IP addresses to check, so set this up carefully with the appropriate network mask and interface.",
"SCAN_SUBNETS_name": "Networks to scan",
"SYSTEM_TITLE": "System Information",
"Setting_Override": "Override value",
@@ -588,8 +596,9 @@
"Settings_Metadata_Toggle": "Show/hide metadata for the given setting.",
"Settings_Show_Description": "Show setting description.",
"Settings_device_Scanners_desync": "⚠ Device scanner schedules are out-of-sync.",
"Settings_device_Scanners_desync_popup": "Schedules of devices scanners (<code>*_RUN_SCHD</code>) are not the same. This will result into inconsistent device online/offline notifications. Unless this is intended, please use the same schedule for all enabled <b>🔍Device scanners</b>.",
"Settings_device_Scanners_desync_popup": "Schedules of devices scanners (<code>*_RUN_SCHD</code>) are not the same. This will result into inconsistent device online/offline notifications. Unless this is intended, please use the same schedule for all enabled <b>🔍device scanners</b>.",
"Speedtest_Results": "Speedtest Results",
"Systeminfo_AvailableIps": "Available IPs",
"Systeminfo_CPU": "CPU",
"Systeminfo_CPU_Cores": "CPU Cores:",
"Systeminfo_CPU_Name": "CPU Name:",
@@ -663,18 +672,18 @@
"Systeminfo_System_Uname": "Uname:",
"Systeminfo_System_Uptime": "Uptime:",
"Systeminfo_This_Client": "This Client",
"Systeminfo_USB_Devices": "USB Devices",
"Systeminfo_USB_Devices": "USB devices",
"TICKER_MIGRATE_TO_NETALERTX": "⚠ Old mount locations detected. Follow <a href=\"https://github.com/jokob-sk/NetAlertX/blob/main/docs/MIGRATION.md\" target=\"_blank\">this guide</a> to migrate to the new <code>/app/config</code> and <code>/app/db</code> folders and the <code>netalertx</code> container.",
"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>.",
"TIMEZONE_name": "Time zone",
"UI_DEV_SECTIONS_description": "Select which UI elements to hide in the Devices pages.",
"UI_DEV_SECTIONS_name": "Hide Devices Sections",
"UI_DEV_SECTIONS_description": "Select which UI elements to hide in the devices pages.",
"UI_DEV_SECTIONS_name": "Hide devices sections",
"UI_ICONS_description": "A list of pre-defined icons. Proceed with caution, the preferred way to add icons is described in the <a href=\"https://github.com/jokob-sk/NetAlertX/blob/main/docs/ICONS.md\" target=\"_blank\">Icons documentation</a>. You can add a base64-encoded SVG HTML or Font-awesome HTML tag.",
"UI_ICONS_name": "Pre-defined icons",
"UI_LANG_description": "Select the preferred UI language. Help translating or suggest languages in the online portal of <a href=\"https://hosted.weblate.org/projects/pialert/core/\" target=\"_blank\">Weblate</a>.",
"UI_LANG_name": "UI Language",
"UI_MY_DEVICES_description": "Devices of which statuses should be shown in the default <b>My Devices</b> view.",
"UI_MY_DEVICES_name": "Show in My Devices view",
"UI_MY_DEVICES_description": "Devices of which statuses should be shown in the default <b>My devices</b> view.",
"UI_MY_DEVICES_name": "Show in My devices view",
"UI_NOT_RANDOM_MAC_description": "Mac prefixes which shouldn't be marked as Random devices. Enter for example <code>52</code> to exclude devices starting with <code>52:xx:xx:xx:xx:xx</code> from being marked as devices with a random MAC address.",
"UI_NOT_RANDOM_MAC_name": "Don't mark as Random",
"UI_PRESENCE_description": "Select what statuses should be shown in the <b>Device presence</b> chart in the <a href=\"/devices.php\" target=\"_blank\">Devices</a> page.",
@@ -715,19 +724,20 @@
"devices_old": "Refreshing…",
"general_event_description": "The event you have triggered might take a while until background processes finish. The execution ended once the below execution queue empties (Check the <a href='/maintenance.php#tab_Logging'>error log</a> if you encounter issues). <br/> <br/> Execution queue:",
"general_event_title": "Executing an ad-hoc event",
"go_to_device_event_tooltip": "Navigate to the device",
"go_to_node_event_tooltip": "Navigate to the Network page of the given node",
"go_to_device_event_tooltip": "Navigate to the Device",
"new_version_available": "A new version is available.",
"report_guid": "Notification guid:",
"report_guid_missing": "Linked notification not found. There is a small delay between recently sent notifications and them being available. Referesh your page and cache after a few seconds. It's also possible the selected notification have been deleted during maintenance as specified in the <code>DBCLNP_NOTIFI_HIST</code> setting. <br/> <br/>The latest notification is displayed instead. The missing notification has the following GUID:",
"report_select_format": "Select Format:",
"report_time": "Notification time:",
"run_event_tooltip": "Enable the setting and save your changes at first before you run it.",
"select_icon_event_tooltip": "Select icon",
"settings_core_icon": "fa-solid fa-gem",
"settings_core_label": "Core",
"settings_device_scanners": "Device scanners used to discover devices that write into the CurrentScan database table.",
"settings_device_scanners_icon": "fa-solid fa-magnifying-glass-plus",
"settings_device_scanners_info": "Load even more Device Scanners with the <a href=\"/settings.php#LOADED_PLUGINS\">LOADED_PLUGINS</a> setting",
"settings_device_scanners_info": "Load more device scanners with the <a href=\"/settings.php#LOADED_PLUGINS\">LOADED_PLUGINS</a> setting",
"settings_device_scanners_label": "Device scanners",
"settings_enabled": "Enabled settings",
"settings_enabled_icon": "fa-solid fa-toggle-on",

View File

@@ -5,14 +5,6 @@
"API_TOKEN_name": "Token de la API",
"API_display_name": "API",
"API_icon": "<i class=\"fa fa-arrow-down-up-across-line\"></i>",
"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_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_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>.",
"APPRISE_SIZE_name": "Tamaño máximo de carga útil",
"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",
"About_Design": "Diseñado para:",
"About_Exit": "Salir",
"About_Title": "Escáner de seguridad de la red y marco de notificaciones",
@@ -50,7 +42,7 @@
"BackDevices_Backup_Failed": "La copia de seguridad se ejecutó parcialmente con éxito. El archivo no se puede crear o está vacío.",
"BackDevices_Backup_okay": "La copia de seguridad ejecutada con éxito con el nuevo archivo",
"BackDevices_DBTools_DelDevError_a": "Error de eliminación del dispositivo",
"BackDevices_DBTools_DelDevError_b": "Error de eliminación de dispositivos",
"BackDevices_DBTools_DelDevError_b": "Error eliminando dispositivos",
"BackDevices_DBTools_DelDev_a": "Dispositivo eliminado",
"BackDevices_DBTools_DelDev_b": "Dispositivos eliminados",
"BackDevices_DBTools_DelEvents": "Eventos eliminados",
@@ -76,7 +68,7 @@
"DAYS_TO_KEEP_EVENTS_name": "Eliminar eventos anteriores a",
"DISCOVER_PLUGINS_description": "Desactive esta opción para acelerar la inicialización y el ahorro de ajustes. Cuando está desactivado, los plugins no se descubren y no puede añadir nuevos plugins a la configuración <code>LOADED_PLUGINS</code>.",
"DISCOVER_PLUGINS_name": "Descubrir plugins",
"DevDetail_Children_Title": "",
"DevDetail_Children_Title": "Relaciones hijo",
"DevDetail_Copy_Device_Title": "Copiar detalles del dispositivo",
"DevDetail_Copy_Device_Tooltip": "Copiar detalles del dispositivo de la lista desplegable. Todo en esta página se sobrescribirá",
"DevDetail_CustomProperties_Title": "Propiedades personalizadas",
@@ -89,15 +81,15 @@
"DevDetail_EveandAl_NewDevice_Tooltip": "Mostrará el estado Nuevo para el dispositivo y lo incluirá en las listas cuando el filtro Nuevos dispositivos esté activo. No afecta a las notificaciones.",
"DevDetail_EveandAl_RandomMAC": "MAC al azar",
"DevDetail_EveandAl_ScanCycle": "Ciclo de escaneo",
"DevDetail_EveandAl_ScanCycle_a": "Escanear Dispositivo",
"DevDetail_EveandAl_ScanCycle_z": "No Escanear Dispositivo",
"DevDetail_EveandAl_ScanCycle_a": "Escanear dispositivo",
"DevDetail_EveandAl_ScanCycle_z": "No escanear dispositivo",
"DevDetail_EveandAl_Skip": "Omitir notificaciones repetidas durante",
"DevDetail_EveandAl_Title": "Configuración de eventos y alertas",
"DevDetail_Events_CheckBox": "Ocultar eventos de conexión",
"DevDetail_GoToNetworkNode": "Navegar a la página de Internet del nodo seleccionado.",
"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_Loading": "Cargando ...",
"DevDetail_Loading": "Cargando",
"DevDetail_MainInfo_Comments": "Comentario",
"DevDetail_MainInfo_Favorite": "Favorito",
"DevDetail_MainInfo_Group": "Grupo",
@@ -113,11 +105,11 @@
"DevDetail_MainInfo_Type": "Tipo",
"DevDetail_MainInfo_Vendor": "Proveedor",
"DevDetail_MainInfo_mac": "MAC",
"DevDetail_NavToChildNode": "",
"DevDetail_NavToChildNode": "Abrir nodo hijo",
"DevDetail_Network_Node_hover": "Seleccione el dispositivo de red principal al que está conectado el dispositivo actual para completar el árbol de Red.",
"DevDetail_Network_Port_hover": "El puerto al que está conectado este dispositivo en el dispositivo de red principal. Si se deja vacío, se muestra un icono de wifi en el árbol de Red.",
"DevDetail_Nmap_Scans": "Escaneos de Nmap",
"DevDetail_Nmap_Scans_desc": "Aquí puede ejecutar escaneos NMAP manuales. También puede programar escaneos NMAP automáticos regulares a través del complemento Servicios y puertos (NMAP). Dirígete a <a href='/settings.php' target='_blank'>Configuración</a> para obtener más información",
"DevDetail_Nmap_Scans_desc": "Aquí puede ejecutar escaneos NMAP manuales. También puede programar escaneos NMAP automáticos regulares a través del complemento Servicios y puertos (NMAP). Dirígete a <a href=\"https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/nmap_scan\" target=\"_blank\">Documentación</a> para obtener más información",
"DevDetail_Nmap_buttonDefault": "Escaneado predeterminado",
"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": "Escaneo detallado",
@@ -189,7 +181,7 @@
"DevDetail_Tools_WOL": "Enviar comando WOL a ",
"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 NetAlertX, el dispositivo no responderá.",
"DevDetail_Type_hover": "El tipo de dispositivo. Si selecciona cualquiera de los dispositivos de la red predefinidos (por ejemplo: AP, Firewall, enrutador, conmutador...), aparecerán en la configuración del árbol de redes como posibles nodos de la red principal.",
"DevDetail_Type_hover": "El tipo de dispositivo. Si selecciona cualquiera de los dispositivos de la red predefinidos (por ejemplo: AP, Firewall, enrutador, conmutador ...), aparecerán en la configuración del árbol de redes como posibles nodos de la red principal.",
"DevDetail_Vendor_hover": "El proveedor debe ser detectado automáticamente. Puede sobrescribir o agregar su valor personalizado.",
"DevDetail_WOL_Title": "<i class=\"fa fa-power-off\"></i> Wake-on-LAN",
"DevDetail_button_AddIcon": "Añadir un nuevo icono",
@@ -206,25 +198,25 @@
"DevDetail_button_Save": "Guardar",
"DeviceEdit_ValidMacIp": "Introduzca una dirección <b>Mac</b> y una dirección <b>IP</b> válidas .",
"Device_MultiEdit": "Edición múltiple",
"Device_MultiEdit_Backup": "Tenga cuidado, ingresar valores incorrectos o romperá su configuración. Por favor, haga una copia de seguridad de su base de datos o de la configuración de los dispositivos primero (<a href=\"php/server/devices.php?action=ExportCSV\">haga clic para descargar <i class=\"fa-solid fa-download fa-bounce\"></i></a>). Lea cómo recuperar dispositivos de este archivo en la documentación de <a href=\"https://github.com/jokob-sk/NetAlertX/blob/main/docs/BACKUPS.md#scenario-2-corrupted-database\" target=\"_blank\">Copia de seguridad</a>.",
"Device_MultiEdit_Backup": "Tenga cuidado, ingresar valores incorrectos o romperá su configuración. Por favor, haga una copia de seguridad de su base de datos o de la configuración de los dispositivos primero (<a href=\"php/server/devices.php?action=ExportCSV\">haga clic para descargar <i class=\"fa-solid fa-download fa-bounce\"></i></a>). Lea cómo recuperar dispositivos de este archivo en la documentación de <a href=\"https://github.com/jokob-sk/NetAlertX/blob/main/docs/BACKUPS.md#scenario-2-corrupted-database\" target=\"_blank\">Copia de seguridad</a>. Para aplicar sus cambios haga click en el ícono de <b>Guardar<i class=\"fa-solid fa-save\"></i></b> en cada campo que quiera actualizar.",
"Device_MultiEdit_Fields": "Editar campos:",
"Device_MultiEdit_MassActions": "Acciones masivas:",
"Device_MultiEdit_Tooltip": "Cuidado. Al hacer clic se aplicará el valor de la izquierda a todos los dispositivos seleccionados anteriormente.",
"Device_Searchbox": "Búsqueda",
"Device_Shortcut_AllDevices": "Mis dispositivos",
"Device_Shortcut_AllNodes": "",
"Device_Shortcut_AllNodes": "Todos los nodos",
"Device_Shortcut_Archived": "Archivado(s)",
"Device_Shortcut_Connected": "Conectado(s)",
"Device_Shortcut_Devices": "Dispositivos",
"Device_Shortcut_DownAlerts": "Caído y sin conexión",
"Device_Shortcut_DownOnly": "Caído",
"Device_Shortcut_Favorites": "Favorito(s)",
"Device_Shortcut_NewDevices": "Nuevo(s)",
"Device_Shortcut_NewDevices": "Nuevos dispositivos",
"Device_Shortcut_OnlineChart": "Presencia del dispositivo a lo largo del tiempo",
"Device_TableHead_AlertDown": "Alerta desactivada",
"Device_TableHead_Connected_Devices": "Conexiones",
"Device_TableHead_CustomProps": "Propiedades / Acciones",
"Device_TableHead_FQDN": "",
"Device_TableHead_FQDN": "FQDN",
"Device_TableHead_Favorite": "Favorito",
"Device_TableHead_FirstSession": "1ra. sesión",
"Device_TableHead_GUID": "GUID",
@@ -239,11 +231,11 @@
"Device_TableHead_Name": "Nombre",
"Device_TableHead_NetworkSite": "Lugar de la red",
"Device_TableHead_Owner": "Propietario",
"Device_TableHead_ParentRelType": "",
"Device_TableHead_ParentRelType": "Tipo de relación",
"Device_TableHead_Parent_MAC": "Nodo principal de la red",
"Device_TableHead_Port": "Puerto",
"Device_TableHead_PresentLastScan": "Historial",
"Device_TableHead_ReqNicsOnline": "",
"Device_TableHead_ReqNicsOnline": "Requiere que la interfaz de red (NIC) esté conectada",
"Device_TableHead_RowID": "ID de fila",
"Device_TableHead_Rowid": "ID de fila",
"Device_TableHead_SSID": "SSID",
@@ -266,7 +258,7 @@
"ENCRYPTION_KEY_name": "Llave de cifrado",
"Email_display_name": "Email",
"Email_icon": "<i class=\"fa fa-at\"></i>",
"Events_Loading": "Cargando...",
"Events_Loading": "Cargando. . .",
"Events_Periodselect_All": "Toda la información",
"Events_Periodselect_LastMonth": "El mes pasado",
"Events_Periodselect_LastWeek": "La semana pasada",
@@ -277,7 +269,7 @@
"Events_Shortcut_DownAlerts": "Alerta(s) de caída(s)",
"Events_Shortcut_Events": "Eventos",
"Events_Shortcut_MissSessions": "Sesiones faltantes",
"Events_Shortcut_NewDevices": "Nuevo(s)",
"Events_Shortcut_NewDevices": "Nuevos dispositivos",
"Events_Shortcut_Sessions": "Sesiones",
"Events_Shortcut_VoidSessions": "Sesiones anuladas",
"Events_TableHead_AdditionalInfo": "Información adicional",
@@ -305,12 +297,13 @@
"Gen_Add": "Añadir",
"Gen_AddDevice": "Añadir dispositivo",
"Gen_Add_All": "Añadir todo",
"Gen_All_Devices": "Todo los dispositivos",
"Gen_All_Devices": "Todos los dispositivos",
"Gen_AreYouSure": "¿Estás seguro?",
"Gen_Backup": "Ejecutar copia de seguridad",
"Gen_Cancel": "Cancelar",
"Gen_Change": "Cambiar",
"Gen_Copy": "Ejecutar",
"Gen_CopyToClipboard": "",
"Gen_DataUpdatedUITakesTime": "Correcto - La interfaz puede tardar en actualizarse si se está ejecutando un escaneo.",
"Gen_Delete": "Eliminar",
"Gen_DeleteAll": "Eliminar todo",
@@ -318,7 +311,9 @@
"Gen_Error": "Error",
"Gen_Filter": "Filtro",
"Gen_Generate": "Generar",
"Gen_InvalidMac": "",
"Gen_LockedDB": "Fallo - La base de datos puede estar bloqueada - Pulsa F1 -> Ajustes de desarrolladores -> Consola o prueba más tarde.",
"Gen_NetworkMask": "",
"Gen_Offline": "Desconectado",
"Gen_Okay": "Aceptar",
"Gen_Online": "En linea",
@@ -336,6 +331,7 @@
"Gen_SelectIcon": "<i class=\"fa-solid fa-chevron-down fa-fade\"></i>",
"Gen_SelectToPreview": "Seleccionar para previsualizar",
"Gen_Selected_Devices": "Dispositivos seleccionados:",
"Gen_Subnet": "",
"Gen_Switch": "Cambiar",
"Gen_Upd": "Actualizado correctamente",
"Gen_Upd_Fail": "Fallo al actualizar",
@@ -348,15 +344,15 @@
"Gen_create_new_device_info": "Los dispositivos se suelen descubrir utilizando <a target=\"_blank\" href=\"https://github.com/jokob-sk/NetAlertX/tree/main/docs/PLUGINS.md\">plugins</a>. Sin embargo, en algunos casos, es posible que necesite agregar dispositivos manualmente. Para explorar escenarios específicos, consulte la documentación <a target=\"_blank\" href=\"https://github.com/jokob-sk/NetAlertX/blob/main/docs/REMOTE_NETWORKS.md\">Redes remotas</a>.",
"General_display_name": "General",
"General_icon": "<i class=\"fa fa-gears\"></i>",
"HRS_TO_KEEP_NEWDEV_description": "Se trata de una configuración de mantenimiento <b>BORRAR dispositivos</b>. Si está activado (<code>0</code> está desactivado), los dispositivos marcados como <b>Nuevo dispositivo</b> se eliminarán si su fecha de <b>primera sesión</b> es anterior a las horas especificadas en este ajuste. Use este ajuste si desea eliminar automáticamente <b>Nuevos dispositivos</b> después de <code>X</code> horas.",
"HRS_TO_KEEP_NEWDEV_description": "Esta es una configuración de mantenimiento <b>BORRAR dispositivos</b>. Si está activado (<code>0</code> está desactivado), los dispositivos marcados como <b>Nuevo dispositivo</b> se eliminarán si su fecha de <b>Primera Sesión</b> es anterior a las horas especificadas en este ajuste. Use este ajuste si desea eliminar automáticamente <b>Nuevos dispositivos</b> después de <code>X</code> horas.",
"HRS_TO_KEEP_NEWDEV_name": "Eliminar nuevos dispositivos después",
"HRS_TO_KEEP_OFFDEV_description": "Se trata de una configuración de mantenimiento <b>BORRAR dispositivos</b>. Si está activado (<code>0</code> está desactivado), los dispositivos que están <b>sin conexión</b> y su fecha de <b>última conexión</b> es anterior a las horas especificadas en este ajuste se eliminarán. Use este ajuste si desea eliminar automáticamente <b>los dispositivos sin conexión</b> después de que el <code>X</code> horas esté sin conexión.",
"HRS_TO_KEEP_OFFDEV_description": "Esta es una configuración de mantenimiento <b>BORRAR dispositivos</b>. Si está activado (<code>0</code> está desactivado), los dispositivos que están <b>Sin Conexión</b> y su fecha de <b>Última Conexión</b> es anterior a las horas especificadas en este ajuste se eliminarán. Use este ajuste si desea eliminar automáticamente <b>los dispositivos sin conexión</b> después de que el <code>X</code> horas esté sin conexión.",
"HRS_TO_KEEP_OFFDEV_name": "Borrar dispositivos sin conexión después de",
"LOADED_PLUGINS_description": "¿Qué plugins cargar?. Agregar plugins puede ralentizar la aplicación. Obtén más información sobre los complementos que deben habilitarse, los tipos o las opciones de escaneo en los documentos de <a target=\"_blank\" href=\"https://github.com/jokob-sk/NetAlertX/tree/main/docs/PLUGINS.md\">plugins</a>. Los plugins descargados perderán tu configuración. Solo se pueden descargar los complementos <code>deshabilitados</code>.",
"LOADED_PLUGINS_name": "Plugins cargados",
"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.",
"LOG_LEVEL_name": "Imprimir registros adicionales",
"Loading": "Cargando...",
"Loading": "Cargando . . .",
"Login_Box": "Ingrese su contraseña",
"Login_Default_PWD": "La contraseña por defecto \"123456\" sigue activa.",
"Login_Info": "Las contraseñas se establecen a través del plugin Establecer contraseña. Compruebe la <a target=\"_blank\" href=\"https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/set_password\">documentación SETPWD</a> si tiene problemas para iniciar sesión.",
@@ -388,11 +384,11 @@
"Maint_PurgeLog": "Purgar los registros",
"Maint_RestartServer": "Restablecer el servidor",
"Maint_Restart_Server_noti_text": "¿Estás seguro de que desea reiniciar el servidor backend? Esto puede causar inconsistencia en la aplicación. Primero haga una copia de seguridad de su configuración.<br/> <br/> Nota: Esto puede tardar unos minutos.",
"Maintenance_InitCheck": "",
"Maintenance_InitCheck_Checking": "",
"Maintenance_InitCheck_QuickSetupGuide": "",
"Maintenance_InitCheck_Success": "",
"Maintenance_ReCheck": "",
"Maintenance_InitCheck": "Validación inicial",
"Maintenance_InitCheck_Checking": "Validando . . .",
"Maintenance_InitCheck_QuickSetupGuide": "Asegúrece de seguir la <a href=\"https://jokob-sk.github.io/NetAlertX/INITIAL_SETUP/\" target=\"_blank\">guía de configuración rápida</a>.",
"Maintenance_InitCheck_Success": "¡Aplicación inicializada con éxito!",
"Maintenance_ReCheck": "Reintentar validación",
"Maintenance_Running_Version": "Versión instalada",
"Maintenance_Status": "Situación",
"Maintenance_Title": "Herramientas de mantenimiento",
@@ -475,7 +471,7 @@
"Maintenance_Tools_Tab_UISettings": "Ajustes de interfaz",
"Maintenance_arp_status": "Estado de la exploración",
"Maintenance_arp_status_off": "está actualmente deshabilitado",
"Maintenance_arp_status_on": "escaneo(s) actualmente en ejecución",
"Maintenance_arp_status_on": "escaneo en ejecución",
"Maintenance_built_on": "Creada",
"Maintenance_current_version": "No hay actualizaciones disponibles. Comprueba en que <a href=\"https://github.com/jokob-sk/NetAlertX/issues/138\" target=\"_blank\">se está trabajando</a>.",
"Maintenance_database_backup": "Copias de seguridad de BD",
@@ -526,8 +522,10 @@
"Navigation_Workflows": "Flujo de trabajo",
"Network_Assign": "Conectar al nodo de <i class=\"fa fa-server\"></i> red",
"Network_Cant_Assign": "No se puede asignar el nodo principal de Internet como nodo secundario.",
"Network_Cant_Assign_No_Node_Selected": "No es posible asignar, no se ha seleccionado un nodo padre.",
"Network_Configuration_Error": "Error en la configuración",
"Network_Connected": "Dispositivos conectados",
"Network_Devices": "Dispositivos de red",
"Network_ManageAdd": "Añadir dispositivo",
"Network_ManageAdd_Name": "Nombre del dispositivo",
"Network_ManageAdd_Name_text": "Nombre sin caracteres especiales",
@@ -562,6 +560,8 @@
"Network_Root": "Nodo principal",
"Network_Root_Not_Configured": "Seleccione un tipo de dispositivo de red, por ejemplo un <b>Gateway</b>, en el campo <b>Tipo</b> del <a href=\"deviceDetails.php?mac=Internet\">dispositivo principal de Internet</a> para empezar a configurar esta pantalla. <br/><br/>Puede encontrar más documentación en la guía <a href=\"https://github.com/jokob-sk/NetAlertX/blob/main/docs/NETWORK_TREE.md\" target=\"_blank\">¿Cómo configurar su página de Red?</a>",
"Network_Root_Unconfigurable": "Root no configurable",
"Network_ShowArchived": "Mostrar archivado",
"Network_ShowOffline": "Mostrar fuera de línea",
"Network_Table_Hostname": "Nombre de host",
"Network_Table_IP": "Dirección IP",
"Network_Table_State": "Estado",
@@ -598,9 +598,9 @@
"Presence_Key_OnlineNow_desc": "Dispositivo detectado en el último escaneo como conectado.",
"Presence_Key_OnlinePast": "Anterior en línea",
"Presence_Key_OnlinePastMiss": "Anterior en línea (miss-match)",
"Presence_Key_OnlinePastMiss_desc": "Dispositivo en línea en el pasado, pero actualmente desconectado, pero la sesión de inicio podría estar faltando o tiene datos conflictivos. (Puede ser un error - por favor envíe un PR si sabe cómo solucionarlo - estoy un poco perdido en código)",
"Presence_Key_OnlinePastMiss_desc": "Dispositivo en línea en el pasado, pero actualmente desconectado, pero la sesión de inicio podría estar faltando o tiene datos conflictivos.",
"Presence_Key_OnlinePast_desc": "Dispositivo en línea en el pasado, pero actualmente no conectado.",
"Presence_Loading": "Cargando...",
"Presence_Loading": "Cargando. . .",
"Presence_Shortcut_AllDevices": "Mis dispositivos",
"Presence_Shortcut_Archived": "Archivado(s)",
"Presence_Shortcut_Connected": "Conectado(s)",
@@ -608,9 +608,9 @@
"Presence_Shortcut_DownAlerts": "Alerta(s) de caída(s)",
"Presence_Shortcut_Favorites": "Favorito(s)",
"Presence_Shortcut_NewDevices": "Nuevo(s)",
"Presence_Title": "Historial por dispositivo",
"REFRESH_FQDN_description": "",
"REFRESH_FQDN_name": "",
"Presence_Title": "Presencia por dispositivo",
"REFRESH_FQDN_description": "Vuelve a escanear todos los dispositivos y actualiza su nombre de dominio completo (FQDN). Si esta opción está deshabilitada, solo se escanean los dispositivos sin nombre conocido para mejorar el rendimiento. En este caso, el FQDN se actualiza solo durante la detección inicial de dispositivos.",
"REFRESH_FQDN_name": "Refrescar FQDN",
"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",
"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>).",
@@ -658,6 +658,7 @@
"Settings_device_Scanners_desync": "⚠ Los horarios del escáner de los dispositivos no están sincronizados.",
"Settings_device_Scanners_desync_popup": "Los horarios de escáneres de dispositivos (<code> *_RUN_SCHD</code> ) no son lo mismo. Esto resultará en notificaciones inconsistentes del dispositivo en línea/fuera de línea. A menos que sea así, utilice el mismo horario para todos los habilitados.<b> 🔍Escáneres de dispositivos</b> .",
"Speedtest_Results": "Resultados de la prueba de velocidad",
"Systeminfo_AvailableIps": "",
"Systeminfo_CPU": "CPU",
"Systeminfo_CPU_Cores": "Núcleos de CPU:",
"Systeminfo_CPU_Name": "Nombre de la CPU:",
@@ -791,9 +792,10 @@
"add_icon_event_tooltip": "Agregar nuevo icono",
"add_option_event_tooltip": "Añadir nuevo valor",
"copy_icons_event_tooltip": "Sobrescribir los iconos de todos los dispositivos con el mismo tipo de dispositivo",
"devices_old": "Volviendo a actualizar....",
"devices_old": "Refrescando . . .",
"general_event_description": "El evento que ha activado puede tardar un poco hasta que finalicen los procesos en segundo plano. La ejecución finalizó una vez que se vacía la cola de ejecución a continuación (consulte el <a href='/maintenance.php#tab_Logging'>registro de errores</a> si encuentra problemas). <br/> <br/> Cola de ejecución:",
"general_event_title": "Ejecutar un evento ad-hoc",
"go_to_device_event_tooltip": "Navegar al dispositivo",
"go_to_node_event_tooltip": "Vaya a la página de Red del nodo indicado",
"new_version_available": "Una nueva versión está disponible.",
"report_guid": "Guía de las notificaciones:",
@@ -801,11 +803,12 @@
"report_select_format": "Selecciona el formato:",
"report_time": "Hora de la notificación:",
"run_event_tooltip": "Activa el ajuste y guarda tus cambios antes de ejecutarlo.",
"select_icon_event_tooltip": "Seleccionar ícono",
"settings_core_icon": "fa-solid fa-gem",
"settings_core_label": "Núcleo",
"settings_device_scanners": "Los escáneres de los dispositivos se utilizan para descubrir dispositivos que escriben en la tabla de base de datos de CurrentScan.",
"settings_device_scanners_icon": "fa-solid fa-magnifying-glass-plus",
"settings_device_scanners_info": "Cargue aún más escáneres de dispositivos con el ajuste <a href=\"/settings.php#LOADED_PLUGINS\">LOADED_PLUGINS</a>",
"settings_device_scanners_info": "Cargue más escáneres de dispositivos con el ajuste <a href=\"/settings.php#LOADED_PLUGINS\">LOADED_PLUGINS</a>",
"settings_device_scanners_label": "Escáneres de dispositivos",
"settings_enabled": "Configuración activada",
"settings_enabled_icon": "fa-solid fa-toggle-on",
@@ -814,7 +817,7 @@
"settings_imported_label": "Configuración importada",
"settings_missing": "No se han cargado todos los ajustes. Carga alta en la base de datos o secuencia de inicio de la app. Haz clic en el botón 🔄 recargar en la parte superior.",
"settings_missing_block": "Error: La configuración no se ha cargado correctamente. Haga clic en el botón de recarga 🔄 en la parte superior, alternativamente, compruebe el registro del navegador para más detalles (F12).",
"settings_old": "Importar ajustes y reiniciar...",
"settings_old": "Importar ajustes y reiniciar. . .",
"settings_other_scanners": "Otros plugins de escáner no relacionados con dispositivos que están activados actualmente.",
"settings_other_scanners_icon": "fa-solid fa-recycle",
"settings_other_scanners_label": "Otros escáneres",
@@ -823,7 +826,7 @@
"settings_publishers_info": "Cargue más editor@s con el ajuste <a href=\"/settings.php#LOADED_PLUGINS\">LOADED_PLUGINS</a>",
"settings_publishers_label": "Editores",
"settings_readonly": "No se puede LEER ni ESCRIBIR <code>app.conf</code>. Intente reiniciar el contenedor y lea la <a href=\"https://github.com/jokob-sk/NetAlertX/blob/main/docs/FILE_PERMISSIONS.md\" target=\"_blank\">documentación de permisos de archivo</a>",
"settings_saved": "<br/>Ajustes guardados. <br/> Recargando... <br/><i class=\"ion ion-ios-loop-strong fa-spin fa-2x fa-fw\"></i> <br/>",
"settings_saved": "<br/>Ajustes guardados. <br/> Recargando. . . <br/><i class=\"ion ion-ios-loop-strong fa-spin fa-2x fa-fw\"></i> <br/>",
"settings_system_icon": "fa-solid fa-gear",
"settings_system_label": "Sistema",
"settings_update_item_warning": "Actualice el valor a continuación. Tenga cuidado de seguir el formato anterior. <b>O la validación no se realiza.</b>",

View File

@@ -9,7 +9,7 @@
"About_Exit": "Se déconnecter",
"About_Title": "Analyse de la sécurité du réseau et cadre de notification",
"AppEvents_AppEventProcessed": "Traité(s)",
"AppEvents_DateTimeCreated": "Découvert le",
"AppEvents_DateTimeCreated": "Identifié",
"AppEvents_Extra": "Extra",
"AppEvents_GUID": "GUID dévénements de l'application",
"AppEvents_Helper1": "Assistant 1",
@@ -107,7 +107,7 @@
"DevDetail_Network_Node_hover": "Sélectionner l'appareil du réseau principal auquel cet appareil est connecté afin de compléter l'arborescence du Réseau.",
"DevDetail_Network_Port_hover": "Le port auquel cet appareil est connecté sur l'appareil du réseau principal. Si vide, une icône Wifi est affichée dans l'arborescence du Réseau.",
"DevDetail_Nmap_Scans": "Scans manuels via Nmap",
"DevDetail_Nmap_Scans_desc": "Vous pouvez lancer des scans NMAP manuels. Vous pouvez aussi programmer des sans réguliers via le plugin Services & Ports (NMAP). Aller dans les <a href='/settings.php' target='_blank'>Paramètres</a> pour plus de details",
"DevDetail_Nmap_Scans_desc": "Vous pouvez lancer des scans NMAP manuels. Vous pouvez aussi programmer des sans réguliers via le plugin Services & Ports (NMAP). Aller dans les <a href=\"https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/nmap_scan\" target=\"_blank\">Docs</a> pour plus de details",
"DevDetail_Nmap_buttonDefault": "Scan par défaut",
"DevDetail_Nmap_buttonDefault_text": "Scan par défaut : NMAP scanne les 1 000 premiers ports pour chaque demande de scan de protocole. Cela couvre environ 93% des ports TCP et 49% des ports UDP (environ 5 secondes)",
"DevDetail_Nmap_buttonDetail": "Scan détaillé",
@@ -301,6 +301,7 @@
"Gen_Cancel": "Annuler",
"Gen_Change": "Changement",
"Gen_Copy": "Lancer",
"Gen_CopyToClipboard": "Copier vers le presse-papier",
"Gen_DataUpdatedUITakesTime": "OK - cela peut prendre du temps à l'interface pour se mettre à jour si un scan est en cours.",
"Gen_Delete": "Supprimer",
"Gen_DeleteAll": "Supprimer tous",
@@ -308,7 +309,9 @@
"Gen_Error": "Erreur",
"Gen_Filter": "Filtrer",
"Gen_Generate": "Générer",
"Gen_InvalidMac": "Adresse MAC invalide.",
"Gen_LockedDB": "Erreur - La base de données est peut-être verrouillée - Vérifier avec les outils de dév via F12 -> Console ou essayer plus tard.",
"Gen_NetworkMask": "Masque réseau",
"Gen_Offline": "Hors ligne",
"Gen_Okay": "OK",
"Gen_Online": "En ligne",
@@ -325,7 +328,8 @@
"Gen_Select": "Sélectionner",
"Gen_SelectIcon": "<i class=\"fa-solid fa-chevron-down fa-fade\"></i>",
"Gen_SelectToPreview": "Sélectionnez pour prévisualiser",
"Gen_Selected_Devices": "Appareils sélectionnés:",
"Gen_Selected_Devices": "Appareils sélectionnés :",
"Gen_Subnet": "Sous-réseau",
"Gen_Switch": "Basculer",
"Gen_Upd": "Mise à jour réussie",
"Gen_Upd_Fail": "Échec de la mise à jour",
@@ -491,8 +495,10 @@
"Navigation_Workflows": "Flux de travail",
"Network_Assign": "Se connecter à ce <i class=\"fa fa-server\"></i> nœud réseau",
"Network_Cant_Assign": "Impossible d'assigner le noeud racine Internet comme enfant d'un noeud.",
"Network_Cant_Assign_No_Node_Selected": "Impossible d'assigner, aucun noeud parent sélectionné.",
"Network_Configuration_Error": "Erreur de configuration",
"Network_Connected": "Appareils connectés",
"Network_Devices": "Appareils réseau",
"Network_ManageAdd": "Ajouter un appareil",
"Network_ManageAdd_Name": "Nom de l'appareil",
"Network_ManageAdd_Name_text": "Nom sans caractère spécial",
@@ -527,6 +533,8 @@
"Network_Root": "Noeud racine",
"Network_Root_Not_Configured": "Pour commencer la configuration de cet écran, sélectionner un type d'appareil réseau, par exemple une <b>Gateway</b>, dans le champ <b>Type</b> de <a href=\"deviceDetails.php?mac=Internet\">l'appareil racine pour Internet</a> <br/><br/> Plus d'informations dans le guide <a href=\"https://github.com/jokob-sk/NetAlertX/blob/main/docs/NETWORK_TREE.md\" target=\"_blank\">Comment configurer votre page Réseau</a>",
"Network_Root_Unconfigurable": "Racine non configurable",
"Network_ShowArchived": "Montrer les archivés",
"Network_ShowOffline": "Montrer les hors ligne",
"Network_Table_Hostname": "Nom de hôte",
"Network_Table_IP": "IP",
"Network_Table_State": "État",
@@ -559,7 +567,7 @@
"Presence_Key_OnlineNow_desc": "Appareil détecté comme étant en ligne lors de la dernière analyse.",
"Presence_Key_OnlinePast": "Passé en ligne",
"Presence_Key_OnlinePastMiss": "Passé en ligne (correspondance manquée)",
"Presence_Key_OnlinePastMiss_desc": "Appareil en ligne dans le passé, mais actuellement hors ligne, mais la session de démarrage pourrait être manquante ou avoir des données contradictoires. (il s'agit peut-être d'un bogue - veuillez soumettre un PR si vous savez comment le corriger - je suis un peu perdu dans le code ici)",
"Presence_Key_OnlinePastMiss_desc": "Appareil en ligne dans le passé, mais actuellement hors ligne, mais la session de démarrage pourrait être manquante ou avoir des données contradictoires.",
"Presence_Key_OnlinePast_desc": "Appareil en ligne dans le passé, mais actuellement hors ligne.",
"Presence_Loading": "Chargement …",
"Presence_Shortcut_AllDevices": "Mes appareils",
@@ -590,6 +598,7 @@
"Settings_device_Scanners_desync": "⚠ La planification des différents scanners d'appareils est désynchronisée.",
"Settings_device_Scanners_desync_popup": "La planification des scanners (<code>*_RUN_SCHD</code>) n'est pas identique entre scanners. Cela va entraîner des notifications en ligne/hors-ligne non cohérentes. À moins que cela soit attendu, utilisez la même planification pour tous les <b>🔍scanners d'appareils</b> activés.",
"Speedtest_Results": "Résultats du test de débit",
"Systeminfo_AvailableIps": "Adresses IP disponibles",
"Systeminfo_CPU": "Processeur",
"Systeminfo_CPU_Cores": "Cœurs de processeur:",
"Systeminfo_CPU_Name": "Nom du processeur:",
@@ -715,6 +724,7 @@
"devices_old": "Rafraichissement…",
"general_event_description": "L'événement que vous avez lancé peut prendre du temps avant que les tâches de fond ne soit terminées. La durée d'exécution finira une fois que la file d'exécution ci-dessous sera vide (consulter les <a href='/maintenance.php#tab_Logging'>journaux d'erreur</a> si vous rencontrez des erreurs). <br/> <br/> File d'exécution:",
"general_event_title": "Lancement d'un événement sur mesure",
"go_to_device_event_tooltip": "Naviguer vers cet appareil",
"go_to_node_event_tooltip": "Aller vers la page Réseau du nœud concerné",
"new_version_available": "Une nouvelle version est disponible.",
"report_guid": "GUID de la notification:",
@@ -722,6 +732,7 @@
"report_select_format": "Sélectionner un format:",
"report_time": "Heure de la notification:",
"run_event_tooltip": "Activez le paramètre et enregistrez vos changements avant de le lancer.",
"select_icon_event_tooltip": "Sélectionner l'icône",
"settings_core_icon": "fa-solid fa-gem",
"settings_core_label": "Principal",
"settings_device_scanners": "Les scanners d'appareils utilisés pour découvrir des appareils, qui écrivent dans la table CurrentScan (scan actuel) de la base de données.",
@@ -748,6 +759,5 @@
"settings_system_icon": "fa-solid fa-gear",
"settings_system_label": "Système",
"settings_update_item_warning": "Mettre à jour la valeur ci-dessous. Veillez à bien suivre le même format qu'auparavant. <b>Il n'y a pas de pas de contrôle.</b>",
"test_event_tooltip": "Enregistrer d'abord vos modifications avant de tester vôtre paramétrage.",
"go_to_device_event_tooltip": "Naviguer vers cet appareil"
"test_event_tooltip": "Enregistrer d'abord vos modifications avant de tester vôtre paramétrage."
}

View File

@@ -9,7 +9,7 @@
"About_Exit": "Esci",
"About_Title": "Scanner di sicurezza di rete e framework di notifica",
"AppEvents_AppEventProcessed": "Elaborato",
"AppEvents_DateTimeCreated": "Scoperto il",
"AppEvents_DateTimeCreated": "Registrato",
"AppEvents_Extra": "Extra",
"AppEvents_GUID": "GUID evento applicazione",
"AppEvents_Helper1": "Aiutante 1",
@@ -72,11 +72,11 @@
"DevDetail_CustomProperties_Title": "Proprietà personalizzate",
"DevDetail_CustomProps_reset_info": "Questa operazione rimuoverà le proprietà personalizzate su questo dispositivo e le ripristinerà al valore predefinito.",
"DevDetail_DisplayFields_Title": "Visualizza",
"DevDetail_EveandAl_AlertAllEvents": "Notifica eventi",
"DevDetail_EveandAl_AlertDown": "Avviso disconnessione",
"DevDetail_EveandAl_AlertAllEvents": "Eventi di allerta",
"DevDetail_EveandAl_AlertDown": "Avviso inattivo",
"DevDetail_EveandAl_Archived": "Archiviato",
"DevDetail_EveandAl_NewDevice": "Nuovo dispositivo",
"DevDetail_EveandAl_NewDevice_Tooltip": "Mostrerà il Nuovo stato del dispositivo e lo include negli elenchi quando il filtro Nuovi dispositivi è attivo. Non influisce sulle notifiche.",
"DevDetail_EveandAl_NewDevice_Tooltip": "Mostra lo stato Nuovo del dispositivo e lo include negli elenchi quando il filtro Nuovi dispositivi è attivo. Non influisce sulle notifiche.",
"DevDetail_EveandAl_RandomMAC": "MAC casuale",
"DevDetail_EveandAl_ScanCycle": "Scansiona dispositivo",
"DevDetail_EveandAl_ScanCycle_a": "Scansiona dispositivo",
@@ -107,7 +107,7 @@
"DevDetail_Network_Node_hover": "Seleziona il dispositivo di rete principale a cui è connesso il dispositivo corrente per popolare la struttura di rete.",
"DevDetail_Network_Port_hover": "La porta a cui è connesso questo dispositivo sul dispositivo di rete principale. Se lasciato vuoto, verrà visualizzata un'icona Wi-Fi nella struttura di rete.",
"DevDetail_Nmap_Scans": "Scansioni Nmap manuali",
"DevDetail_Nmap_Scans_desc": "Qui puoi eseguire scansioni manuali NMAP. Puoi anche pianificare scansioni automatiche NMAP attraverso il plugin Servizi e porte (NMAP). Vai alle <a href='/settings.php' target='_blank'>Impostazioni</a> per scoprire di più",
"DevDetail_Nmap_Scans_desc": "Qui puoi eseguire scansioni manuali NMAP. Puoi anche pianificare scansioni automatiche NMAP attraverso il plugin Servizi e porte (NMAP). Vai alla <a href=\"https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/nmap_scan\" target=\"_blank\">Documentazione</a> per saperne di più",
"DevDetail_Nmap_buttonDefault": "Scansione predefinita",
"DevDetail_Nmap_buttonDefault_text": "Scansione predefinita: Nmap scansiona 1000 porte per ogni protocollo richiesto. Questo dovrebbe coprire circa il 93% delle porte TCP e il 49% delle porte UDP (circa 5 secondi)",
"DevDetail_Nmap_buttonDetail": "Scansione dettagliata",
@@ -201,7 +201,7 @@
"Device_MultiEdit_MassActions": "Azioni di massa:",
"Device_MultiEdit_Tooltip": "Attento. Facendo clic verrà applicato il valore sulla sinistra a tutti i dispositivi selezionati sopra.",
"Device_Searchbox": "Cerca",
"Device_Shortcut_AllDevices": "Miei dispositivi",
"Device_Shortcut_AllDevices": "I miei dispositivi",
"Device_Shortcut_AllNodes": "Tutti i nodi",
"Device_Shortcut_Archived": "Archiviati",
"Device_Shortcut_Connected": "Connessi",
@@ -301,6 +301,7 @@
"Gen_Cancel": "Annulla",
"Gen_Change": "Modifica",
"Gen_Copy": "Esegui",
"Gen_CopyToClipboard": "Copia negli appunti",
"Gen_DataUpdatedUITakesTime": "OK: l'aggiornamento dell'interfaccia utente potrebbe richiedere del tempo se è in esecuzione una scansione.",
"Gen_Delete": "Elimina",
"Gen_DeleteAll": "Elimina tutti",
@@ -308,7 +309,9 @@
"Gen_Error": "Errore",
"Gen_Filter": "Filtro",
"Gen_Generate": "Genera",
"Gen_InvalidMac": "Indirizzo Mac non valido.",
"Gen_LockedDB": "ERRORE: il DB potrebbe essere bloccato, controlla F12 Strumenti di sviluppo -> Console o riprova più tardi.",
"Gen_NetworkMask": "Maschera di rete",
"Gen_Offline": "Offline",
"Gen_Okay": "Ok",
"Gen_Online": "Online",
@@ -326,6 +329,7 @@
"Gen_SelectIcon": "<i class=\"fa-solid fa-chevron-down fa-fade\"></i>",
"Gen_SelectToPreview": "Seleziona per anteprima",
"Gen_Selected_Devices": "Dispositivi selezionati:",
"Gen_Subnet": "Sottorete",
"Gen_Switch": "Cambia",
"Gen_Upd": "Aggiornato correttamente",
"Gen_Upd_Fail": "Aggiornamento fallito",
@@ -338,9 +342,9 @@
"Gen_create_new_device_info": "I dispositivi vengono generalmente rilevati utilizzando <a target=\"_blank\" href=\"https://github.com/jokob-sk/NetAlertX/tree/main/docs/PLUGINS.md\">plugin</a>. Tuttavia, in alcuni casi, potrebbe essere necessario aggiungere manualmente i dispositivi. Per esplorare scenari specifici, consulta la <a target=\"_blank\" href=\"https://github.com/jokob-sk/NetAlertX/blob/main/docs/REMOTE_NETWORKS.md\">documentazione sulle reti remote</a>.",
"General_display_name": "Generale",
"General_icon": "<i class=\"fa fa-gears\"></i>",
"HRS_TO_KEEP_NEWDEV_description": "Questa è un'impostazione di manutenzione <b>ELIMINAZIONE dispositivi</b>. Se abilitata (<code>0</code> è disabilitata), tutti i dispositivi marcati con <b>Nuovo dispositivo</b> verranno eliminati se l'orario della <b>Prima sessione</b> è precedente all'orario di questa impostazione. Usa questa impostazione se vuoi eliminare automaticamente i <b>Nuovi dispositivi</b> dopo <code>X</code> ore.",
"HRS_TO_KEEP_NEWDEV_description": "Questa è un'impostazione di manutenzione che <b>ELIMINA dispositivi</b>. Se abilitata (<code>0</code> è disabilitata), i dispositivi contrassegnati come <b>Nuovo dispositivo</b> verranno eliminati se la loro <b>Prima sessione</b> è antecedente alle ore specificate in questa impostazione. Utilizza questa impostazione se vuoi eliminare automaticamente i <b>Nuovi dispositivi</b> dopo <code>X</code> ore.",
"HRS_TO_KEEP_NEWDEV_name": "Elimina nuovi dispositivi dopo",
"HRS_TO_KEEP_OFFDEV_description": "Questa è un'impostazione di manutenzione <b>ELIMINAZIONE dispositivi</b>. Se abilitata (<code>0</code> è disabilitata), i dispositivi che sono <b>Offline</b> e la loro data e ora <b>Ultima connessione</b> sono più vecchi delle ore specificate in questa impostazione saranno eliminati. Usa questa impostazione se vuoi eliminare automaticamente <b>Dispositivi offline</b> dopo <code>X</code> ore trascorse offline.",
"HRS_TO_KEEP_OFFDEV_description": "Questa è un'impostazione di manutenzione che <b>ELIMINA dispositivi</b>. Se abilitata (<code>0</code> è disabilitata), i dispositivi <b>Offline</b> la cui data e ora di <b>Ultima connessione</b> sono antecedenti alle ore specificate in questa impostazione, verranno eliminati. Utilizza questa impostazione se vuoi eliminare automaticamente i <b>Dispositivi offline</b> dopo <code>X</code> ore trascorse offline.",
"HRS_TO_KEEP_OFFDEV_name": "Elimina dispositivi offline dopo",
"LOADED_PLUGINS_description": "Quali Plugin caricare. L'aggiunta di plugin potrebbe rallentare l'applicazione. Leggi di più su quali plugin necessitano di essere abilitati, tipi e opzioni di scansione nella <a target=\"_blank\" href=\"https://github.com/jokob-sk/NetAlertX/tree/main/docs/PLUGINS.md\">documentazione plugin</a>. I plugin disinstallati perdono la loro configurazione. Solo i plugin <code>disabilitati</code> possono essere disinstallati.",
"LOADED_PLUGINS_name": "Plugin caricati",
@@ -372,12 +376,12 @@
"Maintenance_Running_Version": "Versione installata",
"Maintenance_Status": "Stato",
"Maintenance_Title": "Strumenti di manutenzione",
"Maintenance_Tool_DownloadConfig": "Impostazioni Esporta",
"Maintenance_Tool_DownloadConfig": "Esportazione delle impostazioni",
"Maintenance_Tool_DownloadConfig_text": "Scarica un backup completo della configurazione delle tue Impostazioni memorizzata nel file <code>app.conf</code>.",
"Maintenance_Tool_DownloadWorkflows": "Esportazione flussi di lavoro",
"Maintenance_Tool_DownloadWorkflows": "Esportazione del flusso di lavoro",
"Maintenance_Tool_DownloadWorkflows_text": "Scarica un backup completo dei tuoi flussi di lavoro archiviati nel file <code>workflows.json</code>.",
"Maintenance_Tool_ExportCSV": "Esporta dispositivi (csv)",
"Maintenance_Tool_ExportCSV_noti": "Esporta dispositivi (csv)",
"Maintenance_Tool_ExportCSV": "Esportazione dispositivi (csv)",
"Maintenance_Tool_ExportCSV_noti": "Esportazione dispositivi (csv)",
"Maintenance_Tool_ExportCSV_noti_text": "Sei sicuro di voler generare un file CSV?",
"Maintenance_Tool_ExportCSV_text": "Genera un file CSV (comma separated value) contenente la lista dei dispositivi incluse le relazioni di rete tra i nodi di rete e i dispositivi connessi. Puoi anche eseguire questa azione accedendo all'URL <code>il_tuo_NetAlertX/php/server/devices.php?action=ExportCSV</code> o abilitando il plugin <a href=\"settings.php#CSVBCKP_header\">Backup CSV</a>.",
"Maintenance_Tool_ImportCSV": "Importa dispositivi (csv)",
@@ -471,7 +475,7 @@
"Maintenance_themeselector_lable": "Seleziona skin",
"Maintenance_themeselector_text": "Questa modifica avviene lato server, quindi influenza tutti i dispositivi in uso.",
"Maintenance_version": "Aggiornamenti app",
"NETWORK_DEVICE_TYPES_description": "Quali tipi di dispositivo possono essere utilizzati come dispositivi di rete nella vista Rete. Il tipo di dispositivo deve corrispondere esattamente all'impostazione <code>Tipo</code> su un dispositivo specifico nei Dettagli dispositivo. Aggiungilo sul Dispositivo tramite il pulsante <code>+</code>. Non rimuovere i tipi esistenti, aggiungine solo di nuovi.",
"NETWORK_DEVICE_TYPES_description": "Quali tipi di dispositivo possono essere utilizzati come dispositivi di rete nella vista Rete. Il tipo di dispositivo deve corrispondere esattamente all'impostazione <code>Tipo</code> su un dispositivo specifico nei Dettagli dispositivo. Aggiungilo al dispositivo tramite il pulsante <code>+</code>. Non rimuovere i tipi esistenti, aggiungine solo di nuovi.",
"NETWORK_DEVICE_TYPES_name": "Tipi di dispositivi di rete",
"Navigation_About": "Informazioni su",
"Navigation_AppEvents": "Eventi app",
@@ -491,8 +495,10 @@
"Navigation_Workflows": "Workflow",
"Network_Assign": "Connetti al nodo di rete <i class=\"fa fa-server\"></i> sopra",
"Network_Cant_Assign": "Impossibile assegnare il nodo Internet root come nodo foglia figlio.",
"Network_Cant_Assign_No_Node_Selected": "Impossibile assegnare, nessun nodo padre selezionato.",
"Network_Configuration_Error": "Errore di configurazione",
"Network_Connected": "Dispositivi connessi",
"Network_Devices": "Dispositivi di rete",
"Network_ManageAdd": "Aggiungi dispositivo",
"Network_ManageAdd_Name": "Nome dispositivo",
"Network_ManageAdd_Name_text": "Nome senza caratteri speciali",
@@ -527,6 +533,8 @@
"Network_Root": "Nodo radice",
"Network_Root_Not_Configured": "Seleziona un tipo di dispositivo di rete, ad esempio un <b>Gateway</b>, nel campo <b>Tipo</b> del <a href=\"deviceDetails.php?mac=Internet\">dispositivo root Internet</a> per iniziare a configurare questa schermata. <br/><br/> Ulteriore documentazione è disponibile nella guida <a href=\"https://github.com/jokob-sk/NetAlertX/blob/main/docs/NETWORK_TREE.md\" target=\"_blank\"> Come impostare la tua pagina di rete</a>",
"Network_Root_Unconfigurable": "Radice non configurabile",
"Network_ShowArchived": "Mostra archiviati",
"Network_ShowOffline": "Mostra offline",
"Network_Table_Hostname": "Nome host",
"Network_Table_IP": "IP",
"Network_Table_State": "Stato",
@@ -559,10 +567,10 @@
"Presence_Key_OnlineNow_desc": "Dispositivo rilevato durante l'ultima scansione come online.",
"Presence_Key_OnlinePast": "Online in passato",
"Presence_Key_OnlinePastMiss": "Online in passato (non corrispondente)",
"Presence_Key_OnlinePastMiss_desc": "Dispositivo online in passato, ma attualmente offline, ma la sessione di avvio potrebbe essere mancante o presentare dati in conflitto. (potrebbe trattarsi di un bug: invia una PR se sai come risolverlo, sono un po' perso nel codice qui)",
"Presence_Key_OnlinePastMiss_desc": "Dispositivo online in passato, ma attualmente offline, ma la sessione di avvio potrebbe essere mancante o presentare dati in conflitto.",
"Presence_Key_OnlinePast_desc": "Dispositivo online in passato, ma attualmente offline.",
"Presence_Loading": "Caricamento…",
"Presence_Shortcut_AllDevices": "Miei dispositivi",
"Presence_Shortcut_AllDevices": "I miei dispositivi",
"Presence_Shortcut_Archived": "Archiviati",
"Presence_Shortcut_Connected": "Connessi",
"Presence_Shortcut_Devices": "Dispositivi",
@@ -588,8 +596,9 @@
"Settings_Metadata_Toggle": "Mostra/nascondi i metadati per l'impostazione specificata.",
"Settings_Show_Description": "Mostra descrizione dell'impostazione.",
"Settings_device_Scanners_desync": "⚠ Le pianificazioni dello scanner del dispositivo non sono sincronizzate.",
"Settings_device_Scanners_desync_popup": "Gli orari degli scanner dei dispositivi (<code>*_RUN_SCHD</code>) non sono gli stessi. Questo comporterà notifiche online/offline incoerenti del dispositivo. A meno che ciò non sia previsto, utilizza la stessa pianificazione per tutti gli <b>🔍Scanner dispositivi</b> abilitati.",
"Settings_device_Scanners_desync_popup": "Gli orari degli scanner dei dispositivi (<code>*_RUN_SCHD</code>) non sono gli stessi. Questo comporterà notifiche online/offline incoerenti del dispositivo. A meno che ciò non sia previsto, utilizza la stessa pianificazione per tutti gli <b>🔍 scanner dispositivi</b> abilitati.",
"Speedtest_Results": "Risultati test di velocità",
"Systeminfo_AvailableIps": "IP disponibili",
"Systeminfo_CPU": "CPU",
"Systeminfo_CPU_Cores": "Core CPU:",
"Systeminfo_CPU_Name": "Nome CPU:",
@@ -673,8 +682,8 @@
"UI_ICONS_name": "Icone predefinite",
"UI_LANG_description": "Seleziona la lingua preferita dell'interfaccia utente. Aiuta nella traduzione o suggerisci una nuova lingua sul portale online di <a href=\"https://hosted.weblate.org/projects/pialert/core/\" target=\"_blank\">Weblate</a>.",
"UI_LANG_name": "Lingua UI",
"UI_MY_DEVICES_description": "Dispositivi i cui stati devono essere visualizzati nella visualizzazione predefinita <b>Miei dispositivi</b>.",
"UI_MY_DEVICES_name": "Mostra nella vista Miei dispositivi",
"UI_MY_DEVICES_description": "Dispositivi i cui stati devono essere visualizzati nella visualizzazione predefinita <b>I miei dispositivi</b>.",
"UI_MY_DEVICES_name": "Mostra nella vista I miei dispositivi",
"UI_NOT_RANDOM_MAC_description": "Prefissi MAC che non devono essere contrassegnati come dispositivi casuali. Inserisci ad esempio <code>52</code> per escludere i dispositivi che iniziano con <code>52:xx:xx:xx:xx:xx</code> dall'essere contrassegnati come dispositivi con un indirizzo MAC casuale.",
"UI_NOT_RANDOM_MAC_name": "Non segnalare come casuale",
"UI_PRESENCE_description": "Seleziona quali stati devono essere mostrati nel grafico <b>Presenza dispositivo</b> nella pagina <a href=\"/devices.php\" target=\"_blank\">Dispositivi</a>.",
@@ -715,6 +724,7 @@
"devices_old": "Aggiornamento…",
"general_event_description": "L'evento che hai attivato potrebbe richiedere del tempo prima che i processi in background vengano completati. L'esecuzione è terminata una volta che la coda di esecuzione sottostante si è svuotata (controlla il <a href='/maintenance.php#tab_Logging'>log degli errori</a> se riscontri problemi). <br/> <br/> Coda di esecuzione:",
"general_event_title": "Esecuzione di un evento ad-hoc",
"go_to_device_event_tooltip": "Naviga al dispositivo",
"go_to_node_event_tooltip": "Passa alla pagina Rete del nodo specificato",
"new_version_available": "È disponibile una nuova versione.",
"report_guid": "GUID notifica:",
@@ -722,11 +732,12 @@
"report_select_format": "Seleziona formato:",
"report_time": "Orario notifica:",
"run_event_tooltip": "Abilita l'impostazione e salva le modifiche prima di eseguirla.",
"select_icon_event_tooltip": "Seleziona icona",
"settings_core_icon": "fa-solid fa-gem",
"settings_core_label": "Core",
"settings_device_scanners": "Scanner dei dispositivi utilizzati per rilevare i dispositivi che scrivono nella tabella del database CurrentScan.",
"settings_device_scanners_icon": "fa-solid fa-magnifying-glass-plus",
"settings_device_scanners_info": "Carica ancora più scanner di dispositivi con l'impostazione <a href=\"/settings.php#LOADED_PLUGINS\">LOADED_PLUGINS</a>",
"settings_device_scanners_info": "Carica più scanner di dispositivi con l'impostazione <a href=\"/settings.php#LOADED_PLUGINS\">LOADED_PLUGINS</a>",
"settings_device_scanners_label": "Scanner dispositivi",
"settings_enabled": "Impostazioni abilitate",
"settings_enabled_icon": "fa-solid fa-toggle-on",
@@ -748,6 +759,5 @@
"settings_system_icon": "fa-solid fa-gear",
"settings_system_label": "Sistema",
"settings_update_item_warning": "Aggiorna il valore qui sotto. Fai attenzione a seguire il formato precedente. <b>La convalida non viene eseguita.</b>",
"test_event_tooltip": "Salva le modifiche prima di provare le nuove impostazioni.",
"go_to_device_event_tooltip": "Naviga al dispositivo"
"test_event_tooltip": "Salva le modifiche prima di provare le nuove impostazioni."
}

View File

@@ -301,6 +301,7 @@
"Gen_Cancel": "Avbryt",
"Gen_Change": "",
"Gen_Copy": "Kjør",
"Gen_CopyToClipboard": "",
"Gen_DataUpdatedUITakesTime": "OK - Det kan ta litt tid før brukergrensesnittet oppdateres hvis en skanning kjøres.",
"Gen_Delete": "Slett",
"Gen_DeleteAll": "Slett alle",
@@ -308,7 +309,9 @@
"Gen_Error": "Feil",
"Gen_Filter": "Filter",
"Gen_Generate": "",
"Gen_InvalidMac": "",
"Gen_LockedDB": "FEIL - DB kan være låst - Sjekk F12 Dev tools -> Konsoll eller prøv senere.",
"Gen_NetworkMask": "",
"Gen_Offline": "Frakoblet",
"Gen_Okay": "Ok",
"Gen_Online": "",
@@ -326,6 +329,7 @@
"Gen_SelectIcon": "",
"Gen_SelectToPreview": "",
"Gen_Selected_Devices": "Valgte Enheter:",
"Gen_Subnet": "",
"Gen_Switch": "Bytt",
"Gen_Upd": "Oppdatering vellykket",
"Gen_Upd_Fail": "Oppdatering feilet",
@@ -491,8 +495,10 @@
"Navigation_Workflows": "Arbeidsflyter",
"Network_Assign": "Koble til ovenfor <i class=\"fa fa-server\"></i> nettverksnode",
"Network_Cant_Assign": "Kan ikke tilordne rot-internettnoden som sekundær node.",
"Network_Cant_Assign_No_Node_Selected": "",
"Network_Configuration_Error": "Konfigurasjonsfeil",
"Network_Connected": "Tilkoblede enheter",
"Network_Devices": "",
"Network_ManageAdd": "Legg til enhet",
"Network_ManageAdd_Name": "Enhetsnavn",
"Network_ManageAdd_Name_text": "Navn uten spesialtegn",
@@ -527,6 +533,8 @@
"Network_Root": "Rotnode",
"Network_Root_Not_Configured": "Velg en nettverksenhetstype, for eksempel <b>Gateway</b>, i <b>Type</b> -feltet til <a href=\"deviceDetails.php?mac=Internet\">Internet Root -enheten</a> for å begynne å konfigurere på denne siden. <br/><br/> Mer dokumentasjon finner du i <a href=\"https://github.com/jokob-sk/NetAlertX/blob/main/docs/NETWORK_TREE.md\" target=\"_blank\">Hvordan konfigurere nettverkssiden din</a> guide",
"Network_Root_Unconfigurable": "Ukonfigurerbar rot",
"Network_ShowArchived": "",
"Network_ShowOffline": "",
"Network_Table_Hostname": "Vertsnavn",
"Network_Table_IP": "IP",
"Network_Table_State": "Tilstand",
@@ -590,6 +598,7 @@
"Settings_device_Scanners_desync": "⚠ Enhetsskanning tidsplan er ikke synkronisert lenger.",
"Settings_device_Scanners_desync_popup": "Tidsplanene for enhetsskanning (<code>*_RUN_SCHD</code>) er ikke de samme. Dette vil føre til inkonsekvent enhet på online/offline varsler. Med mindre dette er ment, kan du bruke den samme tidsplanen for alle aktiverte <b> 🔍Enhets-skannere</b>.",
"Speedtest_Results": "Speedtest resultater",
"Systeminfo_AvailableIps": "",
"Systeminfo_CPU": "CPU",
"Systeminfo_CPU_Cores": "CPU-kjerner:",
"Systeminfo_CPU_Name": "CPU-navn:",
@@ -715,6 +724,7 @@
"devices_old": "Oppdaterer...",
"general_event_description": "Hendelsen du har utløst kan ta en stund til før bakgrunnsprosesser er ferdig. Utførelsen ble avsluttet når utførelseskøen nedenfor tømmes (sjekk <a href='/maintenance.php#tab_Logging'>Feillogg</a> Hvis du møter problemer). <br/> <br/> Utførelseskø:",
"general_event_title": "Utfører en ad-hoc hendelse",
"go_to_device_event_tooltip": "",
"go_to_node_event_tooltip": "",
"new_version_available": "",
"report_guid": "Notifikasjons GUID:",
@@ -722,6 +732,7 @@
"report_select_format": "Velg format:",
"report_time": "Notifikasjonstid:",
"run_event_tooltip": "Aktiver innstillingen og lagre endringene først før du kjører den.",
"select_icon_event_tooltip": "",
"settings_core_icon": "fa-solid fa-gem",
"settings_core_label": "Core",
"settings_device_scanners": "Enhets-skannere som brukes til å oppdage enheter som skrives inn i CurrentScan databasetabellen.",

View File

@@ -301,6 +301,7 @@
"Gen_Cancel": "Anuluj",
"Gen_Change": "Zmiana",
"Gen_Copy": "Wykonaj",
"Gen_CopyToClipboard": "",
"Gen_DataUpdatedUITakesTime": "OK Może to potrwać chwilę, zanim interfejs użytkownika się zaktualizuje, jeśli trwa skan.",
"Gen_Delete": "Usuń",
"Gen_DeleteAll": "Usuń wszystko",
@@ -308,7 +309,9 @@
"Gen_Error": "Błąd",
"Gen_Filter": "Filtr",
"Gen_Generate": "Wygeneruj",
"Gen_InvalidMac": "",
"Gen_LockedDB": "Błąd - Baza danych może być zablokowana - Sprawdź narzędzia deweloperskie F12 -> Konsola lub spróbuj później.",
"Gen_NetworkMask": "",
"Gen_Offline": "Niedostępne",
"Gen_Okay": "Ok",
"Gen_Online": "Dostępne",
@@ -326,6 +329,7 @@
"Gen_SelectIcon": "<i class=\"fa-solid fa-chevron-down fa-fade\"></i>",
"Gen_SelectToPreview": "Wybierz, aby podglądnąć",
"Gen_Selected_Devices": "Wybrane urządzenia:",
"Gen_Subnet": "",
"Gen_Switch": "Switch",
"Gen_Upd": "Zaktualizowano pomyślnie",
"Gen_Upd_Fail": "Aktualizacja nie powiodła się",
@@ -491,8 +495,10 @@
"Navigation_Workflows": "Przepływy pracy",
"Network_Assign": "Połącz się z powyższym <i class=\"fa fa-server\"></i> węzłem sieciowym",
"Network_Cant_Assign": "Nie można przypisać głównego węzła internetowego jako podrzędnego węzła liścia.",
"Network_Cant_Assign_No_Node_Selected": "",
"Network_Configuration_Error": "Błąd konfiguracji",
"Network_Connected": "Połączone urządzenia",
"Network_Devices": "",
"Network_ManageAdd": "Dodaj urządzenie",
"Network_ManageAdd_Name": "Nazwa urządzenia",
"Network_ManageAdd_Name_text": "Nazwa bez znaków specjalnych",
@@ -527,6 +533,8 @@
"Network_Root": "Węzeł główny",
"Network_Root_Not_Configured": "Wybierz typ urządzenia sieciowego, na przykład <b>Brama</b>, w polu <b>Typ</b> pole formularza <a href=\"deviceDetails.php?mac=Internet\">urządzenia głównego Internetu</a> aby rozpocząć konfigurację tego widoku. <br/><br/> Więcej informacji znajdziesz w przewodniku <a href=\"https://github.com/jokob-sk/NetAlertX/blob/main/docs/NETWORK_TREE.md\" target=\"_blank\">Jak skonfigurować stronę Sieć </a>",
"Network_Root_Unconfigurable": "Niekonfigurowalny węzeł główny",
"Network_ShowArchived": "",
"Network_ShowOffline": "",
"Network_Table_Hostname": "Nazwa hosta",
"Network_Table_IP": "Adres IP",
"Network_Table_State": "Stan",
@@ -590,6 +598,7 @@
"Settings_device_Scanners_desync": "⚠ Harmonogramy skanerów urządzeń są niezsynchronizowane.",
"Settings_device_Scanners_desync_popup": "Harmonogramy skanerów urządzeń (<code>*_RUN_SCHD</code>) są różne. Może to prowadzić do niespójnych powiadomień o statusie online/offline urządzeń. Jeśli nie jest to zamierzone, proszę używać tego samego harmonogramu dla wszystkich włączonych <b>🔍 Skanerów urządzeń</b>.",
"Speedtest_Results": "Wyniki testu prędkości",
"Systeminfo_AvailableIps": "",
"Systeminfo_CPU": "Procesor CPU",
"Systeminfo_CPU_Cores": "Rdzenie CPU:",
"Systeminfo_CPU_Name": "Nazwa procesora CPU:",
@@ -715,6 +724,7 @@
"devices_old": "Odświeżanie…",
"general_event_description": "Zdarzenie, które wywołałeś, może potrwać chwilę, zanim zakończą się procesy w tle. Wykonanie zostanie zakończone, gdy poniższa kolejka wykonania zostanie opróżniona (jeśli napotkasz problemy, sprawdź <a href='/maintenance.php#tab_Logging'>dziennik błędów</a>). <br/><br/>Kolejka wykonania:",
"general_event_title": "Wykonywanie zdarzenia ad-hoc",
"go_to_device_event_tooltip": "",
"go_to_node_event_tooltip": "Przejdź do strony Sieć danego węzła",
"new_version_available": "Dostępna jest nowa wersja.",
"report_guid": "GUID powiadomienia:",
@@ -722,6 +732,7 @@
"report_select_format": "Wybierz format:",
"report_time": "Czas powiadomienia:",
"run_event_tooltip": "Najpierw włącz to ustawienie i zapisz zmiany, zanim je uruchomisz.",
"select_icon_event_tooltip": "",
"settings_core_icon": "fa-solid fa-gem",
"settings_core_label": "Główne",
"settings_device_scanners": "Skanery urządzeń używane do wykrywania urządzeń, które zapisują dane w tabeli bazy danych CurrentScan.",

View File

@@ -301,6 +301,7 @@
"Gen_Cancel": "Cancelar",
"Gen_Change": "Alterar",
"Gen_Copy": "Executar",
"Gen_CopyToClipboard": "",
"Gen_DataUpdatedUITakesTime": "OK - Pode levar um tempo para a interface do usuário ser atualizada se uma verificação estiver em execução.",
"Gen_Delete": "Excluir",
"Gen_DeleteAll": "Excluir todos",
@@ -308,7 +309,9 @@
"Gen_Error": "Erro",
"Gen_Filter": "Filtro",
"Gen_Generate": "Gerar",
"Gen_InvalidMac": "",
"Gen_LockedDB": "ERRO - O banco de dados pode estar bloqueado - Verifique F12 Ferramentas de desenvolvimento -> Console ou tente mais tarde.",
"Gen_NetworkMask": "",
"Gen_Offline": "Offline",
"Gen_Okay": "Ok",
"Gen_Online": "Online",
@@ -326,6 +329,7 @@
"Gen_SelectIcon": "<i class=\"fa-solid fa-chevron-down fa-fade\"></i>",
"Gen_SelectToPreview": "Selecionar para pré-visualizar",
"Gen_Selected_Devices": "Dispositivos selecionados:",
"Gen_Subnet": "",
"Gen_Switch": "Trocar",
"Gen_Upd": "Atualizado com sucesso",
"Gen_Upd_Fail": "A atualização falhou",
@@ -491,8 +495,10 @@
"Navigation_Workflows": "",
"Network_Assign": "",
"Network_Cant_Assign": "",
"Network_Cant_Assign_No_Node_Selected": "",
"Network_Configuration_Error": "",
"Network_Connected": "",
"Network_Devices": "",
"Network_ManageAdd": "",
"Network_ManageAdd_Name": "",
"Network_ManageAdd_Name_text": "",
@@ -527,6 +533,8 @@
"Network_Root": "",
"Network_Root_Not_Configured": "",
"Network_Root_Unconfigurable": "",
"Network_ShowArchived": "",
"Network_ShowOffline": "",
"Network_Table_Hostname": "",
"Network_Table_IP": "",
"Network_Table_State": "",
@@ -590,6 +598,7 @@
"Settings_device_Scanners_desync": "",
"Settings_device_Scanners_desync_popup": "",
"Speedtest_Results": "",
"Systeminfo_AvailableIps": "",
"Systeminfo_CPU": "",
"Systeminfo_CPU_Cores": "",
"Systeminfo_CPU_Name": "",
@@ -715,6 +724,7 @@
"devices_old": "",
"general_event_description": "",
"general_event_title": "",
"go_to_device_event_tooltip": "",
"go_to_node_event_tooltip": "",
"new_version_available": "",
"report_guid": "",
@@ -722,6 +732,7 @@
"report_select_format": "",
"report_time": "",
"run_event_tooltip": "",
"select_icon_event_tooltip": "",
"settings_core_icon": "",
"settings_core_label": "",
"settings_device_scanners": "",

View File

@@ -9,7 +9,7 @@
"About_Exit": "Зарегистрироваться",
"About_Title": "Сетевой сканер и система уведомлений",
"AppEvents_AppEventProcessed": "Обработанный",
"AppEvents_DateTimeCreated": "Обнаружено",
"AppEvents_DateTimeCreated": "Зарегистрировано",
"AppEvents_Extra": "Дополнительно",
"AppEvents_GUID": "GUID события приложения",
"AppEvents_Helper1": "Помощник 1",
@@ -66,7 +66,7 @@
"DAYS_TO_KEEP_EVENTS_name": "Удалить события старше",
"DISCOVER_PLUGINS_description": "Отключите эту опцию, чтобы ускорить инициализацию и сохранение настроек. При отключении этой опции плагины не обнаруживаются, и вы не можете добавлять новые плагины в параметр <code>LOADED_PLUGINS</code>.",
"DISCOVER_PLUGINS_name": "Обзор плагинов",
"DevDetail_Children_Title": "",
"DevDetail_Children_Title": "Дочерние отношения",
"DevDetail_Copy_Device_Title": "Скопировать данные с устройства",
"DevDetail_Copy_Device_Tooltip": "Скопируйте данные с устройства из раскрывающегося списка. Все на этой странице будет перезаписано",
"DevDetail_CustomProperties_Title": "Пользовательские свойства",
@@ -79,7 +79,7 @@
"DevDetail_EveandAl_NewDevice_Tooltip": "Будет показывать статус «Новое» для устройства и включать его в списки, когда фильтр «Новые устройства» активен. Не влияет на уведомления.",
"DevDetail_EveandAl_RandomMAC": "Случайный MAC-адрес",
"DevDetail_EveandAl_ScanCycle": "Сканировать устройство",
"DevDetail_EveandAl_ScanCycle_a": "Сканировать Устройство",
"DevDetail_EveandAl_ScanCycle_a": "Сканировать устройство",
"DevDetail_EveandAl_ScanCycle_z": "Не сканировать устройство",
"DevDetail_EveandAl_Skip": "Пропустить повторные уведомления",
"DevDetail_EveandAl_Title": "Конфигурация событий и оповещений",
@@ -103,7 +103,7 @@
"DevDetail_MainInfo_Type": "Тип",
"DevDetail_MainInfo_Vendor": "Поставщик",
"DevDetail_MainInfo_mac": "MAC адрес",
"DevDetail_NavToChildNode": "",
"DevDetail_NavToChildNode": "Открыть дочерний узел",
"DevDetail_Network_Node_hover": "Выберите родительское сетевое устройство, к которому подключено текущее устройство, чтобы заполнить дерево сети.",
"DevDetail_Network_Port_hover": "Порт, к которому подключено это устройство на родительском сетевом устройстве. Если оставить пустым, в дереве сети отобразится значок Wi-Fi.",
"DevDetail_Nmap_Scans": "Ручные сканеры Nmap",
@@ -202,7 +202,7 @@
"Device_MultiEdit_Tooltip": "Осторожно. При нажатии на эту кнопку значение слева будет применено ко всем устройствам, выбранным выше.",
"Device_Searchbox": "Поиск",
"Device_Shortcut_AllDevices": "Мои устройства",
"Device_Shortcut_AllNodes": "",
"Device_Shortcut_AllNodes": "Все узлы",
"Device_Shortcut_Archived": "Архив",
"Device_Shortcut_Connected": "Подключенные",
"Device_Shortcut_Devices": "Устройства",
@@ -229,11 +229,11 @@
"Device_TableHead_Name": "Имя",
"Device_TableHead_NetworkSite": "Сайт устройства",
"Device_TableHead_Owner": "Владелец",
"Device_TableHead_ParentRelType": "",
"Device_TableHead_ParentRelType": "Тип отношений",
"Device_TableHead_Parent_MAC": "Родительский узел сети",
"Device_TableHead_Port": "Порт",
"Device_TableHead_PresentLastScan": "Присутствие",
"Device_TableHead_ReqNicsOnline": "",
"Device_TableHead_ReqNicsOnline": "Требуется NIC онлайн",
"Device_TableHead_RowID": "ID строки",
"Device_TableHead_Rowid": "ID строки",
"Device_TableHead_SSID": "SSID",
@@ -301,6 +301,7 @@
"Gen_Cancel": "Отмена",
"Gen_Change": "Изменить",
"Gen_Copy": "Запустить",
"Gen_CopyToClipboard": "",
"Gen_DataUpdatedUITakesTime": "ОК - Обновление UI может занять некоторое время, если сканирование выполняется.",
"Gen_Delete": "Удалить",
"Gen_DeleteAll": "Удалить все",
@@ -308,7 +309,9 @@
"Gen_Error": "Ошибка",
"Gen_Filter": "Фильтр",
"Gen_Generate": "Генерировать",
"Gen_InvalidMac": "",
"Gen_LockedDB": "ОШИБКА - Возможно, база данных заблокирована. Проверьте инструменты разработчика F12 -> Консоль или повторите попытку позже.",
"Gen_NetworkMask": "",
"Gen_Offline": "Оффлайн",
"Gen_Okay": "OK",
"Gen_Online": "Онлайн",
@@ -326,6 +329,7 @@
"Gen_SelectIcon": "<i class=\"fa-solid fa-chevron-down fa-fade\"></i>",
"Gen_SelectToPreview": "Выберите для предварительного просмотра",
"Gen_Selected_Devices": "Выбранные устройства:",
"Gen_Subnet": "",
"Gen_Switch": "Переключить",
"Gen_Upd": "Успешное обновление",
"Gen_Upd_Fail": "Не удалось обновить",
@@ -491,8 +495,10 @@
"Navigation_Workflows": "Рабочие процессы",
"Network_Assign": "Подключитесь к указанному выше сетевому узлу <i class=\"fa fa-server\"></i>",
"Network_Cant_Assign": "Невозможно назначить корневой узел Интернета в качестве дочернего конечного узла.",
"Network_Cant_Assign_No_Node_Selected": "Невозможно назначить, не выбран узел-родитель.",
"Network_Configuration_Error": "Ошибка конфигурации",
"Network_Connected": "Подключенные устройства",
"Network_Devices": "Сетевые устройства",
"Network_ManageAdd": "Добавить устройство",
"Network_ManageAdd_Name": "Имя устройства",
"Network_ManageAdd_Name_text": "Имя без специальных символов",
@@ -527,6 +533,8 @@
"Network_Root": "Корневой узел",
"Network_Root_Not_Configured": "Выберите тип сетевого устройства, например <b>Шлюз</b>, в поле <b>Тип</b> <a href=\"deviceDetails.php?mac=Internet\">корневого Интернет-устройства</a>, чтобы начать настройку этого экрана. <br/><br/> Дополнительную документацию можно найти в руководстве <a href=\"https://github.com/jokob-sk/NetAlertX/blob/main/docs/NETWORK_TREE.md\" target=\"_blank \">Как настроить свою сетевую страницу</a>",
"Network_Root_Unconfigurable": "Ненастраиваемый ROOT",
"Network_ShowArchived": "Показать архивные",
"Network_ShowOffline": "Показать офлайн устройства",
"Network_Table_Hostname": "Имя хоста",
"Network_Table_IP": "IP",
"Network_Table_State": "Состояние",
@@ -590,6 +598,7 @@
"Settings_device_Scanners_desync": "⚠ Расписания сканера устройств не синхронизированы.",
"Settings_device_Scanners_desync_popup": "Расписания сканеров устройств (<code>*_RUN_SCHD</code>) не совпадают. Это приведет к несогласованным онлайн/оффлайн уведомлениям устройства. Если это не предусмотрено, используйте одно и то же расписание для всех включенных <b>🔍Сканеров устройств</b>.",
"Speedtest_Results": "Результаты теста скорости",
"Systeminfo_AvailableIps": "",
"Systeminfo_CPU": "CPU",
"Systeminfo_CPU_Cores": "Ядра CPU:",
"Systeminfo_CPU_Name": "Имя CPU:",
@@ -715,6 +724,7 @@
"devices_old": "Актуализируется…",
"general_event_description": "Событие, которое вы инициировали, может занять некоторое время, прежде чем фоновые процессы завершатся. Выполнение завершится, как только очередь выполнения, указанная ниже, опустеет (Проверьте <a href='/maintenance.php#tab_Logging'>журнал ошибок</a> при возникновении проблем). <br/> <br/>· · Очередь выполнения:",
"general_event_title": "Выполнение специального события",
"go_to_device_event_tooltip": "Перейти к устройству",
"go_to_node_event_tooltip": "Переход на страницу \"Сеть\" данного узла",
"new_version_available": "Доступна новая версия.",
"report_guid": "Идентификатор уведомления:",
@@ -722,6 +732,7 @@
"report_select_format": "Выбрать формат:",
"report_time": "Время уведомления:",
"run_event_tooltip": "Включите настройку и сначала сохраните изменения, прежде чем запускать ее.",
"select_icon_event_tooltip": "Выбрать значок",
"settings_core_icon": "fa-solid fa-gem",
"settings_core_label": "Основные",
"settings_device_scanners": "Сканеры устройств, используемые для обнаружения устройств, записывающих данные в таблицу базы данных CurrentScan.",
@@ -749,4 +760,4 @@
"settings_system_label": "Система",
"settings_update_item_warning": "Обновить значение ниже. Будьте осторожны, следуя предыдущему формату. <b>Проверка не выполняется.</b>",
"test_event_tooltip": "Сначала сохраните изменения, прежде чем проверять настройки."
}
}

View File

@@ -301,6 +301,7 @@
"Gen_Cancel": "İptal",
"Gen_Change": "Değiştir",
"Gen_Copy": "Çalıştır",
"Gen_CopyToClipboard": "",
"Gen_DataUpdatedUITakesTime": "TAMAM - Eğer bir tarama çalışıyorsa arayüzün güncellenmesi biraz zaman alabilir.",
"Gen_Delete": "Sil",
"Gen_DeleteAll": "Tümünü sil",
@@ -308,7 +309,9 @@
"Gen_Error": "Hata",
"Gen_Filter": "Filtre",
"Gen_Generate": "Oluştur",
"Gen_InvalidMac": "",
"Gen_LockedDB": "HATA - Veritabanı kilitlenmiş olabilir - F12 Geliştirici araçlarını -> Konsol kısmını kontrol edin veya daha sonra tekrar deneyin.",
"Gen_NetworkMask": "",
"Gen_Offline": "Çevrimdışı",
"Gen_Okay": "Tamam",
"Gen_Online": "Çevrimiçi",
@@ -326,6 +329,7 @@
"Gen_SelectIcon": "<i class=\"fa-solid fa-chevron-down fa-fade\"></i>",
"Gen_SelectToPreview": "Önizleme yapmak için seçin",
"Gen_Selected_Devices": "Seçilmiş Cihazlar:",
"Gen_Subnet": "",
"Gen_Switch": "Switch",
"Gen_Upd": "Başarılı bir şekilde güncellendi",
"Gen_Upd_Fail": "Güncelleme işlemi başarısız oldu",
@@ -491,8 +495,10 @@
"Navigation_Workflows": "İş Akışları",
"Network_Assign": "Yukarıdakilere bağlanın <i class=\"fa fa-server\"></i> Ağ düğümü",
"Network_Cant_Assign": "",
"Network_Cant_Assign_No_Node_Selected": "",
"Network_Configuration_Error": "Kurulum Hatası",
"Network_Connected": "Bağlanmış cihazlar",
"Network_Devices": "",
"Network_ManageAdd": "Cihaz Ekle",
"Network_ManageAdd_Name": "Cihaz İsmi",
"Network_ManageAdd_Name_text": "Özel karakterler olmadan isim veriniz",
@@ -527,6 +533,8 @@
"Network_Root": "",
"Network_Root_Not_Configured": "",
"Network_Root_Unconfigurable": "",
"Network_ShowArchived": "",
"Network_ShowOffline": "",
"Network_Table_Hostname": "",
"Network_Table_IP": "",
"Network_Table_State": "",
@@ -590,6 +598,7 @@
"Settings_device_Scanners_desync": "",
"Settings_device_Scanners_desync_popup": "",
"Speedtest_Results": "",
"Systeminfo_AvailableIps": "",
"Systeminfo_CPU": "",
"Systeminfo_CPU_Cores": "",
"Systeminfo_CPU_Name": "",
@@ -715,6 +724,7 @@
"devices_old": "Yenileniyor...",
"general_event_description": "",
"general_event_title": "",
"go_to_device_event_tooltip": "",
"go_to_node_event_tooltip": "",
"new_version_available": "",
"report_guid": "",
@@ -722,6 +732,7 @@
"report_select_format": "",
"report_time": "Bildirim zamanı:",
"run_event_tooltip": "",
"select_icon_event_tooltip": "",
"settings_core_icon": "",
"settings_core_label": "",
"settings_device_scanners": "",

View File

@@ -9,7 +9,7 @@
"About_Exit": "Вийти",
"About_Title": "Сканер безпеки мережі та структура сповіщень",
"AppEvents_AppEventProcessed": "Оброблено",
"AppEvents_DateTimeCreated": "Виявлено",
"AppEvents_DateTimeCreated": "Зареєстровано",
"AppEvents_Extra": "Екстра",
"AppEvents_GUID": "GUID події програми",
"AppEvents_Helper1": "Помічник 1",
@@ -73,23 +73,23 @@
"DevDetail_CustomProps_reset_info": "Це призведе до видалення настроюваних властивостей на цьому пристрої та скидання їх до значень за замовчуванням.",
"DevDetail_DisplayFields_Title": "Дисплей",
"DevDetail_EveandAl_AlertAllEvents": "Повідомлення про події",
"DevDetail_EveandAl_AlertDown": "Сповіщення вниз",
"DevDetail_EveandAl_AlertDown": "Агент вниз",
"DevDetail_EveandAl_Archived": "Архівовано",
"DevDetail_EveandAl_NewDevice": "Новий пристрій",
"DevDetail_EveandAl_NewDevice": "Новий пристроїв",
"DevDetail_EveandAl_NewDevice_Tooltip": "Відображатиме новий статус для пристрою та включатиме його до списків, коли фільтр нових пристроїв активний. Не впливає на сповіщення.",
"DevDetail_EveandAl_RandomMAC": "Випадковий MAC",
"DevDetail_EveandAl_ScanCycle": "скануючий пристрій",
"DevDetail_EveandAl_ScanCycle": "Скануючий пристрій",
"DevDetail_EveandAl_ScanCycle_a": "Пристрій сканування",
"DevDetail_EveandAl_ScanCycle_z": "Не сканувати пристрій",
"DevDetail_EveandAl_Skip": "Пропустити повторні сповіщення для",
"DevDetail_EveandAl_Title": "Конфігурація сповіщень",
"DevDetail_Events_CheckBox": "Приховати події підключення",
"DevDetail_GoToNetworkNode": "Перейдіть на сторінку Мережа даного вузла.",
"DevDetail_Icon": "значок",
"DevDetail_Icon": "Значок",
"DevDetail_Icon_Descr": "Введіть чудову назву значка шрифту без префікса fa- або з повним класом, наприклад: fa fa-бренди fa-яблуко.",
"DevDetail_Loading": "Завантаження…",
"DevDetail_MainInfo_Comments": "Коментарі",
"DevDetail_MainInfo_Favorite": "улюблений",
"DevDetail_MainInfo_Favorite": "Улюблений",
"DevDetail_MainInfo_Group": "Група",
"DevDetail_MainInfo_Location": "Розташування",
"DevDetail_MainInfo_Name": "Ім'я",
@@ -107,7 +107,7 @@
"DevDetail_Network_Node_hover": "Виберіть батьківський мережевий пристрій, до якого підключено поточний пристрій, щоб заповнити дерево мережі.",
"DevDetail_Network_Port_hover": "Порт, до якого підключено цей пристрій на батьківському мережевому пристрої. Якщо залишити пустим, у дереві мережі відобразиться значок Wi-Fi.",
"DevDetail_Nmap_Scans": "Сканування Nmap вручну",
"DevDetail_Nmap_Scans_desc": "Тут ви можете виконувати сканування NMAP вручну. Ви також можете запланувати регулярне автоматичне сканування NMAP за допомогою плагіна Services & Ports (NMAP). Перейдіть до <a href='/settings.php' target='_blank'>Налаштувань</a>, щоб дізнатися більше",
"DevDetail_Nmap_Scans_desc": "Тут ви можете виконувати ручні сканування NMAP. Ви також можете запланувати регулярні автоматичні сканування NMAP за допомогою плагіна Services & Ports (NMAP). Щоб дізнатися більше, перейдіть до <a href=\"https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/nmap_scan\" target=\"_blank\">Документації</a>",
"DevDetail_Nmap_buttonDefault": "Сканування за замовчуванням",
"DevDetail_Nmap_buttonDefault_text": "Сканування за замовчуванням: Nmap сканує 1000 найпопулярніших портів для кожного запитуваного протоколу сканування. Це перехоплює приблизно 93% портів TCP і 49% портів UDP. (приблизно 5 секунд)",
"DevDetail_Nmap_buttonDetail": "Детальне сканування",
@@ -136,7 +136,7 @@
"DevDetail_SessionTable_Disconnection": "Відключення",
"DevDetail_SessionTable_Duration": "Тривалість",
"DevDetail_SessionTable_IP": "IP",
"DevDetail_SessionTable_Order": "порядок",
"DevDetail_SessionTable_Order": "Порядок",
"DevDetail_Shortcut_CurrentStatus": "Поточний статус",
"DevDetail_Shortcut_DownAlerts": "Сповіщення про падіння",
"DevDetail_Shortcut_Presence": "Присутність",
@@ -156,7 +156,7 @@
"DevDetail_Tab_NmapTableService": "Сервіс",
"DevDetail_Tab_NmapTableState": "Держава",
"DevDetail_Tab_NmapTableText": "Налаштуйте розклад у <a href=\"/settings.php#NMAP_ACTIVE\">Settings</a>",
"DevDetail_Tab_NmapTableTime": "час",
"DevDetail_Tab_NmapTableTime": "Час",
"DevDetail_Tab_Plugins": "Плагіни",
"DevDetail_Tab_Presence": "Присутність",
"DevDetail_Tab_Sessions": "Сеанси",
@@ -185,7 +185,7 @@
"DevDetail_button_AddIcon": "Додати новий значок",
"DevDetail_button_AddIcon_Help": "Вставте HTML-тег SVG або значок HTML-тегу Font Awesome. Щоб дізнатися більше, прочитайте <a href=\"https://github.com/jokob-sk/NetAlertX/blob/main/docs/ICONS.md\" target=\"_blank\">документацію щодо значків</a>.",
"DevDetail_button_AddIcon_Tooltip": "Додайте нову піктограму до цього пристрою, яка ще не доступна в спадному меню.",
"DevDetail_button_Delete": "Видалити пристрій",
"DevDetail_button_Delete": "Видалити Пристрій",
"DevDetail_button_DeleteEvents": "Видалити події",
"DevDetail_button_DeleteEvents_Warning": "Ви впевнені, що бажаєте видалити всі події цього пристрою?<br><br>(це очистить <b>історію подій</b> і <b>сеанси</b> та може допомогти з постійними (постійними) ) сповіщення)",
"DevDetail_button_Delete_ask": "Ви впевнені, що хочете видалити цей пристрій? Натомість ви також можете заархівувати його.",
@@ -193,7 +193,7 @@
"DevDetail_button_OverwriteIcons_Tooltip": "Перезаписати піктограми всіх пристроїв одним типом пристрою",
"DevDetail_button_OverwriteIcons_Warning": "Ви впевнені, що бажаєте перезаписати всі піктограми всіх пристроїв тим самим типом пристрою, що й поточний тип пристрою?",
"DevDetail_button_Reset": "Скинути зміни",
"DevDetail_button_Save": "зберегти",
"DevDetail_button_Save": "Зберегти",
"DeviceEdit_ValidMacIp": "Введіть дійсну адресу <b>Mac</b> та <b>IP</b>.",
"Device_MultiEdit": "Мультиредагування",
"Device_MultiEdit_Backup": "Обережно, введення неправильних значень нижче призведе до порушення роботи налаштувань. Спочатку створіть резервну копію бази даних або конфігурації пристроїв (<a href=\"php/server/devices.php?action=ExportCSV\">натисніть, щоб завантажити <i class=\"fa-solid fa-download fa-bounce\"></i></a>). Прочитайте, як відновити пристрої з цього файлу, у <a href=\"https://github.com/jokob-sk/NetAlertX/blob/main/docs/BACKUPS.md#scenario-2-corrupted-database\" target=\"_blank\">документації щодо резервних копій</a>. Щоб застосувати зміни, натисніть значок <b>Зберегти<i class=\"fa-solid fa-save\"></i></b> у кожному полі, яке потрібно оновити.",
@@ -211,15 +211,15 @@
"Device_Shortcut_Favorites": "Вибране",
"Device_Shortcut_NewDevices": "Нові пристрої",
"Device_Shortcut_OnlineChart": "Наявність пристрою",
"Device_TableHead_AlertDown": "Сповіщення вниз",
"Device_TableHead_AlertDown": "Агент Вниз",
"Device_TableHead_Connected_Devices": "Зв'язки",
"Device_TableHead_CustomProps": "Реквізит / дії",
"Device_TableHead_FQDN": "FQDN",
"Device_TableHead_Favorite": "улюблений",
"Device_TableHead_Favorite": "Улюблений",
"Device_TableHead_FirstSession": "Перша сесія",
"Device_TableHead_GUID": "GUID",
"Device_TableHead_Group": "Група",
"Device_TableHead_Icon": "значок",
"Device_TableHead_Icon": "Значок",
"Device_TableHead_LastIP": "Останній IP",
"Device_TableHead_LastIPOrder": "Останнє замовлення IP",
"Device_TableHead_LastSession": "Останній офлайн",
@@ -230,7 +230,7 @@
"Device_TableHead_NetworkSite": "Мережевий сайт",
"Device_TableHead_Owner": "Власник",
"Device_TableHead_ParentRelType": "Тип зв'язку",
"Device_TableHead_Parent_MAC": "Узел родительской сети",
"Device_TableHead_Parent_MAC": "Батьківський мережевий вузол",
"Device_TableHead_Port": "Порт",
"Device_TableHead_PresentLastScan": "Присутність",
"Device_TableHead_ReqNicsOnline": "Вимагати мережевих карт онлайн",
@@ -247,7 +247,7 @@
"Device_Table_nav_next": "Далі",
"Device_Table_nav_prev": "Попередній",
"Device_Tablelenght": "Показати записи _МЕНЮ_",
"Device_Tablelenght_all": "все",
"Device_Tablelenght_all": "Все",
"Device_Title": "Пристрої",
"Devices_Filters": "Фільтри",
"ENABLE_PLUGINS_description": "Вмикає функції <a target=\"_blank\" href=\"https://github.com/jokob-sk/NetAlertX/tree/main/docs/PLUGINS.md\">плагінів</a>. Завантаження плагінів вимагає більше апаратних ресурсів, тому ви можете вимкнути їх у системі з низьким енергоспоживанням.",
@@ -273,26 +273,26 @@
"Events_TableHead_AdditionalInfo": "Додаткова Інформація",
"Events_TableHead_Connection": "Підключення",
"Events_TableHead_Date": "Дата",
"Events_TableHead_Device": "пристрій",
"Events_TableHead_Device": "Пристрій",
"Events_TableHead_Disconnection": "Відключення",
"Events_TableHead_Duration": "Тривалість",
"Events_TableHead_DurationOrder": "Порядок тривалості",
"Events_TableHead_EventType": "Тип Події",
"Events_TableHead_IP": "IP",
"Events_TableHead_IPOrder": "Замовлення IP",
"Events_TableHead_Order": "порядок",
"Events_TableHead_Order": "Порядок",
"Events_TableHead_Owner": "Власник",
"Events_TableHead_PendingAlert": "Сповіщення в очікуванні",
"Events_Table_info": "Показано від _START_ до _END_ із _TOTAL_ записів",
"Events_Table_nav_next": "Далі",
"Events_Table_nav_prev": "Попередній",
"Events_Tablelenght": "Показати записи _МЕНЮ_",
"Events_Tablelenght_all": "все",
"Events_Tablelenght_all": "Все",
"Events_Title": "Події",
"GRAPHQL_PORT_description": "Номер порту сервера GraphQL. Переконайтеся, що порт є унікальним для всіх ваших програм на цьому хості та екземплярах NetAlertX.",
"GRAPHQL_PORT_name": "Порт GraphQL",
"Gen_Action": "Дія",
"Gen_Add": "додати",
"Gen_Add": "Додати",
"Gen_AddDevice": "Додати пристрій",
"Gen_Add_All": "Додати все",
"Gen_All_Devices": "Усі пристрої",
@@ -300,15 +300,18 @@
"Gen_Backup": "Запустіть резервне копіювання",
"Gen_Cancel": "Скасувати",
"Gen_Change": "Зміна",
"Gen_Copy": "бігти",
"Gen_Copy": "Запустити",
"Gen_CopyToClipboard": "Копіювати в буфер обміну",
"Gen_DataUpdatedUITakesTime": "Добре. Оновлення інтерфейсу може зайняти деякий час, якщо сканування виконується.",
"Gen_Delete": "Видалити",
"Gen_DeleteAll": "Видалити все",
"Gen_Description": "опис",
"Gen_Description": "Опис",
"Gen_Error": "Помилка",
"Gen_Filter": "фільтр",
"Gen_Filter": "Фільтр",
"Gen_Generate": "Генерувати",
"Gen_InvalidMac": "Недійсна Mac-адреса.",
"Gen_LockedDB": "ПОМИЛКА БД може бути заблоковано перевірте F12 Інструменти розробника -> Консоль або спробуйте пізніше.",
"Gen_NetworkMask": "Маска мережі",
"Gen_Offline": "Офлайн",
"Gen_Okay": "Гаразд",
"Gen_Online": "Онлайн",
@@ -319,22 +322,23 @@
"Gen_Reset": "Скинути",
"Gen_Restore": "Запустіть Restore",
"Gen_Run": "бігти",
"Gen_Save": "зберегти",
"Gen_Save": "Зберегти",
"Gen_Saved": "Збережено",
"Gen_Search": "Пошук",
"Gen_Select": "Виберіть",
"Gen_SelectIcon": "<i class=\"fa-solid fa-chevron-down fa-fade\"></i>",
"Gen_SelectToPreview": "Виберіть для попереднього перегляду",
"Gen_Selected_Devices": "Вибрані пристрої:",
"Gen_Subnet": "Підмережа",
"Gen_Switch": "Перемикач",
"Gen_Upd": "Оновлено успішно",
"Gen_Upd_Fail": "Не вдалося оновити",
"Gen_Update": "оновлення",
"Gen_Update": "Оновлення",
"Gen_Update_Value": "Оновити значення",
"Gen_ValidIcon": "<i class=\"fa-solid fa-chevron-right \"></i>",
"Gen_Warning": "УВАГА",
"Gen_Warning": "Попередження",
"Gen_Work_In_Progress": "Робота триває, час залишити відгук на https://github.com/jokob-sk/NetAlertX/issues",
"Gen_create_new_device": "новий пристрій",
"Gen_create_new_device": "Новий пристрій",
"Gen_create_new_device_info": "Пристрої зазвичай виявляють за допомогою <a target=\"_blank\" href=\"https://github.com/jokob-sk/NetAlertX/tree/main/docs/PLUGINS.md\">плагінів</a>. Однак у деяких випадках може знадобитися додати пристрої вручну. Щоб дослідити конкретні сценарії, перегляньте <a target=\"_blank\" href=\"https://github.com/jokob-sk/NetAlertX/blob/main/docs/REMOTE_NETWORKS.md\">документацію щодо віддалених мереж</a>.",
"General_display_name": "Загальний",
"General_icon": "<i class=\"fa fa-gears\"></i>",
@@ -357,7 +361,7 @@
"Login_Psw_run": "Щоб змінити пароль, запустіть:",
"Login_Remember": "Пам'ятайте",
"Login_Remember_small": "(дійсний 7 днів)",
"Login_Submit": "авторизуватися",
"Login_Submit": "Авторизуватися",
"Login_Toggle_Alert_headline": "Захист пароля!",
"Login_Toggle_Info": "Інформація про пароль",
"Login_Toggle_Info_headline": "Інформація про пароль",
@@ -473,7 +477,7 @@
"Maintenance_version": "Оновлення програми",
"NETWORK_DEVICE_TYPES_description": "Які типи пристроїв дозволено використовувати як мережеві пристрої в поданні мережі. Тип пристрою має точно відповідати налаштуванню <code>Тип</code> на певному пристрої в Деталях пристрою. Додайте його на пристрій за допомогою кнопки <code>+</code>. Не видаляйте існуючі типи, лише додайте нові.",
"NETWORK_DEVICE_TYPES_name": "Типи мережевих пристроїв",
"Navigation_About": "про",
"Navigation_About": "Про",
"Navigation_AppEvents": "События приложения",
"Navigation_Devices": "Пристрої",
"Navigation_Donations": "Пожертви",
@@ -491,8 +495,10 @@
"Navigation_Workflows": "Робочі процеси",
"Network_Assign": "Підключіться до зазначеного вище <i class=\"fa fa-server\"></i> вузла мережі",
"Network_Cant_Assign": "Неможливо призначити кореневий вузол Інтернету як дочірній кінцевий вузол.",
"Network_Cant_Assign_No_Node_Selected": "Неможливо призначити, не вибрано батьківський вузол.",
"Network_Configuration_Error": "Помилка конфігурації",
"Network_Connected": "Підключені пристрої",
"Network_Devices": "Мережеві пристрої",
"Network_ManageAdd": "Додати пристрій",
"Network_ManageAdd_Name": "Назва пристрою",
"Network_ManageAdd_Name_text": "Назва без спеціальних символів",
@@ -500,7 +506,7 @@
"Network_ManageAdd_Port_text": "залиште порожнім для wifi та powerline",
"Network_ManageAdd_Submit": "Додати пристрій",
"Network_ManageAdd_Type": "Тип пристрою",
"Network_ManageAdd_Type_text": "-- Виберіть тип --",
"Network_ManageAdd_Type_text": "-- Виберіть Тип --",
"Network_ManageAssign": "Призначити",
"Network_ManageDel": "Видалити пристрій",
"Network_ManageDel_Name": "Пристрій для видалення",
@@ -513,7 +519,7 @@
"Network_ManageEdit_Name": "Нова назва пристрою",
"Network_ManageEdit_Name_text": "Назва без спеціальних символів",
"Network_ManageEdit_Port": " Нова кількість портів",
"Network_ManageEdit_Port_text": "залиште порожнім для wifi та powerline",
"Network_ManageEdit_Port_text": "залиште порожнім для Wi-Fi та Powerline",
"Network_ManageEdit_Submit": "Зберегти зміни",
"Network_ManageEdit_Type": "Новий тип пристрою",
"Network_ManageEdit_Type_text": "-- Виберіть тип --",
@@ -527,13 +533,15 @@
"Network_Root": "Кореневий вузол",
"Network_Root_Not_Configured": "Виберіть тип мережевого пристрою, наприклад <b>Шлюз</b>, у полі <b>Тип</b> <a href=\"deviceDetails.php?mac=Internet\">кореневого Інтернет-пристрою</a>, щоб розпочати налаштування цього екрана. <br/><br/> Додаткову документацію можна знайти в <a href=\"https://github.com/jokob-sk/NetAlertX/blob/main/docs/NETWORK_TREE.md\" target=\"_blank\"> Посібник із налаштування сторінки мережі</a>",
"Network_Root_Unconfigurable": "Ненастроюваний root",
"Network_ShowArchived": "Показати архівовані",
"Network_ShowOffline": "Показати офлайн",
"Network_Table_Hostname": "Ім'я хоста",
"Network_Table_IP": "IP",
"Network_Table_State": "Держава",
"Network_Title": "Огляд мережі",
"Network_UnassignedDevices": "Непризначені пристрої",
"Notifications_All": "Усі сповіщення",
"Notifications_Mark_All_Read": "Позначити все як прочитане",
"Notifications_Mark_All_Read": "Позначити як прочитане",
"PIALERT_WEB_PASSWORD_description": "Пароль за умовчанням — <code>123456</code>. Щоб змінити пароль, запустіть <code>/app/back/pialert-cli</code> у контейнері або скористайтеся <a onclick=\"toggleAllSettings()\" href=\"#SETPWD_RUN\"><code>SETPWD_RUN</code> Плагін встановлення пароля</a>.",
"PIALERT_WEB_PASSWORD_name": "Пароль для входу",
"PIALERT_WEB_PROTECTION_description": "Якщо ввімкнено, відображається діалогове вікно входу. Уважно прочитайте нижче, якщо вас заблокують у вашому екземплярі.",
@@ -559,7 +567,7 @@
"Presence_Key_OnlineNow_desc": "Під час останнього сканування пристрій виявлено як онлайн.",
"Presence_Key_OnlinePast": "Минулий онлайн",
"Presence_Key_OnlinePastMiss": "Минулий онлайн (пропущений матч)",
"Presence_Key_OnlinePastMiss_desc": "Пристрій був онлайн, але зараз офлайн, але початковий сеанс може бути відсутнім або містить суперечливі дані. (може бути помилка - будь ласка, надішліть PR, якщо ви знаєте, як це виправити - я трохи загубився в коді тут)",
"Presence_Key_OnlinePastMiss_desc": "Пристрій був онлайн у минулому, але зараз офлайн, але початковий сеанс може бути відсутнім або містити суперечливі дані.",
"Presence_Key_OnlinePast_desc": "Пристрій був онлайн, але зараз офлайн.",
"Presence_Loading": "Завантаження…",
"Presence_Shortcut_AllDevices": "Мої пристрої",
@@ -577,7 +585,7 @@
"REPORT_ERROR": "Сторінка, яку ви шукаєте, тимчасово недоступна, спробуйте ще раз через кілька секунд",
"REPORT_MAIL_description": "Якщо ввімкнено, електронною поштою буде надіслано список змін, на які ви підписалися. Будь ласка, також заповніть усі інші налаштування, пов’язані з налаштуванням SMTP нижче. Якщо виникли проблеми, установіть <code>LOG_LEVEL</code> на <code>debug</code> і перевірте <a href=\"/maintenance.php#tab_Logging\">журнал помилок</a>.",
"REPORT_MAIL_name": "Увімкнути електронну пошту",
"REPORT_TITLE": "звіт",
"REPORT_TITLE": "Звіт",
"RandomMAC_hover": "Автоматично визначено вказує, чи пристрій рандомізує свою MAC-адресу. Ви можете виключити певні MAC-адреси за допомогою параметра UI_NOT_RANDOM_MAC. Натисніть, щоб дізнатися більше.",
"Reports_Sent_Log": "Журнал надісланих звітів",
"SCAN_SUBNETS_description": "Більшість мережевих сканерів (ARP-SCAN, NMAP, NSLOOKUP, DIG) покладаються на сканування конкретних мережевих інтерфейсів і підмереж. Перегляньте <a href=\"https://github.com/jokob-sk/NetAlertX/blob/main/docs/SUBNETS.md\" target=\"_blank\">документацію підмереж</a>, щоб отримати допомогу щодо цього налаштування, особливо VLAN, які VLAN підтримуються або як визначити маску мережі та ваш інтерфейс. <br/> <br/> Альтернативою мережевим сканерам є ввімкнення деяких інших сканерів/імпортерів пристроїв, які не покладаються на доступ NetAlert<sup>X</sup> до мережі (UNIFI, dhcp.leases , PiHole тощо). <br/> <br/> Примітка. Сам час сканування залежить від кількості IP-адрес, які потрібно перевірити, тому ретельно налаштуйте це за допомогою відповідної маски мережі та інтерфейсу.",
@@ -590,11 +598,12 @@
"Settings_device_Scanners_desync": "⚠ Розклади сканування пристрою не синхронізовані.",
"Settings_device_Scanners_desync_popup": "Розклади сканерів пристроїв (<code>*_RUN_SCHD</code>) не однакові. Це призведе до непослідовних сповіщень пристрою онлайн/офлайн. Якщо це не передбачено, використовуйте той самий розклад для всіх увімкнених <b>🔍сканерів пристроїв</b>.",
"Speedtest_Results": "Результати Speedtest",
"Systeminfo_AvailableIps": "Доступні IP-адреси",
"Systeminfo_CPU": "CPU",
"Systeminfo_CPU_Cores": "Ядра ЦП:",
"Systeminfo_CPU_Name": "Назва ЦП:",
"Systeminfo_CPU_Speed": "Швидкість ЦП:",
"Systeminfo_CPU_Temp": "температура процесора:",
"Systeminfo_CPU_Temp": "Температура ЦП:",
"Systeminfo_CPU_Vendor": "Постачальник ЦП:",
"Systeminfo_Client_Resolution": "Роздільна здатність браузера:",
"Systeminfo_Client_User_Agent": "Агент користувача:",
@@ -622,7 +631,7 @@
"Systeminfo_Network_HTTP_Referer": "HTTP реферер:",
"Systeminfo_Network_HTTP_Referer_String": "Немає реферера HTTP",
"Systeminfo_Network_Hardware": "Мережеве обладнання",
"Systeminfo_Network_Hardware_Interface_Mask": "Маска мережі",
"Systeminfo_Network_Hardware_Interface_Mask": "Маска Мережі",
"Systeminfo_Network_Hardware_Interface_Name": "Назва інтерфейсу",
"Systeminfo_Network_Hardware_Interface_RX": "Отримано",
"Systeminfo_Network_Hardware_Interface_TX": "Передано",
@@ -644,23 +653,23 @@
"Systeminfo_Services_Description": "Опис послуги",
"Systeminfo_Services_Name": "Назва служби",
"Systeminfo_Storage": "Зберігання",
"Systeminfo_Storage_Device": "пристрій:",
"Systeminfo_Storage_Device": "Пристрій:",
"Systeminfo_Storage_Mount": "Точка монтування:",
"Systeminfo_Storage_Size": "Розмір:",
"Systeminfo_Storage_Type": "Тип:",
"Systeminfo_Storage_Usage": "Використання сховища",
"Systeminfo_Storage_Usage_Free": "безкоштовно:",
"Systeminfo_Storage_Usage_Free": "Безкоштовно:",
"Systeminfo_Storage_Usage_Mount": "Точка монтування:",
"Systeminfo_Storage_Usage_Total": "Всього:",
"Systeminfo_Storage_Usage_Used": "б:",
"Systeminfo_System": "система",
"Systeminfo_Storage_Usage_Used": "Використано:",
"Systeminfo_System": "Система",
"Systeminfo_System_AVG": "Середнє навантаження:",
"Systeminfo_System_Architecture": "Архітектура:",
"Systeminfo_System_Kernel": "Ядро:",
"Systeminfo_System_OSVersion": "Операційна система:",
"Systeminfo_System_Running_Processes": "Запущені процеси:",
"Systeminfo_System_System": "система:",
"Systeminfo_System_Uname": "ім'я:",
"Systeminfo_System_System": "Система:",
"Systeminfo_System_Uname": "Перейменувати:",
"Systeminfo_System_Uptime": "Час роботи:",
"Systeminfo_This_Client": "Цей клієнт",
"Systeminfo_USB_Devices": "USB-пристрої",
@@ -715,6 +724,7 @@
"devices_old": "Освіжає…",
"general_event_description": "Подія, яку ви ініціювали, може зайняти деякий час, поки завершаться фонові процеси. Виконання завершилося, коли наведена нижче черга виконання спорожнилася (перевірте <a href='/maintenance.php#tab_Logging'>журнал помилок</a>, якщо виникнуть проблеми). <br/> <br/> Черга виконання:",
"general_event_title": "Виконання спеціальної події",
"go_to_device_event_tooltip": "Перейдіть до пристрою",
"go_to_node_event_tooltip": "Перейдіть на сторінку Мережа даного вузла",
"new_version_available": "Доступна нова версія.",
"report_guid": "Довідник сповіщень:",
@@ -722,11 +732,12 @@
"report_select_format": "Виберіть формат:",
"report_time": "Час сповіщення:",
"run_event_tooltip": "Увімкніть налаштування та збережіть зміни, перш ніж запускати його.",
"select_icon_event_tooltip": "Виберіть значок",
"settings_core_icon": "фа-твердий фа-самоцвіт",
"settings_core_label": "Ядро",
"settings_device_scanners": "Сканери пристроїв, які використовуються для виявлення пристроїв, які записують дані в таблицю бази даних CurrentScan.",
"settings_device_scanners_icon": "fa-solid fa-збільшувальне-скло-плюс",
"settings_device_scanners_info": "Завантажте ще більше сканерів пристроїв за допомогою параметра <a href=\"/settings.php#LOADED_PLUGINS\">LOADED_PLUGINS</a>",
"settings_device_scanners_info": "Завантажте більше сканерів пристроїв за допомогою налаштування <a href=\"/settings.php#LOADED_PLUGINS\">LOADED_PLUGINS</a>",
"settings_device_scanners_label": "Сканери пристроїв",
"settings_enabled": "Увімкнені налаштування",
"settings_enabled_icon": "fa-твердий fa-перемикач",
@@ -748,6 +759,5 @@
"settings_system_icon": "фа-твердий фа-передача",
"settings_system_label": "Система",
"settings_update_item_warning": "Оновіть значення нижче. Слідкуйте за попереднім форматом. <b>Перевірка не виконана.</b>",
"test_event_tooltip": "Перш ніж перевіряти налаштування, збережіть зміни.",
"go_to_device_event_tooltip": "Перейдіть до пристрою"
"test_event_tooltip": "Перш ніж перевіряти налаштування, збережіть зміни."
}

View File

@@ -2,13 +2,13 @@
"API_CUSTOM_SQL_description": "您可以指定一个自定义 SQL 查询,它将生成一个 JSON 文件,然后通过 <a href=\"/php/server/query_json.php?file=table_custom_endpoint.json\" target=\"_blank\"><code>table_custom_endpoint.json</code> 文件端点</a> 公开它。",
"API_CUSTOM_SQL_name": "自定义终点",
"API_TOKEN_description": "用于安全通信的API令牌。生成一个或输入任何值。它在请求标头中发送并用于 <code>SYNC</code> 插件、GraphQL服务器和其他API端点中。 您可以使用API端点创建自定义集成详情请参考此 <a href=\"https://github.com/jokob-sk/NetAlertX/blob/main/docs/API.md\" target=\"_blank\">API 文档</a>。",
"API_TOKEN_name": "",
"API_TOKEN_name": "API 令牌",
"API_display_name": "API",
"API_icon": "<i class=\"fa fa-arrow-down-up-across-line\"></i>",
"About_Design": "设计用于:",
"About_Exit": "登出",
"About_Title": "网络安全扫描器和通知框架",
"AppEvents_AppEventProcessed": "",
"AppEvents_AppEventProcessed": "已处理",
"AppEvents_DateTimeCreated": "已记录",
"AppEvents_Extra": "额外的",
"AppEvents_GUID": "应用程序事件 GUID",
@@ -22,7 +22,7 @@
"AppEvents_ObjectPlugin": "链接插件",
"AppEvents_ObjectPrimaryID": "主ID",
"AppEvents_ObjectSecondaryID": "次级ID",
"AppEvents_ObjectStatus": "状态(记录时)",
"AppEvents_ObjectStatus": "登录状态",
"AppEvents_ObjectStatusColumn": "状态栏",
"AppEvents_ObjectType": "对象类型",
"AppEvents_Plugin": "插件",
@@ -47,9 +47,9 @@
"BackDevices_DBTools_DelEventsError": "删除事件时出错",
"BackDevices_DBTools_ImportCSV": "CSV 文件中的设备已成功导入。",
"BackDevices_DBTools_ImportCSVError": "无法导入 CSV 文件。请确保格式正确。",
"BackDevices_DBTools_ImportCSVMissing": "在 <b>/config/devices.csv</b> 下找不到 CSV 文件",
"BackDevices_DBTools_ImportCSVMissing": "在 <b>/config/devices.csv</b> 下找不到 CSV 文件",
"BackDevices_DBTools_Purge": "最旧的备份已被删除",
"BackDevices_DBTools_UpdDev": "设备更新成功",
"BackDevices_DBTools_UpdDev": "设备更新成功。如果正在扫描中,主设备列表可能需要时间重新加载。",
"BackDevices_DBTools_UpdDevError": "更新设备时出错",
"BackDevices_DBTools_Upgrade": "数据库升级成功",
"BackDevices_DBTools_UpgradeError": "数据库升级失败",
@@ -65,14 +65,14 @@
"DAYS_TO_KEEP_EVENTS_description": "这是维护设置。它指定将保留的事件条目的天数。所有较旧的事件将被定期删除。也适用于插件事件历史记录。",
"DAYS_TO_KEEP_EVENTS_name": "删除早于",
"DISCOVER_PLUGINS_description": "禁用此选项可加快初始化和设置保存的速度。当禁用时,插件不会被发现,并且您无法将新插件添加到 <code>LOADED_PLUGINS</code>设置中。",
"DISCOVER_PLUGINS_name": "",
"DevDetail_Children_Title": "",
"DevDetail_Copy_Device_Title": "<i class=\"fa fa-copy\"></i> 从设备复制详细信息",
"DISCOVER_PLUGINS_name": "发现插件",
"DevDetail_Children_Title": "子代关系",
"DevDetail_Copy_Device_Title": "从设备复制详细信息",
"DevDetail_Copy_Device_Tooltip": "从下拉列表中复制设备的详细信息。此页面上的所有内容都将被覆盖",
"DevDetail_CustomProperties_Title": "自定义属性",
"DevDetail_CustomProps_reset_info": "",
"DevDetail_DisplayFields_Title": "",
"DevDetail_EveandAl_AlertAllEvents": "提醒所有事件",
"DevDetail_CustomProps_reset_info": "这将删除此设备上的自定义属性并将其重置为默认值。",
"DevDetail_DisplayFields_Title": "显示",
"DevDetail_EveandAl_AlertAllEvents": "提醒事件",
"DevDetail_EveandAl_AlertDown": "警报关闭",
"DevDetail_EveandAl_Archived": "已归档",
"DevDetail_EveandAl_NewDevice": "新设备",
@@ -87,7 +87,7 @@
"DevDetail_GoToNetworkNode": "导航到指定节点的网络页面。",
"DevDetail_Icon": "图标",
"DevDetail_Icon_Descr": "输入一个不带 fa- 前缀或带有完整类的 Font Awesome 图标名称例如fa fa-brands fa-apple。",
"DevDetail_Loading": "加载中...",
"DevDetail_Loading": "加载中",
"DevDetail_MainInfo_Comments": "评论",
"DevDetail_MainInfo_Favorite": "收藏",
"DevDetail_MainInfo_Group": "组",
@@ -103,11 +103,11 @@
"DevDetail_MainInfo_Type": "类型",
"DevDetail_MainInfo_Vendor": "制造商",
"DevDetail_MainInfo_mac": "MAC",
"DevDetail_NavToChildNode": "",
"DevDetail_NavToChildNode": "开子节点",
"DevDetail_Network_Node_hover": "选择当前设备连接到的父网络设备,以填充网络树。",
"DevDetail_Network_Port_hover": "此设备连接到父网络设备上的端口。如果留空,则网络树中会显示一个 wifi 图标。",
"DevDetail_Nmap_Scans": "手动 Nmap 扫描",
"DevDetail_Nmap_Scans_desc": "您可以在此处执行手动 NMAP 扫描。您还可以通过服务和端口 (NMAP) 插件安排定期自动 NMAP 扫描。前往<a href='/settings.php' target='_blank'>设置</a>了解更多信息",
"DevDetail_Nmap_Scans_desc": "您可以在此处执行手动 NMAP 扫描。您还可以通过服务和端口 (NMAP) 插件安排定期自动 NMAP 扫描。前往<a href= \"https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/nmap_scan\" target=\"_blank\">Docs</a>了解更多信息",
"DevDetail_Nmap_buttonDefault": "默认扫描",
"DevDetail_Nmap_buttonDefault_text": "默认扫描Nmap 会扫描请求的每个扫描协议的前 1,000 个端口。这将捕获大约 93% 的 TCP 端口和 49% 的 UDP 端口。(大约 5 秒)",
"DevDetail_Nmap_buttonDetail": "详细扫描",
@@ -179,7 +179,7 @@
"DevDetail_Tools_WOL": "WoL唤醒 ",
"DevDetail_Tools_WOL_noti": "局域网唤醒",
"DevDetail_Tools_WOL_noti_text": "将唤醒命令被发送到广播地址。如果目标不在 NetAlertX 的子网/VLAN 中,目标设备将不会响应。",
"DevDetail_Type_hover": "设备的类型。您选择任意预定义的网络设备例如AP、防火墙、路由器、交换机...),它们将作为可能的父网络节点显示在网络树配置中。",
"DevDetail_Type_hover": "设备的类型。您选择任意预定义的网络设备例如AP、防火墙、路由器、交换机),它们将作为可能的父网络节点显示在网络树配置中。",
"DevDetail_Vendor_hover": "自动检测制造商。但你可以自定义.",
"DevDetail_WOL_Title": "<i class=\"fa fa-power-off\"></i> 局域网唤醒",
"DevDetail_button_AddIcon": "添加图标",
@@ -188,21 +188,21 @@
"DevDetail_button_Delete": "删除设备",
"DevDetail_button_DeleteEvents": "删除事件",
"DevDetail_button_DeleteEvents_Warning": "您确定要删除此设备的所有事件吗?<br><br>(这将清除<b>事件历史记录</b>和<b>会话</b>,并且可能有助于持续(持久)通知)",
"DevDetail_button_Delete_ask": "",
"DevDetail_button_Delete_ask": "您确认要删除这个设备吗?您也可以归档这个设备。",
"DevDetail_button_OverwriteIcons": "覆盖图标",
"DevDetail_button_OverwriteIcons_Tooltip": "覆盖具有相同设备类型的所有设备的图标",
"DevDetail_button_OverwriteIcons_Warning": "您确定要覆盖与当前设备类型相同的所有设备的所有图标吗?",
"DevDetail_button_Reset": "重置",
"DevDetail_button_Save": "保存",
"DeviceEdit_ValidMacIp": "",
"DeviceEdit_ValidMacIp": "请输入有效的<b>Mac</b>和<b>IP</b>地址。",
"Device_MultiEdit": "编辑",
"Device_MultiEdit_Backup": "小心,输入错误的值将破坏您的设置。请先备份您的数据库或设备配置(<a href=\"php/server/devices.php?action=ExportCSV\">点击下载<i class=\"fa-solid fa-download fa-bounce\"></i></a>)。在<a href=\"https://github.com/jokob-sk/NetAlertX/blob/main/docs/BACKUPS.md#scenario-2-corrupted-database\" target=\"_blank\">备份文档</a>中了解如何从此文件恢复设备。",
"Device_MultiEdit_Backup": "小心,输入错误的值将破坏您的设置。请先备份您的数据库或设备配置(<a href=\"php/server/devices.php?action=ExportCSV\">点击下载<i class=\"fa-solid fa-download fa-bounce\"></i></a>)。在<a href=\"https://github.com/jokob-sk/NetAlertX/blob/main/docs/BACKUPS.md#scenario-2-corrupted-database\" target=\"_blank\">备份文档</a>中了解如何从此文件恢复设备。要应用更改,请在每个需要更新的字段点击<b>保存<i class='fa-solid fa-save'></i></b>图标。",
"Device_MultiEdit_Fields": "编辑:",
"Device_MultiEdit_MassActions": "谨慎操作:",
"Device_MultiEdit_Tooltip": "小心。 单击此按钮会将左侧的值应用到上面选择的所有设备。",
"Device_Searchbox": "搜索",
"Device_Shortcut_AllDevices": "我的设备",
"Device_Shortcut_AllNodes": "",
"Device_Shortcut_AllNodes": "全部节点",
"Device_Shortcut_Archived": "已存档",
"Device_Shortcut_Connected": "在线设备",
"Device_Shortcut_Devices": "设备管理",
@@ -211,10 +211,10 @@
"Device_Shortcut_Favorites": "收藏",
"Device_Shortcut_NewDevices": "新设备",
"Device_Shortcut_OnlineChart": "设备统计",
"Device_TableHead_AlertDown": "",
"Device_TableHead_AlertDown": "提醒宕机",
"Device_TableHead_Connected_Devices": "链接",
"Device_TableHead_CustomProps": "",
"Device_TableHead_FQDN": "",
"Device_TableHead_CustomProps": "属性",
"Device_TableHead_FQDN": "FQDN",
"Device_TableHead_Favorite": "收藏",
"Device_TableHead_FirstSession": "加入",
"Device_TableHead_GUID": "GUID",
@@ -229,34 +229,34 @@
"Device_TableHead_Name": "名字",
"Device_TableHead_NetworkSite": "网络站点",
"Device_TableHead_Owner": "所有者",
"Device_TableHead_ParentRelType": "",
"Device_TableHead_Parent_MAC": "父节点",
"Device_TableHead_ParentRelType": "关系类型",
"Device_TableHead_Parent_MAC": "父网络节点",
"Device_TableHead_Port": "端口",
"Device_TableHead_PresentLastScan": "",
"Device_TableHead_ReqNicsOnline": "",
"Device_TableHead_PresentLastScan": "检测",
"Device_TableHead_ReqNicsOnline": "需要网卡在线",
"Device_TableHead_RowID": "排行",
"Device_TableHead_Rowid": "排行",
"Device_TableHead_SSID": "SSID",
"Device_TableHead_SourcePlugin": "",
"Device_TableHead_SourcePlugin": "源插件",
"Device_TableHead_Status": "状态",
"Device_TableHead_SyncHubNodeName": "同步节点",
"Device_TableHead_Type": "类型",
"Device_TableHead_Vendor": "制造商",
"Device_Table_Not_Network_Device": "未配置为网络设备",
"Device_Table_info": "",
"Device_Table_info": "显示第_START_至 END_条_共_TOTAL_条",
"Device_Table_nav_next": "下一页",
"Device_Table_nav_prev": "上一页",
"Device_Tablelenght": "显示 _MENU_ 页",
"Device_Tablelenght_all": "所有",
"Device_Title": "设备",
"Devices_Filters": "",
"Devices_Filters": "过滤器",
"ENABLE_PLUGINS_description": "启用<a target=\"_blank\" href=\"https://github.com/jokob-sk/NetAlertX/tree/main/docs/PLUGINS.md\">插件</a>功能。加载插件需要更多硬件资源,因此您可能需要在低功耗系统上禁用它们。",
"ENABLE_PLUGINS_name": "启用插件",
"ENCRYPTION_KEY_description": "",
"ENCRYPTION_KEY_name": "",
"ENCRYPTION_KEY_description": "数据密钥。",
"ENCRYPTION_KEY_name": "密钥",
"Email_display_name": "Email",
"Email_icon": "<i class=\"fa fa-at\"></i>",
"Events_Loading": "加载中...",
"Events_Loading": "加载中",
"Events_Periodselect_All": "全部信息",
"Events_Periodselect_LastMonth": "上个月",
"Events_Periodselect_LastWeek": "上星期",
@@ -283,73 +283,77 @@
"Events_TableHead_Order": "排序",
"Events_TableHead_Owner": "所有者",
"Events_TableHead_PendingAlert": "待处理警报",
"Events_Table_info": "",
"Events_Table_info": "显示第_START_至_END_条_共_TOTAL_条",
"Events_Table_nav_next": "下一个",
"Events_Table_nav_prev": "以前的",
"Events_Tablelenght": "",
"Events_Tablelenght": "显示_MENU_条",
"Events_Tablelenght_all": "全部",
"Events_Title": "事件",
"GRAPHQL_PORT_description": "",
"GRAPHQL_PORT_name": "",
"GRAPHQL_PORT_description": "GraphQL服务器的端口号。请确保该端口在该主机和 NetAlertX 实例上的所有应用程序中都是唯一的。",
"GRAPHQL_PORT_name": "GraphQL端口",
"Gen_Action": "动作",
"Gen_Add": "增加",
"Gen_AddDevice": "",
"Gen_AddDevice": "添加设备",
"Gen_Add_All": "全部添加",
"Gen_All_Devices": "所有设备",
"Gen_AreYouSure": "你确定吗?",
"Gen_Backup": "运行备份",
"Gen_Cancel": "取消",
"Gen_Change": "",
"Gen_Change": "修改",
"Gen_Copy": "运行",
"Gen_CopyToClipboard": "",
"Gen_DataUpdatedUITakesTime": "好的 - 如果扫描正在运行UI 可能需要一段时间才能更新。",
"Gen_Delete": "删除",
"Gen_DeleteAll": "全部删除",
"Gen_Description": "",
"Gen_Description": "描述",
"Gen_Error": "错误",
"Gen_Filter": "筛选",
"Gen_Generate": "",
"Gen_Generate": "生成",
"Gen_InvalidMac": "",
"Gen_LockedDB": "错误 - DB 可能被锁定 - 检查 F12 开发工具 -> 控制台或稍后重试。",
"Gen_NetworkMask": "",
"Gen_Offline": "离线",
"Gen_Okay": "Ok",
"Gen_Online": "",
"Gen_Online": "在线",
"Gen_Purge": "清除",
"Gen_ReadDocs": "在文档中阅读更多内容。",
"Gen_Remove_All": "全部删除",
"Gen_Remove_Last": "删除最后一个",
"Gen_Reset": "",
"Gen_Reset": "重置",
"Gen_Restore": "运行恢复",
"Gen_Run": "运行",
"Gen_Save": "保存",
"Gen_Saved": "已保存",
"Gen_Search": "搜索",
"Gen_Select": "",
"Gen_SelectIcon": "",
"Gen_SelectToPreview": "",
"Gen_Select": "选择",
"Gen_SelectIcon": "<i class=\"fa-solid fa-chevron-down fa-fade\"></i>",
"Gen_SelectToPreview": "选择预览",
"Gen_Selected_Devices": "选定的设备:",
"Gen_Subnet": "",
"Gen_Switch": "交换",
"Gen_Upd": "已成功更新",
"Gen_Upd_Fail": "更新失败",
"Gen_Update": "更新",
"Gen_Update_Value": "更新值",
"Gen_ValidIcon": "",
"Gen_ValidIcon": "<i class=\"fa-solid fa-chevron-right \"></i>",
"Gen_Warning": "警告",
"Gen_Work_In_Progress": "工作正在进行中,欢迎在 https://github.com/jokob-sk/NetAlertX/issues 上反馈",
"Gen_create_new_device": "",
"Gen_create_new_device_info": "",
"Gen_create_new_device": "新设备",
"Gen_create_new_device_info": "通常使用<a target=\"_blank\" href=\"https://github.com/jokob-sk/NetAlertX/tree/main/docs/PLUGINS.md\">plugins</a>来发现设备。但是,在某些情况下,您可能需要手动添加设备。要探索特定场景,请查看<a target=\"_blank\" href=\"https://github.com/jokob-sk/NetAlertX/blob/main/docs/REMOTE_NETWORKS.md\">远程网络文档</a>。",
"General_display_name": "通用",
"General_icon": "<i class=\"fa fa-gears\"></i>",
"HRS_TO_KEEP_NEWDEV_description": "这是一项维护设置。如果启用(<code>0</code> 为禁用),则标记为<b>新设备</b>的设备(如果其<b>首次会话</b>时间早于此设置中指定的小时数)将被删除。如果您想在 <code>X</code> 小时后自动删除<b>新设备</b>,请使用此设置。",
"HRS_TO_KEEP_NEWDEV_name": "保留新设备",
"HRS_TO_KEEP_OFFDEV_description": "",
"HRS_TO_KEEP_OFFDEV_name": "",
"HRS_TO_KEEP_NEWDEV_description": "这是一项维护设置<b>删除设备</b>。如果启用该设置<code>0</code> 为禁用),则标记为<b>新设备</b>的设备(如果其<b>首次会话</b>时间早于此设置中指定的小时数)将被删除。如果您想在 <code>X</code> 小时后自动删除<b>新设备</b>,请使用此设置。",
"HRS_TO_KEEP_NEWDEV_name": "小时后删除新设备",
"HRS_TO_KEEP_OFFDEV_description": "这是维护设置<b>删除设备</b>。如果启用了这个设置(<code>0</code>是禁用),任何<b>上次链接</b>时间比设置里存的指定时间长的<b>离线</b>设备都会被删除。要是您想<code>X</code>小时以候自动处理<b>下线设备</b>,请用这个设置。",
"HRS_TO_KEEP_OFFDEV_name": "保留离线设备",
"LOADED_PLUGINS_description": "加载哪些插件。添加插件可能会降低应用程序的速度。在<a target=\"_blank\" href=\"https://github.com/jokob-sk/NetAlertX/tree/main/docs/PLUGINS.md\">插件文档</a>中详细了解需要启用哪些插件、插件类型或扫描选项。卸载插件将丢失您的设置。只有<code>已禁用</code>的插件才能卸载。",
"LOADED_PLUGINS_name": "已加载插件",
"LOG_LEVEL_description": "此设置将启用更详细的日志记录。对于调试写入数据库的事件很有用。",
"LOG_LEVEL_name": "打印附加日志",
"Loading": "加载中...",
"Loading": "加载中",
"Login_Box": "输入密码",
"Login_Default_PWD": "默认密码“123456”仍然有效。",
"Login_Info": "",
"Login_Info": "设置密码使用设置密码插件。如果您无法登录,请查看<a target=\"_blank\" href=\"https://github.com/jokob-sk/NetAlertX/tree/main/front/plugins/set_password\">SETPWD文档</a>。",
"Login_Psw-box": "密码",
"Login_Psw_alert": "密码警报!",
"Login_Psw_folder": "在配置文件夹中。",
@@ -364,33 +368,33 @@
"Maint_PurgeLog": "清除日志",
"Maint_RestartServer": "重启服务器",
"Maint_Restart_Server_noti_text": "您确定要重新启动后端服务器吗?这可能会导致应用程序不一致。请先备份您的设置。<br/> <br/> 注意:这可能需要几分钟。",
"Maintenance_InitCheck": "",
"Maintenance_InitCheck_Checking": "",
"Maintenance_InitCheck_QuickSetupGuide": "",
"Maintenance_InitCheck_Success": "",
"Maintenance_ReCheck": "",
"Maintenance_InitCheck": "初步检查",
"Maintenance_InitCheck_Checking": "查看中…",
"Maintenance_InitCheck_QuickSetupGuide": "确保您遵循<a href=\"https://jokob-sk.github.io/NetAlertX/INITIAL_SETUP/\" target=\"_blank\">快速设置指南</a>。",
"Maintenance_InitCheck_Success": "应用程序启动成功!",
"Maintenance_ReCheck": "重试检查",
"Maintenance_Running_Version": "安装版本",
"Maintenance_Status": "状态",
"Maintenance_Title": "维护工具",
"Maintenance_Tool_DownloadConfig": "",
"Maintenance_Tool_DownloadConfig_text": "",
"Maintenance_Tool_DownloadWorkflows": "",
"Maintenance_Tool_DownloadWorkflows_text": "",
"Maintenance_Tool_ExportCSV": "CSV 导出",
"Maintenance_Tool_ExportCSV_noti": "CSV 导出",
"Maintenance_Tool_DownloadConfig": "设置导出",
"Maintenance_Tool_DownloadConfig_text": "下载<code>app.conf</code> 里存的设置的完整备份。",
"Maintenance_Tool_DownloadWorkflows": "工作流程导出",
"Maintenance_Tool_DownloadWorkflows_text": "下载<code>workflows.json</code> 里存的工作流程的完整备份。",
"Maintenance_Tool_ExportCSV": "设备导出csv",
"Maintenance_Tool_ExportCSV_noti": "设备导出csv",
"Maintenance_Tool_ExportCSV_noti_text": "您确定要生成 CSV 文件吗?",
"Maintenance_Tool_ExportCSV_text": "生成一个 CSV逗号分隔值文件其中包含设备列表包括网络节点和连接设备之间的网络关系。您也可以通过访问此 URL <code>your NetAlertX url/php/server/devices.php?action=ExportCSV</code> 或启用 <a href=\"settings.php#CSVBCKP_header\">CSV Backup</a> 插件来触发此功能。",
"Maintenance_Tool_ImportCSV": "CSV 导入",
"Maintenance_Tool_ImportCSV_noti": "CSV 导入",
"Maintenance_Tool_ImportCSV": "设备导入csv",
"Maintenance_Tool_ImportCSV_noti": "设备导入csv",
"Maintenance_Tool_ImportCSV_noti_text": "您确定要导入 CSV 文件吗?这将完全<b>覆盖</b>数据库中的设备。",
"Maintenance_Tool_ImportCSV_text": "在使用此功能之前,请先备份。导入一个 CSV逗号分隔值文件其中包含设备列表包括网络节点和连接设备之间的网络关系。为此请将名为 <b>devices.csv</b> 的 CSV 文件放入您的 <b>/config</b> 文件夹中。",
"Maintenance_Tool_ImportConfig_noti": "",
"Maintenance_Tool_ImportPastedCSV": "CSV 导入(粘贴)",
"Maintenance_Tool_ImportConfig_noti": "设置导入app.conf)",
"Maintenance_Tool_ImportPastedCSV": "设备导入csv 粘贴)",
"Maintenance_Tool_ImportPastedCSV_noti_text": "您确定要导入粘贴的 CSV 吗?这将完全<b>覆盖</b>数据库中的设备。",
"Maintenance_Tool_ImportPastedCSV_text": "使用此功能前,请先备份。导入一个包含设备列表(包括网络节点和所连接设备之间的网络关系)的 CSV逗号分隔值文件。",
"Maintenance_Tool_ImportPastedConfig": "",
"Maintenance_Tool_ImportPastedConfig_noti_text": "",
"Maintenance_Tool_ImportPastedConfig_text": "",
"Maintenance_Tool_ImportPastedConfig": "设置导入(粘贴)",
"Maintenance_Tool_ImportPastedConfig_noti_text": "您确认要导入粘贴的设置吗?这会完全<b>覆盖</b><code>app.conf</code>的内容。",
"Maintenance_Tool_ImportPastedConfig_text": "导入包含所有应用程序设置的<code>app.conf</code>文件。建议先通过<b>设置导出</b>功能下载当前的<code>app.conf</code>文件。",
"Maintenance_Tool_arpscansw": "切换 arp 扫描(开/关)",
"Maintenance_Tool_arpscansw_noti": "打开或关闭 arp 扫描",
"Maintenance_Tool_arpscansw_noti_text": "当扫描关闭时,它会保持关闭状态,直到再次激活为止。",
@@ -432,7 +436,7 @@
"Maintenance_Tool_del_unknowndev_text": "使用此功能前,请先备份。删除操作不可撤销。所有名为 (未知) 的设备都将从数据库中删除。",
"Maintenance_Tool_displayed_columns_text": "更改<a href=\"devices.php\"><b><i class=\"fa fa-laptop\"></i>设备</b></a>页面中列的可见性和顺序。",
"Maintenance_Tool_drag_me": "拖动我来对列进行重新排序。",
"Maintenance_Tool_order_columns_text": "",
"Maintenance_Tool_order_columns_text": "Maintenance_Tool_order_columns_text",
"Maintenance_Tool_purgebackup": "清除备份",
"Maintenance_Tool_purgebackup_noti": "清除备份",
"Maintenance_Tool_purgebackup_noti_text": "您确定要删除除最后 3 个备份之外的所有备份吗?",
@@ -451,7 +455,7 @@
"Maintenance_Tools_Tab_UISettings": "UI 设置",
"Maintenance_arp_status": "扫描状态",
"Maintenance_arp_status_off": "当前已禁用",
"Maintenance_arp_status_on": "当前正在运行扫描",
"Maintenance_arp_status_on": "正在运行扫描",
"Maintenance_built_on": "建立于",
"Maintenance_current_version": "您已了解最新情况。查看<a href=\"https://github.com/jokob-sk/NetAlertX/issues/138\" target=\"_blank\">我正在处理的内容</a>。",
"Maintenance_database_backup": "数据库备份",
@@ -471,10 +475,10 @@
"Maintenance_themeselector_lable": "选择皮肤",
"Maintenance_themeselector_text": "该变化发生在服务器端,因此会影响所有正在使用的设备。",
"Maintenance_version": "应用更新",
"NETWORK_DEVICE_TYPES_description": "哪些设备类型允许在网络视图中用作网络设备。设备类型必须与设备详细信息中特定设备上的 <code>Type</code> 设置完全匹配。请勿删除现有类型,仅添加新类型。",
"NETWORK_DEVICE_TYPES_description": "哪些设备类型允许在网络视图中用作网络设备。设备类型必须与设备详细信息中特定设备上的 <code>Type</code> 设置完全匹配。您可以使用<code>+</code>按钮在设备上添加Type。请勿删除现有类型,仅添加新类型。",
"NETWORK_DEVICE_TYPES_name": "网络设备类型",
"Navigation_About": "关于",
"Navigation_AppEvents": "",
"Navigation_AppEvents": "应用事件",
"Navigation_Devices": "设备",
"Navigation_Donations": "捐款",
"Navigation_Events": "事件",
@@ -491,8 +495,10 @@
"Navigation_Workflows": "工作流程",
"Network_Assign": "连接上述 <i class=\"fa fa-server\"></i> 网络节点",
"Network_Cant_Assign": "无法将根 Internet 节点指定为子节点。",
"Network_Cant_Assign_No_Node_Selected": "无法分配,未选择父节点。",
"Network_Configuration_Error": "配置错误",
"Network_Connected": "联网设备",
"Network_Devices": "",
"Network_ManageAdd": "添加设备",
"Network_ManageAdd_Name": "设备名称",
"Network_ManageAdd_Name_text": "名称不包含特殊字符",
@@ -527,6 +533,8 @@
"Network_Root": "根节点",
"Network_Root_Not_Configured": "在<a href=\"deviceDetails.php?mac=Internet\">Internet 根设备</a>的<b>类型</b>字段中选择一个网络设备类型,例如<b>网关</b>,以开始配置此屏幕。<br/><br/>更多文档可在<a href=\"https://github.com/jokob-sk/NetAlertX/blob/main/docs/NETWORK_TREE.md\" target=\"_blank\">如何设置您的网络页面</a>指南中找到",
"Network_Root_Unconfigurable": "无法配置根",
"Network_ShowArchived": "显示已归档",
"Network_ShowOffline": "显示离线",
"Network_Table_Hostname": "主机名",
"Network_Table_IP": "IP",
"Network_Table_State": "状态",
@@ -543,25 +551,25 @@
"Plugins_DeleteAll": "全部删除(忽略过滤器)",
"Plugins_Filters_Mac": "Mac 过滤器",
"Plugins_History": "事件历史",
"Plugins_Obj_DeleteListed": "",
"Plugins_Obj_DeleteListed": "删除已列出对象",
"Plugins_Objects": "插件对象",
"Plugins_Out_of": "",
"Plugins_Out_of": "",
"Plugins_Unprocessed_Events": "未处理的事件",
"Plugins_no_control": "未找到可呈现该值的表单控件。",
"Presence_CalHead_day": "天",
"Presence_CalHead_lang": "",
"Presence_CalHead_lang": "en-us",
"Presence_CalHead_month": "月",
"Presence_CalHead_quarter": "季",
"Presence_CalHead_week": "星期",
"Presence_CalHead_year": "年",
"Presence_CallHead_Devices": "设备",
"Presence_Key_OnlineNow": "",
"Presence_Key_OnlineNow_desc": "",
"Presence_Key_OnlinePast": "",
"Presence_Key_OnlinePastMiss": "",
"Presence_Key_OnlinePastMiss_desc": "",
"Presence_Key_OnlinePast_desc": "",
"Presence_Loading": "加载中...",
"Presence_Key_OnlineNow": "当前在线",
"Presence_Key_OnlineNow_desc": "该设备在上次扫描中被检测为在线。",
"Presence_Key_OnlinePast": "之前在线",
"Presence_Key_OnlinePastMiss": "之前在线(不匹配)",
"Presence_Key_OnlinePastMiss_desc": "设备曾在线,但目前离线。初始会话可能缺失或存在数据冲突",
"Presence_Key_OnlinePast_desc": "设备曾在线,但目前离线。",
"Presence_Loading": "加载中",
"Presence_Shortcut_AllDevices": "我的设备",
"Presence_Shortcut_Archived": "已归档",
"Presence_Shortcut_Connected": "已连接",
@@ -570,26 +578,27 @@
"Presence_Shortcut_Favorites": "收藏夹",
"Presence_Shortcut_NewDevices": "新设备",
"Presence_Title": "按设备显示状态",
"REFRESH_FQDN_description": "",
"REFRESH_FQDN_name": "",
"REFRESH_FQDN_description": "重新扫描所有设备并刷新其完全合格域名(FQDN)。当设置禁用时将仅扫描未识别设备以提高性能。此时FQDN仅在初始设备发现时更新。",
"REFRESH_FQDN_name": "更新FQDN",
"REPORT_DASHBOARD_URL_description": "此 URL 用作生成 HTML 报告(例如电子邮件)中链接的基础。输入以 <code>http://</code> 开头的完整 URL包括端口号无尾部斜杠 <code>/</code>)。",
"REPORT_DASHBOARD_URL_name": "NetAlertX 网址",
"REPORT_ERROR": "您正在浏览的页面暂时不可用,请稍后重试",
"REPORT_MAIL_description": "如果启用,则会发送一封电子邮件,其中包含您已订阅的更改列表。还请填写以下与 SMTP 设置相关的所有剩余设置。如果遇到问题,请将 <code>LOG_LEVEL</code> 设置为 <code>debug</code> 并检查<a href=\"/maintenance.php#tab_Logging\">错误日志</a>。",
"REPORT_MAIL_name": "启用email",
"REPORT_TITLE": "报告",
"RandomMAC_hover": "自动检测 - 表示设备是否随机化其 MAC 地址。",
"RandomMAC_hover": "自动检测 - 表示设备是否随机化其 MAC 地址。您可通过 UI_NOT_RANDOM_MAC 设置排除特定MAC地址。点击了解更多。",
"Reports_Sent_Log": "已发送报告日志",
"SCAN_SUBNETS_description": "大多数网络扫描器ARP-SCAN、NMAP、NSLOOKUP、DIG依赖于扫描特定的网络接口和子网。查看<a href=\"https://github.com/jokob-sk/NetAlertX/blob/main/docs/SUBNETS.md\" target=\"_blank\">子网文档</a>以获取有关此设置的帮助,尤其是 VLAN、支持哪些 VLAN或者如何确定网络掩码和接口。<br/> <br/> 网络扫描器的替代方法是启用一些其他不依赖于 NetAlert<sup>X</sup> 访问网络的设备扫描器/导入器UNIFI、dhcp.leases、PiHole 等)。<br/> <br/> 注意:扫描时间本身取决于要检查的 IP 地址数量,因此请使用适当的网络掩码和接口仔细设置。",
"SCAN_SUBNETS_name": "",
"SCAN_SUBNETS_name": "待扫描网络",
"SYSTEM_TITLE": "系统信息",
"Setting_Override": "覆盖值",
"Setting_Override_Description": "启用此选项将用上面指定的值覆盖应用程序提供的默认值。",
"Settings_Metadata_Toggle": "显示/隐藏给定设置的元数据。",
"Settings_Show_Description": "",
"Settings_Show_Description": "显示设置描述。",
"Settings_device_Scanners_desync": "⚠ 设备扫描计划不同步。",
"Settings_device_Scanners_desync_popup": "设备扫描 (<code>*_RUN_SCHD</code>) 的时间表并不相同。这将导致设备在线/离线通知不一致。除非有意为之,否则请对所有启用的 <b>🔍设备扫描</b> 使用相同的时间表。",
"Speedtest_Results": "Speedtest 结果",
"Systeminfo_AvailableIps": "",
"Systeminfo_CPU": "CPU",
"Systeminfo_CPU_Cores": "CPU 核心:",
"Systeminfo_CPU_Name": "CPU 名称:",
@@ -673,79 +682,81 @@
"UI_ICONS_name": "预定义图标",
"UI_LANG_description": "选择首选的 UI 语言。在 <a href=\"https://hosted.weblate.org/projects/pialert/core/\" target=\"_blank\">Weblate</a> 在线门户中帮助翻译或建议语言。",
"UI_LANG_name": "用户界面语言",
"UI_MY_DEVICES_description": "设备状态应显示在默认的<b>我的设备</b>视图中。<code>CTRL + 单击</code>选择/取消选择)",
"UI_MY_DEVICES_description": "设备状态应显示在默认的<b>我的设备</b>视图中。",
"UI_MY_DEVICES_name": "在“我的设备”视图中显示",
"UI_NOT_RANDOM_MAC_description": "不应标记为随机设备的 Mac 前缀。例如,输入 <code>52</code> 可排除以 <code>52:xx:xx:xx:xx:xx</code> 开头的设备,以免将其标记为具有随机 MAC 地址的设备。",
"UI_NOT_RANDOM_MAC_name": "不要标记为随机",
"UI_PRESENCE_description": "选择应在<a href=\"/devices.php\" target=\"_blank\">设备</a>页面中的<b>设备存在</b>图表中显示的状态。<code>CTRL + 单击</code>以选择/取消选择)",
"UI_PRESENCE_description": "选择应在<a href=\"/devices.php\" target=\"_blank\">设备</a>页面中的<b>设备存在</b>图表中显示的状态。",
"UI_PRESENCE_name": "在存在图表中显示",
"UI_REFRESH_description": "输入界面重新加载的秒数。设置为 <code>0</code> 可禁用。",
"UI_REFRESH_name": "自动刷新界面",
"VERSION_description": "",
"VERSION_name": "",
"WF_Action_Add": "",
"WF_Action_field": "",
"WF_Action_type": "",
"WF_Action_value": "",
"WF_Actions": "",
"WF_Add": "",
"WF_Add_Condition": "",
"WF_Add_Group": "",
"WF_Condition_field": "",
"WF_Condition_operator": "",
"WF_Condition_value": "",
"WF_Conditions": "",
"WF_Conditions_logic_rules": "",
"WF_Duplicate": "",
"WF_Enabled": "",
"WF_Export": "",
"WF_Export_Copy": "",
"WF_Import": "",
"WF_Import_Copy": "",
"WF_Name": "",
"WF_Remove": "",
"WF_Remove_Copy": "",
"WF_Save": "",
"WF_Trigger": "",
"WF_Trigger_event_type": "",
"WF_Trigger_type": "",
"add_icon_event_tooltip": "",
"add_option_event_tooltip": "",
"copy_icons_event_tooltip": "",
"devices_old": "刷新中...",
"VERSION_description": "用于检查应用是否升级的版本号或时间戳辅助值。",
"VERSION_name": "本号或时间戳",
"WF_Action_Add": "添加动作",
"WF_Action_field": "字段",
"WF_Action_type": "类型",
"WF_Action_value": "",
"WF_Actions": "动作",
"WF_Add": "添加工作流",
"WF_Add_Condition": "添加条件",
"WF_Add_Group": "添加组",
"WF_Condition_field": "字段",
"WF_Condition_operator": "运算符",
"WF_Condition_value": "",
"WF_Conditions": "条件",
"WF_Conditions_logic_rules": "逻辑规则",
"WF_Duplicate": "复制工作流",
"WF_Enabled": "工作流已启用",
"WF_Export": "导出工作流",
"WF_Export_Copy": "复制下方工作流,在需要的地方导入使用。",
"WF_Import": "导入工作流",
"WF_Import_Copy": "在此处粘贴你刚才复制的工作流。",
"WF_Name": "工作流名称",
"WF_Remove": "删除工作流",
"WF_Remove_Copy": "您想删除这个工作流吗?",
"WF_Save": "保存工作流",
"WF_Trigger": "触发器",
"WF_Trigger_event_type": "事件类型",
"WF_Trigger_type": "触发器类型",
"add_icon_event_tooltip": "添加新图标",
"add_option_event_tooltip": "添加新值",
"copy_icons_event_tooltip": "覆盖所有同类设备的图标",
"devices_old": "刷新中",
"general_event_description": "您触发的事件可能需要一段时间才能完成后台进程。一旦以下执行队列清空,执行就会结束(如果遇到问题,请检查<a href='/maintenance.php#tab_Logging'>错误日志</a>)。<br/> <br/> 执行队列:",
"general_event_title": "执行自组织网络事件",
"go_to_node_event_tooltip": "",
"new_version_available": "",
"go_to_device_event_tooltip": "前往设备页面",
"go_to_node_event_tooltip": "前往该节点的网络配置页",
"new_version_available": "新版本已发布。",
"report_guid": "通知guid",
"report_guid_missing": "未找到链接的通知。最近发送的通知与可用通知之间存在短暂延迟。几秒钟后刷新页面并缓存。所选通知也可能已在维护期间被删除,如 <code>DBCLNP_NOTIFI_HIST</code> 设置中所述。<br/> <br/>系统将改为显示最新通知。缺失的通知具有以下 GUID",
"report_select_format": "选择格式:",
"report_time": "通知时间:",
"run_event_tooltip": "在运行之前,请先启用设置并保存更改。",
"settings_core_icon": "",
"select_icon_event_tooltip": "选择图标",
"settings_core_icon": "fa-solid fa-gem",
"settings_core_label": "核",
"settings_device_scanners": "设备扫描器用于发现写入当前扫描数据库表的设备。",
"settings_device_scanners_icon": "",
"settings_device_scanners_icon": "fa-solid fa-magnifying-glass-plus",
"settings_device_scanners_info": "使用 <a href=\"/settings.php#LOADED_PLUGINS\">LOADED_PLUGINS</a> 设置加载更多设备扫描仪",
"settings_device_scanners_label": "设备扫描仪",
"settings_enabled": "已启用的设置",
"settings_enabled_icon": "",
"settings_enabled_icon": "fa-solid fa-toggle-on",
"settings_expand_all": "展开全部",
"settings_imported": "上次设置是从 app.conf 文件导入的",
"settings_imported_label": "已导入设置",
"settings_missing": "并非所有设置都已加载!数据库或应用程序启动顺序负载过高。单击顶部的 🔄 重新加载按钮。",
"settings_missing_block": "错误设置未正确加载。点击顶部的重新加载按钮🔄或者查看浏览器日志了解详细信息F12。",
"settings_old": "导入设置并重新初始化...",
"settings_old": "导入设置并重新初始化",
"settings_other_scanners": "其他当前已启用的非设备扫描仪插件。",
"settings_other_scanners_icon": "",
"settings_other_scanners_icon": "fa-solid fa-recycle",
"settings_other_scanners_label": "其他扫描仪",
"settings_publishers": "启用通知网关 - 发布者,将根据您的设置发送通知。",
"settings_publishers_icon": "",
"settings_publishers_icon": "fa-solid fa-paper-plane",
"settings_publishers_info": "使用 <a href=\"/settings.php#LOADED_PLUGINS\">LOADED_PLUGINS</a> 设置加载更多发布商",
"settings_publishers_label": "出版商",
"settings_readonly": "",
"settings_saved": "<br/>设置已保存。<br/> 正在加载...<br/><i class=\"ion ion-ios-loop-strong fa-spin fa-2x fa-fw\"></i> <br/>",
"settings_system_icon": "",
"settings_readonly": "无法读或写<code>app.conf</code>。请尝试重启容器并阅读<a href=\"https://github.com/jokob-sk/NetAlertX/blob/main/docs/FILE_PERMISSIONS.md\" target=\"_blank\">文件权限文档</a>",
"settings_saved": "<br/>设置已保存。<br/> 正在加载<br/><i class=\"ion ion-ios-loop-strong fa-spin fa-2x fa-fw\"></i> <br/>",
"settings_system_icon": "fa-solid fa-gear",
"settings_system_label": "系统",
"settings_update_item_warning": "更新下面的值。请注意遵循先前的格式。<b>未执行验证。</b>",
"test_event_tooltip": "在测试设置之前,请先保存更改。"

View File

@@ -453,7 +453,7 @@
"value": "Example Plugin"
},
"css_classes": "col-sm-2",
"show": true,
"show": false,
"type": "label",
"default_value": "",
"options": [],

View File

@@ -78,7 +78,7 @@ def main():
#-------------------------------------------------------------------------------
def check_config():
if get_setting_value('APPRISE_URL') == '' or get_setting_value('APPRISE_HOST') == '':
if get_setting_value('APPRISE_HOST') == '' or (get_setting_value('APPRISE_URL') == '' and get_setting_value('APPRISE_TAG') == ''):
return False
else:
return True
@@ -106,8 +106,11 @@ def send(html, text):
# Define Apprise compatible payload (https://github.com/caronc/apprise-api#stateless-solution)
target_key = "tag" if get_setting_value('APPRISE_TARGETTYPE') == 'tag' else "urls"
target_value = get_setting_value('APPRISE_TAG') if target_key == 'tag' else get_setting_value('APPRISE_URL')
_json_payload = {
"urls": get_setting_value('APPRISE_URL'),
target_key: target_value,
"title": "NetAlertX Notifications",
"format": get_setting_value('APPRISE_PAYLOAD'),
"body": payloadData

View File

@@ -134,7 +134,7 @@
},
{
"column": "Watched_Value1",
"css_classes": "col-sm-2",
"css_classes": "col-sm-1",
"show": true,
"type": "eval",
"default_value": "",
@@ -422,6 +422,38 @@
}
]
},
{
"function": "TARGETTYPE",
"type": {
"dataType": "string",
"elements": [
{ "elementType": "select", "elementOptions": [], "transformers": [] }
]
},
"default_value": "url",
"options": ["url", "tag"],
"localized": ["name", "description"],
"name": [
{
"language_code": "en_us",
"string": "Target type"
},
{
"language_code": "es_es",
"string": "Tipo de alvo"
}
],
"description": [
{
"language_code": "en_us",
"string": "Select the target type to send to Apprise. If <code>url</code> is selected, the value of the <code>APPRISE_URL</code> setting will be used. If <code>tag</code> is selected, the <code>APPRISE_TAG</code> setting must be specified and will be used instead."
},
{
"language_code": "es_es",
"string": "Seleccione el tipo de alvo enviada a Apprise."
}
]
},
{
"function": "URL",
"type": {
@@ -454,6 +486,38 @@
}
]
},
{
"function": "TAG",
"type": {
"dataType": "string",
"elements": [
{ "elementType": "input", "elementOptions": [], "transformers": [] }
]
},
"default_value": "",
"options": [],
"localized": ["name", "description"],
"name": [
{
"language_code": "en_us",
"string": "Apprise notification tag"
},
{
"language_code": "es_es",
"string": "Tag de notificación de Apprise"
}
],
"description": [
{
"language_code": "en_us",
"string": "Apprise notification target tag."
},
{
"language_code": "es_es",
"string": "Informar de la tag de destino de la notificación."
}
]
},
{
"function": "PAYLOAD",
"type": {

View File

@@ -134,7 +134,7 @@
},
{
"column": "Watched_Value1",
"css_classes": "col-sm-2",
"css_classes": "col-sm-1",
"show": true,
"type": "eval",
"default_value": "",

View File

@@ -147,7 +147,7 @@
{
"column": "Watched_Value1",
"css_classes": "col-sm-3",
"show": true,
"show": false,
"type": "label",
"default_value": "",
"options": [],
@@ -177,7 +177,7 @@
{
"column": "Watched_Value3",
"css_classes": "col-sm-2",
"show": true,
"show": false,
"type": "label",
"default_value": "",
"options": [],
@@ -193,7 +193,7 @@
"column": "Watched_Value4",
"css_classes": "col-sm-2",
"show": true,
"type": "device_mac",
"type": "device_name_mac",
"default_value": "",
"options": [],
"localized": ["name"],

View File

@@ -96,7 +96,7 @@
},
{
"column": "Watched_Value1",
"css_classes": "col-sm-3",
"css_classes": "col-sm-1",
"show": true,
"type": "eval",
"default_value": "",

View File

@@ -96,7 +96,7 @@
},
{
"column": "Watched_Value1",
"css_classes": "col-sm-3",
"css_classes": "col-sm-1",
"show": true,
"type": "eval",
"default_value": "",

View File

@@ -96,7 +96,7 @@
},
{
"column": "Watched_Value1",
"css_classes": "col-sm-3",
"css_classes": "col-sm-1",
"show": true,
"type": "eval",
"default_value": "",

View File

@@ -130,7 +130,7 @@
},
{
"column": "Watched_Value1",
"css_classes": "col-sm-2",
"css_classes": "col-sm-1",
"show": true,
"type": "eval",
"default_value": "",

View File

@@ -96,7 +96,7 @@
},
{
"column": "Watched_Value1",
"css_classes": "col-sm-3",
"css_classes": "col-sm-1",
"show": true,
"type": "eval",
"default_value": "",
@@ -116,7 +116,7 @@
},
{
"column": "Watched_Value2",
"css_classes": "col-sm-2",
"css_classes": "col-sm-3",
"show": true,
"type": "textarea_readonly",
"default_value": "",
@@ -131,7 +131,7 @@
},
{
"column": "Watched_Value3",
"css_classes": "col-sm-2",
"css_classes": "col-sm-3",
"show": true,
"type": "textarea_readonly",
"default_value": "",

View File

@@ -468,7 +468,7 @@
"value": "ARPSCAN"
},
"css_classes": "col-sm-2",
"show": true,
"show": false,
"type": "label",
"default_value": "",
"options": [],

View File

@@ -492,7 +492,7 @@
"value": "ASUSWRT"
},
"css_classes": "col-sm-2",
"show": true,
"show": false,
"type": "label",
"default_value": "",
"options": [],

View File

@@ -284,7 +284,7 @@
{
"column": "Watched_Value1",
"css_classes": "col-sm-2",
"show": true,
"show": false,
"type": "label",
"default_value": "",
"options": [],

View File

@@ -28,6 +28,9 @@
"settings": [
{
"function": "icon",
"events": [
"select_icon"
],
"type": {
"dataType": "array",
"elements": [

View File

@@ -607,7 +607,7 @@
"value": "DDNS"
},
"css_classes": "col-sm-2",
"show": true,
"show": false,
"type": "label",
"default_value": "",
"options": [],

View File

@@ -437,7 +437,7 @@
"value": "Freebox"
},
"css_classes": "col-sm-2",
"show": true,
"show": false,
"type": "label",
"default_value": "",
"options": [],

View File

@@ -311,7 +311,7 @@
"column": "Watched_Value2",
"css_classes": "col-sm-2",
"show": true,
"type": "label",
"type": "textarea_readonly",
"default_value": "",
"options": [],
"localized": [
@@ -365,7 +365,7 @@
"value": "ICMP"
},
"css_classes": "col-sm-2",
"show": true,
"show": false,
"type": "label",
"default_value": "",
"options": [],

View File

@@ -548,7 +548,7 @@
"value": "INTRNT"
},
"css_classes": "col-sm-2",
"show": true,
"show": false,
"type": "label",
"default_value": "",
"options": [],

View File

@@ -335,7 +335,7 @@
"value": "IPNEIGH"
},
"css_classes": "col-sm-2",
"show": true,
"show": false,
"type": "label",
"default_value": "",
"options": [],

View File

@@ -491,7 +491,7 @@
"value": "LUCIRPC"
},
"css_classes": "col-sm-2",
"show": true,
"show": false,
"type": "label",
"default_value": "",
"options": [],

View File

@@ -292,7 +292,7 @@
{
"column": "Watched_Value1",
"css_classes": "col-sm-2",
"show": true,
"show": false,
"type": "label",
"default_value": "",
"options": [],

View File

@@ -562,7 +562,8 @@
"function": "devIcon",
"events": [
"copy_icons",
"add_icon"
"add_icon",
"select_icon"
],
"type": {
"dataType": "string",
@@ -587,7 +588,7 @@
"elementHasInputValue": 1,
"elementOptions": [
{
"cssClasses": "iconInputVal"
"cssClasses": "iconInputVal myhidden"
},
{
"onChange": "updateIconPreview(this)"
@@ -933,7 +934,7 @@
"name": [
{
"language_code": "en_us",
"string": "First Connection"
"string": "First Seen"
}
],
"description": [
@@ -1624,7 +1625,7 @@
"elementHasInputValue": 1,
"elementOptions": [
{
"cssClasses": "iconInputVal"
"cssClasses": "iconInputVal myhidden"
},
{
"onChange": "updateIconPreview(this)"

View File

@@ -508,7 +508,7 @@
"value": "NMAPDEV"
},
"css_classes": "col-sm-2",
"show": true,
"show": false,
"type": "label",
"default_value": "",
"options": [],

View File

@@ -284,7 +284,7 @@
{
"column": "Watched_Value1",
"css_classes": "col-sm-2",
"show": true,
"show": false,
"type": "label",
"default_value": "",
"options": [],

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