1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
local rspamd_dns = require "rspamd_dns"
local logger = require "rspamd_logger"
local function dns_sync_symbol(task)
local to_resolve = tostring(task:get_request_header('to-resolve'))
local is_ok, results = rspamd_dns.request({
task = task,
type = 'a',
name = to_resolve ,
})
logger.errx(task, "is_ok=%1, results=%2, results[1]=%3", is_ok, results, results[1])
if not is_ok then
task:insert_result('DNS_SYNC_ERROR', 1.0, results)
else
task:insert_result('DNS_SYNC', 1.0, tostring(results[1]))
end
end
rspamd_config:register_symbol({
name = 'SIMPLE_DNS_SYNC',
score = 1.0,
callback = dns_sync_symbol,
no_squeeze = true,
flags = 'coro',
})
-- Async request
local function dns_symbol(task)
local function dns_cb(_, to_resolve, results, err)
logger.errx(task, "_=%1, to_resolve=%2, results=%3, err%4", _, to_resolve, results, err)
if err then
task:insert_result('DNS_ERROR', 1.0, err)
else
task:insert_result('DNS', 1.0, tostring(results[1]))
end
end
local to_resolve = tostring(task:get_request_header('to-resolve'))
task:get_resolver():resolve_a({
task = task,
name = to_resolve,
callback = dns_cb
})
end
rspamd_config:register_symbol({
name = 'SIMPLE_DNS',
score = 1.0,
callback = dns_symbol,
})
|