From 2809033b7628c3a3471755ca240ae423592ddd01 Mon Sep 17 00:00:00 2001 From: neckfire Date: Tue, 14 Jul 2026 16:03:24 +0200 Subject: [PATCH] docs(tool): README for ProspectServerSwitcher Documents the cross-platform server switcher: backend.txt mechanism, domain presets, interactive/CLI usage, cert import (Windows / Proton), launch, settings location and self-contained publish commands. Co-Authored-By: Claude Opus 4.8 --- src/Prospect.Client.Config/README.md | 93 ++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 src/Prospect.Client.Config/README.md diff --git a/src/Prospect.Client.Config/README.md b/src/Prospect.Client.Config/README.md new file mode 100644 index 0000000..246f04a --- /dev/null +++ b/src/Prospect.Client.Config/README.md @@ -0,0 +1,93 @@ +# 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 + +- **Windows** : import automatique dans *Autorités de certification racines de confiance* + (utilisateur courant). +- **Linux/Proton** : le certificat doit être approuvé **dans le préfixe Wine** du jeu. + L'outil détecte le préfixe Proton de l'app `868270` et affiche la commande prête : + ``` + WINEPREFIX="…/compatdata/868270/pfx" wine certutil -addstore -f Root "certificate.crt" + ``` + +## 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). + +```bash +# 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).