Mercurial > prosody-modules
view mod_block_outgoing/mod_block_outgoing.lua @ 6274:63ef69b2f046
mod_http_oauth2: Assume Prosody 13.0+ roles are available
Per the README, 0.12 is not supported, so we should not need to worry
about this. Plus it is assumed to be present elsewhere and that would
throw errors.
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Wed, 02 Jul 2025 16:15:32 +0200 |
| parents | dc1299ca0185 |
| children |
line wrap: on
line source
-- Module to block all outgoing stanzas from a list of users local jid_bare = require "util.jid".bare; local is_admin = require "core.usermanager".is_admin; local set = require "util.set"; local block_users = module:get_option_set("block_outgoing_users", {}); local block_all = block_users:empty(); local stanza_types = module:get_option_set("block_outgoing_stanzas", { "message" }); local jid_types = set.new{ "host", "bare", "full" }; local function block_stanza(event) local stanza = event.stanza; local from_jid = jid_bare(stanza.attr.from); if stanza.attr.to == nil or stanza.attr.to == module.host or is_admin(from_jid, module.host) then return; end if block_all or block_users:contains(from_jid) then module:log("debug", "Blocked outgoing %s stanza from %s", stanza.name, stanza.attr.from); return true; end end function module.load() for stanza_type in stanza_types do for jid_type in jid_types do module:hook("pre-"..stanza_type.."/"..jid_type, block_stanza, 10000); end end end
