This commit is contained in:
2026-08-17 20:25:08 +04:00
parent b64dffca9a
commit 25e7ad156b
12 changed files with 368 additions and 13 deletions
+22 -4
View File
@@ -35,6 +35,7 @@ The launcher uses these endpoints from `openapi.json`:
5. `GET /api/launcher/news`
6. `GET /api/launcher/realms`
7. `GET /api/launcher/account`
8. `POST /api/launcher/game-ticket`
Registration sequence:
@@ -106,6 +107,19 @@ Account sequence:
3. The response `balance` field is intentionally ignored and never displayed.
4. Account metadata failures do not block patching or launching the game.
Game authorization sequence:
1. Immediately before starting the game, the launcher calls
`POST /api/launcher/game-ticket` with bearer authentication and
`{ "client_build": 12340 }` in the JSON body.
2. The API returns `account`, a 16-character `A-Z0-9` single-use `ticket`, and
`expires_at`. The ticket must remain valid for at least five more seconds.
3. Issuing a ticket atomically revokes any previous unused game ticket for the
same account. Production lifetime must not exceed 60 seconds.
4. The launcher never persists or logs the ticket.
5. The auth server uses the ticket as the temporary SRP password and consumes
it atomically after a successful logon proof.
## Installation Directory Rules
The user selects a single installation root directory.
@@ -232,11 +246,14 @@ When the user presses `Play`:
1. launcher resolves `<install-root>/Wow.exe`
2. launcher clears `<install-root>/Cache`
3. launcher starts `Wow.exe` with working directory set to installation root
and retains a process handle
4. while the process is alive, the launcher disables repeated game launches
3. launcher requests a single-use game ticket
4. launcher starts `Wow.exe` with working directory set to installation root,
no authorization command-line arguments, and these child environment values:
- `MOONWELL_LAUNCH_ACCOUNT=<account>`
- `MOONWELL_LAUNCH_TICKET=<ticket>`
5. launcher retains a process handle; while the process is alive, it disables repeated game launches
and client synchronization
5. when the process exits, the launcher returns to the ready-to-play state
6. when the process exits, the launcher returns to the ready-to-play state
If `Wow.exe` is missing, launch fails with an error.
@@ -253,6 +270,7 @@ The launcher surfaces errors for:
- missing downloaded temp files before verification
- final verification mismatch after update
- missing `Wow.exe`
- invalid, expired, or unavailable game ticket
## Tested Invariants