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 <noreply@anthropic.com>
This commit is contained in:
@@ -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).
|
||||||
Reference in New Issue
Block a user