60 static int GetMimeDecField(
lua_State *luastate,
Flow *flow,
const char *name)
66 return LuaCallbackError(luastate,
"Internal error: no state in flow");
71 return LuaCallbackError(luastate,
"Transaction ending or not found");
77 return LuaCallbackError(luastate,
"Internal error: no fields in transaction");
83 return LuaCallbackError(luastate,
"Error: mimefield not found");
87 return LuaCallbackError(luastate,
"Error, pointer error");
90 return LuaPushStringBuffer(luastate, field->
value, field->
value_len);
103 static int SMTPGetMimeField(
lua_State *luastate)
106 return LuaCallbackError(luastate,
"error: protocol not SMTP");
108 Flow *flow = LuaStateGetFlow(luastate);
111 return LuaCallbackError(luastate,
"Error: no flow found");
113 const char *name = LuaGetStringArgument(luastate, 1);
115 return LuaCallbackError(luastate,
"1st argument missing, empty or wrong type");
117 GetMimeDecField(luastate, flow, name);
137 return LuaCallbackError(luastate,
"Error: no SMTP state");
141 if(smtp_tx == NULL) {
142 return LuaCallbackError(luastate,
"Error: no SMTP transaction found");
147 return LuaCallbackError(luastate,
"Error: no mime entity found");
151 return LuaCallbackError(luastate,
"Error: no field_list found");
154 return LuaCallbackError(luastate,
"Error: field has no name");
159 lua_newtable(luastate);
160 while (field != NULL) {
162 lua_pushinteger(luastate,num++);
163 LuaPushStringBuffer(luastate, field->
name, field->
name_len);
164 lua_settable(luastate,-3);
182 static int SMTPGetMimeList(
lua_State *luastate)
186 return LuaCallbackError(luastate,
"Error: protocol not SMTP");
189 Flow *flow = LuaStateGetFlow(luastate);
191 return LuaCallbackError(luastate,
"Error: no flow found");
194 GetMimeList(luastate, flow);
215 return LuaCallbackError(luastate,
"Internal Error: no state");
218 if(smtp_tx == NULL) {
219 return LuaCallbackError(luastate,
"Internal Error: no SMTP transaction");
222 return LuaCallbackError(luastate,
"MailFrom not found");
239 static int SMTPGetMailFrom(
lua_State *luastate)
243 return LuaCallbackError(luastate,
"Error: protocol not SMTP");
246 Flow *flow = LuaStateGetFlow(luastate);
248 return LuaCallbackError(luastate,
"Internal Error: no flow");
251 GetMailFrom(luastate, flow);
271 return LuaCallbackError(luastate,
"Internal error, no state");
275 if(smtp_tx == NULL) {
276 return LuaCallbackError(luastate,
"No more tx, or tx not found");
280 lua_newtable(luastate);
286 lua_pushinteger(luastate, u++);
287 LuaPushStringBuffer(luastate, rcpt->
str, rcpt->
len);
288 lua_settable(luastate, -3);
306 static int SMTPGetRcptList(
lua_State *luastate)
310 return LuaCallbackError(luastate,
"Error: protocol not SMTP");
313 Flow *flow = LuaStateGetFlow(luastate);
315 return LuaCallbackError(luastate,
"Internal error: no flow");
318 GetRcptList(luastate, flow);
324 int LuaRegisterSmtpFunctions(
lua_State *luastate)
327 lua_pushcfunction(luastate, SMTPGetMimeField);
328 lua_setglobal(luastate,
"SMTPGetMimeField");
330 lua_pushcfunction(luastate, SMTPGetMimeList);
331 lua_setglobal(luastate,
"SMTPGetMimeList");
333 lua_pushcfunction(luastate, SMTPGetMailFrom);
334 lua_setglobal(luastate,
"SMTPGetMailFrom");
336 lua_pushcfunction(luastate, SMTPGetRcptList);
337 lua_setglobal(luastate,
"SMTPGetRcptList");