rspamd_config:register_symbol({ name = 'TEST_TLD', score = 1.0, callback = function() local prefixes = { '', 'example.' } local test_domains = { 'example.ac', 'example.b.br', 'example.co', 'example.com', 'example.co.za', 'example.in.net', 'example.star.kawasaki.jp', 'example.net', 'example.net.in', 'example.star.nom.br', 'example.org', 'example.org.ac', 'example.ru.com', 'example.za.net', 'example.za.org', 'org.org.za', } local worry = {} local rspamd_mempool = require 'rspamd_mempool' local rspamd_url = require 'rspamd_url' local rspamd_util = require 'rspamd_util' local pool = rspamd_mempool.create() for _, d in ipairs(test_domains) do (function() for _, p in ipairs(prefixes) do local test = rspamd_util.get_tld(p .. d) if (test ~= d) then local opt = string.format('util.get_tld:p=%s;d=%s;got=%s', p, d, test) table.insert(worry, opt) return end local u = rspamd_url.create(pool, p .. d) assert(u, "cannot parse string: " .. p .. d) test = u:get_tld() if (test ~= d) then local opt = string.format('url.create:p=%s;d=%s;got=%s', p, d, test) table.insert(worry, opt) return end end end)() end if (#worry == 0) then return true, 1.0, "no worry" else return true, 1.0, worry end end })