Skip to content

📁 Файловый 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.

Распространяется по лицензии MIT.