File: prepostfilters.lua

package info (click to toggle)
rspamd 3.13.2-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 34,056 kB
  • sloc: ansic: 243,746; cpp: 105,657; javascript: 29,539; asm: 2,512; perl: 2,440; pascal: 1,625; python: 1,274; sql: 313; sh: 281; makefile: 140; xml: 74
file content (65 lines) | stat: -rw-r--r-- 1,430 bytes parent folder | download | duplicates (4)
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
54
55
56
57
58
59
60
61
62
63
64
65
for i = 1,10 do
  local name = string.format('DEP_TEST%d', i)
  local dep_name = string.format('DEP_TEST%d', i - 1)
  rspamd_config:register_symbol({
    type = 'normal',
    name = name,
    callback = function(task)
      local function dns_cb()
        if i ~= 1 then
          if task:has_symbol(dep_name) then
            task:insert_result(name, 1.0)
          end
        else
          task:insert_result(name, 1.0)
        end
      end
      if task:has_symbol('TEST_PRE') then
        local r = task:get_resolver()
        r:resolve_a({task = task, name = 'example.com', callback = dns_cb})
      end
    end
  })

  if i ~= 1 then
    rspamd_config:register_dependency(name, dep_name)
  end

  rspamd_config:set_metric_symbol({
    name = name,
    score = 1.0
  })
end


rspamd_config:register_symbol({
  type = 'postfilter',
  name = 'TEST_POST',
  callback = function(task)
    for i = 1,10 do
      local name = string.format('DEP_TEST%d', i)
      if not task:has_symbol(name) then
        return
      end
    end
    if task:has_symbol('TEST_PRE') then
      task:insert_result('TEST_POST', 1.0)
    end
  end
})
rspamd_config:set_metric_symbol({
  name = 'TEST_POST',
  score = 1.0
})

rspamd_config:register_symbol({
  type = 'prefilter',
  name = 'TEST_PRE',
  callback = function(task)
    task:insert_result('TEST_PRE', 1.0)
  end
})
rspamd_config:set_metric_symbol({
  name = 'TEST_PRE',
  score = 1.0
})