Apache autentikáció csak egy helyről

Fórumok

Sziasztok!

Gondolkozom azon, hogy ideiglenesen adnék ismerősömnek egy video streamet, amit meg tud nézni.
A streamet VLC-vel adom, ami jelenleg a belső hálózaton fut egy gépen.

A "szerver" gépen lévő apache-ben beállítottam a proxy modult a másik gép IP/portjára, valamint egy azonosítást, hogy azért más ne férjen hozzá.

Kérdésem: melyik az a legegyszerűbb megoldás, amivel el tudom érni, hogy az általam megadott user/pass párossal egyszerre csak egy helyről lehessen belépni? ...tehát nem szeretném, ha visszaélnének vele, leszívva a sávszélességet.
Van erre kész megoldás? Eddig még nem találtam...

Minden segítséget/ötletet előre is köszönök.

Hozzászólások

ip-re is szűrj

--
"SzAM-7 -es, tudjátok amivel a Mirage-okat szokták lelőni" - Robi.

Nem feltétlenül egy "helyszínhez" szeretném kötni a dolgot (no meg tudomásom szerint alapvetően sem fix az IP), csak a lehetőséget lenne jó elkerülni a visszaélésre.

Azt értem, hogy logokból ki tudom deríteni, de gondoltam, valakinek van még ötlete korlátozni. Pl. magát a virtualhostot/proxyt user kapcsolatok szerint.

pontosan hogyan szeretned eldonteni egy stateless protokoll eseteben, hogy meg mindig be van-e lepve a felhasznalo?

Nem lesz az, igazad van.

A "hogy szeretnéd eldönteni" részre reagáltam, még ha alapvetően hülyeséget is. :)

Mármint nem abból indultam ki, hogy stateless vagy sem, hanem abból, hogy folyamatos kapcsolat van a proxyval.
Persze, hogy ez felhasználható-e és mennyire egyszerűen, az más kérdés...

Egyszeruen iptables-szel megoldani? (felteve hogy pl a port azonosithato)

Mire gondolsz?

Alapvetően a 80-as porton fut néhány weboldal. A VLC egy másik porton futna, de ugyanezen a gépen. Ehhez gondoltam egy virtualhostot létrehozni (az azonosítással együtt) és a proxy modullal átadni a VLC web-szerverének a kéréseket.

Szerk.:
...vagy létre kéne hoznom egy proxyt az apache és a VLC közé és azon végezni az azonosítást ill. a hozzáférés korlátozását?
Működhet ez egyszerű módon (hogy ne okozzon gondot a stream lejátszása)?
...vagy ez már az ágyú és veréb esete...

Köszi a tippet, egész jónak néz ki, csak be kell állítanom hozzá (ill. még a VLC sem fut, eddig teszt volt).

...viszont a lényegre megoldásnak tűnik: működik, amíg egy ember használja, ha mégis megpróbálnák többen, az senkinek nem jó... így nincs értelme továbbadni sem a hozzáférést.

Lehet, hogy ez lesz. Köszönöm mégegyszer, eddig konkrétan erre nem gondoltam.

Hali!

Az nem megoldás, hogy futtatsz még egy apache-t egy másik porton és ott beállítod a MaxClients értékét 1-re?
Nem vagyok ebben profi, de amíg fel van kapcsolódva, addig talán nem szabadítja fel a foglalt kapcsolatot,
így újat sem fog kiszolgálni. Azaz ha az ismerős kiadja a hozzáférést, akkor magára vessen, mert ő sem tudja
majd használni, ha mások ráakaszkodnak.

-Mr-

Köszi az ötletet. Ez is egy megoldás lehet, bár talán kicsit macerásabb.

Egyébként az érdekes lenne, ha a MaxClients-et össze lehetne kötni az adott virtualhost, esetleg aktív azonosított felhasználók szerinti kapcsolatok számával.

Sajnos önmagában a MaxClients nem adható meg virtualhostonként.

A foglalt kapcsolatot elvileg nem szabadíthatja fel, mert szüksége van a streamelt video adataira.

irsz mondjuk php-ben egy kis session-kezelo valamit (ami aka'r a jelszot is bekerheti, de azt csinalhatja a .htaccess/.htpasswd is). a stream-nek is akkor at kell folynia a php-n, ez kicsit nyugos lehet (bar cserebe akkor nem kell proxy modul). kis programozas, de cserebe egzaktul azt fogja csinalni amit akarsz.

Igazad van. Bár ez kevésbé a rögtön meggcsinálom kategóriába esik, lévén előtte bele kellene mélyednem kicsit a PHP rejtelmeibe, nem túl felületes szinten.

Egyébként nem rossz ötlet, bár azért megvalósítása részemről még várat magára.

Köszönöm neked is az ötletet.

kb ennyi:


<?php

/* stream.php */

$SESSION_FILE="/tmp/stream.session.lock";

if ( is_file($SESSION_FILE) )
 {      printf("Nem nyert.<br>\n");
        return(0);
 }

$fw=fopen($SESSION_FILE,"wb");
fclose($fw);

header("Content-type: ..."); /* amilyen a stream...*/

$ch = curl_init();
curl_setopt_array($ch,array(CURLOPT_URL=>"http://doma.in/of/the/stream",CURLOPT_HEADER => 0,CURLOPT_TIMEOUT => 5));
curl_exec($ch);
curl_close($ch);

unlink($SESSION_FILE);

?>

icipicit race condition-os, de most a klasszikus c-beli open(...,O_CREAT|O_EXCL,...) pa'rositas php-beli megfelelo"je't hirtelen nem talalom. de gondolom a gyakorlatban ez neked nem lesz kritikus.

ezt a stream.php-t pedig szepen leve'ded .htaccess/.htpasswd-vel. php5-curl modul meg kell ehhez az izehez.

szerk: curl helyett sima fopen() is jo, sot, lehet hogy az nyerobb hogyha nincs elsodleges tartalom (igy ez most mintha maga't a browsert kenyszeritene' ra' az atiranyitasra):


$fr=fopen("http://doma.in/of/the/stream","rb");
while ( ! feof($fr) )
 {   $buff=fread($fr,65536);
     print($buff);
 }
fclose($fr);

a.

o"o", igen, kerdes, hogy ez cpu ido-e (mmint amit az ember a php.ini-ben mint max_execution_time) megad, vagy valos ido. mivel valos problemaknal azert ritkan sleep-elget egy webszerver-oldali program (vicces is lenne, varakoztassuk a juzert csak ugy), ezert talan az elobbi. de lehet hogy az utobbi. ezt meg kene nezni, csak explicit egyertelmu utalast igy hirtelen 1-2 perc alatt nem talaltam.