Хмарне сховище
Хмарний дім — це одне місце в сховищі, яким користувач уже володіє. Кожен провайдер керується через той самий інтерфейс сховища в coven; відрізняються автентифікація і спосіб надання доступу другому пристрою.
Провайдери
Посилання на цей розділ| Провайдер | Автентифікація | Доступ для нового пристрою |
|---|---|---|
| S3-сумісний | Access key + secret | Облікові дані вбудовані в запрошення |
| Google Drive | OAuth (PKCE) | Папка поширена на обліковий запис того, хто приєднується |
| Dropbox | OAuth (PKCE) | Папка поширена на обліковий запис того, хто приєднується |
| OneDrive | OAuth (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 оновлюються на місці. Вихідна черга синхронізації переживає перезапуски: завантаження, перерване виходом із застосунку, продовжується, а не починається заново.