aboutsummaryrefslogtreecommitdiffstats
path: root/conf
diff options
context:
space:
mode:
authorAndrew Lewis <nerf@judo.za.org>2015-02-13 11:30:41 +0200
committerAndrew Lewis <nerf@judo.za.org>2015-02-13 11:30:41 +0200
commit77918fb385f4d8a5643618973eee3c9ff1cd5f69 (patch)
tree531f11d1e9ecabc119ee273968dfd32815b90a9a /conf
parent284406915a6d3aaf24da46e87d7c92a3cad490f3 (diff)
downloadrspamd-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.lua82
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