Ver código fonte

[Fix] Fix a failure calcuating URL reputation.

`url_reputation_filter` was attempting to lookup the token key returned
in the `get_token` callback in an integer-indexed table of requests.
Change to looking up the request by its index.

Commit 73d2cee changed from using `gen_url_queries` to
`lua_util.extract_specific_urls` in the assignment of `requests`.
The latter just returns a list of URLs. The former returns the TLD along
with the number of hits. The URL score calculation uses the number of
hits. Revert to using `gen_url_queries`.
tags/2.1
Phil Ross 4 anos atrás
pai
commit
3731797bf8
1 arquivos alterados com 9 adições e 5 exclusões
  1. 9
    5
      src/plugins/lua/reputation.lua

+ 9
- 5
src/plugins/lua/reputation.lua Ver arquivo

@@ -284,15 +284,15 @@ local function gen_url_queries(task, rule)
end

local function url_reputation_filter(task, rule)
local requests = lua_util.extract_specific_urls(task, rule.selector.config.max_urls)
local requests = gen_url_queries(task, rule)
local results = {}
local nchecked = 0

local function tokens_cb(err, token, values)
local function indexed_tokens_cb(err, index, values)
nchecked = nchecked + 1

if values then
results[token] = values
results[index] = values
end

if nchecked == #requests then
@@ -319,8 +319,12 @@ local function url_reputation_filter(task, rule)
end
end

for _,u in ipairs(requests) do
rule.backend.get_token(task, rule, u:get_tld(), tokens_cb)
for i,req in ipairs(requests) do
local function tokens_cb(err, token, values)
indexed_tokens_cb(err, i, values)
end

rule.backend.get_token(task, rule, req[1], tokens_cb)
end
end


Carregando…
Cancelar
Salvar