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ž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 kiosk

Novo č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.jar

Nakon 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.

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