- три плагина слились в один `av-dev`: служебные `docs/.docs.json` и `tasks/.tasks.json` заменены на `.av-dev.toml` в корне, в гейте переехали пути трёх скриптов, вызовы скиллов переименованы по всему репозиторию - тип задачи `goal` и `ROADMAP.md` упразднены: семь целей закрыты с причинами, теги сняты, объявлена стадия `support` - метка `small`/`medium`/`large` снята из процесса — вместо «Триггеров метки» в review.md подраздел «Когда звать глубокое ревью»; следом разобран урожай doc-consistency: девять фактов сведены к одному дому
22 lines
1.7 KiB
Markdown
22 lines
1.7 KiB
Markdown
# ✨ Принимать ссылку на .torrent и скачивать файл самим (нужен SSRF-гард)
|
|
|
|
- **Тип:** feature
|
|
- **Категория:** Ядро продукта
|
|
- **Зачем:** magnet и .torrent-файл приняты; остался фетч .torrent по URL (нужен SSRF-гард)
|
|
|
|
Приём magnet и `.torrent`-файла уже реализован: ветка `TorrentData → torrent.Parse`
|
|
(`internal/ingest/ingest.go`), файл-пикер в веб-форме (`web/templates/index.html`),
|
|
приём документа в Telegram (`internal/tgbot`). Осталась одна ветка «единого окна» —
|
|
**URL на `.torrent`**: сервис сам скачивает файл по ссылке и заводит загрузку. Была
|
|
осознанно вынесена из change `torrent-file-ingest`, потому что требует исходящего
|
|
запроса на пользовательский URL → нужен SSRF-гард (allowlist схем/хостов, запрет
|
|
приватных сетей, лимит размера/редиректов).
|
|
|
|
Идеал по-прежнему — одно поле, куда кидают текст или файл, а сервис разбирает, что
|
|
это (magnet / ссылка на .torrent / .torrent-файл / сообщение бота). Сейчас текстовое
|
|
поле идёт только через `magnet.Parse`.
|
|
|
|
Связано: [architecture.md](../../docs/architecture.md) → «Внешние границы и форматы»
|
|
(`source_type = magnet|torrent|url` уже в схеме), пакет `ingest`, архив change
|
|
`torrent-file-ingest`.
|