lua_config.c revision 4b7cc9203754372b741d8eacae9d745a0ddd1fff
97a9a944b5887e91042b019776c41d5dd74557aferikabele/**
97a9a944b5887e91042b019776c41d5dd74557aferikabele * Licensed to the Apache Software Foundation (ASF) under one or more
97a9a944b5887e91042b019776c41d5dd74557aferikabele * contributor license agreements. See the NOTICE file distributed with
a945f35eff8b6a88009ce73de6d4c862ce58de3cslive * this work for additional information regarding copyright ownership.
a945f35eff8b6a88009ce73de6d4c862ce58de3cslive * The ASF licenses this file to You under the Apache License, Version 2.0
a945f35eff8b6a88009ce73de6d4c862ce58de3cslive * (the "License"); you may not use this file except in compliance with
fe64b2ba25510d8c9dba5560a2d537763566cf40nd * the License. You may obtain a copy of the License at
fe64b2ba25510d8c9dba5560a2d537763566cf40nd *
fe64b2ba25510d8c9dba5560a2d537763566cf40nd * http://www.apache.org/licenses/LICENSE-2.0
fe64b2ba25510d8c9dba5560a2d537763566cf40nd *
d29d9ab4614ff992b0e8de6e2b88d52b6f1f153erbowen * Unless required by applicable law or agreed to in writing, software
2e545ce2450a9953665f701bb05350f0d3f26275nd * distributed under the License is distributed on an "AS IS" BASIS,
d29d9ab4614ff992b0e8de6e2b88d52b6f1f153erbowen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
d29d9ab4614ff992b0e8de6e2b88d52b6f1f153erbowen * See the License for the specific language governing permissions and
fe64b2ba25510d8c9dba5560a2d537763566cf40nd * limitations under the License.
fe64b2ba25510d8c9dba5560a2d537763566cf40nd */
fe64b2ba25510d8c9dba5560a2d537763566cf40nd
af33a4994ae2ff15bc67d19ff1a7feb906745bf8rbowen#include "lua_config.h"
3f08db06526d6901aa08c110b5bc7dde6bc39905nd#include "lua_vmprep.h"
fe64b2ba25510d8c9dba5560a2d537763566cf40nd
fe64b2ba25510d8c9dba5560a2d537763566cf40ndAPLOG_USE_MODULE(lua);
fe64b2ba25510d8c9dba5560a2d537763566cf40nd
3f08db06526d6901aa08c110b5bc7dde6bc39905ndstatic ap_lua_dir_cfg *check_dir_config(lua_State *L, int index)
fe64b2ba25510d8c9dba5560a2d537763566cf40nd{
fe64b2ba25510d8c9dba5560a2d537763566cf40nd ap_lua_dir_cfg *cfg;
3b3b7fc78d1f5bfc2769903375050048ff41ff26nd luaL_checkudata(L, index, "Apache2.DirConfig");
ad74a0524a06bfe11b7de9e3b4ce7233ab3bd3f7nd cfg = (ap_lua_dir_cfg *) lua_unboxpointer(L, index);
d8c20b2218b1aff46358f67ae5e9c66a67982efbminfrin return cfg;
7f5b59ccc63c0c0e3e678a168f09ee6a2f51f9d0nd}
f086b4b402fa9a2fefc7dda85de2a3cc1cd0a654rjung
3b3b7fc78d1f5bfc2769903375050048ff41ff26ndstatic cmd_parms *check_cmd_parms(lua_State *L, int index)
fe64b2ba25510d8c9dba5560a2d537763566cf40nd{
fe64b2ba25510d8c9dba5560a2d537763566cf40nd cmd_parms *cmd;
fe64b2ba25510d8c9dba5560a2d537763566cf40nd luaL_checkudata(L, index, "Apache2.CommandParameters");
fe64b2ba25510d8c9dba5560a2d537763566cf40nd cmd = (cmd_parms *) lua_unboxpointer(L, index);
fe64b2ba25510d8c9dba5560a2d537763566cf40nd return cmd;
fe64b2ba25510d8c9dba5560a2d537763566cf40nd}
81c37886d057e583a58568f455a55d82c70bb946noodl
81c37886d057e583a58568f455a55d82c70bb946noodlstatic int apl_toscope(const char *name)
06ba4a61654b3763ad65f52283832ebf058fdf1cslive{
81c37886d057e583a58568f455a55d82c70bb946noodl if (0 == strcmp("once", name))
3558e3605ff24c5683911616199b84110a14e90bkess return APL_SCOPE_ONCE;
81c37886d057e583a58568f455a55d82c70bb946noodl if (0 == strcmp("request", name))
97a9a944b5887e91042b019776c41d5dd74557aferikabele return APL_SCOPE_REQUEST;
06ba4a61654b3763ad65f52283832ebf058fdf1cslive if (0 == strcmp("connection", name))
06ba4a61654b3763ad65f52283832ebf058fdf1cslive return APL_SCOPE_CONN;
06ba4a61654b3763ad65f52283832ebf058fdf1cslive if (0 == strcmp("conn", name))
06ba4a61654b3763ad65f52283832ebf058fdf1cslive return APL_SCOPE_CONN;
06ba4a61654b3763ad65f52283832ebf058fdf1cslive if (0 == strcmp("server", name))
06ba4a61654b3763ad65f52283832ebf058fdf1cslive return APL_SCOPE_SERVER;
3558e3605ff24c5683911616199b84110a14e90bkess return APL_SCOPE_ONCE;
97a9a944b5887e91042b019776c41d5dd74557aferikabele}
06ba4a61654b3763ad65f52283832ebf058fdf1cslive
06ba4a61654b3763ad65f52283832ebf058fdf1csliveAP_LUA_DECLARE(apr_status_t) ap_lua_map_handler(ap_lua_dir_cfg *cfg,
9a58dc6a2b26ec128b1270cf48810e705f1a90dbsf const char *file,
81c37886d057e583a58568f455a55d82c70bb946noodl const char *function,
81c37886d057e583a58568f455a55d82c70bb946noodl const char *pattern,
81c37886d057e583a58568f455a55d82c70bb946noodl const char *scope)
fe64b2ba25510d8c9dba5560a2d537763566cf40nd{
fe64b2ba25510d8c9dba5560a2d537763566cf40nd ap_regex_t *uri_pattern;
fe64b2ba25510d8c9dba5560a2d537763566cf40nd apr_status_t rv;
fe64b2ba25510d8c9dba5560a2d537763566cf40nd ap_lua_mapped_handler_spec *handler =
117c1f888a14e73cdd821dc6c23eb0411144a41cnd apr_pcalloc(cfg->pool, sizeof(ap_lua_mapped_handler_spec));
117c1f888a14e73cdd821dc6c23eb0411144a41cnd handler->uri_pattern = NULL;
fe64b2ba25510d8c9dba5560a2d537763566cf40nd handler->function_name = NULL;
fe64b2ba25510d8c9dba5560a2d537763566cf40nd
fe64b2ba25510d8c9dba5560a2d537763566cf40nd uri_pattern = apr_palloc(cfg->pool, sizeof(ap_regex_t));
fe64b2ba25510d8c9dba5560a2d537763566cf40nd if ((rv = ap_regcomp(uri_pattern, pattern, 0)) != APR_SUCCESS) {
fe64b2ba25510d8c9dba5560a2d537763566cf40nd return rv;
fe64b2ba25510d8c9dba5560a2d537763566cf40nd }
fe64b2ba25510d8c9dba5560a2d537763566cf40nd handler->file_name = apr_pstrdup(cfg->pool, file);
fe64b2ba25510d8c9dba5560a2d537763566cf40nd handler->uri_pattern = uri_pattern;
96969ed53a757bd9e0a4d7f2f499c9db5ef7899eigalic handler->scope = apl_toscope(scope);
fe64b2ba25510d8c9dba5560a2d537763566cf40nd
fe64b2ba25510d8c9dba5560a2d537763566cf40nd handler->function_name = apr_pstrdup(cfg->pool, function);
9bcfc3697a91b5215893a7d0206865b13fc72148nd *(const ap_lua_mapped_handler_spec **) apr_array_push(cfg->mapped_handlers) =
9bcfc3697a91b5215893a7d0206865b13fc72148nd handler;
4c47688d73a9a5ef2735cd84f334b8eb814c74f0igalic return APR_SUCCESS;
30471a4650391f57975f60bbb6e4a90be7b284bfhumbedooh}
fe64b2ba25510d8c9dba5560a2d537763566cf40nd
fe64b2ba25510d8c9dba5560a2d537763566cf40nd/* Change to use ap_lua_map_handler */
fe64b2ba25510d8c9dba5560a2d537763566cf40ndstatic int cfg_lua_map_handler(lua_State *L)
06ba4a61654b3763ad65f52283832ebf058fdf1cslive{
4c47688d73a9a5ef2735cd84f334b8eb814c74f0igalic ap_lua_dir_cfg *cfg = check_dir_config(L, 1);
4c47688d73a9a5ef2735cd84f334b8eb814c74f0igalic ap_lua_mapped_handler_spec *handler =
06ba4a61654b3763ad65f52283832ebf058fdf1cslive apr_pcalloc(cfg->pool, sizeof(ap_lua_mapped_handler_spec));
06ba4a61654b3763ad65f52283832ebf058fdf1cslive handler->uri_pattern = NULL;
06ba4a61654b3763ad65f52283832ebf058fdf1cslive handler->function_name = NULL;
06ba4a61654b3763ad65f52283832ebf058fdf1cslive
97a9a944b5887e91042b019776c41d5dd74557aferikabele luaL_checktype(L, 2, LUA_TTABLE);
2541bc22968cf60f69e8a8c9bd7771e927d4eb63nd lua_getfield(L, 2, "file");
2541bc22968cf60f69e8a8c9bd7771e927d4eb63nd if (lua_isstring(L, -1)) {
2541bc22968cf60f69e8a8c9bd7771e927d4eb63nd const char *file = lua_tostring(L, -1);
2541bc22968cf60f69e8a8c9bd7771e927d4eb63nd handler->file_name = apr_pstrdup(cfg->pool, file);
2541bc22968cf60f69e8a8c9bd7771e927d4eb63nd }
06ba4a61654b3763ad65f52283832ebf058fdf1cslive lua_pop(L, 1);
06ba4a61654b3763ad65f52283832ebf058fdf1cslive
06ba4a61654b3763ad65f52283832ebf058fdf1cslive lua_getfield(L, 2, "pattern");
97a9a944b5887e91042b019776c41d5dd74557aferikabele if (lua_isstring(L, -1)) {
06ba4a61654b3763ad65f52283832ebf058fdf1cslive const char *pattern = lua_tostring(L, -1);
06ba4a61654b3763ad65f52283832ebf058fdf1cslive
06ba4a61654b3763ad65f52283832ebf058fdf1cslive ap_regex_t *uri_pattern = apr_palloc(cfg->pool, sizeof(ap_regex_t));
06ba4a61654b3763ad65f52283832ebf058fdf1cslive if (ap_regcomp(uri_pattern, pattern, 0) != OK) {
06ba4a61654b3763ad65f52283832ebf058fdf1cslive return luaL_error(L, "Unable to compile regular expression, '%s'",
89796f6f8a382392260a7ea64bbd2d84b0c0fd22rbowen pattern);
06ba4a61654b3763ad65f52283832ebf058fdf1cslive }
06ba4a61654b3763ad65f52283832ebf058fdf1cslive handler->uri_pattern = uri_pattern;
06ba4a61654b3763ad65f52283832ebf058fdf1cslive }
06ba4a61654b3763ad65f52283832ebf058fdf1cslive lua_pop(L, 1);
06ba4a61654b3763ad65f52283832ebf058fdf1cslive
06ba4a61654b3763ad65f52283832ebf058fdf1cslive lua_getfield(L, 2, "scope");
06ba4a61654b3763ad65f52283832ebf058fdf1cslive if (lua_isstring(L, -1)) {
06ba4a61654b3763ad65f52283832ebf058fdf1cslive const char *scope = lua_tostring(L, -1);
06ba4a61654b3763ad65f52283832ebf058fdf1cslive handler->scope = apl_toscope(scope);
06ba4a61654b3763ad65f52283832ebf058fdf1cslive }
06ba4a61654b3763ad65f52283832ebf058fdf1cslive else {
fe64b2ba25510d8c9dba5560a2d537763566cf40nd handler->scope = APL_SCOPE_ONCE;
fe64b2ba25510d8c9dba5560a2d537763566cf40nd }
fe64b2ba25510d8c9dba5560a2d537763566cf40nd lua_pop(L, 1);
06ba4a61654b3763ad65f52283832ebf058fdf1cslive
06ba4a61654b3763ad65f52283832ebf058fdf1cslive lua_getfield(L, 2, "func");
06ba4a61654b3763ad65f52283832ebf058fdf1cslive if (lua_isstring(L, -1)) {
d972e4a0688f66b1402473dd9dacfecefa2132a8rbowen const char *value = lua_tostring(L, -1);
d972e4a0688f66b1402473dd9dacfecefa2132a8rbowen handler->function_name = apr_pstrdup(cfg->pool, value);
2541bc22968cf60f69e8a8c9bd7771e927d4eb63nd }
2541bc22968cf60f69e8a8c9bd7771e927d4eb63nd else {
2541bc22968cf60f69e8a8c9bd7771e927d4eb63nd handler->function_name = "handle";
2541bc22968cf60f69e8a8c9bd7771e927d4eb63nd }
2541bc22968cf60f69e8a8c9bd7771e927d4eb63nd lua_pop(L, 1);
2541bc22968cf60f69e8a8c9bd7771e927d4eb63nd
2541bc22968cf60f69e8a8c9bd7771e927d4eb63nd
2541bc22968cf60f69e8a8c9bd7771e927d4eb63nd *(const ap_lua_mapped_handler_spec **) apr_array_push(cfg->mapped_handlers) =
2541bc22968cf60f69e8a8c9bd7771e927d4eb63nd handler;
2541bc22968cf60f69e8a8c9bd7771e927d4eb63nd return 0;
2541bc22968cf60f69e8a8c9bd7771e927d4eb63nd}
2541bc22968cf60f69e8a8c9bd7771e927d4eb63nd
2541bc22968cf60f69e8a8c9bd7771e927d4eb63ndstatic int cfg_directory(lua_State *L)
2541bc22968cf60f69e8a8c9bd7771e927d4eb63nd{
2541bc22968cf60f69e8a8c9bd7771e927d4eb63nd ap_lua_dir_cfg *cfg = check_dir_config(L, 1);
2541bc22968cf60f69e8a8c9bd7771e927d4eb63nd lua_pushstring(L, cfg->dir);
2541bc22968cf60f69e8a8c9bd7771e927d4eb63nd return 1;
2541bc22968cf60f69e8a8c9bd7771e927d4eb63nd}
2541bc22968cf60f69e8a8c9bd7771e927d4eb63nd
2541bc22968cf60f69e8a8c9bd7771e927d4eb63nd/*static int cfg_root(lua_State *L) {
2541bc22968cf60f69e8a8c9bd7771e927d4eb63nd ap_lua_dir_cfg *cfg = check_dir_config(L, 1);
2541bc22968cf60f69e8a8c9bd7771e927d4eb63nd lua_pushstring(L, cfg->root_path);
2541bc22968cf60f69e8a8c9bd7771e927d4eb63nd return 1;
2541bc22968cf60f69e8a8c9bd7771e927d4eb63nd}*/
2541bc22968cf60f69e8a8c9bd7771e927d4eb63nd
2541bc22968cf60f69e8a8c9bd7771e927d4eb63ndstatic const struct luaL_Reg cfg_methods[] = {
2541bc22968cf60f69e8a8c9bd7771e927d4eb63nd {"match_handler", cfg_lua_map_handler},
2541bc22968cf60f69e8a8c9bd7771e927d4eb63nd {"directory", cfg_directory},
2541bc22968cf60f69e8a8c9bd7771e927d4eb63nd /* {"root", cfg_root}, */
2541bc22968cf60f69e8a8c9bd7771e927d4eb63nd {NULL, NULL}
2541bc22968cf60f69e8a8c9bd7771e927d4eb63nd};
2541bc22968cf60f69e8a8c9bd7771e927d4eb63nd
2541bc22968cf60f69e8a8c9bd7771e927d4eb63nd
2541bc22968cf60f69e8a8c9bd7771e927d4eb63nd
2541bc22968cf60f69e8a8c9bd7771e927d4eb63ndstatic int cmd_foo(lua_State *L)
2541bc22968cf60f69e8a8c9bd7771e927d4eb63nd{
2541bc22968cf60f69e8a8c9bd7771e927d4eb63nd cmd_parms *cmd = check_cmd_parms(L, 1);
2541bc22968cf60f69e8a8c9bd7771e927d4eb63nd ap_log_error(APLOG_MARK, APLOG_ERR, 0, cmd->server, "FOO!");
2541bc22968cf60f69e8a8c9bd7771e927d4eb63nd return 0;
fe64b2ba25510d8c9dba5560a2d537763566cf40nd}
fe64b2ba25510d8c9dba5560a2d537763566cf40nd
fe64b2ba25510d8c9dba5560a2d537763566cf40nd/* helper function for the logging functions below */
fe64b2ba25510d8c9dba5560a2d537763566cf40ndstatic int cmd_log_at(lua_State *L, int level)
fe64b2ba25510d8c9dba5560a2d537763566cf40nd{
fe64b2ba25510d8c9dba5560a2d537763566cf40nd const char *msg;
fe64b2ba25510d8c9dba5560a2d537763566cf40nd cmd_parms *cmd = check_cmd_parms(L, 1);
fe64b2ba25510d8c9dba5560a2d537763566cf40nd lua_Debug dbg;
fe64b2ba25510d8c9dba5560a2d537763566cf40nd
fe64b2ba25510d8c9dba5560a2d537763566cf40nd lua_getstack(L, 1, &dbg);
06ba4a61654b3763ad65f52283832ebf058fdf1cslive lua_getinfo(L, "Sl", &dbg);
2541bc22968cf60f69e8a8c9bd7771e927d4eb63nd
2541bc22968cf60f69e8a8c9bd7771e927d4eb63nd msg = luaL_checkstring(L, 2);
2541bc22968cf60f69e8a8c9bd7771e927d4eb63nd ap_log_error(dbg.source, dbg.currentline, APLOG_MODULE_INDEX, level, 0, cmd->server, msg);
2541bc22968cf60f69e8a8c9bd7771e927d4eb63nd return 0;
2541bc22968cf60f69e8a8c9bd7771e927d4eb63nd}
34673f0aad90fae0e6511f22fc5c565516dbb5e8rbowen
20f499565e77defe9dab24dd85c02f38a1175855nd/* r:debug(String) and friends which use apache logging */
e487d6c09669296f94a5190cc34586a98e624a00ndstatic int cmd_emerg(lua_State *L)
06ba4a61654b3763ad65f52283832ebf058fdf1cslive{
06ba4a61654b3763ad65f52283832ebf058fdf1cslive cmd_log_at(L, APLOG_EMERG);
4db28ee269aa06f7c6232e11cd01f58c3349af23noodl return 0;
06ba4a61654b3763ad65f52283832ebf058fdf1cslive}
06ba4a61654b3763ad65f52283832ebf058fdf1cslivestatic int cmd_alert(lua_State *L)
06ba4a61654b3763ad65f52283832ebf058fdf1cslive{
06ba4a61654b3763ad65f52283832ebf058fdf1cslive cmd_log_at(L, APLOG_ALERT);
06ba4a61654b3763ad65f52283832ebf058fdf1cslive return 0;
06ba4a61654b3763ad65f52283832ebf058fdf1cslive}
06ba4a61654b3763ad65f52283832ebf058fdf1cslivestatic int cmd_crit(lua_State *L)
06ba4a61654b3763ad65f52283832ebf058fdf1cslive{
06ba4a61654b3763ad65f52283832ebf058fdf1cslive cmd_log_at(L, APLOG_CRIT);
06ba4a61654b3763ad65f52283832ebf058fdf1cslive return 0;
06ba4a61654b3763ad65f52283832ebf058fdf1cslive}
06ba4a61654b3763ad65f52283832ebf058fdf1cslivestatic int cmd_err(lua_State *L)
fe64b2ba25510d8c9dba5560a2d537763566cf40nd{
fe64b2ba25510d8c9dba5560a2d537763566cf40nd cmd_log_at(L, APLOG_ERR);
fe64b2ba25510d8c9dba5560a2d537763566cf40nd return 0;
fe64b2ba25510d8c9dba5560a2d537763566cf40nd}
fe64b2ba25510d8c9dba5560a2d537763566cf40ndstatic int cmd_warn(lua_State *L)
fe64b2ba25510d8c9dba5560a2d537763566cf40nd{
fe64b2ba25510d8c9dba5560a2d537763566cf40nd cmd_log_at(L, APLOG_WARNING);
fe64b2ba25510d8c9dba5560a2d537763566cf40nd return 0;
fe64b2ba25510d8c9dba5560a2d537763566cf40nd}
fe64b2ba25510d8c9dba5560a2d537763566cf40ndstatic int cmd_notice(lua_State *L)
fe64b2ba25510d8c9dba5560a2d537763566cf40nd{
fe64b2ba25510d8c9dba5560a2d537763566cf40nd cmd_log_at(L, APLOG_NOTICE);
fe64b2ba25510d8c9dba5560a2d537763566cf40nd return 0;
06ba4a61654b3763ad65f52283832ebf058fdf1cslive}
06ba4a61654b3763ad65f52283832ebf058fdf1cslivestatic int cmd_info(lua_State *L)
06ba4a61654b3763ad65f52283832ebf058fdf1cslive{
06ba4a61654b3763ad65f52283832ebf058fdf1cslive cmd_log_at(L, APLOG_INFO);
06ba4a61654b3763ad65f52283832ebf058fdf1cslive return 0;
fe64b2ba25510d8c9dba5560a2d537763566cf40nd}
fe64b2ba25510d8c9dba5560a2d537763566cf40ndstatic int cmd_debug(lua_State *L)
fe64b2ba25510d8c9dba5560a2d537763566cf40nd{
fe64b2ba25510d8c9dba5560a2d537763566cf40nd cmd_log_at(L, APLOG_DEBUG);
fe64b2ba25510d8c9dba5560a2d537763566cf40nd return 0;
fe64b2ba25510d8c9dba5560a2d537763566cf40nd}
fe64b2ba25510d8c9dba5560a2d537763566cf40ndstatic int cmd_trace1(lua_State *L)
fe64b2ba25510d8c9dba5560a2d537763566cf40nd{
fe64b2ba25510d8c9dba5560a2d537763566cf40nd cmd_log_at(L, APLOG_TRACE1);
fe64b2ba25510d8c9dba5560a2d537763566cf40nd return 0;
fe64b2ba25510d8c9dba5560a2d537763566cf40nd}
fe64b2ba25510d8c9dba5560a2d537763566cf40ndstatic int cmd_trace2(lua_State *L)
06ba4a61654b3763ad65f52283832ebf058fdf1cslive{
06ba4a61654b3763ad65f52283832ebf058fdf1cslive cmd_log_at(L, APLOG_TRACE2);
06ba4a61654b3763ad65f52283832ebf058fdf1cslive return 0;
06ba4a61654b3763ad65f52283832ebf058fdf1cslive}
06ba4a61654b3763ad65f52283832ebf058fdf1cslivestatic int cmd_trace3(lua_State *L)
06ba4a61654b3763ad65f52283832ebf058fdf1cslive{
06ba4a61654b3763ad65f52283832ebf058fdf1cslive cmd_log_at(L, APLOG_TRACE3);
fe64b2ba25510d8c9dba5560a2d537763566cf40nd return 0;
fe64b2ba25510d8c9dba5560a2d537763566cf40nd}
fe64b2ba25510d8c9dba5560a2d537763566cf40ndstatic int cmd_trace4(lua_State *L)
3b3b7fc78d1f5bfc2769903375050048ff41ff26nd{
ad74a0524a06bfe11b7de9e3b4ce7233ab3bd3f7nd cmd_log_at(L, APLOG_TRACE4);
d8c20b2218b1aff46358f67ae5e9c66a67982efbminfrin return 0;
7f5b59ccc63c0c0e3e678a168f09ee6a2f51f9d0nd}
f086b4b402fa9a2fefc7dda85de2a3cc1cd0a654rjungstatic int cmd_trace5(lua_State *L)
727872d18412fc021f03969b8641810d8896820bhumbedooh{
0d0ba3a410038e179b695446bb149cce6264e0abnd cmd_log_at(L, APLOG_TRACE5);
727872d18412fc021f03969b8641810d8896820bhumbedooh return 0;
cc7e1025de9ac63bd4db6fe7f71c158b2cf09fe4humbedooh}
0d0ba3a410038e179b695446bb149cce6264e0abndstatic int cmd_trace6(lua_State *L)
cc7e1025de9ac63bd4db6fe7f71c158b2cf09fe4humbedooh{
727872d18412fc021f03969b8641810d8896820bhumbedooh cmd_log_at(L, APLOG_TRACE6);
0d0ba3a410038e179b695446bb149cce6264e0abnd return 0;
0d0ba3a410038e179b695446bb149cce6264e0abnd}
0d0ba3a410038e179b695446bb149cce6264e0abndstatic int cmd_trace7(lua_State *L)
ac082aefa89416cbdc9a1836eaf3bed9698201c8humbedooh{
0d0ba3a410038e179b695446bb149cce6264e0abnd cmd_log_at(L, APLOG_TRACE7);
0d0ba3a410038e179b695446bb149cce6264e0abnd return 0;
0d0ba3a410038e179b695446bb149cce6264e0abnd}
727872d18412fc021f03969b8641810d8896820bhumbedoohstatic int cmd_trace8(lua_State *L)
0d0ba3a410038e179b695446bb149cce6264e0abnd{
0d0ba3a410038e179b695446bb149cce6264e0abnd cmd_log_at(L, APLOG_TRACE8);
30471a4650391f57975f60bbb6e4a90be7b284bfhumbedooh return 0;
07dc96d063d49299da433f84b5c5681da9bbdf68rbowen}
af33a4994ae2ff15bc67d19ff1a7feb906745bf8rbowen
0d0ba3a410038e179b695446bb149cce6264e0abnd
7fec19672a491661b2fe4b29f685bc7f4efa64d4ndstatic const struct luaL_Reg cmd_methods[] = {
7fec19672a491661b2fe4b29f685bc7f4efa64d4nd {"foo", cmd_foo},
7fec19672a491661b2fe4b29f685bc7f4efa64d4nd
fe64b2ba25510d8c9dba5560a2d537763566cf40nd {"trace8", cmd_trace8},
{"trace7", cmd_trace7},
{"trace6", cmd_trace6},
{"trace5", cmd_trace5},
{"trace4", cmd_trace4},
{"trace3", cmd_trace3},
{"trace2", cmd_trace2},
{"trace1", cmd_trace1},
{"debug", cmd_debug},
{"info", cmd_info},
{"notice", cmd_notice},
{"warn", cmd_warn},
{"err", cmd_err},
{"crit", cmd_crit},
{"alert", cmd_alert},
{"emerg", cmd_emerg},
{NULL, NULL}
};
AP_LUA_DECLARE(void) ap_lua_load_config_lmodule(lua_State *L)
{
luaL_newmetatable(L, "Apache2.DirConfig"); /* [metatable] */
lua_pushvalue(L, -1);
lua_setfield(L, -2, "__index");
luaL_register(L, NULL, cfg_methods); /* [metatable] */
luaL_newmetatable(L, "Apache2.CommandParameters");
lua_pushvalue(L, -1);
lua_setfield(L, -2, "__index");
luaL_register(L, NULL, cmd_methods); /* [metatable] */
}