Файловый менеджер
Файловый менеджер работает с файлами игрового сервера прямо из панели: просмотр и редактирование, загрузка и скачивание, права доступа. Он находится на вкладке «Файлы» на странице игрового сервера.
Все операции выполняются через 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 либо демон недоступен |
Подробности отказа видны в журнале панели, см. Устранение ошибок.