]> source.dussan.org Git - rspamd.git/commitdiff
[Rework] add alias util:parse_addr for util:parse_mail_address
authorJan Smutny <js@excello.cz>
Fri, 17 Apr 2020 13:28:37 +0000 (15:28 +0200)
committerJan Smutny <js@excello.cz>
Fri, 17 Apr 2020 13:34:37 +0000 (15:34 +0200)
src/lua/lua_util.c

index d2efc9cb2dd3540bfb2367e121fe477f02aefcf7..e7f18db2b423d8369465d6391d45e7ef58552118 100644 (file)
@@ -651,6 +651,7 @@ static const struct luaL_reg utillib_f[] = {
        LUA_INTERFACE_DEF (util, humanize_number),
        LUA_INTERFACE_DEF (util, get_tld),
        LUA_INTERFACE_DEF (util, glob),
+       {"parse_addr", lua_util_parse_mail_address},
        LUA_INTERFACE_DEF (util, parse_mail_address),
        LUA_INTERFACE_DEF (util, strlen_utf8),
        LUA_INTERFACE_DEF (util, lower_utf8),
@@ -1463,6 +1464,51 @@ lua_util_levenshtein_distance (lua_State *L)
        return 1;
 }
 
+static gint
+lua_util_parse_addr (lua_State *L)
+{
+       LUA_TRACE_POINT;
+       GPtrArray *addrs;
+       gsize len;
+       const gchar *str = luaL_checklstring (L, 1, &len);
+       rspamd_mempool_t *pool;
+       gboolean own_pool = FALSE;
+
+       if (str) {
+
+               if (lua_type (L, 2) == LUA_TUSERDATA) {
+                       pool = rspamd_lua_check_mempool (L, 2);
+
+                       if (pool == NULL) {
+                               return luaL_error (L, "invalid arguments");
+                       }
+               }
+               else {
+                       pool = rspamd_mempool_new (rspamd_mempool_suggest_size (),
+                                       "lua util", 0);
+                       own_pool = TRUE;
+               }
+
+               addrs = rspamd_email_address_from_mime (pool, str, len, NULL);
+
+               if (addrs == NULL) {
+                       lua_pushnil (L);
+               }
+               else {
+                       lua_push_emails_address_list (L, addrs, 0);
+               }
+
+               if (own_pool) {
+                       rspamd_mempool_delete (pool);
+               }
+       }
+       else {
+               lua_pushnil (L);
+       }
+
+       return 1;
+}
+
 static gint
 lua_util_fold_header (lua_State *L)
 {