2.3 KiB
2.3 KiB
v0.0.45 — тестовый API process_names (обфускация по именам файлов) — 2026-08-19
Дата: 2026-08-19 Версия: 0.0.44 → 0.0.45
Суть
Тестовый endpoint для curl: обфускация файлов по ИМЕНАМ из локальной папки сервера (не таскать файлы каждый раз).
Использование
# На сервере задана папка TEST_INPUT_DIR (env), в ней лежат входные файлы.
curl -X POST https://drhider.../api/process_names \
-H "Content-Type: application/json" \
-d '{"files": ["0144-03-2023_отчет об оценке.pdf", "test.pdf"]}' \
-o result.zip
Ответ: ZIP с обфусцированными .md + mapping.csv.
Поведение (по требованию)
- Если
TEST_INPUT_DIRне задан ИЛИ невалиден (не директория) — endpoint возвращает 404 (как будто API нет). - Имена файлов — только basename (защита от path traversal).
- Файл читается из
TEST_INPUT_DIR/<basename>; если нет → 404.
Изменения
site/routes/api_bp.py
import osдобавлен.- Глобальные
TEST_INPUT_DIR = os.environ.get("TEST_INPUT_DIR", "").strip()и_TEST_API_ENABLED = bool(TEST_INPUT_DIR) and os.path.isdir(TEST_INPUT_DIR). - Endpoint
POST /api/process_names:- 404 если
_TEST_API_ENABLEDfalse; - читает JSON
{"files": [...]}; - basename + проверка файла в TEST_INPUT_DIR;
obfuscate_files(all_files, llm_client=LLMClient());- возврат ZIP (
send_file).
- 404 если
site/app.py
VERSION = "0.0.45".
Проверка
- Без
TEST_INPUT_DIR→ 404. - С валидной папкой → 200, ZIP
['t.md', 'mapping.csv']. - Path traversal (
../../etc/passwd) → 404 «файл не найден». - Невалидная папка → 404.
py_compile— OK.
Примечание
- Endpoint тестовый. На проде включать только при необходимости (задать TEST_INPUT_DIR).
- В тесте локально LLM недоступен (нет ключа) — «LLM NER failed» ожидаемо; на проде ключ есть.