Перейти до вмісту

Хмарне сховище

Хмарний дім — це одне місце в сховищі, яким користувач уже володіє. Кожен провайдер керується через той самий інтерфейс сховища в coven; відрізняються автентифікація і спосіб надання доступу другому пристрою.

ПровайдерАвтентифікаціяДоступ для нового пристрою
S3-суміснийAccess key + secretОблікові дані вбудовані в запрошення
Google DriveOAuth (PKCE)Папка поширена на обліковий запис того, хто приєднується
DropboxOAuth (PKCE)Папка поширена на обліковий запис того, хто приєднується
OneDriveOAuth (PKCE)Папка поширена на обліковий запис того, хто приєднується
iCloud (CloudKit)Apple ID, без входуCloudKit share приймає той, хто приєднується

S3-сумісний охоплює AWS, Backblaze B2, Cloudflare R2, Wasabi, MinIO і все інше, що говорить цим API; bucket, регіон, endpoint і префікс ключів налаштовуються, а bucket перевіряється перед збереженням конфігурації, щоб помилка введення спрацювала під час налаштування, а не під час першої синхронізації. OAuth-провайдери існують лише в повній редакції bae; збірки baeium компілюють їх назовні.

Вхід — це authorization-code flow з PKCE як public client. На настільних системах redirect потрапляє на loopback server, прив’язаний до локального порту для одного callback; на мобільних застосунок перехоплює custom-scheme redirect. bae просить найвужчий scope, який провайдер дає для роботи; у Google Drive це доступ лише до файлів, які створює сам застосунок. Tokens зберігаються в сховищі ключів OS, оновлюються через refresh grant провайдера, а відхилений refresh показується як запит на повторне під’єднання, а не як тиха петля повторів.

CloudKit не потребує flow: платформний CloudKit driver, реалізований у застосунку й переданий ядру, працює як увійдений Apple ID.

Усередині дому coven розкладає streams змін для кожного пристрою, покоління snapshot, записи участі й простори імен blobs. bae додає три простори імен blobs: release_files, covers і artist_images.

Ключі об’єктів залежать від режиму сховища дому, зафіксованого під час створення:

  • Непрозорий: об’єкти шифруються й зберігаються під ключами, похідними від вмісту, які нічого не розкривають. Це режим повної довіри до криптографії; див. Шифрування.
  • Browsable: об’єкти є plaintext за читабельними шляхами, записаними для кожного blob під час завантаження: release_files/{artist}/{album}/{filename}, covers/{album}/{release}/cover.{ext}, artist_images/{artist}/artist.{ext}. Bucket водночас є придатним до використання деревом файлів; обмін — відсутність шифрування й участі, тож browsable homes не можна поширювати на інших людей.

Поведінка в реальних мережах

Посилання на цей розділ

Читання для відтворення діапазонні: програвач передає потрібні вікна байтів, а не цілі файли. Завантаження вище порога розміру йдуть multipart там, де провайдер це підтримує. Обмеження частоти й тимчасові помилки провайдера повторюються з експоненційною паузою, з урахуванням retry-after, якщо він наданий; прострочені OAuth tokens оновлюються на місці. Вихідна черга синхронізації переживає перезапуски: завантаження, перерване виходом із застосунку, продовжується, а не починається заново.