Add Loki and Sentinel utility classes for web API endpoints

- Implemented LokiUtils class with GET and POST endpoints for managing scripts, jobs, and payloads.
- Added SentinelUtils class with GET and POST endpoints for managing events, rules, devices, and notifications.
- Both classes include error handling and JSON response formatting.
This commit is contained in:
infinition
2026-03-14 22:33:10 +01:00
parent eb20b168a6
commit aac77a3e76
525 changed files with 29400 additions and 13136 deletions

View File

@@ -41,22 +41,40 @@
"settings.errorRestoring": "Erreur lors de la restauration des valeurs par défaut",
"theme.group.colors": "Couleurs",
"theme.group.surfaces": "Surfaces",
"theme.group.borders": "Bordures",
"theme.group.controls": "Contrôles",
"theme.group.layout": "Disposition",
"theme.token.bg": "Arrière-plan",
"theme.token.bg2": "Arrière-plan Alt",
"theme.token.ink": "Couleur du texte",
"theme.token.muted": "Texte atténué",
"theme.token.accent1": "Accent 1 (Acide)",
"theme.token.accent2": "Accent 2 (Cyan)",
"theme.token.accent": "Accent",
"theme.token.accentAlt": "Accent Alt",
"theme.token.danger": "Danger",
"theme.token.warning": "Avertissement",
"theme.token.ok": "Succès",
"theme.token.panel": "Panneau",
"theme.token.panel2": "Panneau Alt",
"theme.token.ctrlPanel": "Panneau contrôle",
"theme.token.ctrlPanel2": "Panneau contrôle Alt",
"theme.token.btnBg": "Fond bouton",
"theme.token.border": "Bordure",
"theme.token.borderStrong": "Bordure forte",
"theme.token.borderHi": "Bordure vive",
"theme.token.switchTrack": "Piste interrupteur",
"theme.token.switchOnBg": "Fond interrupteur actif",
"theme.token.scrollTrack": "Piste défilement",
"theme.token.scrollThumb": "Poignée défilement",
"theme.token.glass": "Overlay verre",
"theme.token.radius": "Rayon de bordure",
"theme.advanced": "CSS avancé",
"theme.applyRaw": "Appliquer",
"theme.reset": "Réinitialiser",
"theme.export": "Exporter le thème",
"theme.import": "Importer un thème",
"theme.importError": "Fichier thème invalide",
"dash.title": "Tableau de bord",
"dash.battery": "Batterie",
"dash.internet": "Internet",
@@ -778,5 +796,141 @@
"api.timeout": "La requête a expiré",
"api.failed": "La requête a échoué",
"router.notFound": "Page non trouvée : {{path}}",
"router.errorLoading": "Erreur lors du chargement de la page : {{message}}"
"router.errorLoading": "Erreur lors du chargement de la page : {{message}}",
"nav.sentinel": "Sentinelle",
"sentinel.title": "Sentinelle Watchdog",
"sentinel.enabled": "Activé",
"sentinel.disabled": "Désactivé",
"sentinel.eventFeed": "Flux d'événements",
"sentinel.ackAll": "Tout ack.",
"sentinel.clearAll": "Tout effacer",
"sentinel.allAcked": "Tous les événements acquittés",
"sentinel.confirmClear": "Effacer tous les événements ? Cette action est irréversible.",
"sentinel.eventsCleared": "Événements effacés",
"sentinel.noEvents": "Aucun événement. Sentinel surveille votre réseau.",
"sentinel.rules": "Règles",
"sentinel.devices": "Appareils",
"sentinel.notifiers": "Notifications",
"sentinel.statDevices": "Appareils connus",
"sentinel.statAlive": "En ligne",
"sentinel.statUnread": "Non lus",
"sentinel.statEvents": "Total événements",
"sentinel.statRules": "Règles actives",
"sentinel.addRule": "Ajouter une règle",
"sentinel.noRules": "Aucune règle configurée.",
"sentinel.ruleLogic": "Logique",
"sentinel.ruleActions": "Actions",
"sentinel.enable": "Activer",
"sentinel.disable": "Désactiver",
"sentinel.editRule": "Modifier la règle",
"sentinel.deleteRule": "Supprimer la règle",
"sentinel.confirmDeleteRule": "Supprimer cette règle ?",
"sentinel.ruleDeleted": "Règle supprimée",
"sentinel.ruleUpdated": "Règle mise à jour",
"sentinel.ruleCreated": "Règle créée",
"sentinel.ruleName": "Nom de la règle",
"sentinel.triggerType": "Type de déclencheur",
"sentinel.cooldown": "Délai de récupération",
"sentinel.conditions": "Conditions",
"sentinel.cancel": "Annuler",
"sentinel.save": "Enregistrer",
"sentinel.nameRequired": "Le nom de la règle est requis",
"sentinel.noDevices": "Aucun appareil découvert.",
"sentinel.trusted": "Fiable",
"sentinel.untrusted": "Non fiable",
"sentinel.alias": "Alias",
"sentinel.expectedIps": "IPs attendues",
"sentinel.lastSeen": "Vu en dernier",
"sentinel.deviceSaved": "Appareil mis à jour",
"sentinel.discordWebhook": "Webhook Discord",
"sentinel.webhookUrl": "URL Webhook",
"sentinel.smtpHost": "Hôte SMTP",
"sentinel.smtpPort": "Port SMTP",
"sentinel.smtpUser": "Utilisateur SMTP",
"sentinel.smtpPass": "Mot de passe SMTP",
"sentinel.emailFrom": "Email expéditeur",
"sentinel.emailTo": "Email destinataire",
"sentinel.saveNotifiers": "Sauvegarder",
"sentinel.notifiersSaved": "Configuration sauvegardée",
"sentinel.justNow": "à l'instant",
"sentinel.acknowledge": "Acquitter",
"nav.bifrost": "Bifrost",
"bifrost.title": "Bifrost",
"bifrost.enabled": "Activé",
"bifrost.disabled": "Désactivé",
"bifrost.activityFeed": "Fil d'activité",
"bifrost.clearActivity": "Effacer",
"bifrost.activityCleared": "Activité effacée",
"bifrost.noActivity": "Aucune activité. Activez Bifrost pour lancer la reconnaissance WiFi.",
"bifrost.networks": "Réseaux",
"bifrost.plugins": "Plugins",
"bifrost.history": "Historique",
"bifrost.mood": "Humeur",
"bifrost.statNetworks": "Réseaux",
"bifrost.statHandshakes": "Handshakes",
"bifrost.statDeauths": "Déauths",
"bifrost.statAssocs": "Assocs",
"bifrost.statEpochs": "Époques",
"bifrost.statPeers": "Pairs",
"bifrost.noNetworks": "Aucun réseau découvert.",
"bifrost.noPlugins": "Aucun plugin chargé.",
"bifrost.noEpochs": "Aucune époque enregistrée.",
"bifrost.justNow": "à l'instant",
"bifrost.confirmEnable": "Activer le mode Bifrost ? Le WiFi passera en mode monitor — la connexion réseau sera perdue. Connectez-vous via USB/Bluetooth/Ethernet.",
"bifrost.monitorFailed": "Mode Moniteur Échoué",
"bifrost.monitorFailedHint": "Pour les puces Broadcom (Pi Zero), installez nexmon. Ou utilisez un adaptateur WiFi USB externe.",
"bifrost.nexmonRequired": "Nexmon requis",
"bifrost.nexmonRequiredDesc": "Votre puce WiFi Broadcom nécessite les patchs firmware nexmon pour le mode moniteur. Cliquez pour auto-installer (~15-25 min sur Pi Zero 2 W).",
"bifrost.nexmonInstallBtn": "Installer Nexmon",
"bifrost.nexmonConfirm": "Installer les patchs firmware nexmon ? Cela va télécharger et compiler nexmon (~15-25 min). Nécessite un accès internet et les droits root.",
"bifrost.nexmonStarted": "Installation de nexmon lancée ...",
"bifrost.nexmonInstalling": "Installation de Nexmon ...",
"nav.loki": "Loki",
"loki.title": "Loki — Suite d'attaque HID",
"loki.enable": "Activer",
"loki.enabled_msg": "Mode Loki activé",
"loki.disabled_msg": "Mode Loki désactivé",
"loki.status_label": "Statut",
"loki.gadget_label": "Gadget",
"loki.layout_label": "Disposition",
"loki.jobs_label": "Tâches",
"loki.running": "En cours",
"loki.running_lc": "en cours",
"loki.idle": "Inactif",
"loki.ready": "Prêt",
"loki.not_ready": "Non prêt",
"loki.not_installed": "Non installé",
"loki.install_msg": "Le gadget HID n'est pas installé. Installez-le et redémarrez pour activer Loki.",
"loki.install_btn": "Installer le gadget HID & Redémarrer",
"loki.reboot_confirm": "Gadget HID installé. Redémarrer maintenant pour activer ?",
"loki.run": "Exécuter",
"loki.save": "Sauvegarder",
"loki.new": "Nouveau",
"loki.delete": "Supprimer",
"loki.cancel": "Annuler",
"loki.output": "Sortie",
"loki.payloads": "Charges utiles",
"loki.custom_scripts": "Scripts personnalisés",
"loki.jobs": "Tâches",
"loki.clear_completed": "Effacer terminés",
"loki.script": "Script",
"loki.status_col": "Statut",
"loki.started": "Démarré",
"loki.actions": "Actions",
"loki.no_payloads": "Aucune charge utile",
"loki.no_scripts": "Aucun script sauvegardé",
"loki.no_jobs": "Aucune tâche",
"loki.no_output": "Aucune sortie",
"loki.empty_script": "Script vide",
"loki.job_started": "Tâche démarrée : {id}",
"loki.run_error": "Échec de l'exécution",
"loki.script_name_prompt": "Nom du script :",
"loki.saved": "Script sauvegardé",
"loki.save_error": "Échec de la sauvegarde",
"loki.confirm_delete": "Supprimer le script '{name}' ?",
"loki.quick_placeholder": "Taper du texte ici...",
"loki.quick_send": "Taper",
"loki.quick_sent": "Texte envoyé à la cible",
"loki.quick_error": "Échec de l'envoi"
}