diff options
author | Andrew Lewis <nerf@judo.za.org> | 2015-02-13 11:30:41 +0200 |
---|---|---|
committer | Andrew Lewis <nerf@judo.za.org> | 2015-02-13 11:30:41 +0200 |
commit | 77918fb385f4d8a5643618973eee3c9ff1cd5f69 (patch) | |
tree | 531f11d1e9ecabc119ee273968dfd32815b90a9a /conf | |
parent | 284406915a6d3aaf24da46e87d7c92a3cad490f3 (diff) | |
download | rspamd-77918fb385f4d8a5643618973eee3c9ff1cd5f69.tar.gz rspamd-77918fb385f4d8a5643618973eee3c9ff1cd5f69.zip |
hfilter.lua: Add exclusion for authenticated users (except link checks)
Diffstat (limited to 'conf')
-rw-r--r-- | conf/lua/hfilter.lua | 82 |
1 files changed, 43 insertions, 39 deletions
diff --git a/conf/lua/hfilter.lua b/conf/lua/hfilter.lua index e623a0d6b..26a043f30 100644 --- a/conf/lua/hfilter.lua +++ b/conf/lua/hfilter.lua @@ -176,6 +176,49 @@ end -- local function hfilter(task) + -- Links checks + if config['url_enabled'] then + local parts = task:get_text_parts() + if parts then + --One text part-- + local total_parts_len = 0 + local text_parts_count = 0 + local selected_text_part = nil + for _,p in ipairs(parts) do + total_parts_len = total_parts_len + p:get_length() + + if not p:is_html() then + text_parts_count = text_parts_count + 1 + selected_text_part = p + end + end + if total_parts_len > 0 then + local urls = task:get_urls() + if urls then + local total_url_len = 0 + for _,url in ipairs(urls) do + total_url_len = total_url_len + url:get_length() + end + if total_url_len > 0 then + if total_url_len + 7 > total_parts_len then + task:insert_result('HFILTER_URL_ONLY', 1.00) + elseif text_parts_count == 1 and selected_text_part and selected_text_part:get_length() < 1024 then + -- We got a single text part with the total length < 1024 symbols. + local part_text = selected_text_part:get_content() + if part_text and not string.find(trim1(part_text), "\n") then + task:insert_result('HFILTER_URL_ONELINE', 1.00) + end + end + end + end + end + end + end + + if task:get_user() ~= nil then + return + end + --IP-- local ip = false local rip = task:get_from_ip() @@ -276,45 +319,6 @@ local function hfilter(task) end end - -- Links checks - if config['url_enabled'] then - local parts = task:get_text_parts() - if parts then - --One text part-- - local total_parts_len = 0 - local text_parts_count = 0 - local selected_text_part = nil - for _,p in ipairs(parts) do - total_parts_len = total_parts_len + p:get_length() - - if not p:is_html() then - text_parts_count = text_parts_count + 1 - selected_text_part = p - end - end - if total_parts_len > 0 then - local urls = task:get_urls() - if urls then - local total_url_len = 0 - for _,url in ipairs(urls) do - total_url_len = total_url_len + url:get_length() - end - if total_url_len > 0 then - if total_url_len + 7 > total_parts_len then - task:insert_result('HFILTER_URL_ONLY', 1.00) - elseif text_parts_count == 1 and selected_text_part and selected_text_part:get_length() < 1024 then - -- We got a single text part with the total length < 1024 symbols. - local part_text = selected_text_part:get_content() - if part_text and not string.find(trim1(part_text), "\n") then - task:insert_result('HFILTER_URL_ONELINE', 1.00) - end - end - end - end - end - end - end - return false end |