Kevin L'Hereec
4eb3f0795a
feat: immediate mode (I) commands via Connection Request
...
- Hide Refresh button when ConnectionRequestURL is unavailable
- Fix ImmediateCommandStateMachine session lifecycle (mark complete when no commands)
- Fix preemption: new CONNECTION REQUEST replaces stale immediate session
- Protect ensureSessionForRemote from rebinding to completed machines
- Normalize numeric event codes from simulators (6 -> 6 CONNECTION REQUEST)
- Extract updatePendingCommandsStatus for clarity
2026-06-02 14:00:31 +02:00
Kevin L'Hereec
bc9ac4f125
fix: state machine timing + reclassification tests
...
- Fix state machine start timing: don't call start() in startStateMachine,
let the CPE's first empty body trigger the state machine via continue().
This ensures GPN is sent at the correct point in the TR-069 session.
- Add unit tests for reclassifyDeviceFromCatalog (10 tests)
- Add unit tests for MainStateMachine transitions and GPN callbacks (11 tests)
- Test both scenarios: Huawei (GPN supported) and Livebox (GPN unsupported + fallback)
- Fix tr069_trace_service test path assertion (config/ → data/)
- Update steering doc with Livebox bootstrap command
2026-06-01 17:31:33 +02:00
Kevin L'Hereec
a5b3135396
ok maybe
2026-06-01 16:58:52 +02:00
Kevin L'Hereec
ea73e91aa4
trace + backup propertie
2026-06-01 16:20:58 +02:00
Kevin L'Hereec
b3b1edec17
ok
2026-06-01 15:49:09 +02:00
Kevin L'Hereec and Copilot
6082a0e610
feat: TR-069 per-device SOAP trace logging + log viewer UI
...
- Remove SOAP from Docker stdout; route to per-device trace files only
- Fix trace service paths using process.cwd() (/app/data/, /app/logs/tr069/)
- Fix Docker volume permissions: dedicated /app/data & /app/logs/tr069 dirs
- Add GET /api/v1/tr069-trace/:id/log endpoint (tail N lines)
- Rewrite Tr069Trace.vue: clickable rows, dark log viewer, 3s auto-refresh
- Add simulator-ui-env.js to public/ (remove from config/)
- TR-181/InternetGatewayDevice dataModel auto-detection
- Parameter writability config with W/R fallback default
- Fix device_action_executor for GetParameterNames detection flow
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-06-01 14:33:44 +02:00
Kevin L'Hereec and Copilot
847da1cdf5
feat: per-device TR-069 SOAP trace logging
...
- Tr069TraceService: in-memory Map O(1) lookup, Promise-queue per device
for sequential file writes, 10MB rotation (5 files kept)
- config/tr069-trace.json: persisted list of traced devices (atomic write)
- CwmpLoggerMiddleware: buffers request+response, writes to device log file
after next() once ctx.cwmpDeviceId is set by controller
- CwmpController: sets ctx.cwmpDeviceId on all code paths (Inform + others)
- StateMachineManager: getHashIdForRemote() for non-Inform messages
- REST API: GET/POST/DELETE /api/v1/tr069-trace
- UI: Tr069Trace Vue page with device search, add/remove tracing
- 8 new unit tests (192 total, all passing)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-06-01 12:07:07 +02:00
Kevin L'Hereec and Copilot
b8ff4b68a7
feat: TR-181 parameter writability resolution
...
- Add GpnStatus type ('supported' | 'unsupported' | 'unknown') to Device domain
- Persist gpnStatus in DeviceRecord and all 3 persist paths
(cwmp_controller, main_state_machine, device_action_executor)
- Capture Fault 9000/9001 in getParameterNames → mark device as 'unsupported'
- Fix GPN NextLevel flag: false (non-recursive shallow scan)
- Add static TR-181 catalog (7 727 params, sourced from BBF cwmp-data-models)
- Add parameter_writability service with resolveWritability():
supported → live data; unsupported → catalog → default R/W;
unknown → catalog → null (genuinely unknown)
- Add scripts/generate-tr181-catalog.mjs to regenerate catalog from BBF XML
- Add design doc: docs/design-parameter-writability.md
- Add unit tests: 26 tests covering normalizePath and all gpnStatus branches
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-06-01 11:25:15 +02:00
Kevin L'Hereec and Copilot
d1c65dbf1e
chore: initial commit — AdonisJS v7 TR-069 ACS
...
- Docker infrastructure (Dockerfile, docker-compose.yml, genieacs-sim)
- AdonisJS v7 app with Inertia.js + Vue 3
- MongoDB integration
- CWMP/TR-069 state machine engine
- Configuration engine with compliance tracking
- Branding: ADAM ACS (favicon, navbar, locales)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
2026-05-29 16:46:37 +02:00