1
0
mirror of git://projects.qi-hardware.com/openwrt-xburst.git synced 2025-04-21 12:27:27 +03:00

uhttpd: added uhttpd.docroot

Passes the document-root to the Lua handler by placing it in uhttpd.docroot.

It could alternatively be placed in env.DOCUMENT_ROOT which would more closely
resemble the CGI protocol; but would mean that it is not available at the time
when the handler-chunk is loaded but rather not until the handler is called,
without any code savings.

Signed-off-by: David Favro <openwrt@meta-dynamic.com>

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@31571 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
jow
2012-05-03 17:19:20 +00:00
parent 8329c6da4f
commit 37f687e099
4 changed files with 13 additions and 5 deletions

View File

@@ -137,7 +137,7 @@ static int uh_lua_urlencode(lua_State *L)
}
lua_State * uh_lua_init(const char *handler)
lua_State * uh_lua_init(const struct config *conf)
{
lua_State *L = lua_open();
const char *err_str = NULL;
@@ -164,12 +164,20 @@ lua_State * uh_lua_init(const char *handler)
lua_pushcfunction(L, uh_lua_urlencode);
lua_setfield(L, -2, "urlencode");
/* Pass the document-root to the Lua handler by placing it in
** uhttpd.docroot. It could alternatively be placed in env.DOCUMENT_ROOT
** which would more closely resemble the CGI protocol; but would mean that
** it is not available at the time when the handler-chunk is loaded but
** rather not until the handler is called, without any code savings. */
lua_pushstring(L, conf->docroot);
lua_setfield(L, -2, "docroot");
/* _G.uhttpd = { ... } */
lua_setfield(L, LUA_GLOBALSINDEX, "uhttpd");
/* load Lua handler */
switch( luaL_loadfile(L, handler) )
switch( luaL_loadfile(L, conf->lua_handler) )
{
case LUA_ERRSYNTAX:
fprintf(stderr,