Files
jellybit/docs/tasks/items/torrent-url-fetch.md
T
av 66d39297c5 docs: проект переведён на канон документов версии 4
- каталог задач: PLAN.md → ROADMAP.md с каноническими секциями, все 44
  записи получили тип, заголовки приведены к форме своего типа
- расхождения, найденные судьями канона: исключения инварианта «источник
  неприкосновенен», инвариант про один активный infohash, UTC в logging.md,
  поведение из architecture.md заменено ссылками на спеки
- триггеры профиля ревью переписаны под умолчание standard
2026-08-06 13:32:06 +03:00

22 lines
1.7 KiB
Markdown

# ✨ Принимать ссылку на .torrent и скачивать файл самим (нужен SSRF-гард)
- **Тип:** feature
- **Категория:** Ядро продукта
- **Зачем:** magnet и .torrent-файл приняты; остался фетч .torrent по URL (нужен SSRF-гард)
- **Теги:** goal:ingest-and-review-interfaces
Приём 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`.
Связано: specs/architecture.md → «Транспорты» (source_type = magnet|torrent|url уже в
схеме), пакет ingest, архив change `torrent-file-ingest`.