secubox-openwrt/package/secubox/secubox-app-device-intel/README.md
CyberMind-FR 57db9cfb40 feat: Add device-intel and dns-provider packages
Add 4 new packages implementing unified device intelligence and
DNS provider API management:

- secubox-app-dns-provider: dnsctl CLI with OVH, Gandi, Cloudflare
  adapters for DNS record CRUD, HAProxy vhost sync, propagation
  verification, and ACME DNS-01 wildcard certificate issuance
- luci-app-dns-provider: RPCD handler + LuCI views for provider
  settings and DNS record management
- secubox-app-device-intel: Aggregation layer merging mac-guardian,
  client-guardian, DHCP, P2P mesh, and exposure data with heuristic
  classification engine and USB/MQTT/Zigbee emulator modules
- luci-app-device-intel: RPCD handler + 5 LuCI views (dashboard,
  devices, emulators, mesh, settings) with shared API and CSS

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 15:47:20 +01:00

101 lines
4.3 KiB
Markdown

# secubox-app-device-intel
Unified device inventory aggregating data from all SecuBox subsystems. Part of the SecuBox ecosystem.
## Overview
Pure aggregation layer that merges mac-guardian, client-guardian, DHCP, P2P mesh, exposure scanner, and emulator module data into a single device inventory with heuristic classification, user overrides, and cross-mesh visibility.
## Architecture
```
device-intelctl (CLI)
└── functions.sh (aggregation library)
├── di_collect_mac_guardian() → /var/run/mac-guardian/clients.db
├── di_collect_client_guardian() → UCI client-guardian
├── di_collect_dhcp() → /tmp/dhcp.leases
├── di_collect_p2p_peers() → ubus luci.secubox-p2p
├── di_collect_exposure() → /proc/net/tcp
└── di_collect_emulators() → emulators/*.sh
├── usb.sh → /sys/bus/usb/devices/
├── mqtt.sh → mosquitto broker
└── zigbee.sh → zigbee2mqtt / deCONZ API
```
## Data Flow
1. **Collect** — Query each data source in parallel
2. **Merge** — Key on MAC address, combine fields from all sources
3. **Classify** — Apply heuristic chain (user > emulator > mesh > port > vendor > hostname)
4. **Cache** — Store in `/tmp/device-intel/cache-devices.json` (configurable TTL)
5. **Serve** — CLI or RPCD returns unified JSON
## Classification Priority
| Priority | Source | Example |
|---|---|---|
| 1 | User override | UCI `device-intel.<mac>.type` |
| 2 | Emulator source | MQTT client → mqtt_device |
| 3 | Mesh peer match | P2P peer IP → mesh_peer |
| 4 | Port-based | Port 445 → storage |
| 5 | Vendor-based | Synology → storage |
| 6 | Hostname-based | `.*sensor.*` → iot_sensor |
| 7 | Fallback | unknown |
## Emulator Modules
KISS-styled pluggable device discovery:
- **usb.sh** — Walks `/sys/bus/usb/devices/`, classifies by bDeviceClass (storage, serial, HID, camera, audio, printer, wireless)
- **mqtt.sh** — Queries mosquitto broker via `$SYS` topics or logs
- **zigbee.sh** — Queries zigbee2mqtt HTTP API or deCONZ REST API
Each exports `emulate_<type>()` returning pipe-delimited device entries.
## CLI Usage
```bash
device-intelctl status # Overview
device-intelctl list table # Tabular view
device-intelctl list json # JSON output
device-intelctl show aa:bb:cc:dd:ee:ff # Device detail
device-intelctl classify # Batch classify
device-intelctl set-type aa:bb:cc:dd:ee:ff iot_sensor # Override type
device-intelctl set-label aa:bb:cc:dd:ee:ff "Temp Sensor" # Custom label
device-intelctl emulators # Module status
device-intelctl mesh-list # Mesh peer devices
device-intelctl export json > inventory.json # Full export
```
## UCI Configuration
```
/etc/config/device-intel
config device-intel 'main' → enabled, cache_ttl, classify_interval
config display 'display' → view mode, grouping, refresh
config emulator 'mqtt' → broker_host, port, discovery_topic
config emulator 'zigbee' → coordinator, adapter, api_port
config emulator 'usb' → scan_interval, track_storage, track_serial
config device_type '<id>' → name, icon, color, vendor/hostname/port match rules
config device '<mac_clean>' → user overrides (type, label, capabilities, notes)
```
## Files
```
/etc/config/device-intel UCI configuration
/etc/init.d/device-intel procd init script
/usr/sbin/device-intelctl CLI controller
/usr/lib/secubox/device-intel/functions.sh Core aggregation library
/usr/lib/secubox/device-intel/classify.sh Heuristic classification engine
/usr/lib/secubox/device-intel/emulators/usb.sh USB peripheral emulator
/usr/lib/secubox/device-intel/emulators/mqtt.sh MQTT broker emulator
/usr/lib/secubox/device-intel/emulators/zigbee.sh Zigbee coordinator emulator
```
## Dependencies
- `jsonfilter` (OpenWrt native)
- `curl` (for emulator API calls)
- Optional: `secubox-app-mac-guardian`, `secubox-app-client-guardian`, `secubox-p2p`