|
|
|
@ -99,8 +99,13 @@ local function p0f_check(task, ip, rule) |
|
|
|
task:get_mempool():set_variable('os_fingerprint', os_string, link_type, |
|
|
|
uptime_min, distance) |
|
|
|
|
|
|
|
common.yield_result(task, rule, { |
|
|
|
os_string, link_type, 'distance:' .. distance }, 0.0) |
|
|
|
if link_type and #link_type > 0 then |
|
|
|
common.yield_result(task, rule, string.format('%s, link=%s, distance: %s', |
|
|
|
os_string, link_type, distance), 0.0) |
|
|
|
else |
|
|
|
common.yield_result(task, rule, string.format('%s, distance: %s', |
|
|
|
os_string, distance), 0.0) |
|
|
|
end |
|
|
|
|
|
|
|
return data |
|
|
|
end |
|
|
|
@ -115,17 +120,22 @@ local function p0f_check(task, ip, rule) |
|
|
|
end |
|
|
|
end |
|
|
|
|
|
|
|
if err then |
|
|
|
rspamd_logger.errx(task, 'p0f received an error: %s', err) |
|
|
|
return |
|
|
|
end |
|
|
|
|
|
|
|
data = parse_p0f_response(data) |
|
|
|
|
|
|
|
if rule.redis_params and data then |
|
|
|
local key = rule.prefix .. ip:to_string() |
|
|
|
local ret = lua_redis.redis_make_request(task, |
|
|
|
rule.redis_params, |
|
|
|
key, |
|
|
|
true, |
|
|
|
redis_set_cb, |
|
|
|
'SETEX', |
|
|
|
{ key, tostring(rule.expire), data } |
|
|
|
rule.redis_params, |
|
|
|
key, |
|
|
|
true, |
|
|
|
redis_set_cb, |
|
|
|
'SETEX', |
|
|
|
{ key, tostring(rule.expire), data } |
|
|
|
) |
|
|
|
|
|
|
|
if not ret then |
|
|
|
|