Omogućavanje pristupa kameri u web-aplikaciji
Uvod i orijentacija
Tehnička podrška pružaoca softvera omogućava pristup kameri za određeni uređaj i odobrene pouzdane domene.
Zašto pristup kameri nije automatski omogućen
Web-aplikacije rade u ugrađenom pregledniku Chromium putem JCEF-a. U standardnoj konfiguraciji automatski pristup kameri nije omogućen za sve web-stranice. Time štitimo privatnost i zadržavamo kontrolu nad tim koje stranice smiju koristiti kameru. Samo priključivanje USB kamere zato nije dovoljno.
Provjera i rješavanje problema
Kako zatražiti pristup
Ako vaša aplikacija treba kameru, obratite se svom pružaocu softvera. Zajedno ćete provjeriti potrebne postavke, a podrška će omogućiti pristup za pouzdanu domenu. U pravilu je riječ o malom i brzom servisnom zahvatu koji podrška pružaoca obavlja prvenstveno radi zaštite privatnosti i sigurnog pristupa kameri. Programske datoteke ne morate mijenjati sami.
Za početak pošaljite ID uređaja, link na aplikaciju ili njenu domenu te navedite trebate li i mikrofon. Podrška će s vama prikupiti dodatne podatke ako budu potrebni.
Šta će uraditi tehnička podrška
Sljedeći servisni postupak namijenjen je podršci pružaoca softvera. Potrebne izmjene zavise od verzije playera i JCEF-a. Ograničavanje prema domenama zahtjev je za konačno rješenje, a ne potvrda da je već podržano u svakoj instalaciji.
Preuzimanje i prilagođavanje datoteke latest.jar
Podrška najprije na uređaju utvrđuje stvarno odredište linka /opt/device/runtime/latest.jar i preuzima JAR koji se trenutno koristi. Izrađuje zasebnu rezervnu kopiju izvornika te bilježi njegovu putanju, verziju i kontrolni zbir. Izmjene priprema na preuzetoj kopiji, a ispravan izvornik zadržava za mogući povratak.
Prilagođavanje aplikacije za reprodukciju
Podrška provjerava runtime datoteku /opt/device/runtime/latest.jar i verziju JCEF-a. U playeru treba osigurati obradu zahtjeva za kameru i poređenje stvarnog izvora zahtjeva s odobrenom listom. Izvor obuhvata protokol, domenu i port. Podudaranje dijela teksta unutar URL-a nije dovoljno.
Dozvoljavaju se samo odobreni izvori. Dodatne poddomene, portovi, preusmjeravanja i ugrađene stranice provjeravaju se zasebno. Mikrofon se dozvoljava samo ako je potreban aplikaciji i ako ga je pružalac odobrio. Ostali zahtjevi moraju ostati odbijeni.
Podrška koristi interfejs za dozvole dostupan u toj verziji JCEF-a. Ako on ne podržava potrebno upravljanje, priprema kompatibilno ažuriranje. Izmjena ne smije automatski omogućiti pristup svim web-stranicama.
Klase na koje se izmjena odnosi
Klasa org/cef/handler/CefAppHandlerAdapter.class i metoda onBeforeCommandLineProcessing() pripremaju parametre pokretanja Chromija. Podrška ovdje provjerava i po potrebi prilagođava postavke povezane s medijima. Sama metoda ne odlučuje na osnovu domene stranice, pa ne može biti jedino mjesto za uvođenje pristupa ograničenog na pouzdane domene.
Odluke o dozvolama mora donositi obrađivač povezan s klijentom org.cef.CefClient. U kompatibilnoj verziji JCEF-a to znači implementaciju interfejsa org.cef.handler.CefPermissionHandler i metode onRequestMediaAccessPermission(). Podrška dodaje vlastitu implementacijsku klasu, naprimjer TrustedCameraPermissionHandler — to je prijedlog naziva nove klase, a ne obavezna postojeća datoteka. Obrađivač prima izvor stranice koja traži pristup i vrstu traženog pristupa, poredi ih s listom dozvoljenih izvora te povratnim pozivom dozvoljava samo odgovarajuća prava. Ostale zahtjeve mora izričito odbiti.
Prije implementacije treba provjeriti stvarne interfejse konkretnog JAR-a. Ako CefPermissionHandler nije prisutan, dodavanje jedne klase nije dovoljno. Potrebno je osigurati kompatibilni Java interfejs i nativne biblioteke JCEF-a ili drugi provjereni mehanizam dozvola za tu verziju. Izmijenjene klase treba kompajlirati za odgovarajuću verziju Jave i zapakovati u runtime JAR. Klasa module-info.class ne upravlja pristupom kameri i ne treba je mijenjati samo radi njegovog omogućavanja.
Dozvole u operativnom sistemu
Na uređaju podrška provjerava vezu s kamerom, odgovarajući uređaj /dev/video* i račun pod kojim player zaista radi. Provjerava vlasnika i grupu uređaja kamere.
Naredba za podršku:
ls -l /dev/video*Ako uređaj kamere koristi grupu video, a račun playera nije njen član, podrška ga dodaje. Sljedeći primjer vrijedi samo nakon provjere da se račun zaista zove kiosk.
Naredba za podršku:
sudo usermod -aG video kioskNovo članstvo u grupi primjenjuje se u novoj korisničkoj sesiji ili nakon ponovnog pokretanja. Dozvola operativnog sistema sama po sebi ne zamjenjuje dozvolu u pregledniku.
Rezervna kopija i zamjena datoteke na uređaju
Prije zahvata podrška utvrđuje stvarno odredište linka latest.jar, bilježi verziju i izrađuje zasebnu rezervnu kopiju izvorne datoteke. Kopija mora imati novi naziv kako se ne bi prepisala ranija kopija.
Naredba za podršku:
readlink -f /opt/device/runtime/latest.jarNakon provjere izmjena podrška prenosi prilagođeni JAR nazad na isti uređaj. Tokom servisnog zahvata zaustavlja player, čuva izvornu rezervnu kopiju i zamjenjuje aktivnu verziju prilagođenom ili preusmjerava simbolički link latest.jar na novu verziju. Provjerava vlasništvo, dozvole i kontrolni zbir. Izvorna datoteka se zadržava.
Podrška provjerava dozvole operativnog sistema i ponašanje automatskih ažuriranja. Zatim ponovo pokreće player ili, po potrebi, uređaj i provjerava kameru u odobrenoj aplikaciji. Ako se pojavi problem, vraća izvornu verziju iz rezervne kopije.
Povezane teme i naredni koraci
Provjera rada
Nakon ponovnog pokretanja odobrena aplikacija mora prikazati sliku stvarne kamere i osloboditi kameru po završetku funkcije. Neodobrene domene ne smiju dobiti pristup. Treba provjeriti i mikrofon u odobrenom opsegu te uobičajenu reprodukciju, zvuk i stabilnost.
U slučaju problema podrška vraća izvornu verziju i provjerava rad. U servisni zapis unosi odobrene izvore, verziju runtimea, kontrolni zbir, promjene dozvola i rezultate provjere.
Obratite se svom pružaocu softvera.
