veafServerHook — Hook serveur VEAF¶
Fichier: VEAF-Server-hook.lua | Emplacement: Saved Games/<serveur>/Scripts/Hooks/
Objectif¶
Hook DCS (environnement GameGUI) tournant sur un serveur dédié. Il :
- écoute le chat, exécute ses propres commandes serveur (
/send,/pause,/restart…) et relaie toute autre commande/module(/secu elevate,/alias…) à la mission viaveafRemote/veafSecurity; - charge la liste des pilotes (niveaux de permission par UCID) ;
- redémarre optionnellement le serveur quand il est inactif (opt-in) ;
- pousse optionnellement de la télémétrie vers un serveur d'API (opt-in).
Ce n'est pas un module de mission : il n'est pas injecté dans le
.miz, il se dépose dans le dossierScripts/Hooks/du serveur et se charge au démarrage de DCS.
Installation¶
- Déposer
VEAF-Server-hook.luadansSaved Games/<serveur>/Scripts/Hooks/. - Déposer
veaf-pilots.txtdans la racineSaved Games/(un seul fichier partagé sert tous les serveurs par défaut) et l'éditer. Pour un fichier propre à un serveur, définirpilotsDir(voir ci-dessous). - Ajouter un
VEAF-specific-server-hook.luadans le même dossier pour la configuration propre au serveur (voir ci-dessous). - Redémarrer le serveur : le hook est chargé au démarrage de DCS ; recharger la mission ne suffit pas.
Ordre de chargement DCS : les fichiers de Scripts/Hooks/ sont chargés par ordre alphabétique.
VEAF-Server-hook.lua se charge avant VEAF-specific-server-hook.lua, qui peut donc
surcharger les réglages ci-dessous avant le premier événement.
Configuration (via le specific-hook)¶
Le VEAF-Server-hook.lua est générique : ses valeurs par défaut conviennent à un serveur
simple. Tout ce qui est propre à un serveur va dans VEAF-specific-server-hook.lua :
veafServerHook.enableAutoRestart = false -- watchdog de redémarrage + commandes /restart /restartnow /halt
veafServerHook.enableBufferingSocket = false -- télémétrie vers un serveur d'API (module natif BufferingSocket)
veafServerHook.pilotsDir = nil -- dossier du fichier pilotes ; défaut = racine Saved Games/ partagée
enableAutoRestart(défautfalse) : active le redémarrage automatique du serveur inactif et les commandes chatrestart/restartnow/halt. À laisser désactivé si les redémarrages sont gérés par un outil externe (ex. DCSServerBot).enableBufferingSocket(défautfalse) : active la télémétrie. Le module natifBufferingSocketest chargé de façon défensive : s'il est absent, la télémétrie est désactivée automatiquement et le hook continue de fonctionner (aucun crash).pilotsDir(défautnil→ racineSaved Games/partagée, un niveau au-dessus du dossier serveur) : tous les serveurs VEAF lisent le mêmeveaf-pilots.txtsans configuration propre. Le pointer ailleurs (p. ex. le dossier du hook) pour un serveur autonome avec sa propre liste.
Le specific-hook porte aussi serverName et serverBotChannel (injectés dans la mission).
Fichier des pilotes (veaf-pilots.txt)¶
Table Lua indexée par UCID, avec un niveau de permission par pilote :
pilots =
{
["<ucid>"] = { name = "Nom", level = 99 },
...
}
Grille des niveaux (croissant) :
| Niveau | Peut… |
|---|---|
| 0 | envoyer des messages (/send) |
| 1 | relayer des commandes VEAF vers la mission (/alias, /atis, /secu elevate… — chaque module applique ensuite son propre contrôle ; /secu login et /secu logout ne font plus que répondre qu'il n'y a plus de connexion globale) |
| 10 | /pause, et /restart, /halt (si enableAutoRestart) |
| 30 | /restartnow |
| 50 | /haltnow |
| 90 | /code (exécution de code arbitraire) |
| 99 | administrateur |
Mise à jour¶
Remplacer VEAF-Server-hook.lua par la nouvelle version, conserver le
VEAF-specific-server-hook.lua et le veaf-pilots.txt existants, puis redémarrer le
serveur.
Après 6.25, le hook envoie le niveau du pilote à la mission à chaque changement de slot. Avec
un hook plus ancien, une mission rechargée pendant qu'un pilote reste connecté ne connaît pas son
niveau tant qu'il n'a tapé aucune commande de tchat : le menu radio le traite comme un pilote de
niveau 0, et le journal de la mission l'écrit (took [...] with no known level).