Dokumentacija / Rješavanje problema / Omogućavanje pristupa kameri u web-aplikaciji

Omogućavanje pristupa kameri u web-aplikaciji

Uvod i orijentacija

Tehnička podrška pružatelja softvera omogućuje 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 time 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 svojem pružatelju 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žatelja obavlja prvenstveno radi zaštite privatnosti i sigurnog pristupa kameri. Programske datoteke ne morate mijenjati sami.

Za početak pošaljite ID uređaja, poveznicu na aplikaciju ili njezinu domenu te navedite trebate li i mikrofon. Podrška će s vama prikupiti dodatne podatke ako budu potrebni.

Što će učiniti tehnička podrška

Sljedeći servisni postupak namijenjen je podršci pružatelja softvera. Potrebna prilagodba ovisi o verziji 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 prilagodba datoteke latest.jar

Podrška najprije na uređaju utvrđuje stvarno odredište poveznice /opt/device/runtime/latest.jar i preuzima JAR koji se trenutačno koristi. Izrađuje zasebnu sigurnosnu kopiju izvornika te bilježi njegovu putanju, verziju i kontrolni zbroj. Izmjene priprema na preuzetoj kopiji, a ispravan izvornik zadržava za mogući povratak.

Prilagodba 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 usporedbu stvarnog izvora zahtjeva s odobrenim popisom. Izvor obuhvaća protokol, domenu i priključak. Podudaranje dijela teksta unutar URL-a nije dovoljno.

Dopuštaju se samo odobreni izvori. Dodatne poddomene, priključci, preusmjeravanja i ugrađene stranice provjeravaju se zasebno. Mikrofon se dopušta samo ako je potreban aplikaciji i ako ga je pružatelj odobrio. Ostali zahtjevi moraju ostati odbijeni.

Podrška koristi sučelje za dopuštenja dostupno u toj verziji JCEF-a. Ako ono ne podržava potrebno upravljanje, priprema kompatibilno ažuriranje. Prilagodba 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 prema potrebi prilagođava postavke povezane s medijima. Sama metoda ne odlučuje na temelju domene stranice, pa ne može biti jedino mjesto za uvođenje pristupa ograničenog na pouzdane domene.

Odluke o dopuštenjima mora donositi obrađivač povezan s klijentom org.cef.CefClient. U kompatibilnoj verziji JCEF-a to znači implementaciju sučelja org.cef.handler.CefPermissionHandler i metode onRequestMediaAccessPermission(). Podrška dodaje vlastitu implementacijsku klasu, primjerice TrustedCameraPermissionHandler — to je prijedlog naziva nove klase, a ne obvezna postojeća datoteka. Obrađivač prima izvor stranice koja traži pristup i vrstu traženog pristupa, uspoređuje ih s popisom dopuštenih izvora te povratnim pozivom dopušta samo odgovarajuća prava. Ostale zahtjeve mora izričito odbiti.

Prije implementacije treba provjeriti stvarna sučelja konkretnog JAR-a. Ako CefPermissionHandler nije prisutan, dodavanje jedne klase nije dovoljno. Potrebno je osigurati kompatibilno Java sučelje i nativne biblioteke JCEF-a ili drugi provjereni mehanizam dopuštenja za tu verziju. Izmijenjene klase treba kompilirati za odgovarajuću verziju Jave i zapakirati u runtime JAR. Klasa module-info.class ne upravlja pristupom kameri i ne treba je mijenjati samo radi njegova omogućavanja.

Dopuštenja u operacijskom sustavu

Na uređaju podrška provjerava vezu s kamerom, odgovarajući uređaj /dev/video* i račun pod kojim player doista 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 njezin član, podrška ga dodaje. Sljedeći primjer vrijedi samo nakon provjere da se račun doista zove kiosk.

Naredba za podršku:

sudo usermod -aG video kiosk

Novo članstvo u grupi primjenjuje se u novoj korisničkoj sesiji ili nakon ponovnog pokretanja. Dopuštenje operacijskog sustava samo po sebi ne zamjenjuje dopuštenje u pregledniku.

Sigurnosna kopija i zamjena datoteke na uređaju

Prije zahvata podrška utvrđuje stvarno odredište poveznice latest.jar, bilježi verziju i izrađuje zasebnu sigurnosnu kopiju izvorne datoteke. Kopija mora imati novi naziv kako se ne bi prebrisala ranija kopija.

Naredba za podršku:

readlink -f /opt/device/runtime/latest.jar

Nakon provjere izmjena podrška prenosi prilagođeni JAR natrag na isti uređaj. Tijekom servisnog zahvata zaustavlja player, čuva izvornu sigurnosnu kopiju i zamjenjuje aktivnu verziju prilagođenom ili preusmjerava simboličku poveznicu latest.jar na novu verziju. Provjerava vlasništvo, dopuštenja i kontrolni zbroj. Izvorna se datoteka zadržava.

Podrška provjerava dopuštenja operacijskog sustava i ponašanje automatskih ažuriranja. Zatim ponovno pokreće player ili, prema potrebi, uređaj i provjerava kameru u odobrenoj aplikaciji. Ako se pojavi problem, vraća izvornu verziju iz sigurnosne kopije.

Povezane teme i sljedeći 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 zbroj, promjene dopuštenja i rezultate provjere.

Niste pronašli ono što ste tražili?
Obratite se svojem pružatelju softvera.