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.

maps_kv.lua 2.2KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. local rspamd_ip = require 'rspamd_ip'
  2. local rspamd_logger = require 'rspamd_logger'
  3. local radix_map = rspamd_config:add_map ({
  4. url = rspamd_env.RADIX_MAP,
  5. type = 'radix',
  6. })
  7. local map_map = rspamd_config:add_map ({
  8. url = rspamd_env.MAP_MAP,
  9. type = 'map',
  10. })
  11. local regexp_map = rspamd_config:add_map ({
  12. url = rspamd_env.REGEXP_MAP,
  13. type = 'regexp',
  14. })
  15. rspamd_config:register_symbol({
  16. name = 'RADIX_KV',
  17. score = 1.0,
  18. callback = function()
  19. local sip = {'8.8.8.8', '::1', '192.168.1.1', '10.0.1.1'}
  20. local expected = {'test one', 'another', '1', false}
  21. for i = 1, #sip do
  22. if (radix_map:get_key(rspamd_ip.from_string(sip[i])) ~= expected[i]) then
  23. local rip = rspamd_ip.from_string(sip[i])
  24. local val = radix_map:get_key(rip)
  25. return true, rspamd_logger.slog('plain: get_key(%s) [%s] -> %s [%s] [expected %s]', rip, type(rip), val, type(val), expected[i])
  26. end
  27. if (radix_map:get_key(sip[i]) ~= expected[i]) then
  28. local val = radix_map:get_key(sip[i])
  29. return true, rspamd_logger.slog('string: get_key(%s) [%s] -> %s [%s] [expected %s]', sip[i], type(sip[i]), val, type(val), expected[i])
  30. end
  31. end
  32. return true, 'no worry'
  33. end
  34. })
  35. rspamd_config:register_symbol({
  36. name = 'MAP_KV',
  37. score = 1.0,
  38. callback = function()
  39. local str = {'foo', 'asdf.example.com', 'asdf', 'barf'}
  40. local expected = {'bar', 'value', '', false}
  41. for i = 1, #str do
  42. if (map_map:get_key(str[i]) ~= expected[i]) then
  43. local val = map_map:get_key(str[i])
  44. return true, rspamd_logger.slog('get_key(%s) [%s] -> %s [%s] [expected %s]', str[i], type(str[i]), val, type(val), expected[i])
  45. end
  46. end
  47. return true, 'no worry'
  48. end,
  49. })
  50. rspamd_config:register_symbol({
  51. name = 'REGEXP_KV',
  52. score = 1.0,
  53. callback = function()
  54. local str = {'foo', 'asdf.example.com', 'asdf', 'barf'}
  55. local expected = {'bar', 'value', '1', false}
  56. for i = 1, #str do
  57. if (regexp_map:get_key(str[i]) ~= expected[i]) then
  58. local val = regexp_map:get_key(str[i])
  59. return true, rspamd_logger.slog('get_key(%s) [%s] -> %s [%s] [expected %s]', str[i], type(str[i]), val, type(val), expected[i])
  60. end
  61. end
  62. return true, 'no worry'
  63. end,
  64. })