Naar inhoud springen

Cloudopslag

De cloud-home is een locatie in opslag die de gebruiker al bezit. Elke provider wordt aangestuurd via dezelfde opslaginterface in coven; wat per provider verschilt is het aanmelden, de instelling en hoe andere mensen en apparaten erbij komen.

ProviderAanmeldenJe eigen nieuwe apparaatIemand die je uitnodigt
S3-compatibleAccess key + secretHerstelcode, plus je toegangssleutel, die ernaast in de QR-code meekomtEen toegangssleutel die voor hem is gemaakt
DropboxOAuth, bewaard door covenHerstelcode, daarna aanmelden bij je DropboxDe gedeelde map van de bibliotheek wordt met zijn account gedeeld
OneDriveOAuth, bewaard door covenHerstelcode, daarna aanmelden bij je OneDriveDe map van de bibliotheek wordt met zijn account gedeeld
iCloud (CloudKit)Apple Account, geen loginHerstelcode, ook aangeboden vanuit de iCloud-sleutelhangerDe CloudKit-zone van de bibliotheek wordt met zijn Apple Account gedeeld

S3-compatible omvat AWS, Backblaze B2, Cloudflare R2, Wasabi, en alles wat verder de API spreekt. Het instelformulier vraagt alleen om bucket, regio, endpoint en toegangssleutel; coven herkent bekende services aan de host van het endpoint en vult in hoe ermee te praten. Geavanceerd bevat de optionele key prefix en een keuze van serviceprofiel, standaard automatisch. Voor een service die coven niet kent, test Instellingen detecteren de bucket met de sleutel en toont wat het vond. Het instellen controleert de provider voordat er iets wordt opgeslagen, zodat een typefout bij het instellen faalt, niet bij de eerste sync, en bae geeft de reden van coven in gewone woorden. Dropbox, OneDrive en iCloud bestaan alleen in de volledige bae-editie; baeium-builds compileren ze eruit.

Aanmelden en mappen

Link naar deze sectie

coven doet het aanmelden bij Dropbox en OneDrive zelf, dus er gaat geen token door bae. Op desktop opent de browser de pagina van de provider en ontvangt een lokale listener die ene redirect; op mobiel doet het aanmeldvenster van het platform dat. coven bewaart de tokens in de OS-sleutelbos en ververst er één eenmalig wanneer de provider hem weigert; een mislukte verversing verschijnt in de syncstatus als de actie Aanmelden in plaats van een stille retry-loop.

Na het aanmelden kiest de gebruiker waar de bibliotheek staat. Bij Dropbox is dat een gedeelde map, omdat een huishoudbibliotheek met de accounts van de andere mensen wordt gedeeld; bae gebruikt daarvoor volledige Dropbox-toegang, geen app-map. Is er nog geen gedeelde map, dan zegt bae dat je er een in Dropbox moet delen en opnieuw moet zoeken. Bij OneDrive is het een willekeurige map, doorbladerd vanaf de top, en daar kan een nieuwe worden gemaakt.

CloudKit heeft helemaal geen flow nodig: coven stuurt het op Apple-platforms aan als het ingelogde Apple Account.

De indeling van de home

Link naar deze sectie

Binnen de home begint elk objectpad met de store-id van de bibliotheek: de genummerde reeks wijzigingen van coven, zijn snapshots, toetredingsverzoeken en opgeslagen bestanden. Meerdere bibliotheken kunnen één Dropbox- of OneDrive-map delen zonder elkaars objecten aan te raken.

Elk object wordt versleuteld en onder een willekeurige naam opgeslagen; er is geen plaintext-modus. De bestanden van bae zijn coven-bestanden waarnaar rijen van vier gesynchroniseerde tabellen verwijzen: release_files, covers, artist_images en de avatar op elke people-rij. Het pad van een bestand wordt vastgelegd wanneer het wordt klaargezet, zodat het hernoemen van een album het nooit verplaatst. Zie Encryptie.

Gedrag op echte netwerken

Link naar deze sectie

Leesacties voor afspelen gebruiken bereiken: de speler haalt de versleutelde chunks op die hij nodig heeft in plaats van hele bestanden, en haalt vooruit op terwijl een bestand op volgorde speelt. Snelheidsbeperking en tijdelijke providerfouten proberen opnieuw volgens één backoffschema, met respect voor retry-after wanneer die wordt gegeven. De uploadwachtrij overleeft herstarts: een upload die door afsluiten van de app wordt onderbroken gaat verder in plaats van opnieuw te beginnen, en gepauzeerde uploads blijven gepauzeerd.