commit ebfde82: [Feature] extend lua api
Jan Smutny
js at excello.cz
Sat Apr 25 16:01:02 UTC 2020
Author: Jan Smutny
Date: 2020-04-19 23:32:30 +0200
URL: https://github.com/rspamd/rspamd/commit/ebfde825561e434cb7d9a9da5bbe2398290030c2 (refs/pull/3344/head)
[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 <blah at foo.com>` 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 <blah at foo.com>` it returns `Vsevolod Stakhov`
* - `addr` - address part of the address
* - `user` - user part (if present) of the address, e.g. `blah`
More information about the Commits
mailing list