]> source.dussan.org Git - rspamd.git/commitdiff
[Feature] Export visible part of url to lua
authorMiecio Za <miecio@miecio.net>
Wed, 27 Feb 2019 10:56:35 +0000 (11:56 +0100)
committerMiecio Za <miecio@miecio.net>
Wed, 27 Feb 2019 10:56:35 +0000 (11:56 +0100)
Export visible part of url to lua

src/libserver/html.c
src/libserver/url.h
src/lua/lua_url.c

index 31438ddad617165072f40f4cef24328bebbe75fb..70b66ccc0103c5d866e73babde45baae2c729349 100644 (file)
@@ -2373,6 +2373,12 @@ rspamd_html_check_displayed_url (rspamd_mempool_t *pool,
                return;
        }
 
+       gint visible_part_len = dest->len - href_offset;
+       url->visible_part = rspamd_mempool_alloc0(pool, visible_part_len +1);
+       url->visible_partlen = visible_part_len;
+       gchar *visible_part = g_strndup(dest->data + href_offset, visible_part_len);
+       g_stpcpy(url->visible_part, visible_part);
+
        rspamd_html_url_is_phished (pool, url,
                        dest->data + href_offset,
                        dest->len - href_offset,
index 4d19489212046a11771abb0990ffa785da7320c9..57142409963ebee9b25a14947249015aed0b228c 100644 (file)
@@ -48,6 +48,7 @@ struct rspamd_url {
        gchar *fragment;
        gchar *surbl;
        gchar *tld;
+       gchar *visible_part;
 
        struct rspamd_url *phished_url;
 
@@ -61,6 +62,7 @@ struct rspamd_url {
        guint tldlen;
        guint urllen;
        guint rawlen;
+       guint visible_partlen;
 
        enum rspamd_url_flags flags;
        guint count;
index 0a301e96d08ac90e1439e01103ca2e1103b391c8..7bad50359a5765c6c60c7358678aa8024faf0d01 100644 (file)
@@ -63,6 +63,7 @@ LUA_FUNCTION_DEF (url, get_tag);
 LUA_FUNCTION_DEF (url, get_count);
 LUA_FUNCTION_DEF (url, get_tags);
 LUA_FUNCTION_DEF (url, add_tag);
+LUA_FUNCTION_DEF (url, get_visible);
 LUA_FUNCTION_DEF (url, create);
 LUA_FUNCTION_DEF (url, init);
 LUA_FUNCTION_DEF (url, all);
@@ -89,6 +90,7 @@ static const struct luaL_reg urllib_m[] = {
        LUA_INTERFACE_DEF (url, get_tag),
        LUA_INTERFACE_DEF (url, get_tags),
        LUA_INTERFACE_DEF (url, add_tag),
+       LUA_INTERFACE_DEF (url, get_visible),
        LUA_INTERFACE_DEF (url, get_count),
        LUA_INTERFACE_DEF (url, get_flags),
        {"get_redirected", lua_url_get_phished},
@@ -650,6 +652,27 @@ lua_url_get_count (lua_State *L)
        return 1;
 }
 
+ /***
+* @method url:get_visible()
+* Get visible part of the url with html tags stripped
+* @return {string} url string
+*/
+static gint
+lua_url_get_visible (lua_State *L)
+{
+       LUA_TRACE_POINT;
+       struct rspamd_lua_url *url = lua_check_url (L, 1);
+
+       if (url != NULL) {
+               lua_pushlstring (L, url->url->visible_part, url->url->visible_partlen);
+       }
+       else {
+               lua_pushnil (L);
+       }
+
+return 1;
+}
+
 /***
  * @method url:to_table()
  * Return url as a table with the following fields: