Testid lehte sülearvutis, pleier käivitub ja pilet suletakse. Vaataja teises otsas avab sama lehe ja saab spinneri, mis ei lahene kunagi. Tavaline selgitus on, et VPN on serveris, seega peaks esitus töötama — aga just brauser on komponent, mis esitusloendi järele küsib, ja sellel on oma võrguteekond. Serverile privaatse juurdepääsuga sisse pandud leht ei laena seda juurdepääsu sellele, kes selle laadib.

Jutt on olemasolevast ASP.NET lehest, mis esitab HLS-allikat nagu http://10.5.5.9:8080/live/stream.m3u8, mis on näitlik privaatne aadress. Töötavad kaks paigutust; üks neist ei ole tõenäoliselt see, mille sa ehitasid.

Müüt: laadiv leht tõestab meediakanalit

Selle lehe HTML tuleb sinu veebiserverist, mööda seda marsruuti, mis sinu veebiserveril on. Esitusloend ja segmendid tulevad meediaallikast, mööda seda marsruuti, mis päringut tegeval komponendil on. Kui pleier töötab vaataja brauseris, on need kaks erinevat klienti, kaks erinevat lähteaadressi ja sageli kaks erinevat tõrkedomeeni. Esimese õnnestumine ei ütle teise kohta midagi.

See, mida sinu test tegelikult tõestas, on kitsam, kui see paistis: sinu masin jõuab korraga nii avalikule lehele kui ka privaatsele meediakastile. Vaataja masin ei olnud kunagi katse osa.

Mida esitusloend järgmisena küsib

RFC 8216 eraldab meedia esitusloendid, mis loetlevad segmente, meistri esitusloenditest, mis loetlevad teisi loendeid, ja lahendab suhtelised URI-d selle loendi URI suhtes, mis neid sisaldab. Just selle reegli inimesed vahele jätavad. Ühe .m3u8 faili edukas toomine ei ole esituse test, sest toodud fail on indeks, mitte meedia.

Järgi ahelat nii, nagu pleier seda teeb: ava valitud esitusloend, seejärel küsi ressursse, mida see nimetab, seejärel järgi kõiki ümbersuunamisi. Juurdepääsetava veebiserveri kaudu serveeritud esitusloend võib vaataja ikkagi suunata kättesaamatule privaatsele aadressile. Samamoodi muudab suhtelise loendi teisaldamine teisele URL-ile baasi, mille suhtes selle kirjed lahendatakse, ja seepärast annab esimese nähtava URL-i ümberkirjutamine ja sinna peatuma jäämine tavaliselt kehtiva välimusega loendi, mida ei saa esitada.

Otsevaatamine: vaataja vajab teekonda

Kui vaatajad peavad jõudma meediakastini otse, vajavad nende seadmed kinnitatud VPN-i või muud privaatset teekonda, DNS-i, mis lahendab nimed, mida sa tegelikult kasutasid, luba nende sihtkohtade jõudmiseks ja kõiki autentimisi, mida meediateenus nõuab. Kontrolli igaüht vaataja seadmes, mitte serveris. Brauser telefonis, kus VPN-profiil on paigaldatud, kuid ühendamata, on sage ja täiesti korratav tõrge.

See paigutus hoiab allika privaatsena ja lükkab juurdepääsunõude publikule. See on poliitikaotsus sama palju kui tehniline, seega kinnita enne selle ümber projekteerimist, et igal kavatsetud vaatajal on luba seda teekonda hoida.

Serveripoolne edastus: üks kontrollitud sissepääsupunkt

Alternatiiv on volitatud meediaesine, mis toob allika oma privaatset teekonda pidi ja avaldab uuesti ainult vaatajale suunatud ressursid. Hoia esitusloend, segmendid ja kõik võtmeressursid kooskõlas selle ühe sissepääsupunktiga, muidu toob pleier esiosa kaudu ümber kirjutatud loendi ja segmendid otse aadressilt, kuhu vaataja ei pääse.

Piira allikat ja lubatud teekondi selles esiosas. Kasutaja antud suvaline URL muudab kasuliku puhverserveri sinu sisevõrgu piiramatuks toojaks, mis on palju hullem probleem kui voog, mida ei saa esitada. Pane allikas ja teekonna eesliide lubatud loendisse, selle asemel et stringi hiljem valideerida.

Olemasoleva HLS-allika puhul kontrolli kõigepealt, kas kontrollitud edasisaatmine on piisav; VPN keskel ei tähenda, et transkodeerimine on vajalik. Seejärel valideeri tegelik brauseri ja koodeki kombinatsioon, sest juurdepääsetav vastus ja toetatud vorming on kaks eraldi tingimust. Hoia allika TLS, autentimine ja brauseri turvanõuded puutumatuna — sisse pandud pleier ei ole neist vabastatud.

Testi ahelat, mitte URL-i

Käivita kontrollid komponendist, mis tegelikult iga päringu teeb, ja käsitle iga sammu omaette tulemusena:

curl -s http://10.5.5.9:8080/live/stream.m3u8
curl -s -o /dev/null -w '%{http_code}\n' http://10.5.5.9:8080/live/segment-000123.ts

Seejärel korda seda vaataja enda brauseris kavatsetud vooga, mitte oma laualt pärit testmustriga. Lehe laadimine, loendi laadimine, segmendi toomine ja autoriseerimise tõrge on neli erinevat tulemust ning tahad näha kõiki nelja, enne kui nimetad selle parandatuks. Ära paigalda vananenud brauserilaiendit sellepärast, et vana näide esitas nii üht voogu; puuduv osa on tavaliselt vaataja teekond või allkirjastamata segmendi URL.

Kui paigutus on teadlik, kirjuta see ühele reale: kes meedia toob, mis teekonda pidi ja mida vaatajal on lubatud küsida. See lause lahendab enamiku tulevasi vaidlusi selle üle, kellele voog tegelikult mõeldud on.

Seotud artiklid