- 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>
16 lines
503 B
TypeScript
16 lines
503 B
TypeScript
import { createHash } from 'node:crypto'
|
|
|
|
/**
|
|
* Generates a deterministic hex identifier for a device (URL-safe, 24 chars)
|
|
*/
|
|
export function getDeviceHashIdentifier(device: {
|
|
oui: string
|
|
productClass: string
|
|
serialNumber: string
|
|
manufacturer?: string
|
|
}): string {
|
|
const manufacturer = device.manufacturer ?? ''
|
|
const canonical = `${manufacturer}-${device.oui}-${device.productClass}-${device.serialNumber}`
|
|
return createHash('sha256').update(canonical).digest('hex').substring(0, 24)
|
|
}
|