Files
jellybit/tasks/items/torrent-url-fetch.md
T
av 3bce73fc34 раскладка av-dev повышена с канона 12 до версии 5
- три плагина слились в один `av-dev`: служебные `docs/.docs.json` и
  `tasks/.tasks.json` заменены на `.av-dev.toml` в корне, в гейте переехали пути
  трёх скриптов, вызовы скиллов переименованы по всему репозиторию
- тип задачи `goal` и `ROADMAP.md` упразднены: семь целей закрыты с причинами,
  теги сняты, объявлена стадия `support`
- метка `small`/`medium`/`large` снята из процесса — вместо «Триггеров метки» в
  review.md подраздел «Когда звать глубокое ревью»; следом разобран урожай
  doc-consistency: девять фактов сведены к одному дому
2026-09-02 09:55:28 +03:00

1.7 KiB

Принимать ссылку на .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 → «Внешние границы и форматы» (source_type = magnet|torrent|url уже в схеме), пакет ingest, архив change torrent-file-ingest.