Files
NetAlertX/front/plugins/sync
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
..
2025-08-25 18:24:28 +10:00
2024-06-08 18:52:07 +10:00
2026-03-16 21:03:47 +11:00

Overview

The synchronization plugin is designed to synchronize data across multiple instances of the app. It supports the following data synchronization modes:

  1. 💻 Devices: Sends an encrypted table_devices.json file to synchronize the entire Devices database table.
  2. 🔌 Plugin Data: Sends encrypted last_result.log files for individual plugins.

Tip

This plugin is usually used if you need to monitor inaccessible networks (WAN, VLAN etc.). Read the Remote networks documentation for more details about these scenarios.

Synchronization Modes

The plugin operates in three different modes based on the configuration settings.

Note: [n] indicates a setting specified for the node instance, and [n,h] indicates a setting used on both the node and the hub instances.

  1. Mode 1: PUSH (NODE) - Sends data from the node to the hub.

    • This mode is activated if SYNC_hub_url is set and either SYNC_devices or SYNC_plugins is enabled.
    • Actions:
      • Sends table_devices.json to the hub if SYNC_devices is enabled.
      • Sends individual plugin last_result.log files to the hub if SYNC_plugins is enabled.
  2. Mode 2: PULL (HUB) - Retrieves data from nodes to the hub.

    • This mode is activated if SYNC_nodes is set.
    • Actions:
      • Retrieves data from configured nodes using the API and saves it locally for further processing.
  3. Mode 3: RECEIVE (HUB) - Processes received data on the hub.

    • Activated when data is received in Mode 2 and is ready to be processed.
    • Actions:
      • Decodes received data files, processes them, and updates the Devices table accordingly.

Settings

Node (Source) Settings [n]

  • API Token [n,h]: API_TOKEN (has to be same across all nodes)

  • When to Run [n,h]: SYNC_RUN

  • Schedule [n,h]: SYNC_RUN_SCHD

  • Encryption Key [n,h]: SYNC_encryption_key

  • Node Name [n]: SYNC_node_name

  • Hub URL [n]: SYNC_hub_url + GRAPHQL_PORT of the target

  • Sync Devices [n]: SYNC_devices

  • Sync Plugins [n]: SYNC_plugins

Hub (Target) Settings [h]

  • API Token [n,h]: API_TOKEN (has to be same across all nodes)

  • When to Run [n,h]: SYNC_RUN

  • Schedule [n,h]: SYNC_RUN_SCHD

  • Encryption Key [n,h]: SYNC_encryption_key

  • Nodes to Pull From [h]: SYNC_nodes + GRAPHQL_PORT of the source nodes

Usage

  1. Adjust Settings:
    • Navigate to Settings > Sync Hub to modify default settings.
  2. Data Flow:
    • Nodes send or receive data based on the specified modes, either pushing data to the hub or pulling from nodes.

Notes

  • Existing devices on the hub will not be updated by the data received from this SYNC plugin if their MAC addresses are already present.
  • It is recommended to use Device synchronization primarily. Plugin data synchronization is more suitable for specific use cases.

Sync Hub Setup Diagram

Example use case: Network Setup with Multiple VLANs and VM Scanning

Thank you to @richtj999 for the use case 🙏

I have 6 VLANs, all isolated by a firewall, except for one VLAN that has access to all the others.

Initially, I had one virtual machine (VM) with 6 network cards, one for each VLAN. While this setup worked, it introduced delays due to other concurrent scans. To optimize this, I switched to a multi-VM setup:

  • I created 6 VMs, each attached to a single VLAN.
  • One VM acts as the "server," and the other 5 as "clients."
  • The server has access to all VLANs (via firewall rules) and collects data from the client VMs, which each scan their own VLAN.

Summary

  • Single VM on six VLANs: Slower because one VM scans all networks.
  • Six VMs on six VLANs: Faster because each VM scans its own network, sending the results to the server.

Example Setup

  • VM1 ("Server"): Network 1 (can access all networks) - IP: 10.10.10.106
    Receives data from all NetAlertX clients and scans network 1.

  • VM2 ("Client"): Network 2 (can access only network 2) - IP: 192.168.x.x
    Scans network 2; VM1 retrieves this data.

  • VM3 ("Client"): Network 3 (can access only network 3) - IP: 192.168.x.x
    Scans network 3; VM1 retrieves this data.

  • VM4 ("Client"): Network 4 (can access only network 4) - IP: 192.168.x.x
    Scans network 4; VM1 retrieves this data.

  • VM5 ("Client"): Network 5 (can access only network 5) - IP: 192.168.x.x
    Scans network 5; VM1 retrieves this data.

  • VM6 ("Client"): Network 6 (can access only network 6) - IP: 192.168.x.x
    Scans network 6; VM1 retrieves this data.


How to Set It Up

Server (VM1)
  1. Go to Settings > System > Sync Hub.
  2. Set the schedule (5 minutes works for me).
  3. API Token: Use any string, but it must match the clients (e.g., abc123).
  4. Encryption Key: Use any string, but it must match the clients (e.g., abc123).
  5. Under Nodes, add the full URL for each client, e.g., http://192.168.1.20.20212/, where the port 20212 is the value of the GRAPHQL_PORT setting of the given node (client)
  6. Node Name: Leave blank.
  7. Check Sync Devices.
Clients (VM2, VM3, VM4, VM5, VM6)
  1. Go to Settings > System > Sync Hub.
  2. Set When to run to "Always after scan."
  3. API Token: Use the same token as the server (e.g., abc123).
  4. Encryption Key: Use the same key as the server (e.g., abc123).
  5. Leave Nodes blank.
  6. Set Node Name to a unique, memorable name for each client.
  7. Check Sync Devices.