]> source.dussan.org Git - rspamd.git/commitdiff
[Feature] Store url object in images
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 9 Oct 2018 11:07:28 +0000 (12:07 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 9 Oct 2018 11:07:46 +0000 (12:07 +0100)
src/libserver/html.c
src/libserver/html.h
src/lua/lua_html.c
src/plugins/surbl.c

index 9e73b6f3ea5bd79cf508d342a1e4ee763c6cec2e..ff745f80d7df6e3d9862f267a857d2c6e5512302 100644 (file)
@@ -1512,6 +1512,10 @@ rspamd_html_process_img_tag (rspamd_mempool_t *pool, struct html_tag *tag,
                        }
                        else {
                                img->flags |= RSPAMD_HTML_FLAG_IMAGE_EXTERNAL;
+                               if (img->src) {
+                                       img->url = rspamd_html_process_url (pool,
+                                                       img->src, fstr.len, NULL);
+                               }
                        }
                }
                else if (comp->type == RSPAMD_HTML_COMPONENT_HEIGHT) {
index c7534d309f5423fb24b1d902848770a16a8d95df..c5a989f0e8019a1fa818d318667c0733416b14ab 100644 (file)
@@ -48,6 +48,7 @@ struct html_image {
        guint width;
        guint flags;
        gchar *src;
+       struct rspamd_url *url;
        struct html_tag *tag;
 };
 
index 95072fe6c020cacd0d29c3d2c15841fc7aee9f5a..47b8c7dfdbd0de00df638fe410cb7a303c1c17af 100644 (file)
@@ -260,6 +260,7 @@ lua_html_push_image (lua_State *L, struct html_image *img)
 {
        LUA_TRACE_POINT;
        struct html_tag **ptag;
+       struct rspamd_url **purl;
 
        lua_newtable (L);
 
@@ -269,6 +270,14 @@ lua_html_push_image (lua_State *L, struct html_image *img)
                lua_settable (L, -3);
        }
 
+       if (img->url) {
+               lua_pushstring (L, "url");
+               purl = lua_newuserdata (L, sizeof (gpointer));
+               *purl = img->url;
+               rspamd_lua_setclass (L, "rspamd{url}", -1);
+               lua_settable (L, -3);
+       }
+
        if (img->tag) {
                lua_pushstring (L, "tag");
                ptag = lua_newuserdata (L, sizeof (gpointer));
index 465edecf4f02f581662a75b4ae0a946bdb1cbb9c..c27e5c8585d8a1e54d72409258ae615c0391344c 100644 (file)
@@ -1906,15 +1906,10 @@ surbl_test_url (struct rspamd_task *task, void *user_data)
                                        img = g_ptr_array_index (part->html->images, j);
 
                                        if ((img->flags & RSPAMD_HTML_FLAG_IMAGE_EXTERNAL)
-                                                       && img->src) {
-                                               url = rspamd_html_process_url (task->task_pool,
-                                                               img->src, strlen (img->src), NULL);
-
-                                               if (url) {
-                                                       surbl_tree_url_callback (url, url, param);
-                                                       msg_debug_surbl ("checked image url %s over %s",
-                                                                       img->src, suffix->suffix);
-                                               }
+                                                       && img->url) {
+                                               surbl_tree_url_callback (img->url, img->url, param);
+                                               msg_debug_surbl ("checked image url %s over %s",
+                                                               img->src, suffix->suffix);
                                        }
                                }
                        }