📁 Файловый API (демон)
📌 Описание
FileService даёт обзор и управление файловой системой ноды от корня /: список каталога, стат пути, создание каталога, перемещение/переименование, копирование, удаление, архивирование, смену прав/владельца и потоковую загрузку/скачивание файла. Это API за файловым менеджером платформы (вкладка «Файлы» на странице ноды) — отдельная, более широкая фича по сравнению с SFTP-сервером по приложению.
🎯 Сценарии использования
- 🖥️ Файловый менеджер в UI платформы (FE-008): просмотр, загрузка, скачивание и организация файлов в любом месте ноды.
- 🔧 Скрипт или CLI-пользователь вызывает тот же REST напрямую с токеном, как и остальной API демона.
🏗️ Техническое решение
- Область видимости: вся файловая система от
/— демон работает от root, платформа сама проверяет права вызывающего пользователя (files.read/files.edit) до того, как запрос дойдёт до ноды. - Доступ: каждый метод требует root-контекст. На unix-сокете CLI это проверяется отдельно от обычного правила по peer uid, поскольку сокет иначе доступен всем локальным пользователям.
- Симлинки: показываются (тип, сырая цель, best-effort тип цели), но никогда не проходятся рекурсивной операцией (удаление, копирование, архивирование).
- Потоковая передача: чанковая загрузка (client-stream) и скачивание (server-stream), чанки по 256 КиБ; оборванная загрузка никогда не оставляет обрезанный файл на месте целого.
- Архивирование: только
tar.gz, на уже имеющихся зависимостяхtar/flate2. - Лимиты: листинг каталога ограничен 10 000 записями за вызов.
🔗 Связанные задачи
DMN-070 в ROADMAP.md; NODE-012, BE-011 и FE-008 строят файловый менеджер платформы поверх этого API.