26 static const char file_mt[] =
"suricata:file:mt";
39 struct LuaFile *lua_file = (
struct LuaFile *)lua_newuserdata(L,
sizeof(*lua_file));
40 if (lua_file == NULL) {
45 luaL_getmetatable(L, file_mt);
46 lua_setmetatable(L, -2);
53 struct LuaFile *lua_file = luaL_checkudata(L, 1, file_mt);
63 lua_pushinteger(L, tx_id);
70 struct LuaFile *lua_file = luaL_checkudata(L, 1, file_mt);
79 struct LuaFile *lua_file = luaL_checkudata(L, 1, file_mt);
89 struct LuaFile *lua_file = luaL_checkudata(L, 1, file_mt);
91 if (
file->magic != NULL) {
92 lua_pushstring(L,
file->magic);
103 static void PushHex(
lua_State *L,
const uint8_t *buf,
size_t len)
107 for (
size_t i = 0; i <
len; i++) {
109 snprintf(one,
sizeof(one),
"%02x", buf[i]);
110 strlcat(hex, one,
sizeof(hex));
113 lua_pushstring(L, hex);
118 struct LuaFile *lua_file = luaL_checkudata(L, 1, file_mt);
132 struct LuaFile *lua_file = luaL_checkudata(L, 1, file_mt);
144 static int LuaFileGetSha256(
lua_State *L)
146 struct LuaFile *lua_file = luaL_checkudata(L, 1, file_mt);
160 struct LuaFile *lua_file = luaL_checkudata(L, 1, file_mt);
163 const char *state =
"UNKNOWN";
184 lua_pushstring(L, state);
191 struct LuaFile *lua_file = luaL_checkudata(L, 1, file_mt);
198 static const struct luaL_Reg filelib[] = {
199 {
"get_state", LuaFileGetState },
200 {
"is_stored", LuaFileIsStored },
201 {
"file_id", LuaFileGetFileId },
202 {
"tx_id", LuaFileGetTxId },
203 {
"name", LuaFileGetName },
204 {
"size", LuaFileGetSize },
205 {
"magic", LuaFileGetMagic },
206 {
"md5", LuaFileGetMd5 },
207 {
"sha1", LuaFileGetSha1 },
208 {
"sha256", LuaFileGetSha256 },
212 static const struct luaL_Reg filemodlib[] = {
213 {
"get_file", LuaFileGetFile },
219 luaL_newmetatable(L, file_mt);
220 lua_pushvalue(L, -1);
221 lua_setfield(L, -2,
"__index");
222 luaL_setfuncs(L, filelib, 0);
224 luaL_newlib(L, filemodlib);