דילוג לתוכן

אחסון ענן

בית הענן הוא מיקום אחד באחסון שכבר בבעלות המשתמש. כל ספק מופעל דרך אותו ממשק אחסון ב-coven; מה ששונה בין ספקים הוא אימות ואיך מכשיר שני מקבל גישה.

ספקאימותגישה למכשיר חדש
תואם S3מפתח גישה + סודאישורים מוטמעים בהזמנה
Google DriveOAuth (PKCE)תיקייה משותפת לחשבון המצטרף
DropboxOAuth (PKCE)תיקייה משותפת לחשבון המצטרף
OneDriveOAuth (PKCE)תיקייה משותפת לחשבון המצטרף
iCloud (CloudKit)Apple ID, בלי כניסהשיתוף CloudKit שמתקבל על ידי המצטרף

תואם S3 מכסה AWS, Backblaze B2, Cloudflare R2, Wasabi, MinIO וכל דבר אחר שמדבר את ה-API; דלי, אזור, נקודת קצה וקידומת מפתח ניתנים להגדרה, והדלי נבדק לפני שההגדרה נשמרת כך ששגיאת הקלדה נכשלת בהגדרה, לא בסנכרון הראשון. ספקי OAuth קיימים רק במהדורת bae המלאה; בניות baeium מקמפלות אותם החוצה.

כניסה היא זרימת קוד הרשאה עם PKCE, כלקוח ציבורי. במחשב שולחני ההפניה חוזרת לשרת loopback שקושר יציאה מקומית לקריאה החוזרת היחידה; במובייל היישום לוכד במקום זאת הפניה בסכמה מותאמת. bae מבקש את ההיקף הצר ביותר שהספק מציע למשימה, וב-Google Drive זו גישה רק לקבצים שהיישום עצמו יוצר. אסימונים נשמרים במחזיק המפתחות של מערכת ההפעלה, מתרעננים עם הרשאת הרענון של הספק, ורענון שנדחה מוצג כבקשת חיבור מחדש במקום לולאת ניסיון שקטה.

CloudKit לא צריך זרימה כלל: מנהל CloudKit של הפלטפורמה, שממומש ביישום ומועבר לליבה, פועל כ-Apple ID המחובר.

פריסת הבית

קישור למקטע הזה

בתוך הבית, coven מסדרת זרמי changeset לכל מכשיר, דורות snapshot, רשומות חברות ומרחבי שמות לאובייקטים בינאריים. bae מוסיף שלושה מרחבי שמות לאובייקטים בינאריים: release_files, covers ו-artist_images.

אופן מפתוח האובייקטים תלוי במצב האחסון של הבית, שנקבע ביצירה:

  • Opaque: אובייקטים מוצפנים ונשמרים תחת מפתחות שנגזרים מתוכן ולא חושפים דבר. זה מצב אמון מלא בקריפטוגרפיה; ראה הצפנה.
  • Browsable: אובייקטים הם טקסט גלוי בנתיבים קריאים שנרשמים לכל אובייקט בינארי בזמן העלאה: release_files/{artist}/{album}/{filename}, covers/{album}/{release}/cover.{ext}, artist_images/{artist}/artist.{ext}. הדלי משמש גם כעץ קבצים שימושי; המחיר הוא שאין הצפנה ואין חברות, לכן אי אפשר לשתף בתים ניתנים לעיון עם אנשים אחרים.

התנהגות ברשתות אמיתיות

קישור למקטע הזה

קריאות לניגון הן לפי טווחים: הנגן מזרים את חלונות הבתים שהוא צריך במקום קבצים שלמים. העלאות מעל סף גודל עוברות לריבוי חלקים כשהספק תומך בכך. הגבלת קצב ושגיאות ספק זמניות מנסות שוב עם השהיה מעריכית, תוך כיבוד retry-after של הספק כשהוא ניתן; אסימוני OAuth שפגו מתרעננים במקום. תיבת היציאה של הסנכרון שורדת הפעלות מחדש: העלאה שנקטעה בגלל יציאה מהיישום ממשיכה במקום להתחיל מחדש.