Skip to content

HTTP endpoints

Сервер запускает plaintext HTTP listener на httpPort (без TLS) и отдает server-info, resource manifest и resource file endpoints. Listener живет в src/network/CNetworkManager.cpp (HTTPServerThread); launcher забирает эти данные до подключения GTA, а in-game client получает тот же manifest уже по encrypted session.

Request handling

Роутинг идет только по path. HTTP method парсится, но не меняет поведение — любой поддерживаемый method на один и тот же path дает один и тот же ответ (отдельной обработки HEAD/OPTIONS или ответа 405 нет).

SituationResponse
Malformed request line или заголовки больше лимита400 Bad Request
Advertised resource file найден200 OK (application/octet-stream)
Resource file не в advertised-list404 Not Found
Любой другой path200 OK с server-info JSON

JSON- и file-ответы несут заголовок Access-Control-Allow-Origin: *.

Endpoints

PathPurpose
/resources/manifest.jsonResource manifest с file hashes и resource config
/resources/files/<resource>/<path>Client-accessible resource file
/assets/<resource>/<path>Asset-pack file
/stream/<resource>/<path>Stream file для dlc/rpf resources
любой другой path (/, /server-info.json, unknown)Server-info JSON (fallback)

Отдельного роута под /server-info.json нет: server-info — это fallback-ответ для любого path, который не совпал с manifest- или resource-file-роутами. Поэтому /, /server-info.json и неизвестные пути отдают один и тот же server-info JSON, а не 404.

server-info.json

Server-info JSON собирается inline в HTTPServerThread и содержит ровно эти поля:

FieldTypeValue
namestringserver display name
playersnumberadmitted player count
maxPlayersnumberplayer cap
gamemodestringgamemode name
protocolnumberprotocol version (11)
buildnumberclient build version (10000)
gtaBuildnumbersupported GTA build (3788)
channelstringrelease channel/branch
minClientBuildnumberminimum accepted client build
useEarlyAuthboolearly-auth enabled
earlyAuthUrlstringearly-auth URL
useCloudAuthboolcloud-auth enabled

Здесь нет serverId, identityMode, host/port, connection/queue counts, password state, tags, language, tick rate или streaming distance — доступны только перечисленные выше поля.

resources/manifest.json

Manifest собирается в CResourceManager::BuildManifestJson и отдается как строка. Пустой manifest возвращается как {"schema":1,"files":[],"totalFiles":0,"totalBytes":0,"resources":[]}.

Top-level поля:

  • schema — версия схемы (1)
  • files — плоский список client-accessible файлов
  • totalFiles, totalBytes — счетчики по всем файлам
  • resources — список resources с конфигом

Каждый элемент files[]: resource, path, url, size, stream (bool), sha256 и опциональный enc (encryption marker для encrypted-at-rest файлов).

Каждый элемент resources[]: name, type, clientType, assetsBase, streamBase, опциональный clientMain, а также массивы exports, dependencies, clientFiles, dataFiles ({path, type}) и объект config.

Manifest не содержит engine version, protocol, server name или gamemode — эти значения живут в server-info JSON, а не в manifest.

Source backing

Страница основана на src/network/CNetworkManager.cpp (HTTP listener и server-info JSON) и server/src/CResourceManager.cpp (BuildManifestJson).

Varion Multiplayer Platform