Commit Graph

918 Commits

Author SHA1 Message Date
Jokob @NetAlertX
718c2a933c Merge pull request #1670 from netalertx/next_release
Next release
2026-06-04 13:57:46 +10:00
jokob-sk
491225dd83 PLG: more sensible log size, better description #1666 2026-06-04 11:56:33 +10:00
jokob-sk
606dd10f78 PLG: more sensible log size, better description #1666 2026-06-04 08:56:58 +10:00
Jokob @NetAlertX
2ca5a80b29 Merge pull request #1665 from netalertx/next_release
Next release
2026-06-02 21:13:25 +10:00
jokob-sk
f1a9109697 BE+DOCS: ICMP, IPNEIGH handling VLANS #1662 2026-06-02 07:49:06 +10:00
jokob-sk
f9b413d172 PLG: ICMP handling VLANS #1662 2026-05-31 08:51:48 +10:00
Jokob @NetAlertX
727fe0e3e2 Merge branch 'main' into feat/adguard-export-plugin 2026-05-30 08:53:04 +10:00
Jokob @NetAlertX
721cdf0b05 Merge branch 'next_release' of https://github.com/netalertx/NetAlertX into next_release 2026-05-28 05:31:17 +00:00
Jokob @NetAlertX
f0cc4d123c Enhance carbon-copy behavior to prevent overwriting devPresentLastScan in sync operations #1651 2026-05-28 05:31:09 +00:00
jokob-sk
9875411057 BE: better CRON validation regex #1659 2026-05-28 08:41:34 +10:00
jokob-sk
12b104e7fa Device filters docs. link, and less verbose in-app notifications for SYNC 2026-05-27 03:30:43 +00:00
Nathan Jacobson
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
cc4dd46d17 docs 2026-05-26 22:56:34 +00:00
Jokob @NetAlertX
d3af1bea2a desc 2026-05-26 22:06:24 +00:00
Jokob @NetAlertX
d4fe94fb7a Add error handling for base64 decoding in main function to skip invalid data 2026-05-26 11:30:53 +00:00
Jokob @NetAlertX
cfea848064 Add validation for node response in main function to skip invalid nodes #1657 2026-05-26 10:40:53 +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-sk
813a92d84e BE: SYNC API 2026-05-25 09:03:00 +10:00
jokob-sk
e28ec5ca2e BE: SYNC API 2026-05-25 09:01:17 +10: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
fb054e9144 merge 2026-05-24 22:08:06 +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
5910a7c2a1 BE: Refactor sync endpoint to accept JSON payloads and update related tests #1652 2026-05-24 01:11:00 +00:00
Jokob @NetAlertX
0cb7ad6332 BE:Fix push mode for plugins #1652 2026-05-24 00:36:23 +00:00
Nathan Jacobson
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
Nathan Jacobson
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-sk
bf4e0b4a7c BE+FE: timestamps for sessions and emails corrected #1639 2026-05-16 14:13:59 +10:00
jokob-sk
7725697b87 BE: ICMP fping with multiple interfaces #1642 2026-05-16 10:07:37 +10:00
jokob-sk
f6b34845e0 BE: ICMP fping with multiple interfaces #1642 2026-05-16 09:42:44 +10:00
jokob-sk
4cac81b5ec PLG: ICMP fping fix for multiple interfaces #1642 2026-05-15 06:37:47 +10:00
jokob-sk
13f8858319 BE: Less verbose SYNC plugin #1164 2026-05-14 20:36:23 +10:00
jokob-sk
f11a63bb7f BE: DIGSCAN could not be disbaled due to default RUN set in config.json #1631 2026-05-13 08:44:29 +10:00
void-spark
6d661dd12c I did add a ';' from habit, removed again, must please the bunny :) 2026-05-11 22:29:37 +02:00
void-spark
39068e9824 And 'notes' to README.md 2026-05-11 22:21:10 +02:00
void-spark
76612e5d0e Change default timeout to 10 seconds,
match request timeout to script timeout -1 second.
Always use at least 1 sec. timeout for request.
2026-05-11 22:09:07 +02:00
void-spark
7273899e3e Use single quote consistently
Use 'l' instead of 'lease' (I see you little rabbit)
Use [] over get in most places, if expected fields are missing an error is an acceptable outcome.
Include 'text' field in logging.
Add logging for result '3'
2026-05-11 22:03:29 +02:00
void-spark
608686e4bd Add list with settings to readme 2026-05-11 21:51:32 +02:00
void-spark
b290d3c3d2 First attempt at kea dhcp support 2026-05-10 18:15:05 +02:00
xfilo
fb7dab4881 Replace custom version_check with packaging.version.Version (Follow-up based on AI review)
- Use PEP 440-compliant parsing and comparison
- Fix issues with non-numeric segments (e.g. "beta", "rc")
- Add safe fallback for invalid version strings
2026-04-20 12:53:51 +02:00
xfilo
2fd7e5e700 Follow-up on PR https://github.com/netalertx/NetAlertX/pull/1622 based on AI review - fallback to v1 clients endpoint if v2 fails.
- On failed controller version retrieval, attempt to use the v2 clients endpoint first and automatically fallback to the v1 endpoint if the v2 request fails.
- Improves compatibility with controllers where version detection is unreliable or unavailable.
2026-04-20 12:13:21 +02:00
xfilo
8168bb2d5b Fix for https://github.com/netalertx/NetAlertX/issues/1595 - Omada Controller versions >= 6.2.0.0 removed the v1 clients endpoint 2026-04-20 00:39:29 +02:00
jokob-sk
148cd93c75 DOCS: setting string
Signed-off-by: jokob-sk <jokob.sk@gmail.com>
2026-04-17 06:49:38 +10:00
jokob-sk
7a931511de DOCS: setting string
Signed-off-by: jokob-sk <jokob.sk@gmail.com>
2026-04-16 10:44:11 +10:00
jokob-sk
4267a5c30c FE+BE: Filters
Signed-off-by: jokob-sk <jokob.sk@gmail.com>
2026-04-15 05:51:04 +10:00
jokob-sk
686a1c8ddb DOCS: setting string
Signed-off-by: jokob-sk <jokob.sk@gmail.com>
2026-04-12 10:25:10 +10:00
Jokob @NetAlertX
51b8cf03b5 Refactor guest WiFi device creation to use a sentinel MAC address fallback 2026-04-10 22:40:57 +00:00
jokob-sk
c40d04b2c4 PLG: AppEvents not clearing in DBCLNP
Signed-off-by: jokob-sk <jokob.sk@gmail.com>
2026-04-10 22:10:00 +10:00
sebingel
13f840b9f2 Refactor Fritz!Box guest WiFi MAC generation to use string_to_fake_mac
The previous implementation derived the guest WiFi device MAC using a
custom MD5 hash of the Fritz!Box hardware MAC, producing a
locally-administered address with a 02: prefix. This was inconsistent
with the project-wide convention of using string_to_fake_mac() from
crypto_utils, which produces a fa:ce: prefixed address and is used by
all other plugins (nmap_dev_scan, adguard_import, pihole_api_scan, etc.).

