aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2018-12-27 09:21:25 +0000
committerVsevolod Stakhov <vsevolod@highsecure.ru>2018-12-27 09:21:25 +0000
commit7ccec2afee518dc4ee4765f2b6a5b45d525fab98 (patch)
tree5da9db0dbd0b16435156986723aa31f2f10a8395
parent1d5c1d7b7f12803e12230260cd517d980bf30ca1 (diff)
downloadrspamd-7ccec2afee518dc4ee4765f2b6a5b45d525fab98.tar.gz
rspamd-7ccec2afee518dc4ee4765f2b6a5b45d525fab98.zip
[Minor] ASN: Treat ASN record miss as a failurE
-rw-r--r--src/plugins/lua/asn.lua42
1 files changed, 28 insertions, 14 deletions
diff --git a/src/plugins/lua/asn.lua b/src/plugins/lua/asn.lua
index 2e5b8466e..ac98fefd1 100644
--- a/src/plugins/lua/asn.lua
+++ b/src/plugins/lua/asn.lua
@@ -31,8 +31,6 @@ local options = {
ip6 = 'asn6.rspamd.com',
},
symbol = 'ASN',
- expire = 86400, -- 1 day by default
- key_prefix = 'rasn',
check_local = false,
}
@@ -42,16 +40,17 @@ local function asn_check(task)
local function asn_set(asn, ipnet, country)
local descr_t = {}
+ local mempool = task:get_mempool()
if asn then
- task:get_mempool():set_variable("asn", asn)
+ mempool:set_variable("asn", asn)
table.insert(descr_t, "asn:" .. asn)
end
if ipnet then
- task:get_mempool():set_variable("ipnet", ipnet)
+ mempool:set_variable("ipnet", ipnet)
table.insert(descr_t, "ipnet:" .. ipnet)
end
if country then
- task:get_mempool():set_variable("country", country)
+ mempool:set_variable("country", country)
table.insert(descr_t, "country:" .. country)
end
if options['symbol'] then
@@ -60,27 +59,42 @@ local function asn_check(task)
end
local asn_check_func = {}
- function asn_check_func.rspamd(ip)
+ asn_check_func.rspamd = function(ip)
local dnsbl = options['provider_info']['ip' .. ip:get_version()]
- local req_name = rspamd_logger.slog("%1.%2",
+ local req_name = string.format("%s.%s",
table.concat(ip:inversed_str_octets(), '.'), dnsbl)
- local function rspamd_dns_cb(_, _, results, dns_err)
+ local function rspamd_dns_cb(_, _, results, dns_err, _, _, serv)
if dns_err and (dns_err ~= 'requested record is not found' and dns_err ~= 'no records with this name') then
- rspamd_logger.errx(task, 'error querying dns (%s): %s', req_name, dns_err)
+ rspamd_logger.errx(task, 'error querying dns "%s" on %s: %s',
+ req_name, serv, dns_err)
end
- if not (results and results[1]) then return end
+ if not (results and results[1]) then
+ rspamd_logger.infox(task, 'cannot query ip %s on %s: no results',
+ req_name, serv)
+ return
+ end
+
+ lua_util.debugm(N, task, 'got reply from %s when requesting %s: %s',
+ serv, req_name, results[1])
+
local parts = rspamd_re:split(results[1])
-- "15169 | 8.8.8.0/24 | US | arin |" for 8.8.8.8
asn_set(parts[1], parts[2], parts[3])
end
- task:get_resolver():resolve_txt({task = task,
- name = req_name,
- callback = rspamd_dns_cb})
+ task:get_resolver():resolve_txt({
+ task = task,
+ name = req_name,
+ callback = rspamd_dns_cb
+ })
end
local ip = task:get_from_ip()
- if not (ip and ip:is_valid()) or (not options.check_local and ip:is_local()) then return end
+ if not (ip and ip:is_valid()) or
+ (not options.check_local and ip:is_local()) then
+ return
+ end
+
asn_check_func[options['provider_type']](ip)
end