feat(kiosk): l'écran client ne peut plus quitter l'application, et le poste s'en aperçoit - #40
Merged
Merged
Conversation
… poste s'en aperçoit Sur un poste en service : clic droit, « Rechercher sur le web », et la fenêtre du kiosque part sur un moteur de recherche. `--kiosk` ne donne ni barre d'adresse ni bouton retour. Les seize contrôles de `doctor` restaient verts — le processus tournait, /healthz répondait 200, la fenêtre était en plein écran — et le poste ne vendait rien. Le menu contextuel est bloqué depuis L6 sur l'écran client. Il reste deux surfaces volontairement ouvertes : l'administration, qui vit dans la même fenêtre et où « Copier » sert au téléphone, et la page de secours, un file:// sans script par conception. ADR-056 pose deux couches par-dessus. 1. Le kiosque écrit les stratégies de son navigateur, sous SA ruche, avant de le lancer : URLBlocklist = *, l'adresse du poste et file://* rouvertes, plus neuf valeurs dont DefaultSearchProviderEnabled, qui retire l'entrée du menu au lieu de la refuser après le clic. HKCU et jamais HKLM : un technicien connecté sur ce PC garde un navigateur qui marche. C'est le kiosque et non install.ps1 parce qu'au moment de l'installation le compte existe et son profil n'existe pas — il n'y a aucune ruche à charger. 2. Le superviseur surveille l'écran ATTACHÉ et non le processus. GET /api/v1/screens dit combien d'écrans tiennent le flux d'état ; quinze secondes sans aucun écran valent une relance, non comptée comme un plantage. Elle ne se déclenche que sur un écran vu attaché : comptées depuis le lancement, ces quinze secondes tueraient le navigateur d'un poste lent, puis recommenceraient. « Le poste ne répond pas » ne vaut jamais « aucun écran ». Dix-septième contrôle de doctor : il relit URLBlocklist dans la ruche du COMPTE DU POSTE, jamais dans la sienne — lire son propre HKCU rendrait vert un poste grand ouvert, la faute exacte corrigée sur le principal de la tâche planifiée (#35). Une ruche non montée répond orange et jamais rouge : la couche 2 tient pendant ce temps. La désinstallation retire les clés du compte qu'elle conserve par défaut. La station Linux ne reçoit que la couche 2 : sa stratégie irait dans /etc/chromium/policies/managed, et la liste blanche a besoin d'une adresse que install.sh devrait lire dans un JSON qu'il ne sait pas analyser.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Sur un poste en service : clic droit, « Rechercher sur le web », et la fenêtre du kiosque part sur un moteur de recherche.
--kioskne donne ni barre d'adresse ni bouton retour. Les seize contrôles dedoctorrestaient verts — le processus tournait,/healthzrépondait 200, la fenêtre était en plein écran — et le poste ne vendait rien.Le menu contextuel est bloqué depuis L6 sur l'écran client (
web/src/main.ts). Il reste deux surfaces volontairement ouvertes : l'administration, qui vit dans la même fenêtre et où « Copier » sert au téléphone (§14.1) ; la page de secours, unfile://sans script par conception (§15.2). Les fermer coûterait le dépannage. ADR-056 pose deux couches par-dessus.1. Le kiosque pose les stratégies de son navigateur
URLBlocklist = *,URLAllowlist= l'adresse de ce poste etfile://*, plus neuf valeurs — dontDefaultSearchProviderEnabled = 0, qui retire l'entrée du menu contextuel au lieu de la laisser cliquer puis refuser, etAllowFileSelectionDialogs = 0pour Ctrl+O.HKCUet jamaisHKLM: le compte du poste est le seul à enfermer, un technicien connecté sur ce PC garde un navigateur qui marche.install.ps1:New-LocalUsercrée un compte et pas un profil, donc au moment de l'installation il n'y a aucune ruche à charger. Écrites à chaque ouverture de session, les clés reviennent seules quand quelqu'un les efface.file://*dans la liste blanche n'est pas décoratif : sans lui, la page de secours devient « Bloqué par votre administrateur » sur le seul écran dont c'est le métier d'être lisible quand rien ne marche.2. Le superviseur surveille l'écran ATTACHÉ, pas le processus
GET /api/v1/screensdit combien d'écrans clients tiennent le flux d'état. Le superviseur le demande une fois par seconde sur l'écran client ; quinze secondes sans aucun écran valent une relance, non comptée comme un plantage — une reprise comptée comme une panne finirait par afficher ERR-KSK-02 sur un poste qui s'est réparé tout seul.Écrit pour se tromper dans un seul sens : il ne se déclenche que sur un écran vu attaché pendant ce lancement — comptées depuis le démarrage du navigateur, ces quinze secondes tueraient le navigateur d'un poste lent, puis recommenceraient — et « le poste ne répond pas » ne vaut jamais « aucun écran ». Le prix est nommé : un portable qui lit
/adminsur le réseau du magasin tient un flux et masque un kiosque parti. Un chien de garde qui n'aboie pas, jamais un qui mord un écran qui travaille.3. Dix-septième contrôle de
doctorIl relit
URLBlocklistdans la ruche du compte qui exécute le kiosque, jamais dans la sienne : le contrôle est tapé par quelqu'un connecté sous un autre nom, et lire son propreHKCUrendrait vert un poste grand ouvert. C'est mot pour mot la faute corrigée en #35 sur le principal de la tâche planifiée. Une ruche non montée — compte sans session ouverte — répond orange et jamais rouge : la couche 2 tient pendant ce temps, et un diagnostic ne monte pas le registre de quelqu'un d'autre. Nouveau codeERR-KSK-03.La désinstallation retire les clés du compte qu'elle conserve par défaut : les laisser, c'est laisser un compte Windows dont le navigateur ne peut plus ouvrir qu'une adresse que plus rien ne sert.
Ce qui reste dehors, et qui est dit
La station Linux ne reçoit que la couche 2. Sa stratégie irait dans
/etc/chromium/policies/managed, un fichier de root qu'install.shécrirait — mais la liste blanche a besoin de l'adresse du poste, que le script devrait lire dans un JSON qu'il ne sait pas analyser. Souscageil n'y a rien vers quoi s'échapper, et la surveillance de présence y ramène l'écran comme ailleurs. Couche manquante, pas couche impossible.Vérification
Nouveaux tests : 5 sur la présence (relance, reconnexion qui ne tue pas, poste muet qui ne tue pas, navigateur qui n'a jamais attaché, reprise ≠ plantage), 8 sur les stratégies, 3 sur la route, 4 sur le contrôle 17, 2 sur la résolution du SID, 1 sur la désinstallation. Front non touché.
Sur le poste
Après la mise à jour du binaire, fermer puis rouvrir la session du poste : les stratégies se posent au lancement du kiosque.
kiosk.logécrit alors « N stratégies de navigation posées sous … ».Documentation : ADR-056, §15.2, §14.5, §15.4,
SUIVI.md,TROUBLESHOOTING.md.