31 static const char file_mt[] =
"suricata:file:mt";
77 if (lua_file == NULL) {
86 luaL_getmetatable(L, file_mt);
87 lua_setmetatable(L, -2);
95 const File *file = LuaFileRefResolve(L, lua_file);
108 lua_pushinteger(L, (lua_Integer)lua_file->
ref.
tx_id);
116 const File *file = LuaFileRefResolve(L, lua_file);
129 const File *file = LuaFileRefResolve(L, lua_file);
143 const File *file = LuaFileRefResolve(L, lua_file);
148 if (file->magic != NULL) {
149 lua_pushstring(L, file->magic);
160 static void PushHex(
lua_State *L,
const uint8_t *buf,
size_t len)
164 for (
size_t i = 0; i <
len; i++) {
166 snprintf(one,
sizeof(one),
"%02x", buf[i]);
167 strlcat(hex, one,
sizeof(hex));
170 lua_pushstring(L, hex);
176 const File *file = LuaFileRefResolve(L, lua_file);
183 PushHex(L, file->
md5,
sizeof(file->
md5));
194 const File *file = LuaFileRefResolve(L, lua_file);
201 PushHex(L, file->
sha1,
sizeof(file->
sha1));
209 static int LuaFileGetSha256(
lua_State *L)
212 const File *file = LuaFileRefResolve(L, lua_file);
230 const File *file = LuaFileRefResolve(L, lua_file);
236 const char *state =
"UNKNOWN";
237 switch (file->
state) {
257 lua_pushstring(L, state);
265 const File *file = LuaFileRefResolve(L, lua_file);
275 static const struct luaL_Reg filelib[] = {
276 {
"get_state", LuaFileGetState },
277 {
"is_stored", LuaFileIsStored },
278 {
"file_id", LuaFileGetFileId },
279 {
"tx_id", LuaFileGetTxId },
280 {
"name", LuaFileGetName },
281 {
"size", LuaFileGetSize },
282 {
"magic", LuaFileGetMagic },
283 {
"md5", LuaFileGetMd5 },
284 {
"sha1", LuaFileGetSha1 },
285 {
"sha256", LuaFileGetSha256 },
289 static const struct luaL_Reg filemodlib[] = {
290 {
"get_file", LuaFileGetFile },
296 luaL_newmetatable(L, file_mt);
297 lua_pushvalue(L, -1);
298 lua_setfield(L, -2,
"__index");
299 luaL_setfuncs(L, filelib, 0);
301 luaL_newlib(L, filemodlib);