Files
neckfireandClaude Opus 4.8 c70f674431
Build & Deploy / build (push) Successful in 28s
docs(tool): document automatic Proton prefix cert import
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-14 16:50:30 +02:00

4.2 KiB

ProspectServerSwitcher

Petit utilitaire multi-OS (Linux/Proton + Windows) pour pointer un client The Cycle: Frontier vers un serveur, importer le certificat, et lancer le jeu.

Pourquoi

L'agent Prospect (Prospect.Agent.dll, injecté par Prospect.Client.Loader.exe) hooke l'URL de l'API PlayFab et la remplace par le contenu de backend.txt, placé à côté de l'exécutable du jeu (Prospect/Binaries/Win64). S'il est absent, l'agent retombe sur https://127.0.0.1:8443.

Tout l'aiguillage du client tient donc dans cette seule valeur. Cet outil ne fait essentiellement qu'écrire le bon backend.txt — plus quelques commodités (cert, launch).

Serveurs (presets)

Les presets utilisent les domaines publics pour que la même cible marche pour tout le monde (le DNS résout vers l'IP publique pour les amis, et le certificat TLS unifié couvre les deux hostnames) :

Preset URL
prod https://tc.nfteam.ovh:8443
preprod https://rd-tc.nfteam.ovh:8444

Sur le même LAN que le serveur, ajoute une entrée hosts pour éviter le hairpin NAT :

192.168.1.136   tc.nfteam.ovh
192.168.1.136   rd-tc.nfteam.ovh

Utilisation

Menu interactif

Lance le binaire sans argument :

  • 1 : définir le dossier du jeu (…/Prospect/Binaries/Win64) — mémorisé
  • 2/3 : basculer sur PROD / PREPROD
  • 4 : URL personnalisée
  • 5 : importer un certificat (.crt)
  • 6 : lancer le jeu
  • 0 : quitter

En ligne de commande (scriptable)

ProspectServerSwitcher --folder "<...>/Prospect/Binaries/Win64" --set preprod
ProspectServerSwitcher --set prod
ProspectServerSwitcher --set https://mon-serveur:8443   # URL libre

⚠️ backend.txt n'est lu qu'au démarrage du loader → relance le jeu après un switch. Le serveur ciblé doit tourner (conteneurs on-demand the-cycle-api / the-cycle-api-rd).

Certificat

L'outil récupère le certificat en direct depuis le serveur ciblé (il lit backend.txt et se connecte en TLS), puis le rend fiable :

  • Windows : import automatique dans Autorités de certification racines de confiance (utilisateur courant), via le magasin X509Store.

  • Linux/Proton : import automatique dans le préfixe Wine du jeu. Comme wine certutil est cassé sous Proton, l'outil écrit directement le blob sérialisé du certificat (propriété SHA1 id=3 + certificat encodé id=0x20) dans le magasin Root du préfixe via wine reg import. Il :

    1. détecte le binaire wine de Proton (…/common/Proton*/files/bin/wine),
    2. liste les préfixes compatdata/*/pfx (le plus récemment utilisé en premier),
    3. importe dans le préfixe choisi (⚠️ le jeu doit être fermé), mémorisé ensuite.

    ⚠️ Le client tourne souvent comme raccourci non-Steam → son préfixe n'est pas compatdata/868270 mais un appid généré (ex. 3883998305). D'où la sélection explicite du préfixe plutôt qu'une déduction sur l'appid du jeu.

Lancement

  • Windows : démarre Prospect.Client.Loader.exe depuis le dossier du jeu.
  • Linux/Proton : passe par Steam (steam steam://rungameid/868270) — le loader doit tourner dans le préfixe Proton.

Réglages

Le dossier du jeu est mémorisé dans …/ApplicationData/ProspectSwitcher/settings.json (%AppData% sous Windows, ~/.config sous Linux).

Build / publication

Projet console net8.0 (cross-platform, InvariantGlobalization), jamais buildé par la CI serveur (Linux).

# build simple
dotnet build src/Prospect.Client.Config -c Release

# binaires autonomes single-file (aucun .NET requis chez l'utilisateur)
dotnet publish src/Prospect.Client.Config -c Release -r win-x64   --self-contained \
  -p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=true -p:EnableCompressionInSingleFile=true
dotnet publish src/Prospect.Client.Config -c Release -r linux-x64 --self-contained \
  -p:PublishSingleFile=true -p:EnableCompressionInSingleFile=true

Les binaires publiés sont distribués via la release Gitea friends-client (ProspectServerSwitcher.exe pour Windows, ProspectServerSwitcher-linux-x64 pour Linux).