mirror of https://github.com/hak5/openwrt.git
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> SVN-Revision: 31571lede-17.01
parent
bcd8d530d1
commit
54b34ccbc5
|
@ -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,
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
#define UH_LUA_ERR_PARAM -3
|
||||
|
||||
|
||||
lua_State * uh_lua_init();
|
||||
lua_State * uh_lua_init(const struct config *conf);
|
||||
|
||||
void uh_lua_request(
|
||||
struct client *cl, struct http_request *req, lua_State *L
|
||||
|
|
|
@ -1089,7 +1089,7 @@ int main (int argc, char **argv)
|
|||
if( ! conf.lua_prefix )
|
||||
conf.lua_prefix = "/lua";
|
||||
|
||||
conf.lua_state = conf.lua_init(conf.lua_handler);
|
||||
conf.lua_state = conf.lua_init(&conf);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -83,7 +83,7 @@ struct config {
|
|||
char *lua_prefix;
|
||||
char *lua_handler;
|
||||
lua_State *lua_state;
|
||||
lua_State * (*lua_init) (const char *handler);
|
||||
lua_State * (*lua_init) (const struct config *conf);
|
||||
void (*lua_close) (lua_State *L);
|
||||
void (*lua_request) (struct client *cl, struct http_request *req, lua_State *L);
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue