commit add9595: [Feature] Export visible part of url to lua
Miecio Za
miecio at miecio.net
Sat Mar 9 14:21:03 UTC 2019
Author: Miecio Za
Date: 2019-02-27 11:56:35 +0100
URL: https://github.com/rspamd/rspamd/commit/add9595913c3f456c6328a53801739cdca70da9d
[Feature] Export visible part of url to lua
Export visible part of url to lua
---
src/libserver/html.c | 6 ++++++
src/libserver/url.h | 2 ++
src/lua/lua_url.c | 23 +++++++++++++++++++++++
3 files changed, 31 insertions(+)
diff --git a/src/libserver/html.c b/src/libserver/html.c
index 31438ddad..70b66ccc0 100644
--- a/src/libserver/html.c
+++ b/src/libserver/html.c
@@ -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,
diff --git a/src/libserver/url.h b/src/libserver/url.h
index 4d1948921..571424099 100644
--- a/src/libserver/url.h
+++ b/src/libserver/url.h
@@ -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;
diff --git a/src/lua/lua_url.c b/src/lua/lua_url.c
index 0a301e96d..7bad50359 100644
--- a/src/lua/lua_url.c
+++ b/src/lua/lua_url.c
@@ -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:
More information about the Commits
mailing list