diff --git a/src/output-lua-common.c b/src/output-lua-common.c index d4cbb2ee63..5785ae5e6a 100644 --- a/src/output-lua-common.c +++ b/src/output-lua-common.c @@ -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; } diff --git a/src/util-error.c b/src/util-error.c index 99b65ba7b5..68e3139279 100644 --- a/src/util-error.c +++ b/src/util-error.c @@ -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"; diff --git a/src/util-error.h b/src/util-error.h index 1e8eba3920..30fba6cd9c 100644 --- a/src/util-error.h +++ b/src/util-error.h @@ -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);