Документація Розробники

Огляд для розробників

Технічна архітектура LeavePulse: протоколи Ingest (HTTP) та Gateway (WebSocket), життєвий цикл Агента та безпека.

На цій сторінці
  1. 1. Ingest (HTTP REST API)
  2. 2. Gateway (WebSocket)
  3. Життєвий цикл підключення
  4. Безпека

Агент LeavePulse використовує два основні канали зв'язку для передачі даних та отримання команд.

1. Ingest (HTTP REST API)

Використовується для асинхронної відправки метрик та подій. Це надійний канал з підтримкою буферизації на диску.

  • Ендпоінт: https://api.leavepulse.com/monitoring/v1/verified/ingest
  • Автентифікація: Header X-Ingest-Token.
  • Дані: JSON-пакети з метриками (TPS, RAM, гравці) та подіями (Join/Leave).
  • Буферизація: Якщо API недоступне, Агент зберігає дані в папці buffer (до 10 МБ за замовчуванням) і надсилає їх після відновлення зв'язку.

2. Gateway (WebSocket)

Основний канал для функцій реального часу. Тримає постійне з'єднання (Keep-alive).

  • Ендпоінт: wss://agents.leavepulse.com
  • Автентифікація: JWT-токен (gateway.token у конфігу).
  • Можливості:
    • Whitelist Sync: Миттєве отримання оновлень списку доступу.
    • Moderation Commands: Виконання команд (Kick, Ban, Mute) з веб-панелі.
    • Maintenance Control: Увімкнення/вимкнення режиму обслуговування.
    • Telemetry Snapshots: Запит поточного стану сервера за запитом.

Життєвий цикл підключення

  1. Unconnected: Агент завантажений, але не має токенів. Працюють лише локальні команди діагностики.
  2. Linked: Виконана команда connect. Агент отримав server_id та gateway.token.
  3. Enrolled: Агент зареєстрував середовище виконання, згенерував ключі підпису та отримав environment_id. Починається активна передача метрик.
  4. Stable: Сесія шлюзу активна більше 12 секунд. Запускаються служби інтеграції (наприклад, LuckPerms).

Безпека

  • Signing: Всі критичні запити (наприклад, зміна вайтлисту) підписуються локальним ключем Агента.
  • Token Scope: Токен шлюзу має обмежений термін дії та прив'язаний до конкретного server_id.
  • Payload Relocation: Агент використовує затінення (shading) бібліотек (Jackson, SnakeYAML) для уникнення конфліктів з іншими плагінами.