From: Vsevolod Stakhov Date: Fri, 5 Nov 2021 14:59:14 +0000 (+0000) Subject: [Minor] Lua_mimepart: Add `get_enclosing_boundary` method X-Git-Tag: 3.2~293 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=15e41fc12fd50d7e35bc977f7a941c9b21ff15ff;p=rspamd.git [Minor] Lua_mimepart: Add `get_enclosing_boundary` method --- diff --git a/src/lua/lua_mimepart.c b/src/lua/lua_mimepart.c index 1f6a62f40..c03ef35fd 100644 --- a/src/lua/lua_mimepart.c +++ b/src/lua/lua_mimepart.c @@ -468,6 +468,14 @@ LUA_FUNCTION_DEF (mimepart, is_message); */ LUA_FUNCTION_DEF (mimepart, get_boundary); +/*** + * @method mime_part:get_enclosing_boundary() + * Returns an enclosing boundary for a part even for multiparts. For normal parts + * this method is identical to `get_boundary` + * @return {string} boundary value or nil + */ +LUA_FUNCTION_DEF (mimepart, get_enclosing_boundary); + /*** * @method mime_part:get_children() * Returns rspamd_mimepart table of part's childer. Returns nil if mime part is not multipart @@ -569,6 +577,7 @@ static const struct luaL_reg mimepartlib_m[] = { LUA_INTERFACE_DEF (mimepart, get_cte), LUA_INTERFACE_DEF (mimepart, get_filename), LUA_INTERFACE_DEF (mimepart, get_boundary), + LUA_INTERFACE_DEF (mimepart, get_enclosing_boundary), LUA_INTERFACE_DEF (mimepart, get_header), LUA_INTERFACE_DEF (mimepart, get_header_raw), LUA_INTERFACE_DEF (mimepart, get_header_full), @@ -1639,6 +1648,29 @@ lua_mimepart_get_boundary (lua_State * L) return 1; } +static gint +lua_mimepart_get_enclosing_boundary (lua_State * L) +{ + LUA_TRACE_POINT; + struct rspamd_mime_part *part = lua_check_mimepart (L), *parent; + + if (part == NULL) { + return luaL_error (L, "invalid arguments"); + } + + parent = part->parent_part; + + if (!parent || !IS_PART_MULTIPART (parent)) { + lua_pushnil (L); + } + else { + lua_pushlstring (L, parent->specific.mp->boundary.begin, + parent->specific.mp->boundary.len); + } + + return 1; +} + static gint lua_mimepart_get_header_common (lua_State *L, enum rspamd_lua_task_header_type how) {