Phobichka Content Delivery Network

Быстрая доставка
защищённого контента

CDN с HMAC-подписанными временными URL, поддержкой Range-запросов и раздачей установщиков приложения.

cdn.phobichka.ru / attachments/ 841203921 / 3fa85f64… / screenshot.png ?ex=1751234567&is=1751148167 &hm=a3f9…
24h
Стандартный TTL ссылок
7d
TTL ссылок на установщики
Range
Поддержка видео и докачки
HMAC
SHA-256 подпись каждой ссылки
Возможности
Что умеет этот CDN
🔐

Временные токены

Каждая ссылка подписана HMAC-SHA256 и содержит время выдачи и истечения. Невозможно подделать без секретного ключа.

Range-запросы

Поддержка HTTP Range для видеофайлов, перемотки и возобновления прерванных загрузок.

📦

Установщики

Отдельный маршрут /installers/ для дистрибутивов с 7-дневными ссылками и принудительным скачиванием.

🔄

Обновление ссылок

Endpoint /refresh для получения свежего токена к существующему файлу без повторной загрузки.

🛡️

Защита от перебора

Проверка соответствия имени файла его ID в базе данных. Нельзя подобрать URL угадыванием.

🗄️

FTP-бэкенд

Файлы хранятся на FTP-сервере. CDN выступает прокси — клиент никогда не видит FTP напрямую.

Эндпоинты
Публичный API CDN
GET
/attachments/{machineId}/{fileId}/{fileName} ?ex=&is=&hm=
Получить вложение. Требует действительный токен.
Публичный
POST
/attachments/{machineId}/{fileId}/{fileName}/refresh ?ttlHours=24
Получить новую подписанную ссылку для существующего файла.
Внутренний
GET
/installers/{fileName} ?ex=&is=&hm=
Скачать установщик приложения. Ответ: Content-Disposition attachment.
Публичный
POST
/installers/{fileName}/token ?ttlDays=7
Сгенерировать подписанную ссылку на установщик.
Внутренний
Анатомия токена
Как устроена подписанная ссылка
https://cdn.phobichka.ru/attachments/841203921/3fa85f64-5717-4562-b3fc-2c963f66afa6/photo.jpg?ex=1751234567&is=1751148167&hm=a3f9c2d1e8b047f6a1c3d5e7b9f2a4c6d8e0f2a4c6d8e0f2a4c6d8e0f2a4c6d8
ex — Expiry
Unix timestamp истечения токена. После этого момента сервер вернёт 401 token_expired.
is — Issued At
Unix timestamp выдачи токена. Токены из далёкого будущего отклоняются (защита от фабрикации).
hm — HMAC
HMAC-SHA256 строки path:ex:is, закодированный в hex. Без секретного ключа подделать невозможно.
Коды ответов
Что возвращает CDN при ошибках
200
OK — файл доставлен
Content-Type: image/png
Content-Range: bytes 0-1023/4096
401
Токен истёк или недействителен
{
  "error": "token_expired",
  "message": "Ссылка истекла"
}
404
Файл не найден
{
  "error": "not_found"
}
500
Ошибка доставки (FTP)
{
  "error": "delivery_failed"
}