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