Файловый менеджер

Файловый менеджер работает с файлами игрового сервера прямо из панели: просмотр и редактирование, загрузка и скачивание, права доступа. Он находится на вкладке «Файлы» на странице игрового сервера.

Все операции выполняются через GameAP Daemon на выделенном сервере и ограничены каталогом игрового сервера — выйти за его пределы нельзя.

Для доступа пользователю нужно право game-server-files на этот сервер, см. Пользователи, роли и права.

Загрузка файлов

Панель использует два способа загрузки и выбирает их сама.

Обычная загрузка — для небольших файлов, одним запросом. Предельный размер — 100 МБ, он не настраивается.

Загрузка по частям — для больших файлов. Файл делится на части по FILES_UPLOAD_CHUNK_SIZE (по умолчанию 8 МБ), части отправляются параллельно, по четыре за раз, с тремя попытками на каждую.

Предельный размер файла при загрузке по частям — произведение размера части на FILES_UPLOAD_MAX_CHUNKS (по умолчанию 100 000), то есть около 780 ГБ.

Возобновление

Перед отправкой браузер считает контрольную сумму SHA-256 всего файла и передаёт её панели вместе с параметрами загрузки. Панель отслеживает, какие части уже получены.

Если загрузка прервалась — закрылась вкладка, пропала сеть, — при повторной попытке панель сообщит список недостающих частей, и будут отправлены только они. Заново считать весь файл не придётся.

Незавершённые загрузки живут FILES_UPLOAD_SESSION_TTL (по умолчанию 24 часа), после чего удаляются фоновой уборкой с периодом FILES_UPLOAD_JANITOR_INTERVAL (по умолчанию 12 часов).

Подсчёт контрольной суммы выполняется в браузере через WebAssembly. Если вы правили политику CSP и убрали 'wasm-unsafe-eval' из script-src, загрузка файлов перестанет работать. См. Безопасность.

Загрузка каталогов

Кроме отдельных файлов можно загрузить каталог целиком — структура вложенных подкаталогов сохраняется.

Какие файлы разрешено загружать

Тип файла определяется по его содержимому, а не по расширению и не по тому, что сообщил браузер. Разрешены:

  • изображения: PNG, JPEG, GIF, WebP, BMP, ICO;
  • текстовые файлы, включая конфигурационные — они определяются как text/plain;
  • JSON, XML, CSV, YAML;
  • PDF.

Запрещены по умолчанию:

Что Переменная Почему
Архивы: zip, tar, gzip, bzip2, 7z, xz FILES_UPLOAD_ALLOW_ARCHIVES Архив может содержать исполняемые файлы, которые распакуются на выделенном сервере
Произвольные двоичные файлы FILES_UPLOAD_ALLOW_BINARY Тип application/octet-stream не даёт понять, что внутри

SVG и HTML запрещены всегда: в них можно спрятать скрипт.

Расширить список разрешённых типов, не открывая архивы целиком, можно переменной FILES_UPLOAD_ALLOWED_MIMES — она дополняет список по умолчанию, а не заменяет его.

Отклонённые загрузки попадают в журнал аудита с указанием определённого типа файла и причины отказа.

Скачивание

Отдельный файл скачивается как есть. Каталог или несколько выбранных файлов панель упаковывает в ZIP и отдаёт одним потоком, не создавая временный архив на диске.

Ограничения задаются переменными:

Переменная По умолчанию Назначение
FILES_ARCHIVE_MAX_BYTES 100G Предельный размер архива
FILES_ARCHIVE_MAX_FILES 500000 Предельное число файлов в архиве
FILES_ARCHIVE_CONCURRENT_PER_SERVER 2 Одновременных упаковок на один игровой сервер

Права доступа к файлам

Для файла или каталога можно изменить права командой chmod — так же, как в оболочке. Это нужно, например, чтобы сделать исполняемым скрипт запуска игрового сервера.

Редактирование

Текстовые файлы открываются во встроенном редакторе. Плагины могут добавлять собственные редакторы для определённых файлов — например шестнадцатеричный редактор для двоичных. Файлы больше 1 МБ плагинными редакторами не открываются. См. Плагины.

Если файл не загружается

Признак Причина
Отказ сразу, без загрузки Тип файла не разрешён. Чаще всего это архив или двоичный файл
Отказ на файле больше 100 МБ Сработал предел обычной загрузки; для больших файлов используется загрузка по частям
Загрузка обрывается на подсчёте суммы Из политики CSP убран 'wasm-unsafe-eval'
Загрузка не начинается Нет права game-server-files либо демон недоступен

Подробности отказа видны в журнале панели, см. Устранение ошибок.