You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

prepostfilters.lua 1.4KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. for i = 1,10 do
  2. local name = string.format('DEP_TEST%d', i)
  3. local dep_name = string.format('DEP_TEST%d', i - 1)
  4. rspamd_config:register_symbol({
  5. type = 'normal',
  6. name = name,
  7. callback = function(task)
  8. local function dns_cb()
  9. if i ~= 1 then
  10. if task:has_symbol(dep_name) then
  11. task:insert_result(name, 1.0)
  12. end
  13. else
  14. task:insert_result(name, 1.0)
  15. end
  16. end
  17. if task:has_symbol('TEST_PRE') then
  18. local r = task:get_resolver()
  19. r:resolve_a({task = task, name = 'example.com', callback = dns_cb})
  20. end
  21. end
  22. })
  23. if i ~= 1 then
  24. rspamd_config:register_dependency(name, dep_name)
  25. end
  26. rspamd_config:set_metric_symbol({
  27. name = name,
  28. score = 1.0
  29. })
  30. end
  31. rspamd_config:register_symbol({
  32. type = 'postfilter',
  33. name = 'TEST_POST',
  34. callback = function(task)
  35. for i = 1,10 do
  36. local name = string.format('DEP_TEST%d', i)
  37. if not task:has_symbol(name) then
  38. return
  39. end
  40. end
  41. if task:has_symbol('TEST_PRE') then
  42. task:insert_result('TEST_POST', 1.0)
  43. end
  44. end
  45. })
  46. rspamd_config:set_metric_symbol({
  47. name = 'TEST_POST',
  48. score = 1.0
  49. })
  50. rspamd_config:register_symbol({
  51. type = 'prefilter',
  52. name = 'TEST_PRE',
  53. callback = function(task)
  54. task:insert_result('TEST_PRE', 1.0)
  55. end
  56. })
  57. rspamd_config:set_metric_symbol({
  58. name = 'TEST_PRE',
  59. score = 1.0
  60. })