output-log: expose SCLog functions to lua scripts

The lua scripts can use SCLogDebug, SCLogInfo, SCLogNotice, SCLogWarning,
SCLogError. The latter 2 won't be able to add an error code though.
pull/1112/head
Victor Julien 12 years ago
parent 51ab5e55c1
commit 0055a10b3a

@ -241,6 +241,51 @@ static int LuaCallbackLogPath(lua_State *luastate)
return LuaReturnStringBuffer(luastate, (const uint8_t *)ld, strlen(ld));
}
static int LuaCallbackLogDebug(lua_State *luastate)
{
const char *msg = LuaGetStringArgument(luastate, 1);
if (msg == NULL)
return LuaCallbackError(luastate, "1st argument missing, empty or wrong type");
SCLogDebug("%s", msg);
return 0;
}
static int LuaCallbackLogInfo(lua_State *luastate)
{
const char *msg = LuaGetStringArgument(luastate, 1);
if (msg == NULL)
return LuaCallbackError(luastate, "1st argument missing, empty or wrong type");
SCLogInfo("%s", msg);
return 0;
}
static int LuaCallbackLogNotice(lua_State *luastate)
{
const char *msg = LuaGetStringArgument(luastate, 1);
if (msg == NULL)
return LuaCallbackError(luastate, "1st argument missing, empty or wrong type");
SCLogNotice("%s", msg);
return 0;
}
static int LuaCallbackLogWarning(lua_State *luastate)
{
const char *msg = LuaGetStringArgument(luastate, 1);
if (msg == NULL)
return LuaCallbackError(luastate, "1st argument missing, empty or wrong type");
SCLogWarning(SC_WARN_LUA_SCRIPT, "%s", msg);
return 0;
}
static int LuaCallbackLogError(lua_State *luastate)
{
const char *msg = LuaGetStringArgument(luastate, 1);
if (msg == NULL)
return LuaCallbackError(luastate, "1st argument missing, empty or wrong type");
SCLogError(SC_ERR_LUA_SCRIPT, "%s", msg);
return 0;
}
int LogLuaRegisterFunctions(lua_State *luastate)
{
/* registration of the callbacks */
@ -248,6 +293,17 @@ int LogLuaRegisterFunctions(lua_State *luastate)
lua_setglobal(luastate, "SCPacketTuple");
lua_pushcfunction(luastate, LuaCallbackLogPath);
lua_setglobal(luastate, "SCLogPath");
lua_pushcfunction(luastate, LuaCallbackLogDebug);
lua_setglobal(luastate, "SCLogDebug");
lua_pushcfunction(luastate, LuaCallbackLogInfo);
lua_setglobal(luastate, "SCLogInfo");
lua_pushcfunction(luastate, LuaCallbackLogNotice);
lua_setglobal(luastate, "SCLogNotice");
lua_pushcfunction(luastate, LuaCallbackLogWarning);
lua_setglobal(luastate, "SCLogWarning");
lua_pushcfunction(luastate, LuaCallbackLogError);
lua_setglobal(luastate, "SCLogError");
return 0;
}

@ -297,6 +297,8 @@ const char * SCErrorToString(SCError err)
CASE_CODE (SC_ERR_CONF_NAME_TOO_LONG);
CASE_CODE (SC_ERR_APP_LAYER_PROTOCOL_DETECTION);
CASE_CODE (SC_ERR_PCIE_INIT_FAILED);
CASE_CODE (SC_WARN_LUA_SCRIPT);
CASE_CODE (SC_ERR_LUA_SCRIPT);
}
return "UNKNOWN_ERROR";

@ -286,6 +286,8 @@ typedef enum {
SC_WARN_NFLOG_LOSING_EVENTS,
SC_WARN_NFLOG_MAXBUFSIZ_REACHED,
SC_WARN_NFLOG_SETSOCKOPT,
SC_WARN_LUA_SCRIPT,
SC_ERR_LUA_SCRIPT,
} SCError;
const char *SCErrorToString(SCError);

Loading…
Cancel
Save