- Add session-based authentication for web-UI (Login.vue, AuthController) - Add AuthSessionMiddleware: redirects unauthenticated users to /login - Add ApiKeyMiddleware: validates X-Api-Key header on all /api/v1 routes - Add BasicAuthMiddleware: registered for future M2M use - Use timingSafeEqual for all credential comparisons (timing attack prevention) - Regenerate session ID on login (session fixation prevention) - Validate redirect target after login (open redirect prevention) - Require WEBUI_USERNAME, WEBUI_PASSWORD, API_KEY as mandatory env vars - Share auth.username/authenticated via Inertia shared props - Add user dropdown in navbar (avatar icon + username + logout) - Add login i18n keys in fr.json and en.json - Remove orphan SQL migrations (users, auth_access_tokens) and @adonisjs/lucid
263 lines
8.4 KiB
JSON
263 lines
8.4 KiB
JSON
{
|
|
"header": {
|
|
"title": "ADAM ACS",
|
|
"devices": "Devices",
|
|
"configurations": "Configurations",
|
|
"firmware": "Firmware",
|
|
"commands": "Commands",
|
|
"tr069Trace": "TR-069 Trace"
|
|
},
|
|
"titles": {
|
|
"devices": "Devices",
|
|
"device": "Device",
|
|
"deviceDetail": "Device Detail",
|
|
"configurations": "Configurations",
|
|
"commands": "Commands",
|
|
"commandsFleet": "Fleet Commands",
|
|
"discoveryCreate": "Create Discovery Configuration",
|
|
"provisioningCreate": "Create Provisioning Configuration",
|
|
"firmware": "Firmware Catalog",
|
|
"trace": "TR-069 Trace"
|
|
},
|
|
"labels": {
|
|
"manufacturer": "Manufacturer",
|
|
"productClass": "Product Class",
|
|
"serialNumber": "Serial Number",
|
|
"externalIP": "External IP",
|
|
"softwareVersion": "Software Version",
|
|
"identifier": "Identifier",
|
|
"creationDate": "Creation Date",
|
|
"createdAt": "Created At",
|
|
"lastSeen": "Last Seen",
|
|
"status": "Status",
|
|
"action": "Action",
|
|
"mode": "Mode",
|
|
"priority": "Priority",
|
|
"parameters": "Parameters",
|
|
"properties": "Properties",
|
|
"name": "Name",
|
|
"value": "Value",
|
|
"type": "Type",
|
|
"discovery": "Discovery",
|
|
"provisioning": "Provisioning",
|
|
"deviceIdentifier": "Device Identifier",
|
|
"version": "Version",
|
|
"policy": "Policy",
|
|
"enabled": "Enabled",
|
|
"disabled": "Disabled",
|
|
"tags": "Tags",
|
|
"updatedAt": "Updated",
|
|
"search": "Search",
|
|
"general": "General",
|
|
"matchingCriteria": "Matching Criteria",
|
|
"inventoryPaths": "Inventory Paths",
|
|
"desiredParameters": "Desired Parameters",
|
|
"newConfiguration": "New Configuration",
|
|
"results": "result(s)",
|
|
"loading": "Loading…",
|
|
"noResults": "No configurations found.",
|
|
"parameterName": "Parameter name",
|
|
"once": "Once",
|
|
"maintain": "Maintain",
|
|
"firmwareEntries": "Firmware Entries",
|
|
"migrationRoutes": "Migration Routes",
|
|
"firmwareDetails": "Firmware Details",
|
|
"noFirmwareEntries": "No firmware entries found.",
|
|
"noMigrationRoutes": "No migration routes defined.",
|
|
"newFirmwareEntry": "New Entry",
|
|
"editFirmwareEntry": "Edit Entry",
|
|
"addRoute": "Add Route",
|
|
"fileSize": "File Size (bytes)",
|
|
"checksumType": "Checksum Type",
|
|
"firmwareUrl": "Firmware URL",
|
|
"checksum": "Checksum",
|
|
"filterByProductClass": "Filter by product class…",
|
|
"saveChanges": "Save changes",
|
|
"hardwareVersion": "Hardware version",
|
|
"devices": "Devices"
|
|
},
|
|
"button": {
|
|
"refresh": "Refresh",
|
|
"getModel": "Get Model",
|
|
"delete": "Delete",
|
|
"edit": "Edit",
|
|
"create": "Create",
|
|
"send": "Send",
|
|
"cancel": "Cancel",
|
|
"confirm": "Confirm",
|
|
"fleetManagement": "Fleet Management ({count})",
|
|
"addModelPath": "Add Path",
|
|
"addParameter": "Add Parameter",
|
|
"previous": "Previous",
|
|
"next": "Next"
|
|
},
|
|
"checkbox": {
|
|
"selectAll": "Select All",
|
|
"selectRow": "Select row {index}"
|
|
},
|
|
"placeholder": {
|
|
"search": "Search...",
|
|
"modelPath": "e.g. InternetGatewayDevice.DeviceInfo."
|
|
},
|
|
"options": {
|
|
"NI": "Non-Immediate (NI)",
|
|
"I": "Immediate (I)"
|
|
},
|
|
"modal": {
|
|
"confirmDelete": "Confirm Deletion",
|
|
"confirmDeleteMessage": "Are you sure you want to delete this item?",
|
|
"getModel": "Get Model"
|
|
},
|
|
"footer": {
|
|
"legal": "Legal Notice",
|
|
"privacy": "Privacy Policy"
|
|
},
|
|
"language": {
|
|
"fr": "Français",
|
|
"en": "English"
|
|
},
|
|
"criteriaEditor": {
|
|
"deviceId": "Device Identity",
|
|
"standardParams": "Standard Parameters",
|
|
"customCriteria": "Custom Conditions",
|
|
"customCriteriaHelp": "Match devices where known parameter values equal the expected values",
|
|
"addCondition": "+ Add condition",
|
|
"noConditions": "No parameter conditions — matches all devices passing DeviceId criteria above.",
|
|
"paramCriteriaWarning": "If a parameter is not yet known on the device, this configuration will not match. A lower-priority configuration without this condition should run first to discover the parameter via its inventory. Avoid using the same path in both criteria and desired parameters — this risks a deadlock.",
|
|
"knownValue": "known value",
|
|
"knownValues": "known values",
|
|
"fields": {
|
|
"manufacturer": {
|
|
"label": "Manufacturer",
|
|
"placeholder": "e.g. Sagemcom or Sagemcom*",
|
|
"help": "Exact match or glob pattern (* ?)"
|
|
},
|
|
"oui": {
|
|
"label": "OUI",
|
|
"placeholder": "e.g. 00E0FC or 00*",
|
|
"help": "Organizationally Unique Identifier"
|
|
},
|
|
"productClass": {
|
|
"label": "Product Class",
|
|
"placeholder": "e.g. BM632w or BM*",
|
|
"help": "Supports glob patterns"
|
|
},
|
|
"serialNumber": {
|
|
"label": "Serial Number",
|
|
"placeholder": "e.g. ABC12345 or ABC*",
|
|
"help": "Supports glob patterns"
|
|
}
|
|
},
|
|
"presets": {
|
|
"modelName": "Model Name",
|
|
"hardwareVersion": "Hardware Version",
|
|
"softwareVersion": "Software Version",
|
|
"modelNamePlaceholder": "e.g. BM632w",
|
|
"hardwareVersionPlaceholder": "e.g. V3R1",
|
|
"softwareVersionPlaceholder": "e.g. 1.2.3"
|
|
}
|
|
},
|
|
"configDetail": {
|
|
"tabGeneral": "General",
|
|
"tabCriteria": "Criteria",
|
|
"tabInventory": "Inventory",
|
|
"tabParameters": "Parameters",
|
|
"tabCompliance": "Compliance",
|
|
"tabHistory": "History",
|
|
"totalDevices": "Matching devices",
|
|
"compliant": "Compliant",
|
|
"nonCompliant": "Non-compliant",
|
|
"noMatchingDevices": "No devices match this configuration criteria.",
|
|
"loadCompliance": "Load compliance report",
|
|
"complianceError": "Error loading compliance report.",
|
|
"dryRunError": "Error during dry run.",
|
|
"firmwareSkipped": "firmware outside schedule window",
|
|
"paramDiffs": "Parameter differences",
|
|
"currentValue": "Current value",
|
|
"targetValue": "Target value",
|
|
"notSet": "(not set)",
|
|
"noParamDiffs": "No parameter differences.",
|
|
"firmwarePath": "Firmware migration path",
|
|
"parameter": "Parameter",
|
|
"expectedValue": "Expected value",
|
|
"noCriteria": "No criteria defined.",
|
|
"parameterConditions": "Parameter conditions",
|
|
"noInventoryPaths": "No inventory paths defined.",
|
|
"noParameters": "No parameters defined.",
|
|
"noHistory": "No history available.",
|
|
"date": "Date",
|
|
"close": "Close"
|
|
},
|
|
"device": {
|
|
"identity": "Identity",
|
|
"identifier": "Identifier",
|
|
"versions": "Versions",
|
|
"system": "System",
|
|
"nextConnection": "Next connection",
|
|
"clientReferences": "Client references",
|
|
"deleteDevice": "Delete device",
|
|
"confirmDeleteMessage": "Confirm deletion of",
|
|
"exchanges": "TR-069 Exchanges",
|
|
"enableTracing": "Enable tracing",
|
|
"tracingActive": "Tracing active"
|
|
},
|
|
"trace": {
|
|
"tracedDevices": "Traced devices",
|
|
"description": "Enable tracing on a device then click \"View\" to see live exchanges.",
|
|
"deviceId": "Device ID",
|
|
"started": "Started",
|
|
"remove": "Remove",
|
|
"enableTracing": "Enable tracing",
|
|
"editJson": "Edit JSON",
|
|
"editConfig": "Tracing configuration",
|
|
"formatJson": "Format",
|
|
"saveApply": "Save",
|
|
"expectedFormat": "Expected format:",
|
|
"notTraced": "This device is not traced yet.",
|
|
"noTracedDevices": "No traced devices."
|
|
},
|
|
"sequence": {
|
|
"cpe": "CPE",
|
|
"acs": "ACS",
|
|
"emptyPost": "Empty POST",
|
|
"session": "Session",
|
|
"goTo": "Go to…",
|
|
"clear": "Clear",
|
|
"clearExchanges": "Clear exchanges",
|
|
"connected": "Connected",
|
|
"paused": "Paused",
|
|
"disconnected": "Disconnected",
|
|
"resumeScroll": "Resume auto-scroll",
|
|
"allLoaded": "All messages loaded",
|
|
"loading": "Loading…",
|
|
"noExchanges": "No exchanges recorded. SOAP messages will appear here on the next CPE connection.",
|
|
"confirmClear": "Are you sure you want to delete all recorded exchanges for this device? This action is irreversible.",
|
|
"confirmClearTitle": "Clear exchanges"
|
|
},
|
|
"inspector": {
|
|
"title": "Inspector",
|
|
"selectMessage": "Select a message to see its content.",
|
|
"direction": "Direction",
|
|
"method": "Method",
|
|
"session": "Session",
|
|
"timestamp": "Timestamp",
|
|
"rawXml": "Raw XML"
|
|
},
|
|
"common": {
|
|
"confirm": "Confirm",
|
|
"cancel": "Cancel",
|
|
"close": "Close",
|
|
"actions": "Actions",
|
|
"selected": "selected"
|
|
},
|
|
"login": {
|
|
"subtitle": "Auto-Configuration Server",
|
|
"username": "Username",
|
|
"password": "Password",
|
|
"signIn": "Sign in",
|
|
"signingIn": "Signing in…",
|
|
"invalidCredentials": "Invalid username or password.",
|
|
"logout": "Sign out"
|
|
}
|
|
}
|