annotate mod_muc_rtbl/mod_muc_rtbl.lua @ 6562:5da6fb562df9 default tip

mod_unified_push: Fix push error handling (fixes #2000) Use the error object that send_iq() passes as an argument to it's reject callback instead of attempting and failing to do the parsing in the callback itself.
author kmq
date Mon, 06 Jul 2026 14:23:57 +0200
parents 093c47ee2041
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4807
62a65c52c3f5 mod_muc_rtbl: Real-time blocklist checks for MUC services
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
1 local jid = require "util.jid";
62a65c52c3f5 mod_muc_rtbl: Real-time blocklist checks for MUC services
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2 local sha256 = require "util.hashes".sha256;
62a65c52c3f5 mod_muc_rtbl: Real-time blocklist checks for MUC services
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3 local st = require "util.stanza";
62a65c52c3f5 mod_muc_rtbl: Real-time blocklist checks for MUC services
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4
6304
6e2458b69e33 mod_muc_rtbl: Use mod_rtbl, adds support for multiple list subscriptions
Matthew Wild <mwild1@gmail.com>
parents: 5890
diff changeset
5 local url = require "socket.url";
6e2458b69e33 mod_muc_rtbl: Use mod_rtbl, adds support for multiple list subscriptions
Matthew Wild <mwild1@gmail.com>
parents: 5890
diff changeset
6
6e2458b69e33 mod_muc_rtbl: Use mod_rtbl, adds support for multiple list subscriptions
Matthew Wild <mwild1@gmail.com>
parents: 5890
diff changeset
7 -- Legacy config (single list only)
6e2458b69e33 mod_muc_rtbl: Use mod_rtbl, adds support for multiple list subscriptions
Matthew Wild <mwild1@gmail.com>
parents: 5890
diff changeset
8 local rtbl_service_jid = module:get_option_string("muc_rtbl_jid");
4807
62a65c52c3f5 mod_muc_rtbl: Real-time blocklist checks for MUC services
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9 local rtbl_node = module:get_option_string("muc_rtbl_node", "muc_bans_sha256");
62a65c52c3f5 mod_muc_rtbl: Real-time blocklist checks for MUC services
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10
6304
6e2458b69e33 mod_muc_rtbl: Use mod_rtbl, adds support for multiple list subscriptions
Matthew Wild <mwild1@gmail.com>
parents: 5890
diff changeset
11 -- Multi-list config
6e2458b69e33 mod_muc_rtbl: Use mod_rtbl, adds support for multiple list subscriptions
Matthew Wild <mwild1@gmail.com>
parents: 5890
diff changeset
12 local rtbl_config = module:get_option_array("muc_rtbls", {
6e2458b69e33 mod_muc_rtbl: Use mod_rtbl, adds support for multiple list subscriptions
Matthew Wild <mwild1@gmail.com>
parents: 5890
diff changeset
13 rtbl_service_jid and rtbl_node and ("xmpp:"..rtbl_service_jid.."?;node="..rtbl_node) or nil;
4807
62a65c52c3f5 mod_muc_rtbl: Real-time blocklist checks for MUC services
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
14 });
62a65c52c3f5 mod_muc_rtbl: Real-time blocklist checks for MUC services
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
15
6304
6e2458b69e33 mod_muc_rtbl: Use mod_rtbl, adds support for multiple list subscriptions
Matthew Wild <mwild1@gmail.com>
parents: 5890
diff changeset
16 if #rtbl_config == 0 then
6e2458b69e33 mod_muc_rtbl: Use mod_rtbl, adds support for multiple list subscriptions
Matthew Wild <mwild1@gmail.com>
parents: 5890
diff changeset
17 return error("No RTBLs configured");
4808
8a63a0daf129 mod_muc_rtbl: Sync existing list entries when first loaded
Matthew Wild <mwild1@gmail.com>
parents: 4807
diff changeset
18 end
8a63a0daf129 mod_muc_rtbl: Sync existing list entries when first loaded
Matthew Wild <mwild1@gmail.com>
parents: 4807
diff changeset
19
6304
6e2458b69e33 mod_muc_rtbl: Use mod_rtbl, adds support for multiple list subscriptions
Matthew Wild <mwild1@gmail.com>
parents: 5890
diff changeset
20 local mod_rtbl = module:depends("rtbl");
6e2458b69e33 mod_muc_rtbl: Use mod_rtbl, adds support for multiple list subscriptions
Matthew Wild <mwild1@gmail.com>
parents: 5890
diff changeset
21
6e2458b69e33 mod_muc_rtbl: Use mod_rtbl, adds support for multiple list subscriptions
Matthew Wild <mwild1@gmail.com>
parents: 5890
diff changeset
22 local lists = {};
6e2458b69e33 mod_muc_rtbl: Use mod_rtbl, adds support for multiple list subscriptions
Matthew Wild <mwild1@gmail.com>
parents: 5890
diff changeset
23
6e2458b69e33 mod_muc_rtbl: Use mod_rtbl, adds support for multiple list subscriptions
Matthew Wild <mwild1@gmail.com>
parents: 5890
diff changeset
24 local function parse_xmpp_uri(uri)
6e2458b69e33 mod_muc_rtbl: Use mod_rtbl, adds support for multiple list subscriptions
Matthew Wild <mwild1@gmail.com>
parents: 5890
diff changeset
25 local parsed = url.parse(uri);
6306
093c47ee2041 mod_muc_rtbl: Simplify configuration and tweak docs
Matthew Wild <mwild1@gmail.com>
parents: 6304
diff changeset
26 if parsed.scheme and parsed.scheme ~= "xmpp" then
6304
6e2458b69e33 mod_muc_rtbl: Use mod_rtbl, adds support for multiple list subscriptions
Matthew Wild <mwild1@gmail.com>
parents: 5890
diff changeset
27 return nil, "unexpected-scheme";
4808
8a63a0daf129 mod_muc_rtbl: Sync existing list entries when first loaded
Matthew Wild <mwild1@gmail.com>
parents: 4807
diff changeset
28 end
8a63a0daf129 mod_muc_rtbl: Sync existing list entries when first loaded
Matthew Wild <mwild1@gmail.com>
parents: 4807
diff changeset
29
6304
6e2458b69e33 mod_muc_rtbl: Use mod_rtbl, adds support for multiple list subscriptions
Matthew Wild <mwild1@gmail.com>
parents: 5890
diff changeset
30 local parsed_query = {};
6e2458b69e33 mod_muc_rtbl: Use mod_rtbl, adds support for multiple list subscriptions
Matthew Wild <mwild1@gmail.com>
parents: 5890
diff changeset
31 for kv in (parsed.query or ""):gmatch("[^?;]+") do
6e2458b69e33 mod_muc_rtbl: Use mod_rtbl, adds support for multiple list subscriptions
Matthew Wild <mwild1@gmail.com>
parents: 5890
diff changeset
32 local k, v = kv:match("^([^=]+)=?(.*)$");
6e2458b69e33 mod_muc_rtbl: Use mod_rtbl, adds support for multiple list subscriptions
Matthew Wild <mwild1@gmail.com>
parents: 5890
diff changeset
33 parsed_query[k] = v;
4808
8a63a0daf129 mod_muc_rtbl: Sync existing list entries when first loaded
Matthew Wild <mwild1@gmail.com>
parents: 4807
diff changeset
34 end
8a63a0daf129 mod_muc_rtbl: Sync existing list entries when first loaded
Matthew Wild <mwild1@gmail.com>
parents: 4807
diff changeset
35
6304
6e2458b69e33 mod_muc_rtbl: Use mod_rtbl, adds support for multiple list subscriptions
Matthew Wild <mwild1@gmail.com>
parents: 5890
diff changeset
36 return {
6e2458b69e33 mod_muc_rtbl: Use mod_rtbl, adds support for multiple list subscriptions
Matthew Wild <mwild1@gmail.com>
parents: 5890
diff changeset
37 jid = jid.prep(parsed.path);
6e2458b69e33 mod_muc_rtbl: Use mod_rtbl, adds support for multiple list subscriptions
Matthew Wild <mwild1@gmail.com>
parents: 5890
diff changeset
38 params = parsed_query;
6e2458b69e33 mod_muc_rtbl: Use mod_rtbl, adds support for multiple list subscriptions
Matthew Wild <mwild1@gmail.com>
parents: 5890
diff changeset
39 };
4808
8a63a0daf129 mod_muc_rtbl: Sync existing list entries when first loaded
Matthew Wild <mwild1@gmail.com>
parents: 4807
diff changeset
40 end
8a63a0daf129 mod_muc_rtbl: Sync existing list entries when first loaded
Matthew Wild <mwild1@gmail.com>
parents: 4807
diff changeset
41
6304
6e2458b69e33 mod_muc_rtbl: Use mod_rtbl, adds support for multiple list subscriptions
Matthew Wild <mwild1@gmail.com>
parents: 5890
diff changeset
42 for _, rtbl_uri in ipairs(rtbl_config) do
6e2458b69e33 mod_muc_rtbl: Use mod_rtbl, adds support for multiple list subscriptions
Matthew Wild <mwild1@gmail.com>
parents: 5890
diff changeset
43 local uri = parse_xmpp_uri(rtbl_uri);
6e2458b69e33 mod_muc_rtbl: Use mod_rtbl, adds support for multiple list subscriptions
Matthew Wild <mwild1@gmail.com>
parents: 5890
diff changeset
44 module:log("debug", "Subscribing to %q node %q", uri.jid, uri.params.node);
6306
093c47ee2041 mod_muc_rtbl: Simplify configuration and tweak docs
Matthew Wild <mwild1@gmail.com>
parents: 6304
diff changeset
45 local rtbl = mod_rtbl.new_rtbl_subscription(uri.jid, uri.params.node or "muc_bans_sha256", {});
6304
6e2458b69e33 mod_muc_rtbl: Use mod_rtbl, adds support for multiple list subscriptions
Matthew Wild <mwild1@gmail.com>
parents: 5890
diff changeset
46 table.insert(lists, rtbl);
6e2458b69e33 mod_muc_rtbl: Use mod_rtbl, adds support for multiple list subscriptions
Matthew Wild <mwild1@gmail.com>
parents: 5890
diff changeset
47 end
4808
8a63a0daf129 mod_muc_rtbl: Sync existing list entries when first loaded
Matthew Wild <mwild1@gmail.com>
parents: 4807
diff changeset
48
6304
6e2458b69e33 mod_muc_rtbl: Use mod_rtbl, adds support for multiple list subscriptions
Matthew Wild <mwild1@gmail.com>
parents: 5890
diff changeset
49 local function update_occupant_hashes(occupant)
5174
354832098f2f mod_muc_rtbl: move use of "private" attributes to single function
Jonas Schäfer <jonas@wielicki.name>
parents: 5173
diff changeset
50 local bare_hash, host_hash;
5173
460f78654864 mod_muc_rtbl: also filter messages
Jonas Schäfer <jonas@wielicki.name>
parents: 4813
diff changeset
51 if not occupant.mod_muc_rtbl_bare_hash then
5175
432587ad1642 mod_muc_rtbl: fix traceback because of scoping error
Jonas Schäfer <jonas@wielicki.name>
parents: 5174
diff changeset
52 bare_hash = sha256(jid.bare(occupant.bare_jid), true);
5173
460f78654864 mod_muc_rtbl: also filter messages
Jonas Schäfer <jonas@wielicki.name>
parents: 4813
diff changeset
53 occupant.mod_muc_rtbl_bare_hash = bare_hash;
5174
354832098f2f mod_muc_rtbl: move use of "private" attributes to single function
Jonas Schäfer <jonas@wielicki.name>
parents: 5173
diff changeset
54 else
354832098f2f mod_muc_rtbl: move use of "private" attributes to single function
Jonas Schäfer <jonas@wielicki.name>
parents: 5173
diff changeset
55 bare_hash = occupant.mod_muc_rtbl_bare_hash;
5173
460f78654864 mod_muc_rtbl: also filter messages
Jonas Schäfer <jonas@wielicki.name>
parents: 4813
diff changeset
56 end
460f78654864 mod_muc_rtbl: also filter messages
Jonas Schäfer <jonas@wielicki.name>
parents: 4813
diff changeset
57 if not occupant.mod_muc_rtbl_host_hash then
5175
432587ad1642 mod_muc_rtbl: fix traceback because of scoping error
Jonas Schäfer <jonas@wielicki.name>
parents: 5174
diff changeset
58 host_hash = sha256(jid.host(occupant.bare_jid), true);
5177
f6b5f04d4b28 mod_muc_rtbl: fix more incorrect more references to "event"
Jonas Schäfer <jonas@wielicki.name>
parents: 5176
diff changeset
59 occupant.mod_muc_rtbl_host_hash = host_hash;
5174
354832098f2f mod_muc_rtbl: move use of "private" attributes to single function
Jonas Schäfer <jonas@wielicki.name>
parents: 5173
diff changeset
60 else
5177
f6b5f04d4b28 mod_muc_rtbl: fix more incorrect more references to "event"
Jonas Schäfer <jonas@wielicki.name>
parents: 5176
diff changeset
61 host_hash = occupant.mod_muc_rtbl_host_hash;
5173
460f78654864 mod_muc_rtbl: also filter messages
Jonas Schäfer <jonas@wielicki.name>
parents: 4813
diff changeset
62 end
6304
6e2458b69e33 mod_muc_rtbl: Use mod_rtbl, adds support for multiple list subscriptions
Matthew Wild <mwild1@gmail.com>
parents: 5890
diff changeset
63 return bare_hash, host_hash;
6e2458b69e33 mod_muc_rtbl: Use mod_rtbl, adds support for multiple list subscriptions
Matthew Wild <mwild1@gmail.com>
parents: 5890
diff changeset
64 end
6e2458b69e33 mod_muc_rtbl: Use mod_rtbl, adds support for multiple list subscriptions
Matthew Wild <mwild1@gmail.com>
parents: 5890
diff changeset
65
6e2458b69e33 mod_muc_rtbl: Use mod_rtbl, adds support for multiple list subscriptions
Matthew Wild <mwild1@gmail.com>
parents: 5890
diff changeset
66 local function is_banned_occupant(occupant)
6e2458b69e33 mod_muc_rtbl: Use mod_rtbl, adds support for multiple list subscriptions
Matthew Wild <mwild1@gmail.com>
parents: 5890
diff changeset
67 local bare_hash, host_hash = update_occupant_hashes(occupant);
6e2458b69e33 mod_muc_rtbl: Use mod_rtbl, adds support for multiple list subscriptions
Matthew Wild <mwild1@gmail.com>
parents: 5890
diff changeset
68 for _, list in ipairs(lists) do
6e2458b69e33 mod_muc_rtbl: Use mod_rtbl, adds support for multiple list subscriptions
Matthew Wild <mwild1@gmail.com>
parents: 5890
diff changeset
69 local items = list.items;
6e2458b69e33 mod_muc_rtbl: Use mod_rtbl, adds support for multiple list subscriptions
Matthew Wild <mwild1@gmail.com>
parents: 5890
diff changeset
70 if items[bare_hash] or items[host_hash] then
6e2458b69e33 mod_muc_rtbl: Use mod_rtbl, adds support for multiple list subscriptions
Matthew Wild <mwild1@gmail.com>
parents: 5890
diff changeset
71 return true;
6e2458b69e33 mod_muc_rtbl: Use mod_rtbl, adds support for multiple list subscriptions
Matthew Wild <mwild1@gmail.com>
parents: 5890
diff changeset
72 end
6e2458b69e33 mod_muc_rtbl: Use mod_rtbl, adds support for multiple list subscriptions
Matthew Wild <mwild1@gmail.com>
parents: 5890
diff changeset
73 end
5173
460f78654864 mod_muc_rtbl: also filter messages
Jonas Schäfer <jonas@wielicki.name>
parents: 4813
diff changeset
74 end
460f78654864 mod_muc_rtbl: also filter messages
Jonas Schäfer <jonas@wielicki.name>
parents: 4813
diff changeset
75
4807
62a65c52c3f5 mod_muc_rtbl: Real-time blocklist checks for MUC services
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
76 module:hook("muc-occupant-pre-join", function (event)
62a65c52c3f5 mod_muc_rtbl: Real-time blocklist checks for MUC services
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
77 local from_bare = jid.bare(event.stanza.attr.from);
4810
181738ae4117 mod_muc_rtbl: Skip check if user has any explicit affiliation with the MUC
Matthew Wild <mwild1@gmail.com>
parents: 4809
diff changeset
78
181738ae4117 mod_muc_rtbl: Skip check if user has any explicit affiliation with the MUC
Matthew Wild <mwild1@gmail.com>
parents: 4809
diff changeset
79 local affiliation = event.room:get_affiliation(from_bare);
4811
a1fe59c06c48 mod_muc_rtbl: Fix typo in variable name in previous commit (thanks luacheck)
Matthew Wild <mwild1@gmail.com>
parents: 4810
diff changeset
80 if affiliation and affiliation ~= "none" then
4810
181738ae4117 mod_muc_rtbl: Skip check if user has any explicit affiliation with the MUC
Matthew Wild <mwild1@gmail.com>
parents: 4809
diff changeset
81 -- Skip check for affiliated users
181738ae4117 mod_muc_rtbl: Skip check if user has any explicit affiliation with the MUC
Matthew Wild <mwild1@gmail.com>
parents: 4809
diff changeset
82 return;
181738ae4117 mod_muc_rtbl: Skip check if user has any explicit affiliation with the MUC
Matthew Wild <mwild1@gmail.com>
parents: 4809
diff changeset
83 end
181738ae4117 mod_muc_rtbl: Skip check if user has any explicit affiliation with the MUC
Matthew Wild <mwild1@gmail.com>
parents: 4809
diff changeset
84
6304
6e2458b69e33 mod_muc_rtbl: Use mod_rtbl, adds support for multiple list subscriptions
Matthew Wild <mwild1@gmail.com>
parents: 5890
diff changeset
85 if is_banned_occupant(event.occupant) then
4807
62a65c52c3f5 mod_muc_rtbl: Real-time blocklist checks for MUC services
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
86 module:log("info", "Blocked user <%s> from room <%s> due to RTBL match", from_bare, event.stanza.attr.to);
62a65c52c3f5 mod_muc_rtbl: Real-time blocklist checks for MUC services
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
87 local error_reply = st.error_reply(event.stanza, "cancel", "forbidden", "You are banned from this service", event.room.jid);
62a65c52c3f5 mod_muc_rtbl: Real-time blocklist checks for MUC services
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
88 event.origin.send(error_reply);
62a65c52c3f5 mod_muc_rtbl: Real-time blocklist checks for MUC services
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
89 return true;
62a65c52c3f5 mod_muc_rtbl: Real-time blocklist checks for MUC services
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
90 end
62a65c52c3f5 mod_muc_rtbl: Real-time blocklist checks for MUC services
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
91 end);
4808
8a63a0daf129 mod_muc_rtbl: Sync existing list entries when first loaded
Matthew Wild <mwild1@gmail.com>
parents: 4807
diff changeset
92
5173
460f78654864 mod_muc_rtbl: also filter messages
Jonas Schäfer <jonas@wielicki.name>
parents: 4813
diff changeset
93 module:hook("muc-occupant-groupchat", function(event)
6304
6e2458b69e33 mod_muc_rtbl: Use mod_rtbl, adds support for multiple list subscriptions
Matthew Wild <mwild1@gmail.com>
parents: 5890
diff changeset
94 local occupant = event.occupant;
6e2458b69e33 mod_muc_rtbl: Use mod_rtbl, adds support for multiple list subscriptions
Matthew Wild <mwild1@gmail.com>
parents: 5890
diff changeset
95 local affiliation = event.room:get_affiliation(occupant.bare_jid);
5176
4791e0412ff3 mod_muc_rtbl: ignore blocklist for affiliated users for messages
Jonas Schäfer <jonas@wielicki.name>
parents: 5175
diff changeset
96 if affiliation and affiliation ~= "none" then
4791e0412ff3 mod_muc_rtbl: ignore blocklist for affiliated users for messages
Jonas Schäfer <jonas@wielicki.name>
parents: 5175
diff changeset
97 -- Skip check for affiliated users
4791e0412ff3 mod_muc_rtbl: ignore blocklist for affiliated users for messages
Jonas Schäfer <jonas@wielicki.name>
parents: 5175
diff changeset
98 return;
4791e0412ff3 mod_muc_rtbl: ignore blocklist for affiliated users for messages
Jonas Schäfer <jonas@wielicki.name>
parents: 5175
diff changeset
99 end
4791e0412ff3 mod_muc_rtbl: ignore blocklist for affiliated users for messages
Jonas Schäfer <jonas@wielicki.name>
parents: 5175
diff changeset
100
6304
6e2458b69e33 mod_muc_rtbl: Use mod_rtbl, adds support for multiple list subscriptions
Matthew Wild <mwild1@gmail.com>
parents: 5890
diff changeset
101 if is_banned_occupant(occupant) then
5173
460f78654864 mod_muc_rtbl: also filter messages
Jonas Schäfer <jonas@wielicki.name>
parents: 4813
diff changeset
102 module:log("debug", "Blocked message from user <%s> to room <%s> due to RTBL match", event.stanza.attr.from, event.stanza.attr.to);
460f78654864 mod_muc_rtbl: also filter messages
Jonas Schäfer <jonas@wielicki.name>
parents: 4813
diff changeset
103 local error_reply = st.error_reply(event.stanza, "cancel", "forbidden", "You are banned from this service", event.room.jid);
460f78654864 mod_muc_rtbl: also filter messages
Jonas Schäfer <jonas@wielicki.name>
parents: 4813
diff changeset
104 event.origin.send(error_reply);
460f78654864 mod_muc_rtbl: also filter messages
Jonas Schäfer <jonas@wielicki.name>
parents: 4813
diff changeset
105 return true;
460f78654864 mod_muc_rtbl: also filter messages
Jonas Schäfer <jonas@wielicki.name>
parents: 4813
diff changeset
106 end
460f78654864 mod_muc_rtbl: also filter messages
Jonas Schäfer <jonas@wielicki.name>
parents: 4813
diff changeset
107 end);
460f78654864 mod_muc_rtbl: also filter messages
Jonas Schäfer <jonas@wielicki.name>
parents: 4813
diff changeset
108
460f78654864 mod_muc_rtbl: also filter messages
Jonas Schäfer <jonas@wielicki.name>
parents: 4813
diff changeset
109 module:hook("muc-private-message", function(event)
460f78654864 mod_muc_rtbl: also filter messages
Jonas Schäfer <jonas@wielicki.name>
parents: 4813
diff changeset
110 local occupant = event.room:get_occupant_by_nick(event.stanza.attr.from);
5352
f6577cdb1d91 mod_muc_rtbl: Use correct occupant object
Matthew Wild <mwild1@gmail.com>
parents: 5274
diff changeset
111 local affiliation = event.room:get_affiliation(occupant.bare_jid);
5176
4791e0412ff3 mod_muc_rtbl: ignore blocklist for affiliated users for messages
Jonas Schäfer <jonas@wielicki.name>
parents: 5175
diff changeset
112 if affiliation and affiliation ~= "none" then
4791e0412ff3 mod_muc_rtbl: ignore blocklist for affiliated users for messages
Jonas Schäfer <jonas@wielicki.name>
parents: 5175
diff changeset
113 -- Skip check for affiliated users
4791e0412ff3 mod_muc_rtbl: ignore blocklist for affiliated users for messages
Jonas Schäfer <jonas@wielicki.name>
parents: 5175
diff changeset
114 return;
4791e0412ff3 mod_muc_rtbl: ignore blocklist for affiliated users for messages
Jonas Schäfer <jonas@wielicki.name>
parents: 5175
diff changeset
115 end
4791e0412ff3 mod_muc_rtbl: ignore blocklist for affiliated users for messages
Jonas Schäfer <jonas@wielicki.name>
parents: 5175
diff changeset
116
6304
6e2458b69e33 mod_muc_rtbl: Use mod_rtbl, adds support for multiple list subscriptions
Matthew Wild <mwild1@gmail.com>
parents: 5890
diff changeset
117 if is_banned_occupant(occupant) then
5173
460f78654864 mod_muc_rtbl: also filter messages
Jonas Schäfer <jonas@wielicki.name>
parents: 4813
diff changeset
118 module:log("debug", "Blocked private message from user <%s> from room <%s> due to RTBL match", occupant.bare_jid, event.stanza.attr.to);
460f78654864 mod_muc_rtbl: also filter messages
Jonas Schäfer <jonas@wielicki.name>
parents: 4813
diff changeset
119 local error_reply = st.error_reply(event.stanza, "cancel", "forbidden", "You are banned from this service", event.room.jid);
460f78654864 mod_muc_rtbl: also filter messages
Jonas Schäfer <jonas@wielicki.name>
parents: 4813
diff changeset
120 event.origin.send(error_reply);
5890
ba71fdc8ea73 mod_muc_rtbl: Fix blocking of PMs from RTBL matches
Matthew Wild <mwild1@gmail.com>
parents: 5352
diff changeset
121 return false; -- Don't route it
5173
460f78654864 mod_muc_rtbl: also filter messages
Jonas Schäfer <jonas@wielicki.name>
parents: 4813
diff changeset
122 end
460f78654864 mod_muc_rtbl: also filter messages
Jonas Schäfer <jonas@wielicki.name>
parents: 4813
diff changeset
123 end);
460f78654864 mod_muc_rtbl: also filter messages
Jonas Schäfer <jonas@wielicki.name>
parents: 4813
diff changeset
124
6304
6e2458b69e33 mod_muc_rtbl: Use mod_rtbl, adds support for multiple list subscriptions
Matthew Wild <mwild1@gmail.com>
parents: 5890
diff changeset
125 module.environment.lists = lists