1
0
Fork 0
mirror of https://github.com/processone/ejabberd synced 2025-10-05 19:42:11 +02:00

mod_antispam: test whitelisted domain

This commit is contained in:
Stefan Strigler 2025-06-09 16:55:31 +02:00
parent 7a6e409879
commit 10ec128b94
5 changed files with 46 additions and 1 deletions

View file

@ -58,7 +58,8 @@ single_cases() ->
single_test(block_domain_in_vhost),
single_test(unblock_domain_in_vhost2),
single_test(jid_cache),
single_test(rtbl_domains)]}.
single_test(rtbl_domains),
single_test(rtbl_domains_whitelisted)]}.
%%%===================================================================
@ -200,6 +201,46 @@ rtbl_domains(Config) ->
{result, _} = mod_pubsub:delete_node(RTBLHost, RTBLDomainsNode, Owner),
disconnect(Config).
rtbl_domains_whitelisted(Config) ->
Host = ?config(server, Config),
RTBLHost =
jid:to_string(
suite:pubsub_jid(Config)),
RTBLDomainsNode = <<"spam_source_domains">>,
OldOpts = gen_mod:get_module_opts(Host, mod_antispam),
NewOpts =
maps:merge(OldOpts, #{rtbl_host => RTBLHost, rtbl_domains_node => RTBLDomainsNode}),
Owner = jid:make(?config(user, Config), ?config(server, Config), <<>>),
{result, _} =
mod_pubsub:create_node(RTBLHost,
?config(server, Config),
RTBLDomainsNode,
Owner,
<<"flat">>),
{result, _} =
mod_pubsub:publish_item(RTBLHost,
?config(server, Config),
RTBLDomainsNode,
Owner,
<<"whitelisted.domain">>,
[xmpp:encode(#ps_item{id = <<"whitelisted.domain">>,
sub_els = []})]),
mod_antispam:reload(Host, OldOpts, NewOpts),
{result, _} =
mod_pubsub:publish_item(RTBLHost,
?config(server, Config),
RTBLDomainsNode,
Owner,
<<"yetanother.domain">>,
[xmpp:encode(#ps_item{id = <<"yetanother.domain">>,
sub_els = []})]),
?retry(100, 10, ?match(true, (has_spam_domain(<<"yetanother.domain">>))(Host))),
%% we assume that the previous "whitelisted.domain" pubsub item has been consumed by now, so we
%% can check that it doesn't exist
?match(false, (has_spam_domain(<<"whitelisted.domain">>))(Host)),
{result, _} = mod_pubsub:delete_node(RTBLHost, RTBLDomainsNode, Owner),
disconnect(Config).
%%%===================================================================
%%% Internal functions
%%%===================================================================

View file

@ -11,6 +11,7 @@ define_macro:
spam_jids_file: spam_jids.txt
spam_domains_file: spam_domains.txt
spam_urls_file: spam_urls.txt
whitelist_domains_file: whitelist_domains.txt
mod_blocking: []
mod_caps:
db_type: internal

View file

@ -12,6 +12,7 @@ define_macro:
spam_jids_file: spam_jids.txt
spam_domains_file: spam_domains.txt
spam_urls_file: spam_urls.txt
whitelist_domains_file: whitelist_domains.txt
mod_blocking: []
mod_caps:
db_type: internal

View file

@ -0,0 +1 @@
whitelisted.domain

View file

@ -54,6 +54,7 @@ init_config(Config) ->
copy_file(Config, "spam_jids.txt"),
copy_file(Config, "spam_urls.txt"),
copy_file(Config, "spam_domains.txt"),
copy_file(Config, "whitelist_domains.txt"),
{ok, MacrosContentTpl} = file:read_file(MacrosPathTpl),
Password = <<"password!@#$%^&*()'\"`~<>+-/;:_=[]{}|\\">>,
Backends = get_config_backends(),