Вход без пароля, права админа и 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:
@@ -72,6 +72,19 @@ public final class RsxHitboxDebug {
|
||||
return visible;
|
||||
}
|
||||
|
||||
/**
|
||||
* Shows or hides the boxes.
|
||||
*
|
||||
* The right to look at them belongs to the administrators, so when the
|
||||
* right is taken away the boxes go at once.
|
||||
*/
|
||||
public static void setVisible(boolean value) {
|
||||
visible = value;
|
||||
if (!value) {
|
||||
preview = null;
|
||||
}
|
||||
}
|
||||
|
||||
/** How many models the server has sent. */
|
||||
public static int modelCount() {
|
||||
return MODELS.size();
|
||||
|
||||
Reference in New Issue
Block a user