aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/plugins/lua/phishing.lua36
1 files changed, 17 insertions, 19 deletions
diff --git a/src/plugins/lua/phishing.lua b/src/plugins/lua/phishing.lua
index adddce255..4314d7930 100644
--- a/src/plugins/lua/phishing.lua
+++ b/src/plugins/lua/phishing.lua
@@ -119,7 +119,6 @@ local function phishing_cb(task)
end
if url:is_phished() and not url:is_redirected() then
- local found = false
local purl = url:get_phished()
local tld = url:get_tld()
local ptld = purl:get_tld()
@@ -138,29 +137,28 @@ local function phishing_cb(task)
end
rspamd_logger.debugx(task, "distance: %1 -> %2: %3", tld, ptld, dist)
- if #redirector_domains > 0 then
- for _,rule in ipairs(redirector_domains) do
- if rule['map']:get_key(tld) or rule['map']:get_key(url:get_host()) then
- task:insert_result(rule['symbol'], weight, ptld .. '->' .. tld)
- found = true
+ local function found_in_map(map, url, weight)
+ if #map > 0 then
+ for _,rule in ipairs(map) do
+ for _,dn in ipairs({url:get_tld(), url:get_host()}) do
+ if rule['map']:get_key(dn) then
+ task:insert_result(rule['symbol'], weight, ptld .. '->' .. dn)
+ return true
+ end
+ end
end
end
end
- if not found and #strict_domains > 0 then
- for _,rule in ipairs(strict_domains) do
- if rule['map']:get_key(ptld) or rule['map']:get_key(purl:get_host()) then
- task:insert_result(rule['symbol'], 1.0, ptld .. '->' .. tld)
- found = true
- end
- end
- end
- if not found then
- if domains then
- if domains:get_key(ptld) then
+
+ if not found_in_map(redirector_domains, url, weight) then
+ if not found_in_map(strict_domains, purl, 1.0) then
+ if domains then
+ if domains:get_key(ptld) then
+ task:insert_result(symbol, weight, ptld .. '->' .. tld)
+ end
+ else
task:insert_result(symbol, weight, ptld .. '->' .. tld)
end
- else
- task:insert_result(symbol, weight, ptld .. '->' .. tld)
end
end
end