mirror of
https://github.com/unshackle-dl/unshackle.git
synced 2026-05-16 21:59:26 +00:00
Server-side: - Add server_cdm mode: server handles full CDM licensing using its own devices, returns KID:KEY pairs instead of raw license bytes - Support batch license resolution for multiple tracks in one request - Extract DRM from manifest ContentProtection when track.drm is empty - Serialize DASH/ISM manifest XML as base64 in /tracks response - Include session cookies/headers and server_cdm_type in /tracks response - Detect server CDM type from actual track DRM + configured devices - Check server region against client_region to skip unnecessary proxy - Support decrypt_labs and custom_api remote CDMs for both WV and PR Client-side: - Re-parse DASH/ISM manifests locally from base64 to populate track.data - Match remote tracks to re-parsed tracks by ID with attribute fallback - Copy DRM objects from re-parsed manifests to remote tracks - Pre-fetch keys via resolve_server_keys() before downloads start - Fallback per-track licensing via _proxy_license during download - Apply session cookies/headers from server for CDN access - Apply downloader/decryption config directly for remote services - Preserve pre-injected content_keys during DASH DRM override - Skip redundant CDM calls when all KIDs already have keys Docs: - Add comprehensive remote-services-flow.md with Mermaid diagrams covering proxy mode, server-CDM mode, manifest transfer, and config