]> source.dussan.org Git - rspamd.git/commitdiff
[Fix] Some more fixes for low contrast fonts detector
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 8 Aug 2016 13:21:17 +0000 (14:21 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 8 Aug 2016 13:21:17 +0000 (14:21 +0100)
rules/html.lua

index 1c4c86cdc0f0665956b764feff0343fceeff7e62..68eca30101f69398be696acb9ecc5d87cd8e614b 100644 (file)
@@ -171,7 +171,8 @@ rspamd_config.R_WHITE_ON_WHITE = {
     local ret = false
     local diff = 0.0
     local normal_len = 0
-    local transp_tags = {}
+    local transp_len = 0
+    local arg
 
     for _,p in ipairs(tp) do -- iterate over text parts array using `ipairs`
       if p:is_html() then -- if the current part is html part
@@ -191,7 +192,14 @@ rspamd_config.R_WHITE_ON_WHITE = {
 
               if diff < 0.2 then
                 ret = true
-                table.insert(transp_tags, tag)
+                transp_len = (transp_len + tag:get_content_length()) *
+                  (0.2 - diff) * 5.0
+                if not arg then
+                  arg = string.format('%s color #%x%x%x bgcolor #%x%x%x',
+                    tostring(tag:get_type()),
+                    color[1], color[2], color[3],
+                    bgcolor[1], bgcolor[2], bgcolor[3])
+                end
               else
                 normal_len = normal_len + tag:get_content_length()
               end
@@ -205,24 +213,8 @@ rspamd_config.R_WHITE_ON_WHITE = {
     end
 
     if ret then
-      local transp_len = 0
-      local arg
-
-      for _,t in ipairs(transp_tags) do
-        local bl = t:get_extra()
-        local color = bl['color']
-        local bgcolor = bl['bgcolor']
-        transp_len = transp_len + t:get_content_length()
-
-        if not arg then
-          arg = string.format('%s color #%x%x%x bgcolor #%x%x%x',
-            tostring(t:get_type()),
-            color[1], color[2], color[3],
-            bgcolor[1], bgcolor[2], bgcolor[3])
-        end
-      end
-
       local transp_rate = transp_len / (normal_len + transp_len)
+
       if transp_rate > 0.1 then
         return true,(transp_rate * 2.0),arg
       end