Commit Graph

865 Commits

Author SHA1 Message Date
sebingel
0648e8217c Add full i18n for Fritz!Box plugin description and settings
The Fritz!Box plugin config.json only contained English (en_us) strings
for all translatable fields. NetAlertX supports 21 languages and shows
the plugin description and all setting labels in the user's chosen
language. Without translations, every non-English user sees raw English
text for the plugin card description, setting names, and setting
explanations regardless of their language preference.

Changes:
- front/plugins/fritzbox/config.json: added 20 translations for the
  top-level plugin `description` field (all 21 supported languages)

- front/plugins/fritzbox/config.json: added translations for `name` and
  `description` fields in all 14 settings (RUN, RUN_SCHD, HOST, PORT,
  USER, PASS, USE_TLS, REPORT_GUEST, GUEST_SERVICE, ACTIVE_ONLY, CMD,
  RUN_TIMEOUT, SET_ALWAYS, SET_EMPTY)

  Selectively translated by field type:
  - 12 settings: 21 languages for both name and description
  - HOST (name "Fritz!Box Host") and PORT (name "TR-064 Port"): name
    kept as en_us only — these are language-neutral proper names and
    standard identifiers; description translated in all 21 languages

  Technical terms left untranslated in all languages: Fritz!Box, TR-064,
  HTTPS, HTTP, WLANConfiguration, and all code identifiers referenced
  in descriptions (schedule, NEWDEV, Source = USER, Source = LOCKED)

Total: 544 localized strings added across 21 languages (ar_ar, ca_ca,
cs_cz, de_de, es_es, fa_fa, fr_fr, id_id, it_it, ja_jp, nb_no, pl_pl,
pt_br, pt_pt, ru_ru, sv_sv, tr_tr, uk_ua, vi_vn, zh_cn).

Users in all supported languages now see the plugin description card and
every setting label in their own language. The existing en_us fallback
mechanism ensures forward compatibility with any future languages added
to the project.
2026-04-06 07:34:16 +00:00
sebingel
5839853f69 Add Fritz!Box device scanner plugin via TR-064 protocol
NetAlertX had no native support for discovering devices connected to
Fritz!Box routers. Users relying on Fritz!Box as their primary home
router had to use generic network scanning (ARP/ICMP), missing
Fritz!Box-specific details like interface type (WiFi/LAN) and
connection status per device.

Changes:
- Add plugin implementation (front/plugins/fritzbox/fritzbox.py)
  Queries all hosts via FritzHosts TR-064 service, normalizes MACs,
  maps interface types (802.11→WiFi, Ethernet→LAN), and writes results
  to CurrentScan via Plugin_Objects. Supports filtering to active-only
  devices and optional guest WiFi monitoring via a synthetic AP device
  with a deterministic locally-administered MAC (02:xx derived from
  Fritz!Box MAC via MD5).

- Add plugin configuration (front/plugins/fritzbox/config.json)
  Defines plugin_type "device_scanner" with settings for host, port,
  credentials, guest WiFi reporting, and active-only filtering.
  Maps scan columns to CurrentScan fields (scanMac, scanLastIP, scanName,
  scanType). Default schedule: every 5 minutes.

- Add plugin documentation (front/plugins/fritzbox/README.md)
  Covers TR-064 protocol basics, quick setup guide, all settings with
  defaults, troubleshooting for common issues (connection refused, auth
  failures, no devices found), and technical details.

- Add fritzconnection>=1.15.1 dependency (requirements.txt)
  Required Python library for TR-064 communication with Fritz!Box.

- Add test suite (test/plugins/test_fritzbox.py:1-298)
  298 lines covering get_connected_devices (active filtering, MAC
  normalization, interface mapping, error resilience), check_guest_wifi_status
  (service detection, SSID-based guest detection, fallback behavior), and
  create_guest_wifi_device (deterministic MAC generation, locally-administered
  bit, fallback MAC, regression anchor with precomputed hash).

