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