wip
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user