Commit Graph
272 Commits
Author SHA1 Message Date
Jokob @NetAlertX 3196b8088a Merge pull request #1744 from netalertx/copilot/fix-devcomments-xml-issue
Escape notification HTML device fields and fall back on indent errors
2026-08-15 10:15:38 +10:00
copilot-swe-agent[bot]andjokob-sk 13da2ddbf1 fix: use valid notification fallback log level
Co-authored-by: jokob-sk <96159884+jokob-sk@users.noreply.github.com>
2026-08-14 23:51:15 +00:00
copilot-swe-agent[bot]andjokob-sk 44ed53cb69 test: cover escaped notification html fallback
Co-authored-by: jokob-sk <96159884+jokob-sk@users.noreply.github.com>
2026-08-14 15:34:07 +00:00
copilot-swe-agent[bot]andjokob-sk 0197e7c2cf fix: escape notification HTML device fields
Co-authored-by: jokob-sk <96159884+jokob-sk@users.noreply.github.com>
2026-08-14 15:29:44 +00:00
Jokob @NetAlertX f14364335b Merge pull request #1739 from netalertx/copilot/fix-nic-child-relationship-issue
Fix: NIC child presence no longer forces a directly-detected parent offline (#1736)
2026-08-13 19:20:28 +10:00
copilot-swe-agent[bot]andjokob-sk f52cc50705 fix: address review feedback on NIC presence logic and tests
- Replace max() with explicit if/else for readability
- Use db_test_helpers (make_db, make_device_dict, insert_device_from_dict,
  DummyDB) instead of local mock DB objects in test_nic_presence.py
- Lowercase all MAC addresses in tests

Co-authored-by: jokob-sk <96159884+jokob-sk@users.noreply.github.com>
2026-08-13 08:52:43 +00:00
copilot-swe-agent[bot]andjokob-sk 283bea21c9 fix: NIC child presence no longer forces a directly-detected parent offline
When a parent device has NIC children, update_devPresentLastScan_based_on_nics
previously replaced the parent's devPresentLastScan unconditionally with the
NIC-derived value. This discarded any genuine direct detection of the parent:
if the parent was found by ARP/save_own_device (present=1) but its NIC child
was absent (present=0), the NIC step forced the parent back to 0. The next
scan re-detected the parent → Connected event → NIC forced it down again,
producing an endless one-directional Connected event stream.

Fix: use max(original, nic_derived) so NIC children can only raise a parent's
presence (bring an undetected parent online), never lower it when the parent
itself was directly detected this cycle.

Adds test/scan/test_nic_presence.py covering the exact regression scenario
and surrounding cases (raise, no-NIC unchanged, req_all modes).

Fixes #1736

Co-authored-by: jokob-sk <96159884+jokob-sk@users.noreply.github.com>
2026-08-13 08:44:00 +00:00
copilot-swe-agent[bot]andjokob-sk 80f2b03870 fix: use db_test_helpers and lowercase MACs in skip_repeated test
Co-authored-by: jokob-sk <96159884+jokob-sk@users.noreply.github.com>
2026-08-13 08:35:40 +00:00
copilot-swe-agent[bot]andjokob-sk 2dc2207228 fix: remove localtime modifier from skip_repeated_notifications cooldown comparison; add UTC regression tests
Co-authored-by: jokob-sk <96159884+jokob-sk@users.noreply.github.com>
2026-08-13 06:23:09 +00:00
Jokob @NetAlertX a06dc259a8 Refactor plugin paths in scripts and tests to ensure consistent directory structure 2026-08-10 03:51:23 +00:00
Jokob @NetAlertX 9e38cfd8b4 Add website monitoring plugin and update workflows configuration
- Introduced a new plugin for monitoring website health, including functionality to check URLs and log results.
- Created README and configuration files for the workflows plugin, detailing its purpose and settings.
- Updated import paths in various test files to reflect the new directory structure.
- Ensured compatibility of test cases with the updated plugin architecture.
2026-08-10 02:32:49 +00:00
jokob-sk 2658d5703e BE+FE: less logging bloat + better notification preview + skeletons 2026-07-09 13:34:54 +10:00
Jokob @NetAlertX 18ec0ce96c feat: Implement DevicesHistory feature with triggers and history tracking
- Added db_history.py to manage DevicesHistory table and triggers for INSERT and UPDATE operations.
- Created device_history_instance.py for querying and grouping DevicesHistory records.
- Developed change_history.php for displaying device change history with filtering and pagination.
- Introduced skel_device_details_tab_history.php for skeleton loading state in device details tab.
- Added unit tests in test_device_history.py to validate trigger functionality and history management.
- Implemented filter population and pagination in the change history UI.
2026-07-04 23:34:52 +00:00
Jokob @NetAlertX 35b19cbb51 Refactor cache handling for plugins: update pluginsData initialization and improve fetch logic; enhance UI tests for translation loading 2026-07-02 04:32:01 +00:00
Jokob @NetAlertX 6c593d8879 Enhance plugin string handling and initialization; add UI tests for translation loading 2026-07-02 04:15:00 +00:00
Jokob @NetAlertX b29d279de8 Merge branch 'next_release' of https://github.com/netalertx/NetAlertX into next_release 2026-07-01 08:14:07 +00:00
Jokob @NetAlertX 636b0d9ca7 Add 'not_equals' and 'not_contains' operators; enhance workflow examples and tests 2026-07-01 08:14:00 +00:00
copilot-swe-agent[bot] 20f7fbd0c9 Fix over-broad page source assertion in test_export_csv_button_works 2026-07-01 06:08:36 +00:00
Jokob @NetAlertX 495698c6c2 Update test suite configuration and enhance test assertions
- Changed the test suite name for clarity.
- Updated default behavior for running all tests in the workflow.
- Improved logging in the Docker test script for better debugging.
- Modified assertions in Nginx proxy security tests to ensure access is not blocked.
- Added exception handling in UI tests to skip tests when elements are not found.
2026-07-01 05:54:05 +00:00
Jokob @NetAlertX 21a1d1b97c test fixes 2026-07-01 05:19:06 +00:00
Jokob @NetAlertX 6122df1c5c test fixes 2026-07-01 05:00:49 +00:00
jokob-sk 847400bf4e test fixes 2026-07-01 13:24:37 +10:00
jokob-sk 7630608583 docs 2026-06-19 22:39:09 +00:00
Jokob @NetAlertX a9b2f4b256 Merge pull request #1678 from netalertx/main
sync
2026-06-17 16:48:40 +10:00
Jokob @NetAlertX 3a206f0996 Add REST Import plugin and corresponding tests
- Implemented the REST Import plugin (rest_import.py) to handle importing data from REST APIs.
- Added functionality for configurable HTTP methods, authentication types, and custom headers.
- Included error handling for various HTTP response statuses and connection issues.
- Created unit tests for the plugin covering header building, path resolution, MAC validation, record mapping, and authentication methods.
- Ensured that module-level side effects are patched during tests to prevent live interactions.
2026-06-17 06:43:26 +00:00
Jokob @NetAlertX 4075aa469b Merge pull request #1675 from netalertx/next_release
Next release
2026-06-17 15:37:23 +10:00
Jokob @NetAlertX 26b337d6a7 feat(workflows): Enhance device management with query capabilities and conflict resolution
- Added `queryByConditions` method to `DeviceInstance` for flexible device querying based on dynamic conditions.
- Introduced `interpolate_tokens` function to replace placeholders in action values with actual device data.
- Updated `UpdateFieldAction` to handle cross-device updates and archive conflicting MAC addresses.
- Implemented cascade prevention in `WorkflowManager` to avoid processing events for devices modified in the same batch.
- Added unit tests for new functionalities, including token interpolation, condition querying, and action execution.
- Created constants for device column validation to enhance security and maintainability.
- Established a structured research skill specification to guide development practices.
2026-06-16 11:40:28 +00:00
Jokob @NetAlertX 727fe0e3e2 Merge branch 'main' into feat/adguard-export-plugin 2026-05-30 08:53:04 +10:00
Jokob @NetAlertX f0cc4d123c Enhance carbon-copy behavior to prevent overwriting devPresentLastScan in sync operations #1651 2026-05-28 05:31:09 +00:00
Nathan JacobsonandClaude Sonnet 4.6 93e534cef5 refactor: use DeviceInstance model instead of direct SQLite query
Replaces the raw sqlite3 query in get_netalertx_devices() with
DeviceInstance().getAll() as suggested in code review, applying the
archived/offline/new filters in Python. Removes the sqlite3 and
fullDbPath imports. Updates tests to mock DeviceInstance.getAll().

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-26 22:03:14 -04:00
Jokob @NetAlertX 014e8ffff0 linting 2026-05-26 21:59:54 +00:00
Jokob @NetAlertX 1f2205ff27 Refactor sync endpoint tests to use monkeypatch for environment variables and remove unused imports 2026-05-26 21:59:11 +00:00
Jokob @NetAlertX 5ea999fd57 Fix typos in README and test files related to SYNC_BEHAVIOR documentation 2026-05-26 07:51:09 +00:00
Jokob @NetAlertX f8f7ac3827 Implement SYNC_BEHAVIOR setting to control hub device write modes and update related documentation #1652 2026-05-26 07:42:03 +00:00
Jokob @NetAlertX c829c4cf5a Enhance node name extraction logic to accurately classify file formats for PUSH and PULL modes 2026-05-25 11:32:59 +00:00
Jokob @NetAlertX cc5fc0caae Enhance node name extraction logic to robustly handle dots in identifiers for PUSH and PULL modes 2026-05-24 22:25:17 +00:00
Jokob @NetAlertX b5d280644e Update code standards to prohibit inline imports and ensure all imports are at the top of the file 2026-05-24 02:21:56 +00:00
Jokob @NetAlertX b7cffe8c07 Refactor sync data processing to handle PUSH and PULL modes with improved error handling for JSON payloads 2026-05-24 02:14:11 +00:00
Jokob @NetAlertX 1108534540 Fix formatting inconsistencies in comments for sync endpoint tests 2026-05-24 01:30:33 +00:00
Jokob @NetAlertX e9879c47a9 Update sync POST test to use encrypted payload string 2026-05-24 01:20:21 +00:00
Jokob @NetAlertX 5910a7c2a1 BE: Refactor sync endpoint to accept JSON payloads and update related tests #1652 2026-05-24 01:11:00 +00:00
Nathan JacobsonandClaude Sonnet 4.6 ca7a699ce3 fix: address PR review feedback on adguard_export plugin
- config.json: add show:true to all visible column definitions so they
  render in the plugin output table
- script.py: fix managed_names adoption bug — update/skip branches no
  longer add unowned clients to managed state; rename tracking now
  scoped to plugin-created clients only
- README.md: fix ADGUARDEXP_URL default (localhost:3000, not local IP),
  add language tags to fenced code blocks, normalise metadata block to
  Other info / Maintainer / DD-Mon-YYYY format
- test_adguard_export.py: add regression test for manual client matched
  by ID not being adopted into managed state

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-23 14:22:58 -04:00
Jokob @NetAlertX 821594f617 Refine documentation and enhance XSS prevention measures in device details and test scripts 2026-05-21 00:36:59 +00:00
Jokob @NetAlertX 5f62d25e23 Implement XSS prevention by encoding special characters in device names across multiple files 2026-05-21 00:09:07 +00:00
Nathan JacobsonandClaude Sonnet 4.6 197e3a3cb6 feat: add adguard_export plugin and tests
Adds a new NetAlertX plugin that syncs known devices from the NetAlertX
database to AdGuard Home as persistent clients, keeping names, MACs, IP
addresses, and device-type tags in sync.

Also fixes the adguard_import config.json description placeholder and a
minor indentation inconsistency in that file.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-20 16:27:25 -04:00
Jokob @NetAlertX f9bd8f35f5 Refactor test_sync_hub_node_backfill: streamline imports and utilize shared DB helpers 2026-04-15 12:48:01 +00:00
Jokob @NetAlertX 89139fed60 Add update_sync_hub_node function and corresponding tests for backfilling devSyncHubNode #1609 2026-04-14 20:59:36 +00:00
Jokob @NetAlertX c275bf447d fixes 2026-04-13 13:02:34 +00:00
Jokob @NetAlertX 8abecb7a0d PLG: Implement selective recording for Plugins_History to prevent unbounded growth 2026-04-12 23:09:34 +00:00
Jokob @NetAlertX 51b8cf03b5 Refactor guest WiFi device creation to use a sentinel MAC address fallback 2026-04-10 22:40:57 +00:00