diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2018-12-27 09:21:25 +0000 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2018-12-27 09:21:25 +0000 |
commit | 7ccec2afee518dc4ee4765f2b6a5b45d525fab98 (patch) | |
tree | 5da9db0dbd0b16435156986723aa31f2f10a8395 | |
parent | 1d5c1d7b7f12803e12230260cd517d980bf30ca1 (diff) | |
download | rspamd-7ccec2afee518dc4ee4765f2b6a5b45d525fab98.tar.gz rspamd-7ccec2afee518dc4ee4765f2b6a5b45d525fab98.zip |
[Minor] ASN: Treat ASN record miss as a failurE
-rw-r--r-- | src/plugins/lua/asn.lua | 42 |
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 |