Users can now scan Fritz!Box-connected devices natively, seeing per-device
connection status and interface type directly in NetAlertX. Guest WiFi
monitoring provides visibility into guest network state. The plugin
defaults to HTTPS on port 49443 with active-only filtering enabled.
2026-04-06 07:34:14 +00:00
Jokob @NetAlertX
36e606e1a1 Refactor MQTT plugin: replace prepTimeStamp with format_date_iso for timestamp formatting and add regression tests for format_date_iso function Events have wrong time in HA
Some checks failed
🐳 ⚠ docker-unsafe from next_release branch / docker_dev_unsafe (push) Has been cancelled
Fixes #1587
2026-04-04 23:04:58 +00:00
sebingel
4c117db463 Fix elementOptions: rename typo 'ordeable' to 'orderable'
The key 'ordeable' in elementOptions was a long-standing typo for the
correct English word 'orderable'. Since the JS check in settings_utils.js
used the same misspelled key, the feature appeared to work — but it was
relying on the consistent propagation of a typo across the entire codebase.

Two pre-existing entries in front/plugins/ui_settings/config.json already
used the correct spelling 'orderable', but these had no effect because the
JavaScript check (option.ordeable === 'true') never matched them. As a
result, orderable behavior was silently disabled for those two settings.

Changes:
- front/js/settings_utils.js: renamed option.ordeable → option.orderable
  and isOrdeable → isOrderable (6 occurrences, lines 792/823/824/880/1079/
  1192/1228). The JS key check is the authoritative definition of the
  elementOptions property name, so this must change atomically with all
  config files.

- server/initialise.py:245: renamed "ordeable" → "orderable" in the
  hardcoded JSON string for LOADED_PLUGINS setting. This string is the
  source-of-truth for that setting's elementOptions and is not auto-
  generated from the plugin config files.

