• v3.3.1 51eecbb57a

    nicolas released this 2026-11-10 12:31:06 +01:00 | 28 commits to master since this release

    🖥️ Launcher 3.3.1 — Correctif du mode maintenance

    Un launcher resté ouvert pendant la re-signature du trousseau ne voyait pas la maintenance activée ensuite : chaque relecture (toutes les 2 minutes) la refusait jusqu'au redémarrage du launcher. Le launcher retélécharge désormais le trousseau quand un contenu est signé par une clé qu'il connaît mais pas encore autorisée pour ce contenu, et le relit au plus toutes les 30 minutes quand il reste ouvert longtemps.

    Aucune action sur le serveur. Publier le launcher 3.3.1 comme d'habitude.

    ✨ En bref

    Changement
    🐛 Corrigé Maintenance activée après la re-signature du trousseau non vue par un launcher déjà ouvert (redémarrage nécessaire en 3.3.0)
    🔧 Amélioré Trousseau retéléchargé quand un contenu est signé par une clé absente ou présente sans l'autorisation de ce contenu (au plus une fois par minute)
    🛡️ Sécurité Trousseau relu au plus toutes les 30 minutes : un appareil retiré du trousseau n'est plus accepté par un launcher laissé ouvert
    🖧 Serveur Aucun changement
    🧪 Qualité 3 nouveaux tests automatisés (370 au total), dont la reproduction du problème

    🐛 Le problème

    Symptôme Maintenance activée depuis le menu : toujours pas affichée au bout de 5 minutes ; affichée après un redémarrage complet du launcher
    Cause Le launcher gardait en mémoire le trousseau lu au démarrage. Il ne le retéléchargeait que pour une clé inconnue, pas pour une clé connue qui vient de recevoir une autorisation — exactement ce que fait l'étape 3 decies (autorisation « mode maintenance » ajoutée en re-signant le trousseau)
    Effet À chaque relecture : « la clé … n'est pas autorisée à signer ce contenu », maintenance ignorée (état précédent conservé)
    Hors cause La relecture toutes les 2 minutes fonctionnait ; aucun cache HTTP (requêtes no-cache, bloc nginx sans cache)

    Le même défaut touchait tout contenu signé par un appareil autorisé après le démarrage du launcher : formulaires « Aide », catalogue, versions des jeux.

    🔁 Vérifications périodiques du launcher

    Fichier Quand Changement 3.3.1
    maintenance.json Démarrage (attendu 4 s au plus), puis toutes les 2 min (1 min pendant une maintenance), et aussitôt après une publication depuis le menu de ce PC Un fichier refusé est revérifié à chaque relecture, avec un trousseau à jour
    Manifest des jeux Démarrage, puis toutes les 30 min (updateCheckIntervalMinutes) —
    keyring.json Démarrage ; après un échec réseau (1 min) ; clé inconnue ou non autorisée (1 min au plus, 5 min et clé inconnue seulement avant) ; au plus toutes les 30 min Nouveau : clé non autorisée, âge maximal
    catalog.json Démarrage seulement (2,5 s au plus, sinon cache) —
    Mise à jour du launcher Démarrage, et « Rechercher » dans les paramètres —
    feedback-forms.json À l'ouverture de la fenêtre « Aide » —

    🛡️ Sécurité

    • Chaque trousseau retéléchargé passe par les mêmes contrôles qu'au démarrage : signature de la clé racine, numéro jamais en baisse, différent sous le même numéro refusé, minimum keyringMinSequence. Un serveur compromis qui ressert un ancien trousseau est refusé.
    • Serveur injoignable lors d'un nouveau téléchargement : dernier trousseau vérifié conservé, aucune erreur pour l'appelant.
    • Gain : un appareil retiré du trousseau (ou une autorisation enlevée) n'est plus accepté par un launcher resté ouvert, au plus 30 minutes après.
    • Le rythme des téléchargements reste limité (au plus une fois par minute pour une clé inconnue ou non autorisée).

    🧪 Tests

    Test Vérifie
    MaintenanceServiceTests.A_maintenance_published_after_the_keyring_gained_the_scope_is_applied_without_restarting Reproduction du problème : trousseau re-signé avec « maintenance » pendant que le launcher tourne, maintenance appliquée à la relecture suivante (échouait en 3.3.0)
    ContentTrustTests.A_scope_granted_while_the_launcher_runs_is_found_by_downloading_the_keyring_again Autorisation ajoutée à une clé connue : trousseau retéléchargé, au plus une fois par KeyChangeRetryDelay
    ContentTrustTests.A_launcher_left_open_downloads_the_keyring_again_and_stops_trusting_a_removed_key Âge maximal : clé retirée refusée sans redémarrer ; hors ligne, dernier trousseau gardé ; ancien trousseau resservi refusé

    ⬆️ Mise à niveau

    1. Launcher 3.3.1 : le publier (mise à jour signée habituelle).
    2. Serveur, nginx, trousseau : aucune action.
    • Administrateurs : aucune action. Les launchers 3.3.0 restés ouverts depuis la re-signature du trousseau doivent être redémarrés une fois (ou recevoir la 3.3.1).
    • Joueurs : mise à jour automatique, aucune action requise.
    • RGPD : aucune donnée personnelle concernée.

    🔏 La sécurité des mises à jour du launcher ne change pas : la signature numérique et l'empreinte SHA-256 de chaque nouvelle version sont vérifiées avant toute installation.

    What's Changed

    Contributors

    Full Changelog: v3.3.0...v3.3.1

    Downloads