Вход без пароля, права админа и F3+B
Аутентификация переделана по схеме пользователя: лаунчер — единственный
источник токена, сервер проверяет его сам и лаунчера не спрашивает.
- rsx-auth/GameToken: токен это base64url(payload) + "." + base64url(HMAC-SHA256),
payload {uuid, nick, aud, exp, jti, typ}, typ = session или reload.
- Сессия живёт час, reload-токен полтора часа и только внутри игры. Пакет
SessionReload продлевает сессию и выдаёт новый reload-токен.
- Сервер проверяет подпись, аудиенс, срок и совпадение uuid. HTTP-запрос к
лаунчеру из сервера убран.
- Клиент: окно пароля убрано совсем, ник берётся из токена, клиент сам
продлевает сессию за 5 минут до конца.
- Для локальной разработки сервер с --dev-token пишет свой токен в
world/dev-token.txt, клиент берёт токен оттуда.
- Права админа: свой список world/admins.txt, перечитывается раз в 5 секунд,
поэтому право снимается на лету. Пакет AdminState.
- Ванильные блоки мира ломает только админ, режим игры прав не даёт.
- F3+B только для админов: без прав показываем отказ, с правом включаются и
ванильные хитбоксы, и наш отладочный рендер. Права сняли посреди просмотра —
гаснут сразу.
- run-game.ps1 умеет -Token.
Проверено на живом сервере: own session ok, player in, rights of Player given.
Тесты: протокол 34, сервер 88, форк собирается чисто.
This commit is contained in:
@@ -5,13 +5,14 @@
|
||||
# Stage first if run\classpath.txt is missing:
|
||||
# python tools\stage_run.py <run> ..\..\game-fork\build\classes <meta>
|
||||
|
||||
param(
|
||||
[string]$Run = 'G:\RustNotMC\run',
|
||||
[string]$Java = '',
|
||||
[string[]]$ExtraArgs = @(),
|
||||
[int]$Width = 1280,
|
||||
[int]$Height = 720
|
||||
)
|
||||
param(
|
||||
[string]$Run = 'G:\RustNotMC\run',
|
||||
[string]$Java = '',
|
||||
[string[]]$ExtraArgs = @(),
|
||||
[string]$Token = '',
|
||||
[int]$Width = 1280,
|
||||
[int]$Height = 720
|
||||
)
|
||||
|
||||
$ErrorActionPreference = 'Stop'
|
||||
$root = 'G:\RustNotMC'
|
||||
@@ -56,7 +57,7 @@ $javaArgs += '--version'; $javaArgs += '1.12.2'
|
||||
$javaArgs += '--gameDir'; $javaArgs += $Run
|
||||
$javaArgs += '--assetsDir'; $javaArgs += $assets
|
||||
$javaArgs += '--uuid'; $javaArgs += '00000000000000000000000000000000'
|
||||
$javaArgs += '--accessToken'; $javaArgs += '0'
|
||||
$javaArgs += '--accessToken'; $javaArgs += $(if ($Token) { $Token } else { '0' })
|
||||
$javaArgs += '--userType'; $javaArgs += 'legacy'
|
||||
$javaArgs += '--versionType'; $javaArgs += 'release'
|
||||
$javaArgs += '--width'; $javaArgs += "$Width"
|
||||
|
||||
Reference in New Issue
Block a user