Skip to content

Repository files navigation

VEAPathTree

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

Возможности

  • Дерево — классический список папок с поиском, развёртыванием и хлебными крошками
  • Граф — колоночная визуализация уровней вложенности с навигацией вперёд/назад
  • Локальный агент — сканирование папок и открытие в системном файловом менеджере (Windows / macOS / Linux)
  • Корневой путь — ограничение доступа только заданной папкой и её вложениями
  • Поделиться — ссылка pathtree:// и нативный путь под вашу ОС
  • READ-ONLY — агент только читает каталоги, без операций записи

Быстрый старт

Распространение без готовых exe

Можно отдавать пользователям пакет без бинарников — только конфиг в dist/:

VEAFileTree/
├── agent/                              ← исходники (нужны для сборки)
├── dist/
│   ├── pathtree-agent.json             ← конфиг
│   └── build-agent.bat                 ← сборка на Windows
├── build-agent-windows.bat
└── file-tree-explorer-with-graph.html

Папку dist/*.exe в репозиторий / архив не включаем — агент собирается на месте.

Windows: сборка агента на устройстве

  1. Установите Go 1.21+
  2. Запустите двойным щелчком один из скриптов:
    • build-agent-windows.bat (из корня VEAFileTree)
    • dist\build-agent.bat (из папки dist)
  3. Появится dist\pathtree-agent-windows-amd64.exe
dist\pathtree-agent-windows-amd64.exe

macOS / Linux: сборка на устройстве

./build-agents.sh

Соберётся только нужный бинарник для вашей платформы можно так:

cd agent
go build -o ../dist/pathtree-agent-darwin-arm64 .

1. Сборка всех платформ (для разработки)

./build-agents.sh

2. Запуск агента

Windows

dist\pathtree-agent-windows-amd64.exe

macOS (Apple Silicon)

chmod +x dist/pathtree-agent-darwin-arm64
./dist/pathtree-agent-darwin-arm64

Linux

chmod +x dist/pathtree-agent-linux-amd64
./dist/pathtree-agent-linux-amd64

При первом запуске без root в конфиге откроется системный диалог выбора папки:

  • Windows — окно выбора папки
  • macOS — Finder
  • Linux — zenity, kdialog или yad

3. Открытие интерфейса

Откройте в браузере файл:

file-tree-explorer-with-graph.html

Агент должен быть запущен — в шапке появится статус «Агент активен».

Конфигурация агента

Скопируйте пример и положите pathtree-agent.json рядом с бинарником:

{
  "bind": "127.0.0.1",
  "port": "47842",
  "root": "\\\\SERVER\\Share\\Projects"
}
Параметр Описание
bind Адрес привязки (по умолчанию 127.0.0.1)
port Порт HTTP-сервера (по умолчанию 47842)
root Корневая папка; пустое значение — запрос при старте

Альтернативные способы задать root

# Флаг
./pathtree-agent-darwin-arm64 -root /Volumes/Share/Projects

# Переменная окружения
PATHTREE_ROOT=/Volumes/Share/Projects ./pathtree-agent-darwin-arm64

# Принудительно выбрать папку заново
./pathtree-agent-darwin-arm64 -pick

# Без диалога — root обязателен в конфиге
./pathtree-agent-darwin-arm64 -no-pick -root /path/to/share

Выбранный root сохраняется в pathtree-agent.json автоматически.

API агента

Все эндпоинты — GET, только localhost.

Эндпоинт Описание
GET /ping Проверка доступности, платформа, root
GET /scan?path=...&depth=8 Дерево папок (макс. depth 10)
GET /open?path=... Открыть в Проводнике / Finder / xdg-open
GET /share?path=... Путь и ссылка в формате текущей ОС

Пример:

curl http://127.0.0.1:47842/ping
curl "http://127.0.0.1:47842/scan?path=/Users/me/Projects&depth=3"

Режим «Граф»

  • Клик по папке — раскрыть уровень и перейти вправо; путь вверху обновляется
  • ← на полоске следующего уровня — шаг назад
  • Backspace / Escape — шаг назад
  • Хлебные крошки под заголовком графа — быстрый переход
  • ⌖ Вписать — вместить весь граф в экран
  • Поделиться — работает с текущей папкой, как в режиме дерева

Поделиться ссылкой

Кнопка «Поделиться» запрашивает у агента GET /share и возвращает:

  1. Нативный путь\\SERVER\Share\... (Windows) или /Volumes/... (macOS/Linux)
  2. Ссылку VEAPathTreepathtree://?path=... (клик открывает папку в проводнике)

Google Таблицы: кликабельные ссылки на папки

Браузер не открывает \\server\... напрямую из Google Sheets. Используйте протокол pathtree://:

  1. Установите агент и импортируйте pathtree-protocol.reg (или разверните через GPO)
  2. Включите автозапуск агента при входе в Windows
  3. UNC-путь храните в ячейке (например B2), рядом — формула:
=IF(B2=""; ""; HYPERLINK("pathtree://?path=" & ENCODEURL(B2); "📂 Открыть"))

Клик откроет папку в Проводнике. Путь кодируется автоматически — копировать вручную не нужно.

Windows: протокол pathtree://

На Windows агент сам регистрирует pathtree:// при первом запуске (в HKCU\Software\Classes, без прав администратора) и добавляет себя в автозагрузку текущего пользователя. Повторные запуски проверяют, что путь к exe не изменился.

Файл pathtree-protocol.reg не обязателен — это ручной вариант для HKCR (на всех пользователей ПК, нужен админ) или если автoregистрация отключена.

Отключить автoregистрацию:

pathtree-agent.exe -no-register-protocol
pathtree-agent.exe -no-autostart

Ручная установка через .reg (опционально):

  1. Соберите агент и положите в C:\PathTree\
  2. Импортируйте pathtree-protocol.reg (отредактируйте пути при необходимости)
  3. Ссылки вида pathtree://?path=\\SERVER\Папка откроют папку в Проводнике

Структура проекта

VEAFileTree/
├── file-tree-explorer-with-graph.html   # UI (дерево + граф)
├── build-agents.sh                      # Сборка под все ОС (macOS/Linux)
├── build-agent-windows.bat              # Сборка на Windows
├── dist/                                # Готовые бинарники
├── agent/                               # Исходники Go-агента
│   ├── main.go
│   ├── config.go
│   ├── paths.go
│   ├── share.go
│   ├── open_windows.go / open_darwin.go / open_linux.go
│   ├── pick_root_*.go
│   └── pathtree-agent.json.example
└── pathtree-protocol.reg                # Регистрация протокола (Windows)

Сборка из исходников

Требуется Go 1.21+.

cd agent
go build -o ../dist/pathtree-agent-darwin-arm64 .

Или все платформы сразу:

./build-agents.sh

Безопасность

  • Агент слушает только 127.0.0.1
  • Только GET-запросы, без записи на диск
  • При заданном root — доступ только внутри этой папки
  • Запрещён path traversal (..)

Лицензия

Делайте что хотите с этой поделкой. Я вообще не понимаю зачем я это сделал. Просто изобрёл велосипед очередной. Лучше пользуйтесь Total Commander.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages