From ebfde825561e434cb7d9a9da5bbe2398290030c2 Mon Sep 17 00:00:00 2001 From: Jan Smutny Date: Sun, 19 Apr 2020 23:32:30 +0200 Subject: [PATCH] [Feature] extend lua api add new value accessible by key 'raw' to the table returned by util:parse_mail_address and task:get_from --- src/lua/lua_task.c | 13 ++++++++++++- src/lua/lua_util.c | 1 + 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/lua/lua_task.c b/src/lua/lua_task.c index b891d7d99..8bd7077c8 100644 --- a/src/lua/lua_task.c +++ b/src/lua/lua_task.c @@ -515,6 +515,7 @@ LUA_FUNCTION_DEF (task, has_from); * @method task:get_from([type]) * Return SMTP or MIME sender for a task. This function returns an internet address which one is a table with the following structure: * + * - `raw` - the original value without any processing * - `name` - name of internet address in UTF8, e.g. for `Vsevolod Stakhov ` it returns `Vsevolod Stakhov` * - `addr` - address part of the address * - `user` - user part (if present) of the address, e.g. `blah` @@ -3310,8 +3311,18 @@ static void lua_push_email_address (lua_State *L, struct rspamd_email_address *addr) { if (addr) { - lua_createtable (L, 0, 4); + lua_createtable (L, 0, 5); + if (addr->raw_len > 0) { + lua_pushstring (L, "raw"); + lua_pushlstring (L, addr->raw, addr->raw_len); + lua_settable (L, -3); + } + else { + lua_pushstring (L, "raw"); + lua_pushstring (L, ""); + lua_settable (L, -3); + } if (addr->addr_len > 0) { lua_pushstring (L, "addr"); lua_pushlstring (L, addr->addr, addr->addr_len); diff --git a/src/lua/lua_util.c b/src/lua/lua_util.c index 7f9918c61..5948f4b4b 100644 --- a/src/lua/lua_util.c +++ b/src/lua/lua_util.c @@ -204,6 +204,7 @@ LUA_FUNCTION_DEF (util, glob); * @function util.parse_mail_address(str, [pool]) * Parses email address and returns a table of tables in the following format: * + * - `raw` - the original value without any processing * - `name` - name of internet address in UTF8, e.g. for `Vsevolod Stakhov ` it returns `Vsevolod Stakhov` * - `addr` - address part of the address * - `user` - user part (if present) of the address, e.g. `blah` -- 2.39.5