A naive switch to string_to_fake_mac(host) would have introduced a
stability problem: if the user reconfigures FRITZBOX_HOST from an IP
address (e.g. 192.168.178.1) to a hostname (e.g. fritz.box), the fake
MAC would change and the guest device would re-appear as a new unknown
device in NetAlertX. The Fritz!Box hardware MAC is a stable identifier
that does not change with the configured host string.

Requested by reviewer jokob-sk in PR #1592.

Changes:
- Remove import hashlib (fritzbox.py:3) — no longer needed

- Add import string_to_fake_mac from utils.crypto_utils (fritzbox.py:15)

- Replace custom MD5-based MAC derivation in create_guest_wifi_device()
  with string_to_fake_mac(normalize_mac(fritzbox_mac)) (fritzbox.py:178)
  The Fritz!Box hardware MAC is fetched via TR-064 as before, but is now
  passed to the shared project utility instead of a custom hash.

- Add host parameter to create_guest_wifi_device(fc, host) (fritzbox.py:169)
  Used as fallback input to string_to_fake_mac() if the hardware MAC
  cannot be retrieved.

- Update call site in main() to pass host (fritzbox.py:224)

The guest WiFi device MAC is now stable across host configuration changes
and consistent with the fa:ce: prefix convention used across the project.
2026-04-06 10:37:51 +00:00
sebingel
ca9a0ef5ce Update Fritz!Box plugin README metadata
Requested by reviewer jokob-sk in PR #1592.

Changes:
- Replace generic author "NetAlertX Community" with @sebingel
  (README.md:204)

- Update release date from January 2026 to April 2026
  (README.md:205)

- Remove license field from version section (README.md:206)
  Project license is defined at repository level and does not need
  to be repeated in individual plugin READMEs.

- Update repository link from jokob-sk/NetAlertX to netalertx/NetAlertX
  (README.md:211)
  The project was transferred to the netalertx organisation; the
  canonical URL is now github.com/netalertx/NetAlertX.
2026-04-06 10:28:30 +00:00