dank u, wat een vragen
Wizjos:
Ik wist dat authenticate.cgi werkte met Perl en shell scripts, maar merkte dat het vanuit php niets deed. (ook niet als ik het programma in een dir gooide die wel genoemd werd in safe_mode_exec_dir ). Dus dan moest het zijn omdat bepaalde environment variabelen niet meegegeven werden. Het leek me logisch dat HTTP_COOKIE gebruikt werd, dus was het zoeken & uitproberen welke van de andere environment variabelen er miste. Eerst alles erin en een voor een eruit halen tot het niet meer werkt..
Anyway, inmiddels heb ik nog verder zitten te snuffelen en de ' database' die ik vermoedde is niets anders dan een simpele file in de /tmp/ dir : 'current.connections', althans bij mij (firmware 7.22) . Nu kan het *nog* simpeler:
$file="/tmp/current.users";
if (file_exists($file)&&filesize($file)) {
$fh=fopen($file,'r');
$line=fread($fh,filesize($file));
list ($addr,$user,$begin,$last,$service) = split(":",$line);
}
if ($user=="admin") {
echo "gefeliciteerd!";
} else {
echo "nope!";
}
Dit werkt zonder aanpassing waar dan ook en ook via 'user' webserver. Simpel & eenvoudig, alleen, kans is groot dat het natuurlijk aangepast is in een nieuwere firmware (*kuch* security *kuch*). Ik denk aanroepen van 'authenticate' wat toekomst vaster is, daar dat zo'n beetje het *enige* is wat ze gedocumenteerd hebben voor 3rd party apps.
Marco:
Klopt, alleen 2 regels toegevoegd om php werkbaar te krijgen op 'system' webserver, omdat voorbeeld van Wizjos ook de 'system' webserver gebruikte, dus hij moest php hebben ge-enabled. Alle configuratiefiles zijn/waren verder default. Dus safe_mode_exec_dir stond nog op '/usr/syno/bin', daar ben ik verder vanaf gebleven. In principe hoef je niet meer te veranderen, maar mocht je willen weten wat wat is met de opties de je aangaf:
* CGI opties/docroot zijn hetzelfde
* IfModule heeft toevoeging tov. default om index.php automatisch te kiezen bij urls die geen filenaam opgeven
* safe_mode was al uit
* safe_mode_exec_dir stond dus op /usr/syno/bin/. Blijkbaar is het effectief zolang hier nog een directory staat. Vreemd, want eigenlijk moet het niet werken omdat safe_mode al uit staat...
* open_basedir stond default op al een lading directories (inclusief /tmp/ wel zo handig voor voorbeeld hierboven). Deze leeglaten vind ik geen goed idee qua security, zie andere posting. Zet er anders je shares in die php scripts moeten kunnen bereiken, of gebruik mijn 'WebShare Enable' package om dit wat makkelijker te doen.
* register_globals : als er programma's zijn die deze perse op 'on' moeten hebben staan, zijn we wel erg beroerd geschreven. Security risk (opnieuw) om open te zetten
* allow_url_fopen : default. Niet zo spannende optie.
Groeten,
Remco