diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2015-08-07 14:09:14 +0100 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2015-08-07 14:09:14 +0100 |
commit | 4135a3b422a6c14d6fe7e63d1bd5b32a32595616 (patch) | |
tree | 008263e9aea490cd79edc343953949944f047fb5 /rules/html.lua | |
parent | 0da96b74d5351f63630d7c7160ad9c90c446c055 (diff) | |
download | rspamd-4135a3b422a6c14d6fe7e63d1bd5b32a32595616.tar.gz rspamd-4135a3b422a6c14d6fe7e63d1bd5b32a32595616.zip |
Move lua rules to rules dir.
Diffstat (limited to 'rules/html.lua')
-rw-r--r-- | rules/html.lua | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/rules/html.lua b/rules/html.lua new file mode 100644 index 000000000..1b218357b --- /dev/null +++ b/rules/html.lua @@ -0,0 +1,76 @@ +-- Licensed to the Apache Software Foundation (ASF) under one or more +-- contributor license agreements. See the NOTICE file distributed with +-- this work for additional information regarding copyright ownership. +-- The ASF licenses this file to you under the Apache License, Version 2.0 +-- (the "License"); you may not use this file except in compliance with +-- the License. You may obtain a copy of the License at: +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. + +local reconf = config['regexp'] +local rspamd_regexp = require "rspamd_regexp" +local rspamd_logger = require "rspamd_logger" + +-- Messages that have only HTML part +reconf['MIME_HTML_ONLY'] = 'has_only_html_part()' + +local function check_html_image(task, min, max) + local tp = task:get_text_parts() + + for _,p in ipairs(tp) do + if p:is_html() then + local hc = p:get_html() + local len = p:get_raw_length() + + if len >= min and len < max then + local images = hc:get_images() + + if images then + for _,i in ipairs(images) do + if i['embedded'] then + return true + end + end + end + end + end + end +end + +rspamd_config.HTML_SHORT_LINK_IMG_1 = function(task) + return check_html_image(task, 0, 1024) +end +rspamd_config.HTML_SHORT_LINK_IMG_2 = function(task) + return check_html_image(task, 1024, 1536) +end +rspamd_config.HTML_SHORT_LINK_IMG_3 = function(task) + return check_html_image(task, 1536, 2048) +end +rspamd_config.R_EMPTY_IMAGE = function(task) + local tp = task:get_text_parts() -- get text parts in a message + + 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 + local hc = p:get_html() -- we get HTML context + local len = p:get_length() -- and part's length + + if len < 50 then -- if we have a part that has less than 50 bytes of text + local images = hc:get_images() -- then we check for HTML images + + if images then -- if there are images + for _,i in ipairs(images) do -- then iterate over images in the part + if i['height'] + i['width'] >= 400 then -- if we have a large image + return true -- add symbol + end + end + end + end + end + end +end
\ No newline at end of file |