mirror of
https://github.com/R0m1k3/xtremflow.git
synced 2026-10-24 15:38:04 +02:00
feat: security hardening, streaming overhaul, design polish, tests
Security: - Replace unsalted SHA-256 password hashing with bcrypt (lazy rehash on login) - Add authenticated /api/xtream-api gateway: Xtream credentials are injected server-side and never sent to the frontend; /api/playlists no longer returns passwords - Redact credentials from all logs (login body, proxy/FFmpeg/scheduler URLs) - Add auth to recordings, EPG, season-passes and streaming routes (HttpOnly session cookie for hls.js; loopback bypass for local FFmpeg) - Lock player postMessage to same-origin in both directions - Vendor and pin hls.js 1.6.7 / mpegts.js 1.7.3 (drop CDN @latest) - Fix rate limiter (client IP was never resolved), add login rate limit, restrict CORS, add CSP Report-Only, block private-IP SSRF targets, fix path traversal in recording log retrieval, chmod 777 -> 770 - Remove dead HiveService (seeded admin/admin into IndexedDB with SHA-256) - Fix authMiddleware not populating 'user' context (getPlaylist ignored the logged-in user; admin purge always returned 403) Streaming: - New FfmpegSessionManager: process registry, idle reaper (4 min live / 15 min VOD), orphan cleanup at startup, clean SIGTERM shutdown, fast-fail with stderr instead of 30 s timeout - Quality selection (source/high/medium/low) for live and VOD; source mode streams with -c:v copy (zero transcoding); selector wired into the player - Concurrent recordings (MAX_CONCURRENT_RECORDINGS, default 2); conflicts retry on the next tick instead of silently failing - Lower live latency (HLS window 20 -> 10 segments, liveSync 10 -> 3) - Fix recording log lookup (.mp4 vs .mkv mismatch) Design: - Replace hardcoded colors with AppColors tokens (12 files) - web/theme.css syncs HTML players with the Flutter palette - DPAD/keyboard navigation (arrow-key focus, player shortcuts) - Tooltips on player icon buttons, Semantics on content cards - Remove 7 dead widgets broken since the Stitch merge Quality: - bin/test/: 21 unit tests (bcrypt, redaction, traversal, SSRF, recording conflicts) plus a quality-selector widget test - GitHub Actions CI (analyze + test + build web) - Archive stale status docs into docs/archive/ Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
cb5eca7547
commit
60d3f42901
107 files changed
+4525
-3815
No files matched your search
@@ -0,0 +1,415 @@
|
||||
# Analyse Complète de XtremFlow - Rapport d'Amélioration Tivimate
|
||||
|
||||
## 📊 État Actuel de l'Application
|
||||
|
||||
### ✅ Fonctionnalités Existantes
|
||||
|
||||
#### Backend (Dart Server)
|
||||
- ✅ Système d'authentification avec salt SHA-256
|
||||
- ✅ Gestion multi-utilisateurs et multi-playlists
|
||||
- ✅ API REST complète (Users, Playlists, EPG, Recordings, Season Passes)
|
||||
- ✅ Streaming HLS avec FFmpeg transcoding
|
||||
- ✅ Proxy pour les images Xtream
|
||||
- ✅ Planificateur d'enregistrements
|
||||
- ✅ Season Passes support
|
||||
- ✅ EPG (Guide électronique des programmes)
|
||||
- ✅ Docker & containers support
|
||||
|
||||
#### Frontend (Flutter Web)
|
||||
- ✅ Interface Web responsive
|
||||
- ✅ Interface Mobile adaptée
|
||||
- ✅ Dark Mode / Light Mode
|
||||
- ✅ Lecteur vidéo avec Chewie
|
||||
- ✅ Pagination & lazy loading
|
||||
- ✅ Recherche et filtrage
|
||||
- ✅ Historique de lecture
|
||||
- ✅ Favoris
|
||||
- ✅ Cache d'images
|
||||
- ✅ Riverpod state management
|
||||
- ✅ GoRouter avec guards d'authentification
|
||||
- ✅ Hive pour stockage local IndexedDB
|
||||
|
||||
### ❌ Fonctionnalités Manquantes vs Tivimate
|
||||
|
||||
#### Critiques (Niveau Tivimate)
|
||||
1. **Qualité Streaming Multi-Bitrate (ABR)** - ❌
|
||||
- Pas de support HLS adaptatif avancé
|
||||
- Pas de fallback de qualité automatique
|
||||
- Pas de sélection manuelle de résolution premium
|
||||
|
||||
2. **Lecteur Vidéo Avancé** - ⚠️ Basique
|
||||
- Pas de sous-titres (SRT, ASS, WebVTT)
|
||||
- Pas de sélection de piste audio
|
||||
- Pas de stabilité réseau avancée
|
||||
- Pas de smooth streaming
|
||||
- Pas de buffer adaptatif
|
||||
|
||||
3. **EPG & Programme Guide** - ⚠️ Basique
|
||||
- EPG limité à "Now & Next"
|
||||
- Pas de calendrier EPG complet (7 jours)
|
||||
- Pas de recherche par programme
|
||||
- Pas de détails de programme enrichis
|
||||
- Pas de recommandations basées sur l'EPG
|
||||
|
||||
4. **Gestion du Cache & Offine** - ❌
|
||||
- Pas de téléchargement de contenu pour une lecture hors ligne
|
||||
- Pas de gestion intelligente du cache
|
||||
- Pas de synchronisation multi-appareils
|
||||
|
||||
5. **Enregistrement & DVR** - ⚠️ Basique
|
||||
- Support enregistrement basique
|
||||
- Pas de gestion d'espace disque
|
||||
- Pas de compression vidéo
|
||||
- Pas de conversion de formats
|
||||
|
||||
6. **Recommandations & Contenu Intelligent** - ❌
|
||||
- Pas d'algorithme de recommandation
|
||||
- Pas de "Trending"
|
||||
- Pas de "Continue Watching"
|
||||
- Pas de suggestions personnalisées
|
||||
|
||||
7. **Paramètres Avancés de Streaming** - ⚠️ Limités
|
||||
- Pas de proxy personnalisé (User-Agent, Headers)
|
||||
- Pas de support SOCKS5
|
||||
- Pas de rotation IP
|
||||
- Pas de configuration réseau avancée
|
||||
- Pas de certificats d'authentification
|
||||
|
||||
8. **Administration & Contrôle Parental** - ⚠️ Basique
|
||||
- Pas de contrôle parental par catégorie
|
||||
- Pas de restrictions d'âge (PIN)
|
||||
- Pas de limite de bande passante par utilisateur
|
||||
- Pas de logs d'activité détaillés
|
||||
|
||||
9. **Interface Premium UI/UX** - ⚠️ Basique
|
||||
- Pas d'animations fluides (parallax, transitions)
|
||||
- Pas de gestes avancés (swipe, drag-drop)
|
||||
- Pas de widgets personnalisés (wallpaper dynamique)
|
||||
- Pas de thème auto selon heure du jour
|
||||
- Pas de mode immersif full-screen premium
|
||||
|
||||
10. **Synchronisation Multi-Appareils** - ❌
|
||||
- Pas de sync favoris/historique entre appareils
|
||||
- Pas de "Resume from where you left"
|
||||
- Pas de cloud sync
|
||||
|
||||
11. **Performance & Optimisation** - ⚠️ À améliorer
|
||||
- Pas de virtualisation d'UI pour très grandes listes
|
||||
- Pas de preload intelligent
|
||||
- Pas de worker/isolate pour traitement lourd
|
||||
- WebGL rendering non optimisé pour Canvas
|
||||
|
||||
12. **Sécurité Avancée** - ⚠️ Basique
|
||||
- Pas de 2FA (Two-Factor Authentication)
|
||||
- Pas de OAuth2/OIDC external auth
|
||||
- Pas de encryption end-to-end
|
||||
- Pas de audit logging complet
|
||||
|
||||
## 🎯 Plan d'Amélioration Priorisé
|
||||
|
||||
### Phase 1: Foundation (Semaines 1-2) - **CRITIQUE**
|
||||
Ces améliorations sont essentielles pour rivaliser avec Tivimate
|
||||
|
||||
#### 1.1 Support ABR & Multi-Bitrate ⭐⭐⭐
|
||||
**Impact**: Streaming professionnel
|
||||
- Implémenter HLS adaptatif complet
|
||||
- Détection de bande passante dynamique
|
||||
- Fallback automatique en cas de buffering
|
||||
- Sélection manuelle de qualité (480p, 720p, 1080p, 4K)
|
||||
|
||||
#### 1.2 Lecteur Vidéo Avancé ⭐⭐⭐
|
||||
**Impact**: Expérience utilisateur premium
|
||||
- **Sous-titres**: Support SRT, ASS, WebVTT, auto-téléchargement
|
||||
- **Pistes Audio**: Sélection multi-langue
|
||||
- **Gestes avancés**: Double-tap pour chercher, pinch pour zoom
|
||||
- **Smooth streaming**: Réduction buffering
|
||||
- **Buffer adaptatif**: Ajustement selon réseau
|
||||
|
||||
#### 1.3 EPG Professionnel 7 Jours ⭐⭐⭐
|
||||
**Impact**: Guide TV au niveau broadcast
|
||||
- Calendrier complet 7 jours
|
||||
- Vue grille EPG (Grid/Schedule)
|
||||
- Recherche par nom/description
|
||||
- Programme détaillé (synopsis, casting)
|
||||
- Enregistrement 1-clic depuis EPG
|
||||
- Conflits d'enregistrement vérifiés
|
||||
|
||||
### Phase 2: Premium UX (Semaines 3-4) - **IMPORTANT**
|
||||
Différenciation par l'interface et expérience
|
||||
|
||||
#### 2.1 Interface Premium ⭐⭐⭐
|
||||
**Impact**: Wow factor, rétention utilisateurs
|
||||
- Animations fluides (Lottie animations)
|
||||
- Parallax scrolling sur images héros
|
||||
- Wallpaper dynamique selon heure
|
||||
- Mode immersif (auto-hide controls)
|
||||
- Gestes swipe améliorés
|
||||
- Transition Hero entre écrans
|
||||
|
||||
#### 2.2 Recommandations Intelligentes ⭐⭐⭐
|
||||
**Impact**: Engagement utilisateurs
|
||||
- **Continue Watching**: Reprendre depuis dernière position
|
||||
- **Trending Now**: Top 10 regardé actuellement
|
||||
- **For You**: Basé sur historique
|
||||
- **Récemment Ajouté**: Films/séries nouveaux
|
||||
- **Rester Connecté**: Save state multi-appareils
|
||||
|
||||
#### 2.3 Gestion du Cache & Offline ⭐⭐
|
||||
**Impact**: Liberté d'utilisation
|
||||
- Téléchargement films/séries en cache
|
||||
- Lecture hors-ligne
|
||||
- Nettoyage automatique cache
|
||||
- Gestion espace disque intelligent
|
||||
|
||||
### Phase 3: Administration Avancée (Semaines 5-6) - **MOYEN**
|
||||
Outils professionnels pour admins
|
||||
|
||||
#### 3.1 Contrôle Parental ⭐⭐
|
||||
**Impact**: Famille-friendly
|
||||
- PIN pour restrictions
|
||||
- Filtrage par âge/classification
|
||||
- Limite temps d'écran
|
||||
- Historique d'accès
|
||||
|
||||
#### 3.2 Network Avancé & Proxy ⭐⭐
|
||||
**Impact**: Contournement géo-blocages
|
||||
- Support proxy personnalisé
|
||||
- User-Agent customisé
|
||||
- Headers personnalisés
|
||||
- SOCKS5 support
|
||||
|
||||
#### 3.3 Analytics & Logs ⭐⭐
|
||||
**Impact**: Admin insights
|
||||
- Logs d'activité détaillés
|
||||
- Statistiques de streaming
|
||||
- Bande passante par utilisateur
|
||||
- Signalements d'erreur
|
||||
|
||||
### Phase 4: Premium Features (Semaines 7+) - **OPTIONNEL**
|
||||
Ultra-premium pour Stand-Out
|
||||
|
||||
#### 4.1 Synchronisation Cloud ⭐⭐
|
||||
#### 4.2 Authentification 2FA ⭐
|
||||
#### 4.3 Conversion Format Automatique ⭐
|
||||
#### 4.4 Smart Scheduling (IA) ⭐
|
||||
|
||||
---
|
||||
|
||||
## 📋 Tâches Implémentation Détaillées
|
||||
|
||||
### PHASE 1 - WEEK 1-2
|
||||
|
||||
#### Tâche 1.1.1: HLS Adaptatif Multi-Bitrate
|
||||
**Fichiers à modifier**:
|
||||
- `bin/api/streaming_handler.dart`
|
||||
- `lib/features/iptv/screens/player_screen.dart`
|
||||
|
||||
**Checklist**:
|
||||
- [ ] Générer playlists HLS multi-bitrate (480p, 720p, 1080p)
|
||||
- [ ] Implémenter bandwidth detection
|
||||
- [ ] Fallback automatique
|
||||
- [ ] UI pour sélection manuelle qualité
|
||||
- [ ] Tests sur connexions lentes
|
||||
|
||||
#### Tâche 1.1.2: Lecteur Sous-titres
|
||||
**Fichiers à modifier**:
|
||||
- `lib/features/iptv/screens/player_screen.dart`
|
||||
- Créer: `lib/features/iptv/services/subtitle_service.dart`
|
||||
|
||||
**Checklist**:
|
||||
- [ ] Parser SRT/ASS/WebVTT
|
||||
- [ ] Overlay sous-titres sur lecteur
|
||||
- [ ] Synchronisation timing
|
||||
- [ ] Multi-langue support
|
||||
- [ ] Auto-téléchargement OpenSubtitles API
|
||||
|
||||
#### Tâche 1.1.3: EPG Grid View 7 jours
|
||||
**Fichiers**:
|
||||
- Créer: `lib/features/iptv/screens/epg_grid_screen.dart`
|
||||
- `lib/features/iptv/widgets/recordings_tab.dart` (refactor)
|
||||
- `bin/api/epg_api.dart` (améliorer)
|
||||
|
||||
**Checklist**:
|
||||
- [ ] Widget GridView pour EPG
|
||||
- [ ] Scroll horizontal/vertical
|
||||
- [ ] Recherche programme
|
||||
- [ ] Détails programme enrichis
|
||||
- [ ] Enregistrement 1-clic
|
||||
- [ ] Vérification conflits
|
||||
|
||||
---
|
||||
|
||||
### PHASE 2 - WEEK 3-4
|
||||
|
||||
#### Tâche 2.1.1: Animations & Transitions Premium
|
||||
**Nouvelles dépendances**:
|
||||
```yaml
|
||||
lottie: ^3.0.0
|
||||
animations: ^2.0.0
|
||||
```
|
||||
|
||||
**Fichiers**:
|
||||
- `lib/core/widgets/premium_widget.dart` (NEW)
|
||||
- Mise à jour tous les screens
|
||||
|
||||
**Checklist**:
|
||||
- [ ] Parallax hero images
|
||||
- [ ] Smooth page transitions
|
||||
- [ ] Loading animations Lottie
|
||||
- [ ] Floating action buttons
|
||||
- [ ] Gesture animations
|
||||
|
||||
#### Tâche 2.1.2: Continue Watching & Trending
|
||||
**Fichiers**:
|
||||
- `lib/features/iptv/providers/recommendations_provider.dart` (NEW)
|
||||
- `lib/features/iptv/widgets/continue_watching_widget.dart` (NEW)
|
||||
- Mise à jour: `lib/features/iptv/screens/dashboard_screen.dart`
|
||||
|
||||
**Checklist**:
|
||||
- [ ] Récupérer dernière position vue
|
||||
- [ ] Widget de continuation
|
||||
- [ ] Trending basé sur statistiques
|
||||
- [ ] Récemment ajouté
|
||||
- [ ] Sauvegarde position sync
|
||||
|
||||
#### Tâche 2.1.3: Offline Download Manager
|
||||
**Fichiers**:
|
||||
- `lib/features/iptv/services/download_service.dart` (NEW)
|
||||
- `lib/features/iptv/providers/downloads_provider.dart` (NEW)
|
||||
- `lib/features/iptv/screens/downloads_screen.dart` (NEW)
|
||||
|
||||
**Checklist**:
|
||||
- [ ] Téléchargement vidéo
|
||||
- [ ] Gestion file d'attente
|
||||
- [ ] Pause/Resume
|
||||
- [ ] Nettoyage automatique espace
|
||||
|
||||
---
|
||||
|
||||
### PHASE 3 - WEEK 5-6
|
||||
|
||||
#### Tâche 3.1.1: Contrôle Parental
|
||||
**Fichiers**:
|
||||
- `lib/features/admin/screens/parental_control_screen.dart` (NEW)
|
||||
- `bin/api/parental_control_api.dart` (NEW)
|
||||
- `bin/database/database.dart` (extend)
|
||||
|
||||
**Checklist**:
|
||||
- [ ] PIN configuration
|
||||
- [ ] Classification âge
|
||||
- [ ] Temps d'écran limite
|
||||
- [ ] Filtrage contenu
|
||||
|
||||
#### Tâche 3.1.2: Proxy & Network Avancé
|
||||
**Fichiers**:
|
||||
- `lib/core/services/network_service.dart` (NEW)
|
||||
- `lib/features/admin/screens/network_settings_screen.dart` (NEW)
|
||||
|
||||
**Checklist**:
|
||||
- [ ] Configuration proxy HTTP/HTTPS
|
||||
- [ ] SOCKS5 support
|
||||
- [ ] User-Agent customisation
|
||||
- [ ] Headers personnalisés
|
||||
|
||||
#### Tâche 3.1.3: Analytics & Activity Logs
|
||||
**Fichiers**:
|
||||
- `bin/api/analytics_api.dart` (NEW)
|
||||
- `lib/features/admin/screens/analytics_screen.dart` (NEW)
|
||||
|
||||
**Checklist**:
|
||||
- [ ] Logging d'activité
|
||||
- [ ] Statistiques streaming
|
||||
- [ ] Graphiques bande passante
|
||||
- [ ] Alertes erreurs
|
||||
|
||||
---
|
||||
|
||||
## 🏗️ Architecture Améliorée
|
||||
|
||||
```
|
||||
lib/
|
||||
├── core/
|
||||
│ ├── services/
|
||||
│ │ ├── network_service.dart (NEW)
|
||||
│ │ ├── cache_service.dart (IMPROVED)
|
||||
│ │ └── download_service.dart (NEW)
|
||||
│ └── widgets/
|
||||
│ └── premium_widget.dart (NEW)
|
||||
├── features/
|
||||
│ ├── iptv/
|
||||
│ │ ├── providers/
|
||||
│ │ │ ├── recommendations_provider.dart (NEW)
|
||||
│ │ │ ├── subtitles_provider.dart (NEW)
|
||||
│ │ │ └── downloads_provider.dart (NEW)
|
||||
│ │ ├── screens/
|
||||
│ │ │ ├── epg_grid_screen.dart (NEW)
|
||||
│ │ │ ├── downloads_screen.dart (NEW)
|
||||
│ │ │ └── player_screen.dart (IMPROVED)
|
||||
│ │ ├── services/
|
||||
│ │ │ ├── subtitle_service.dart (NEW)
|
||||
│ │ │ └── recommendation_service.dart (NEW)
|
||||
│ │ └── widgets/
|
||||
│ │ ├── continue_watching_widget.dart (NEW)
|
||||
│ │ └── quality_selector_widget.dart (NEW)
|
||||
│ └── admin/
|
||||
│ └── screens/
|
||||
│ ├── parental_control_screen.dart (NEW)
|
||||
│ ├── network_settings_screen.dart (NEW)
|
||||
│ └── analytics_screen.dart (NEW)
|
||||
└── ...
|
||||
|
||||
bin/
|
||||
├── api/
|
||||
│ ├── epg_api.dart (IMPROVED)
|
||||
│ ├── analytics_api.dart (NEW)
|
||||
│ ├── parental_control_api.dart (NEW)
|
||||
│ └── streaming_handler.dart (IMPROVED - ABR)
|
||||
└── ...
|
||||
```
|
||||
|
||||
## 📊 Comparatif Tivimate vs XtremFlow (Après Implémentation)
|
||||
|
||||
| Feature | Avant | Après | Tivimate |
|
||||
|---------|-------|-------|----------|
|
||||
| **HLS Adaptatif** | ❌ | ✅ | ✅ |
|
||||
| **Sous-titres** | ❌ | ✅ | ✅ |
|
||||
| **EPG 7 jours** | ⚠️ (2D) | ✅ | ✅ |
|
||||
| **Continue Watching** | ❌ | ✅ | ✅ |
|
||||
| **Offline Download** | ❌ | ✅ | ✅ |
|
||||
| **Contrôle Parental** | ❌ | ✅ | ✅ |
|
||||
| **Proxy Avancé** | ❌ | ✅ | ✅ |
|
||||
| **Animations Premium** | ⚠️ | ✅ | ✅ |
|
||||
| **Multi-langue Audio** | ❌ | ✅ | ✅ |
|
||||
| **Analytics Admin** | ⚠️ | ✅ | ✅ |
|
||||
| **Cloud Sync** | ❌ | ❌ | ✅ |
|
||||
| **2FA** | ❌ | ❌ | ✅ |
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Estimation Ressources
|
||||
|
||||
- **Durée totale**: 6-8 semaines pour Phase 1-3
|
||||
- **Équipe**: 2-3 développeurs Flutter/Dart
|
||||
- **Serveur**: 1 DevOps pour dockerisation
|
||||
- **Testing**: QA concurrent
|
||||
|
||||
## ⚡ Quick Wins (1-2 jours)
|
||||
1. Améliorer EPG avec grille visuelle
|
||||
2. Ajouter sélection de qualité vidéo
|
||||
3. Implémenter "Continue Watching"
|
||||
4. Améliorations UI/UX mineures
|
||||
|
||||
---
|
||||
|
||||
## 📝 Recommandations Supplémentaires
|
||||
|
||||
1. **Monitoring**: Ajouter Sentry pour les crashes
|
||||
2. **CDN**: Utiliser Cloudflare pour images proxy
|
||||
3. **Database**: Considérer PostgreSQL pour scalabilité
|
||||
4. **Caching**: Redis pour le cache côté serveur
|
||||
5. **Analytics**: Intégrer Mixpanel/Amplitude
|
||||
|
||||
---
|
||||
|
||||
**Document mis à jour**: 26 Mars 2026
|
||||
**Priorité**: Phase 1 critique, Phase 2-3 important
|
||||
Reference in new issue
Block a user