infra/stacks/f1-stream/files
Viktor Barzin da33919368 f1-stream: verifier — wrap m3u8 fetches through /proxy
The frontend already routes every m3u8 URL through `getProxyUrl` →
`/proxy?url=…` so CORS-restricted hosts work for users. The verifier
was the odd one out: it loaded m3u8 URLs directly into hls.js inside a
`data:` URL test page, which has Origin `null`. Hosts like
`oe1.ossfeed.store` (pitsport's playlist CDN) only set ACAO when the
request's Origin is `https://pushembdz.store`, so hls.js got an instant
`fatal_network_error` and every pitsport stream was marked dead even
though they play fine for real users.

Wrap the m3u8 URL the same way the verifier already wraps embed URLs:
`{PROXY_BASE}/proxy?url=<b64>`. Stays same-origin for hls.js, gets
ACAO:* from our proxy, and the rewritten variants are also proxy-wrapped
so subsequent fetches stay clean.

For sites whose CDN serves any IP without Origin tricks (stremio,
dd12), this is transparent — proxy just forwards.

Side effect: every verified m3u8 hits our proxy once during extraction.
Cheap (1 cluster-internal request + 1 upstream HEAD/GET) and only
during the 5/30-min extraction cycle.
2026-05-24 22:26:56 +00:00
..
.claude
backend f1-stream: verifier — wrap m3u8 fetches through /proxy 2026-05-24 22:26:56 +00:00
frontend f1-stream: drop broken curated, dedupe streams, accept all pitsport categories 2026-05-07 15:42:24 +00:00
.dockerignore
.gitignore
Dockerfile
redeploy.sh