Deploy drhider / validate (push) Canceled after 0s
- Update upload/ module to v0.2.2 with modular Layer 1 (FilePicker) and Layer 2 (Streaming transit upload) - Replace legacy manual file table in site/templates/index.html with FilePicker.initFilePicker - Wire uploadViaVM with per-file status updates and abort signal support - Add dist bundles to dist/ and site/static/dist/ with routes in site/routes/main_bp.py - Add test_hardening.py and test_safe_name.py from upload-platform - Bump version to 0.0.78 in site/app.py - Document integration plan and report in History/upload-integration/
4.0 KiB
4.0 KiB
2026-09-15: Интеграция upload-platform v0.2.2 в drhider
1. Цель и контекст
Интеграция протестированного модульного релиза upload-platform v0.2.2 в сервис drhider.
Версия сервиса повышена: v0.0.77 \rightarrow v0.0.78.
2. Выполненные изменения
Ядро модуля upload/
- Слой 1 (Frontend): переход на модульный
initFilePickerс распаковкой ZIP черезfflate, древовидным представлением папок и архивов, встроенным сворачиванием/разворачиванием групп и дедупликацией. Устаревшие ручные парсеры удалены. - Слой 2 (Transit Upload):
- Frontend: пофайловый стриминговый транзит
uploadViaVM(PUT на ВМ\rightarrowPOST/api/upload_refs\rightarrowисходящий pull\rightarrowDELETE из буфера\rightarrowповтор для следующего файла). - Backend: обновлён Blueprint
create_upload_refs_blueprint: добавлена поддержка локальных путей/mock-буфера (is_path_only_prefix), кастомногоhttpxTransportдля безопасного тестирования, возвращение параметраadded. - Session: in-memory хранилище сессий с потокобезопасным TTL и проверкой лимитов.
- Frontend: пофайловый стриминговый транзит
Приложение Flask и маршруты
- В site/routes/main_bp.py добавлены маршруты раздачи бандлов:
/file-picker/<path:filename>и/dist/<path:filename>. - Бандлы
file-picker.iife.jsиfile-picker.esm.jsразмещены вdist/иsite/static/dist/.
Пользовательский интерфейс (site/templates/index.html)
- Вёрстка выбора файлов заменена контейнером
#filePicker. - Инициализирован
FilePicker.initFilePickerс разрешёнными расширениями (.pdf,.doc,.docx,.txt,.md). - Логика кнопки «🛡️ Обфусцировать» переведена на
FilePicker.uploadViaVMс поддержкой отмены (AbortController) и пофайловым отображением статусов. - Сохранён и адаптирован этап 2 обработки (SSE
/api/process_stream/<sid>, тикеры времени, статистика LLM, выгрузка ZIP и CSV).
Тесты
- Скопированы и адаптированы тесты:
- tests/test_hardening.py (проверка устойчивости, malformed requests, SSRF, traversal).
- tests/test_safe_name.py (санитизация путей).
- Обновлён tests/test_upload.py (длина сессии
uuid4().hex= 32 символа).
3. Проверки и верификация
pytest tests/: 39 passed в 4 тестовых файлах.python3 tests/test_builder.py: 20/20 PASS.python3 tests/test_extractor.py: 10/10 PASS.python3 tests/test_replacer.py: 10/10 PASS.python3 tests/test_scanner.py: 20/20 PASS.python3 tests/test_zip.py: 28/28 PASS.- Проверка синтаксиса
py_compileпо всем.pyфайлам проекта: ALL PY FILES COMPILED OK. - Проверка импортов ядра:
from drhider import obfuscate_files, LLMClient\rightarrowOK. - Проверка HTTP:
GET /\rightarrowHTTP 200, HTML отрендерен (28571 байт).GET /health\rightarrowHTTP 200,{"ok":true,"version":"0.0.78"}.GET /file-picker/file-picker.iife.js\rightarrowHTTP 200 (44465 байт).