瀏覽代碼

Do not parse URLs for getting TLD in lua

tags/1.1.0
Vsevolod Stakhov 8 年之前
父節點
當前提交
1714e4eb3d
共有 3 個文件被更改,包括 22 次插入33 次删除
  1. 2
    6
      src/plugins/lua/dmarc.lua
  2. 17
    21
      src/plugins/lua/rbl.lua
  3. 3
    6
      src/plugins/lua/whitelist.lua

+ 2
- 6
src/plugins/lua/dmarc.lua 查看文件

@@ -32,6 +32,7 @@ local rspamd_logger = require "rspamd_logger"
local rspamd_redis = require "rspamd_redis"
local rspamd_url = require "rspamd_url"
local upstream_list = require "rspamd_upstream_list"
local rspamd_util = require "rspamd_util"

--local dumper = require 'pl.pretty'.dump

@@ -67,12 +68,7 @@ local function dmarc_callback(task)
local dmarc_domain

if from and from[1] and from[1]['domain'] and not from[2] then
local url_from = rspamd_url.create(task:get_mempool(), from[1]['domain'])
if url_from then
dmarc_domain = url_from:get_tld()
else
return
end
dmarc_domain = rspamd_util.get_tld(from[1]['domain'])
else
return
end

+ 17
- 21
src/plugins/lua/rbl.lua 查看文件

@@ -36,6 +36,7 @@ local private_ips = nil
local rspamd_logger = require 'rspamd_logger'
local rspamd_ip = require 'rspamd_ip'
local rspamd_url = require 'rspamd_url'
local rspamd_util = require 'rspamd_util'

local symbols = {
dkim_allow_symbol = 'R_DKIM_ALLOW',
@@ -163,8 +164,8 @@ local function rbl_cb (task)
end
end
task:get_resolver():resolve_a({task = task,
name = havegot['helo'] .. '.' .. rbl['rbl'],
callback = rbl_dns_cb,
name = havegot['helo'] .. '.' .. rbl['rbl'],
callback = rbl_dns_cb,
option = k})
end)()
end
@@ -185,17 +186,12 @@ local function rbl_cb (task)
end
for _, d in ipairs(havegot['dkim']) do
if rbl['dkim_domainonly'] then
local url_from = rspamd_url.create(task:get_mempool(), d)
if url_from then
d = url_from:get_tld()
else
return
end
d = rspamd_util.get_tld(d)
end

task:get_resolver():resolve_a({task = task,
name = d .. '.' .. rbl['rbl'],
callback = rbl_dns_cb,
name = d .. '.' .. rbl['rbl'],
callback = rbl_dns_cb,
option = k})
end
end)()
@@ -224,7 +220,7 @@ local function rbl_cb (task)
if validate_dns(localpart) and validate_dns(domainpart) then
table.insert(cleanList, localpart .. '.' .. domainpart)
end
end
end
end
havegot['emails'] = cleanList
if not next(havegot['emails']) then
@@ -235,15 +231,15 @@ local function rbl_cb (task)
if rbl['emails'] == 'domain_only' then
for domain, _ in pairs(havegot['emails']) do
task:get_resolver():resolve_a({task = task,
name = domain .. '.' .. rbl['rbl'],
callback = rbl_dns_cb,
name = domain .. '.' .. rbl['rbl'],
callback = rbl_dns_cb,
option = k})
end
else
for _, email in pairs(havegot['emails']) do
task:get_resolver():resolve_a({task = task,
name = email .. '.' .. rbl['rbl'],
callback = rbl_dns_cb,
name = email .. '.' .. rbl['rbl'],
callback = rbl_dns_cb,
option = k})
end
end
@@ -264,7 +260,7 @@ local function rbl_cb (task)
end
task:get_resolver():resolve_a({task = task,
name = havegot['rdns'] .. '.' .. rbl['rbl'],
callback = rbl_dns_cb,
callback = rbl_dns_cb,
option = k})
end)()
end
@@ -284,8 +280,8 @@ local function rbl_cb (task)
if (havegot['from']:get_version() == 6 and rbl['ipv6']) or
(havegot['from']:get_version() == 4 and rbl['ipv4']) then
task:get_resolver():resolve_a({task = task,
name = ip_to_rbl(havegot['from'], rbl['rbl']),
callback = rbl_dns_cb,
name = ip_to_rbl(havegot['from'], rbl['rbl']),
callback = rbl_dns_cb,
option = k})
end
end)()
@@ -311,8 +307,8 @@ local function rbl_cb (task)
not rbl['exclude_private_ips']) and ((rbl['exclude_local_ips'] and
not is_excluded_ip(rh['real_ip'])) or not rbl['exclude_local_ips']) then
task:get_resolver():resolve_a({task = task,
name = ip_to_rbl(rh['real_ip'], rbl['rbl']),
callback = rbl_dns_cb,
name = ip_to_rbl(rh['real_ip'], rbl['rbl']),
callback = rbl_dns_cb,
option = k})
end
end

+ 3
- 6
src/plugins/lua/whitelist.lua 查看文件

@@ -26,6 +26,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

local rspamd_logger = require "rspamd_logger"
local rspamd_url = require "rspamd_url"
local rspamd_util = require "rspamd_util"
local ucl = require "ucl"
require "fun" ()

@@ -41,14 +42,10 @@ local function whitelist_cb(symbol, rule, task)
local from = task:get_from(1)
if from and from[1] and from[1]['domain'] then
local domain = from[1]['domain']
local url_domain = rspamd_url.create(task:get_mempool(), 'http://' .. domain)
domain = rspamd_util.get_tld(domain)
local found = false
local mult = 1.0

if url_domain then
domain = url_domain:get_tld()
end

if rule['map'] then
local val = rule['map']:get_key(domain)
if val then
@@ -191,4 +188,4 @@ local configure_whitelist_module = function()
end
end

configure_whitelist_module()
configure_whitelist_module()

Loading…
取消
儲存