quota guarded uploader and thumbs generator for progressive image load
Go to file
Untone 4db1ac6ff7
All checks were successful
deploy / deploy (push) Successful in 4m32s
less-upload
2024-10-23 20:32:07 +03:00
.gitea/workflows Debug: add force flag to test push to v2 action 2024-09-24 13:05:24 +00:00
src less-upload 2024-10-23 20:32:07 +03:00
.gitignore init-rust 2023-09-28 02:08:48 +03:00
Cargo.lock 0.1.0-overlay 2024-10-23 20:06:34 +03:00
Cargo.toml 0.1.0-overlay 2024-10-23 20:06:34 +03:00
Dockerfile logfix 2024-10-02 19:59:24 +03:00
nginx.conf.sigil test-nginx 2024-10-02 18:29:08 +03:00
README.md 0.1.0-overlay 2024-10-23 20:06:34 +03:00

Квотер

Управляет квотами на загрузку файлов и их размещением в S3-хранилище. Поддерживает создание миниатюр для изображений и управляет квотами на использование дискового пространства для каждого пользователя с использованием Redis.

Основные функции

  • Миниатюры: Автоматическое создание миниатюр для изображений.
  • S3/STORJ интеграция: Загрузка файлов в через aws-sdk-s3 и возврат публичных URL-адресов.
  • Управление квотами: Ограничение объема загружаемых данных для каждого пользователя с использованием Redis.
  • Отслеживание файлов: Хранение информации о загруженных файлах в Redis для управления квотами.

Как это работает

  1. Аутентификация:

    • Клиент отправляет файл на сервер с заголовком Authorization, содержащим токен. Сервер проверяет наличие и валидность токена, определяя пользователя.
  2. Загрузка файлов:

    • Сервер обрабатывает все загружаемые файлы. Если файл является изображением, создается его миниатюра. И миниатюра, и оригинальное изображение загружаются в S3. Для остальных файлов выполняется простая загрузка в S3 без создания миниатюр.
  3. Создание миниатюр:

    • Для всех загружаемых изображений сервер автоматически создает миниатюры размером 320x320 пикселей. Миниатюры сохраняются как отдельные файлы в том же S3 bucket, что и оригинальные изображения.
  4. Определение MIME-типа и расширения файла:

    • MIME-тип и расширение файла определяются автоматически на основе имени файла и его содержимого с использованием библиотеки mime_guess.
  5. Загрузка файлов в S3:

    • Все файлы, включая миниатюры и оригиналы изображений, загружаются в указанный S3 bucket. Сформированные URL-адреса файлов возвращаются клиенту.
  6. Управление квотами:

    • Для каждого пользователя устанавливается квота на загрузку данных, которая составляет 1 ГБ в неделю. Перед загрузкой каждого нового файла проверяется, не превысит ли его размер текущую квоту пользователя. Если квота будет превышена, загрузка файла будет отклонена. После успешной загрузки файл и его размер регистрируются в Redis, и квота пользователя обновляется.
  7. Сохранение информации о загруженных файлах в Redis:

    • Имя каждого загруженного файла сохраняется в Redis для отслеживания загруженных пользователем файлов. Это позволяет учитывать квоты и управлять пространством, занимаемым файлами.
  8. Оверлей для shout:

    • При загрузке файла, если он является изображением, и в запросе присутствует параметр s=<shout_id>, то к файлу будет добавлен оверлей с данными shout.

Использование

Нужно задать следующие переменные среды:

  • REDIS_URL: URL для подключения к Redis. Используется для управления квотами и хранения информации о загружаемых файлах.
  • CDN_DOMAIN: Домен CDN для генерации публичных URL-адресов загруженных файлов.
  • AUTH_URL: URL для подключения к сервису аутентификации.
  • CORE_URL: URL для подключения к сервису core.
  • STORJ_ACCESS_KEY, STORJ_SECRET_KEY, AWS_ACCESS_KEY, AWS_SECRET_KEY