Bunny Hybrid Storage

İmplementasyon Planı

Tüm cihazlarda Bunny CDN ile hızlı, cache'li, korumalı müzik çalma

Hedef

🚀
Hızlı
Bunny CDN cache
🔐
Korumalı
Token + Süre limiti
📱
Her Cihaz
iOS, Android, PC

Nasıl Çalışacak?

iPhone / iPad

Varsayılan: MP3 Bunny CDN Token Korumalı

Admin isterse HLS de verilebilir (kullanıcı bazlı ayar)

PC / Android

Varsayılan: HLS Segment: Bunny + Anahtar: Local

HLS şifreli, segment'ler Bunny'den (hızlı), anahtar bizden (güvenli)

┌─────────────────────────────────────────────────────────────────┐
│                     KULLANICI ŞARKI İSTEDİ                      │
└─────────────────────────────────────────────────────────────────┘
                              │
                    ┌─────────┴─────────┐
                    │  Cihaz + Format?  │
                    └─────────┬─────────┘
           ┌──────────────────┼──────────────────┐
           ▼                  ▼                  ▼
    ┌─────────────┐    ┌─────────────┐    ┌─────────────┐
    │   iOS/MP3   │    │   iOS/HLS   │    │   PC/HLS    │
    └──────┬──────┘    └──────┬──────┘    └──────┬──────┘
           │                  │                  │
           ▼                  ▼                  ▼
    ┌─────────────┐    ┌─────────────┐    ┌─────────────┐
    │  Bunny MP3  │    │ Playlist:   │    │ Playlist:   │
    │  + Token    │    │ Local+İmza  │    │ Local+İmza  │
    │             │    │ Segment:    │    │ Segment:    │
    │             │    │ Bunny+Token │    │ Bunny+Token │
    └─────────────┘    └─────────────┘    └─────────────┘
           │                  │                  │
           ▼                  ▼                  ▼
    ┌─────────────────────────────────────────────────────────────┐
    │  🎵 Hızlı + Cache'li + Korumalı Müzik Çalma                 │
    └─────────────────────────────────────────────────────────────┘

Token Koruması (İndirme Engeli)

❌ Korumasız URL (Eski)

https://audio.muzibu.com/songs/mp3_128/12345.mp3

→ Herkes indirebilir
→ Link paylaşılabilir
→ Sonsuza kadar çalışır

✅ Token Korumalı URL (Yeni)

https://audio.muzibu.com/songs/mp3_128/12345.mp3
  ?token=a1b2c3d4e5f6
  &expires=1711378800

→ 30 dakika sonra link ölür
→ Token yanlışsa 403 hata
→ Paylaşılsa bile işe yaramaz

Bunny Panel Ayarı Gerekli

Pull Zone → SecurityToken AuthenticationEnabled
Security Key oluştur ve .env dosyasına ekle

Yapılacaklar (6 Adım)

1

Bunny Token Auth Config

.env ve config/services.php'ye Token Key ekle

.env config/services.php
2

Bunny Token URL Metodu

generateBunnyTokenUrl() metodu ekle - URL'ye token + expire ekler

BunnyStorageService.php
3

iOS/Safari Tespiti + MP3 Yönlendirme

iPhone/iPad algıla → Varsayılan MP3 yap → Bunny Token URL oluştur

SongStreamController.php
4

HLS Segment'leri Bunny'ye Yönlendir

Playlist içindeki segment URL'lerini Bunny CDN + Token ile değiştir

SongStreamController.php serveHls()
5

MP3 URL'leri Bunny Token ile Oluştur

generateAudioCdnUrl() → Hybrid modda Bunny Token URL döndür

SignedUrlService.php
6

Test + Aktivasyon

BUNNY_STORAGE_MODE=hybrid yap → iOS/PC test → Token süresi testi

.env ABA Test

Değişecek Dosyalar

Dosya Değişiklik Satır
.env BUNNY_STORAGE_TOKEN_KEY ekle +3
config/services.php bunny_storage → token_key +2
BunnyStorageService.php generateBunnyTokenUrl() metodu +40
SongStreamController.php iOS tespiti + segment rewrite +80
SignedUrlService.php Bunny MP3 URL desteği +30
Toplam ~155 satır

Güvenlik + Geri Dönüş

Avantajlar

  • ✅ Migration YOK (sadece kod)
  • ✅ Mevcut şarkılar zaten Bunny'de
  • ✅ Token ile indirme engeli
  • ✅ Cache ile hızlı erişim

Geri Dönüş

  • 🔙 BUNNY_STORAGE_MODE=local
  • 🔙 Anında eski sisteme döner
  • 🔙 Kod değişikliği gerekmez
  • 🔙 Sadece .env değiştir

Onayınız Bekleniyor

Bu planı onaylarsanız implementasyona başlayacağım.
Önce Bunny Panel'de Token Auth'u açmanız gerekecek.

"Onay" = Başla Değişiklik = Düzelt