il semble que je commence à tenir le bon bout.
le lien de mon, message precedent semble plus prometteur..
j'ai pu avoir un serveur local avec execution de script lua.
c'est pas encore tout à fait ce que je voulais. (en clair, dans un .php, je voudrais pouvoir inclure des scripts lua comme ca.. <?lua mon script; ?>
ca serait le top.
sur ce lien, http://xoops.net.br/2008/12/apache-l...er-windows.php
vous pouvez télécharger une install complete qui fonctionne.
pour ceux comme moi qui aiment bien qu'on explique les choses.
décompressez le dans un repertoire, si wampserveur ou autre serveur web est en route, arrêtez le, et lancez xoopserver depuis son emplacement.
il crée un disque virtuel, servant de stockage et racine au serveur web.
ensuite, lancer le navigateur, comme d'hab, allez à http://localhost/
ca devrait vous afficher la version du serveur apache, php et lua installé.
un peu comme ca.
Apache, mySQL, PHP e Lua 5.1; todos instalados e operantes...
Visite: Comunidade Lua no Orkut
maintenant, petit problème, le script en question peut avoir accès aux fonctions dangereuses pour la sécurité.
j'ai testé ceci , et ca a malheureusement fonctionné..
1 2 3 4 5 6 7 8
| file=io.open("d:/Test.txt","w");
if (file==nil) then
print("erreur ouverture");
else
print("fichier ouvert");
file:write(cgilua.QUERY.coucou);
file:close();
end; |
cela m'a affiché fichier ouvert et créé et rempli le fichier d:\test.txt avec patatra , l'argument passé en lien.
http://localhost/?coucou=patatra
donc, si ca marche il reste plus qu'à circonscrire les possibilités.
un post trés utile.http://stackoverflow.com/questions/1...re-lua-sandbox
ou comment limiter les possibilités d'un script.
j'ai donc repris le principe et modifié le fichier index.lua dans le repertoire www de xoopserver comme ceci.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| function orkocuma(numero, nome) -- un petit test
sLinkHTML = "<a title=\"" .. nome .. "\" href=\"http://www.orkut.com.br/Main#Community.aspx?cmm=" .. numero .. "\">" .. nome .. "</a>";
cgilua.put(sLinkHTML);
end
cgilua.htmlheader()
cgilua.put("<html><head><title>Hello Brave New World!</title></head>")
cgilua.put("<body><strong>Apache, mySQL, PHP e " .. _VERSION .. "; todos instalados e operantes...</strong><br /><br />Visite: ");
orkocuma("80740", "Comunidade Lua no Orkut");
cgilua.put("</body></html>");
-- meu orkut: http://www.orkut.com.br/Main#Profile.aspx?uid=15440532260129226492
gets=cgilua.QUERY;
if (cgilua.QUERY.coucou~=nil) then
print("<br>parametre:"..cgilua.QUERY.coucou.."<br>");
end;
if (cgilua.QUERY.sec~=nil) then
-- ci aprés les restrictions à appliquer pour securiser le reste du script.
debug.debug=nil
debug.getfenv=getfenv
debug.getregistry=nil
dofile=nil
io={write=io.write}
loadfile=nil
os.execute=nil
os.getenv=nil
os.remove=nil
os.rename=nil
os.tmpname=nil
package.loaded.io=io
package.loaded.package=nil
package=nil
require=nil
end
if (cgilua.QUERY.coucou~=nil) then
file=io.open("d:/Test.txt","w");
if (file==nil) then
print("erreur ouverture<br>");
else
print("fichier ouvert<br>");
file:write(cgilua.QUERY.coucou);
file:close();
end;
end;
print("temps passé: "..os.clock().."<br>"); |
donc, du coup, simplement, en changeant les parametres d'appel de la page, on passe en securisé simplement en rajoutant &sec=
en faisant
http://localhost/?coucou=patatra
ca m'ecrit le fichier avec son contenu,
et comme ca
http://localhost/?coucou=patatra&sec=
la ca me sort des erreurs comme ceci.
parametre:patatra
Content-type: text/html index.lua:38: attempt to call field 'open' (a nil value)
stack traceback:
/usr/lib-lua/cgilua.lua:153: in function 'open'
index.lua:38: in main chunk
[C]: in function 'xpcall'
/usr/lib-lua/cgilua.lua:161: in function
(tail call): ?
(tail call): ?
(tail call): ?
[C]: in function 'xpcall'
/usr/lib-lua/cgilua.lua:161: in function 'pcall'
/usr/lib-lua/cgilua.lua:606: in function
(tail call): ?
donc, on peut dire que ca fonctionne, sous windows, et que ca permet meme de remonter les erreurs..
reste plus qu'à faire un mecanisme adapté pour stocker les scripts à executer dans une base de données par exemple..
c'est à ce genre de chose que je voulais arriver. content.
si vous testez la solution, dites moi ce que vous en pensez..
Partager