38 static const char smtp_tx_mt[] =
"suricata:smtp:tx";
71 luaL_getmetatable(L, smtp_tx_mt);
72 lua_setmetatable(L, -2);
77 static int LuaSmtpTxGetMimeField(
lua_State *L)
79 struct LuaSmtpTx *
tx = luaL_checkudata(L, 1, smtp_tx_mt);
85 const char *
name = luaL_checkstring(L, 2);
90 const uint8_t *field_value;
92 if (SCMimeSmtpGetHeader(
tx->tx->
mime_state,
name, &field_value, &field_len)) {
99 static int LuaSmtpTxGetMimeList(
lua_State *L)
101 struct LuaSmtpTx *
tx = luaL_checkudata(L, 1, smtp_tx_mt);
107 const uint8_t *field_name;
111 while (SCMimeSmtpGetHeaderName(
tx->tx->
mime_state, &field_name, &field_len, (uint32_t)num)) {
112 if (field_len != 0) {
113 lua_pushinteger(L, num++);
121 static int LuaSmtpTxGetMailFrom(
lua_State *L)
123 struct LuaSmtpTx *
tx = luaL_checkudata(L, 1, smtp_tx_mt);
133 static int LuaSmtpTxGetRcptList(
lua_State *L)
135 struct LuaSmtpTx *
tx = luaL_checkudata(L, 1, smtp_tx_mt);
144 lua_pushinteger(L, u++);
152 static const struct luaL_Reg smtptxlib[] = {
153 {
"get_mime_field", LuaSmtpTxGetMimeField },
154 {
"get_mime_list", LuaSmtpTxGetMimeList },
155 {
"get_mail_from", LuaSmtpTxGetMailFrom },
156 {
"get_rcpt_list", LuaSmtpTxGetRcptList },
160 static const struct luaL_Reg smtplib[] = {
161 {
"get_tx", LuaSmtpGetTx },
167 luaL_newmetatable(L, smtp_tx_mt);
168 lua_pushvalue(L, -1);
169 lua_setfield(L, -2,
"__index");
170 luaL_setfuncs(L, smtptxlib, 0);
172 luaL_newlib(L, smtplib);