Kevin L'Hereec
dae82eeff2
fix
2026-06-08 16:35:33 +02:00
Kevin L'Hereec and Continue
08c620ee68
fix: drain task queue on session completion to stop orphan CWMP requests
...
After OperationalState, the state machine was marked completed but leftover
tasks in the CWMPTaskQueue (queued by ConfigurationEvaluationState callbacks)
were being served to the CPE on subsequent empty POSTs via the continue()
task fallback path, causing spurious GetParameterNames + SetParameterValues
exchanges after the session officially ended.
Fix: call taskQueue.clearPendingTasksForDevice() in completeMachine() so no
tasks bleed into the next session.
Generated with [Continue](https://continue.dev )
Co-Authored-By: Continue <noreply@continue.dev >
2026-06-08 14:20:59 +00:00
Kevin L'Hereec and Continue
aad93911e4
feat: TR-069 CWMP state machine hardening + exchange viewer improvements
...
- TR-069 CWMP state machine hardening (14 phases): shared event utility,
multi-event routing, GPN circuit breaker, IdleState GPN guard, expanded
GPN fault codes, CriticalReadsState, ConfigEval GPN guard, task queue
race condition fix, explicit error handling, terminal states
(OperationalState/PartialOperationalState), consolidated reclassify,
crash pattern detection, removed enqueueImmediate, state flow wiring
- Fix SOAP Fault not processed by state machine (soap-env:Fault detection)
- Fix GPN circuit breaker not persisting after session drops
- Fix CriticalReadsState GPV response parsing (xsi:type normalization)
- Fix CriticalReadsState not processing GPV response values
- Skip SPV when device is already compliant (ProvisioningCode check)
- Add Device.DeviceInfo.ModelName to critical reads GPV
- Fix TypeError on DeviceDetail parameters view (null guards)
- Log empty 204 responses in exchange trace UI
- TR-181 catalog: type corrections and new entries (+6640 lines)
- SequenceViewer: replace session-nav buttons with compact dropdown select
- SequenceViewer: fix CPE/ACS lifeline headers wrapping to 2 lines
- Add 20 unit tests for state machine fixes (SOAP Fault, GPN circuit
breaker, CriticalReads, stale session, ConfigEval/ComplianceUpdate skips)
Generated with [Continue](https://continue.dev )
Co-Authored-By: Continue <noreply@continue.dev >
2026-06-08 12:49:00 +00:00
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
b3b1edec17
ok
2026-06-01 15:49:09 +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
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