- front/plugins/*/config.json (33 files, 90 occurrences): renamed all
  "ordeable": "true" entries to "orderable": "true" via sed. All plugins
  used the typo consistently; they must be updated in the same commit to
  avoid a broken intermediate state.

The two formerly broken 'orderable' entries in ui_settings/config.json
are now matched by the corrected JS check and work as intended.

Fixes netalertx/NetAlertX#1584

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-03 18:28:48 +00:00
Alvise Bruniera
e30bdc526b updated freebox requirements 2026-03-26 17:14:56 +01:00
Alvise Bruniera
21f6a53830 freebox plugin version 2 2026-03-26 16:03:45 +01:00
Jokob @NetAlertX
8e72386a39 Merge pull request #1560 from netalertx/next_release
Next release
2026-03-22 08:43:21 +11:00
Jokob @NetAlertX
b311113575 Fix Spanish translations and improve HTML attributes in config files and report 2026-03-17 11:58:53 +00:00
Jokob @NetAlertX
43984132c4 Fix Spanish translations in config.json files for internet_speedtest, nmap_scan, and snmp_discovery plugins 2026-03-17 09:46:27 +00:00
Jokob @NetAlertX
0a7ecb5b7c Update config.json files to add 'ordeable' option and refactor cacheStrings function for consistency 2026-03-17 09:22:25 +00:00
Jokob @NetAlertX
c7399215ec Refactor event and session column names to camelCase
- Updated test cases to reflect new column names (eve_MAC -> eveMac, eve_DateTime -> eveDateTime, etc.) across various test files.
- Modified SQL table definitions in the database cleanup and migration tests to use camelCase naming conventions.
- Implemented migration tests to ensure legacy column names are correctly renamed to camelCase equivalents.
- Ensured that existing data is preserved during the migration process and that views referencing old column names are dropped before renaming.
- Verified that the migration function is idempotent, allowing for safe re-execution without data loss.
2026-03-16 10:11:22 +00:00
jokob-sk
23e16ae4fa PLG: sync handle mixed case
Signed-off-by: jokob-sk <jokob.sk@gmail.com>
2026-03-16 21:03:47 +11:00
Jokob @NetAlertX
0bb6db155b Merge branch 'next_release' of https://github.com/netalertx/NetAlertX into next_release 2026-03-15 01:42:23 +00:00
Jokob @NetAlertX
7221b4ba96 Keep all local changes while resolving conflicts 2026-03-15 01:19:34 +00:00
Jokob @NetAlertX
f75c53fc5d Implement notification text templates and update related settings for customizable notifications 2026-03-14 23:27:29 +00:00
Jokob @NetAlertX
d49abd9d02 Enhance code standards, update contributing guidelines, and add tests for SYNC plugin functionality 2026-03-07 21:34:38 +00:00
Jokob @NetAlertX
8e6efc3008 sleeping devices status #1519 2026-03-02 04:35:07 +00:00
Jokob @NetAlertX
ea5585a8ef Add database cleanup for Sessions and optimize queries
- Implemented deletion of Sessions older than DAYS_TO_KEEP_EVENTS.
- Added index for Plugins_History to improve query performance.
- Introduced unit tests for Sessions trimming and database analysis.
2026-03-01 06:07:57 +00:00
jokob-sk
f5e411d5d5 chore: jokob-sk->netalertx
Signed-off-by: jokob-sk <jokob.sk@gmail.com>
2026-02-28 16:00:37 +11:00
Jokob @NetAlertX
b74b803d6c feat: Add devFlapping attribute to device management and update related UI components 2026-02-27 23:29:55 +00:00
jokob-sk
686a713aa8 FE: lower case MAC issues #1538
Signed-off-by: jokob-sk <jokob.sk@gmail.com>
2026-02-27 14:35:35 +11:00
jokob-sk
2559702a6a BE+FE: better VLAN/SSID handling
Signed-off-by: jokob-sk <jokob.sk@gmail.com>
2026-02-22 08:08:48 +11:00
jokob-sk
6bbfc0637c BE+FE: better VLAN/SSID handling
Signed-off-by: jokob-sk <jokob.sk@gmail.com>
2026-02-21 23:55:53 +11:00
jokob-sk
12b0d911ff DOCS: UNIFIAPI
Signed-off-by: jokob-sk <jokob.sk@gmail.com>
2026-02-19 14:10:47 +11:00
jokob-sk
04884a264b DOCS: bug #1524
Signed-off-by: jokob-sk <jokob.sk@gmail.com>
2026-02-19 09:09:31 +11:00
jokob-sk
c1e6a69e05 BE+FE: legacy sync endpoint removal - see release notes
Signed-off-by: jokob-sk <jokob.sk@gmail.com>
2026-02-15 16:20:34 +11:00
jokob-sk
3587169791 BE+FE: refactor timezone UTC additional work #1506
Signed-off-by: jokob-sk <jokob.sk@gmail.com>
2026-02-15 16:13:53 +11:00
jokob-sk
9676111ceb BE: Events deduplication and uniqueness
Signed-off-by: jokob-sk <jokob.sk@gmail.com>
2026-02-15 13:59:15 +11:00
Jokob @NetAlertX
45157b6156 timestamp cleanup 2026-02-11 01:55:02 +00:00
jokob-sk
e899f657c5 BE+FE: refactor totals retrieval + LUCIRPC old field name
Signed-off-by: jokob-sk <jokob.sk@gmail.com>
2026-02-10 07:39:11 +11:00
jokob-sk
827b5d2ad3 FIX: lowercase MAC normalization across project v0.2
Signed-off-by: jokob-sk <jokob.sk@gmail.com>
2026-02-07 14:02:54 +11:00
jokob-sk
946ad00253 FIX: lowercase MAC normalization across project v0.1
Signed-off-by: jokob-sk <jokob.sk@gmail.com>
2026-02-07 13:44:50 +11:00
jokob-sk
81202ce07e name resolution config clean up, authoritative fields fixes for none values, css fixes
Signed-off-by: jokob-sk <jokob.sk@gmail.com>
2026-02-03 20:40:11 +11:00
jokob-sk
8a5d3b1548 PLG: NAME_CLEANUP_REGEX . behavior in names
Signed-off-by: jokob-sk <jokob.sk@gmail.com>
2026-02-03 08:26:26 +11:00
jokob-sk
f726820883 PLG: fix ICMP configuration - it should not supply devName for mapping
Signed-off-by: jokob-sk <jokob.sk@gmail.com>
2026-02-02 16:15:58 +11:00
jokob-sk
17e563aa29 BE+FE: new fields handling in views and filters
Signed-off-by: jokob-sk <jokob.sk@gmail.com>
2026-01-30 08:34:55 +11:00
jokob-sk
229ea770cb feat: authoritative plugin fields - fix devFQDN + docs + allow filters and columns on new fields
Signed-off-by: jokob-sk <jokob.sk@gmail.com>
2026-01-30 07:50:21 +11:00
jokob-sk
c3d3826448 PLG: add PIHOLEAPI_CONSIDER_ONLINE #1436
Signed-off-by: jokob-sk <jokob.sk@gmail.com>
2026-01-26 10:35:35 +11:00
jokob-sk
108c26440a feat: authoritative plugin fields - more options
Signed-off-by: jokob-sk <jokob.sk@gmail.com>
2026-01-25 18:21:49 +11:00
jokob-sk
d24411fa53 BE: CurrentScan table leanup - column rename
Signed-off-by: jokob-sk <jokob.sk@gmail.com>
2026-01-25 16:38:45 +11:00
jokob-sk
f173325b7b FE: more default icons #1448
Signed-off-by: jokob-sk <jokob.sk@gmail.com>
2026-01-25 15:47:17 +11:00
jokob-sk
ff206b8fc7 PLG: add online option only via PIHOLEAPI_GET_OFFLINE #1436
Signed-off-by: jokob-sk <jokob.sk@gmail.com>
2026-01-25 12:43:51 +11:00
Jokob @NetAlertX
3109b5d253 feat: Update plugin descriptions for authoritative column handling and overwrite conditions 2026-01-21 09:38:53 +00:00
Jokob @NetAlertX
fcbe4ae88a feat: Implement forced device status updates and enhance related tests 2026-01-21 09:21:55 +00:00
Jokob @NetAlertX
9f1d04bcd4 feat: Update plugin configurations to include additional SET_EMPTY options 2026-01-21 08:48:47 +00:00
Jokob @NetAlertX
54d01f0a65 feat: Enhance authoritative field handling with new locking mechanisms and update tests 2026-01-21 04:46:07 +00:00
Jokob @NetAlertX
478b018fa5 feat: Enhance plugin configurations and improve MAC normalization 2026-01-21 01:58:52 +00:00
Jokob @NetAlertX
3ee21ac830 review fixes 2026-01-21 00:17:54 +00:00
Jokob @NetAlertX
3b203536b8 ALL:Authoritative plugin fields 2026-01-19 11:28:37 +00:00
Adam Outler
ecea1d1fbd feat(api): MCP, OpenAPI & Dynamic Introspection
New Features:
- API endpoints now support comprehensive input validation with detailed error responses via Pydantic models.
- OpenAPI specification endpoint (/openapi.json) and interactive Swagger UI documentation (/docs) now available for API discovery.
- Enhanced MCP session lifecycle management with create, retrieve, and delete operations.
- Network diagnostic tools: traceroute, nslookup, NMAP scanning, and network topology viewing exposed via API.
- Device search, filtering by status (including 'offline'), and bulk operations (copy, delete, update).
- Wake-on-LAN functionality for remote device management.
- Added dynamic tool disablement and status reporting.

Bug Fixes:
- Fixed get_tools_status in registry to correctly return boolean values instead of None for enabled tools.
- Improved error handling for invalid API inputs with standardized validation responses.
- Fixed OPTIONS request handling for cross-origin requests.

Refactoring:
- Significant refactoring of api_server_start.py to use decorator-based validation (@validate_request).
2026-01-18 18:16:18 +00:00