Mercurial > prosody-modules
annotate mod_block_outgoing/mod_block_outgoing.lua @ 5119:048e339706ba
mod_rest: Remove manual reference expansion in schema
This hack was originally added to reduce the number of definitions of
common attributes (type, to, from etc) and payloads (e.g. delay). This
predated pointers and references, and until now was needed because
parsing picked out the correct stanza kind from the schema, which broke
internal references.
Removing this hack paves the way for allowing the schema to be
configured or customized more easily.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Tue, 20 Dec 2022 21:48:28 +0100 |
parents | dc1299ca0185 |
children |
rev | line source |
---|---|
2004
41fd55eba4a8
mod_block_outgoing: Module to block outgoing stanzas from users
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
1 -- Module to block all outgoing stanzas from a list of users |
41fd55eba4a8
mod_block_outgoing: Module to block outgoing stanzas from users
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
2 |
41fd55eba4a8
mod_block_outgoing: Module to block outgoing stanzas from users
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
3 local jid_bare = require "util.jid".bare; |
2005
c769ed3e5b2b
mod_block_outgoing: Make admins exempt from restrictions
Matthew Wild <mwild1@gmail.com>
parents:
2004
diff
changeset
|
4 local is_admin = require "core.usermanager".is_admin; |
2007
dc1299ca0185
mod_block_outgoing: Make blocked stanza types configurable, and default to blocking messages only
Matthew Wild <mwild1@gmail.com>
parents:
2006
diff
changeset
|
5 local set = require "util.set"; |
2004
41fd55eba4a8
mod_block_outgoing: Module to block outgoing stanzas from users
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
6 |
41fd55eba4a8
mod_block_outgoing: Module to block outgoing stanzas from users
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
7 local block_users = module:get_option_set("block_outgoing_users", {}); |
41fd55eba4a8
mod_block_outgoing: Module to block outgoing stanzas from users
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
8 local block_all = block_users:empty(); |
41fd55eba4a8
mod_block_outgoing: Module to block outgoing stanzas from users
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
9 |
2007
dc1299ca0185
mod_block_outgoing: Make blocked stanza types configurable, and default to blocking messages only
Matthew Wild <mwild1@gmail.com>
parents:
2006
diff
changeset
|
10 local stanza_types = module:get_option_set("block_outgoing_stanzas", { "message" }); |
dc1299ca0185
mod_block_outgoing: Make blocked stanza types configurable, and default to blocking messages only
Matthew Wild <mwild1@gmail.com>
parents:
2006
diff
changeset
|
11 local jid_types = set.new{ "host", "bare", "full" }; |
2004
41fd55eba4a8
mod_block_outgoing: Module to block outgoing stanzas from users
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
12 |
41fd55eba4a8
mod_block_outgoing: Module to block outgoing stanzas from users
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
13 local function block_stanza(event) |
41fd55eba4a8
mod_block_outgoing: Module to block outgoing stanzas from users
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
14 local stanza = event.stanza; |
2005
c769ed3e5b2b
mod_block_outgoing: Make admins exempt from restrictions
Matthew Wild <mwild1@gmail.com>
parents:
2004
diff
changeset
|
15 local from_jid = jid_bare(stanza.attr.from); |
2006
cb810a2bca47
mod_block_outgoing: Allow stanzas to user's login host (e.g. disco queries)
Matthew Wild <mwild1@gmail.com>
parents:
2005
diff
changeset
|
16 if stanza.attr.to == nil or stanza.attr.to == module.host or is_admin(from_jid, module.host) then |
2004
41fd55eba4a8
mod_block_outgoing: Module to block outgoing stanzas from users
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
17 return; |
41fd55eba4a8
mod_block_outgoing: Module to block outgoing stanzas from users
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
18 end |
2005
c769ed3e5b2b
mod_block_outgoing: Make admins exempt from restrictions
Matthew Wild <mwild1@gmail.com>
parents:
2004
diff
changeset
|
19 if block_all or block_users:contains(from_jid) then |
2004
41fd55eba4a8
mod_block_outgoing: Module to block outgoing stanzas from users
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
20 module:log("debug", "Blocked outgoing %s stanza from %s", stanza.name, stanza.attr.from); |
41fd55eba4a8
mod_block_outgoing: Module to block outgoing stanzas from users
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
21 return true; |
41fd55eba4a8
mod_block_outgoing: Module to block outgoing stanzas from users
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
22 end |
41fd55eba4a8
mod_block_outgoing: Module to block outgoing stanzas from users
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
23 end |
41fd55eba4a8
mod_block_outgoing: Module to block outgoing stanzas from users
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
24 |
41fd55eba4a8
mod_block_outgoing: Module to block outgoing stanzas from users
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
25 function module.load() |
2007
dc1299ca0185
mod_block_outgoing: Make blocked stanza types configurable, and default to blocking messages only
Matthew Wild <mwild1@gmail.com>
parents:
2006
diff
changeset
|
26 for stanza_type in stanza_types do |
dc1299ca0185
mod_block_outgoing: Make blocked stanza types configurable, and default to blocking messages only
Matthew Wild <mwild1@gmail.com>
parents:
2006
diff
changeset
|
27 for jid_type in jid_types do |
2004
41fd55eba4a8
mod_block_outgoing: Module to block outgoing stanzas from users
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
28 module:hook("pre-"..stanza_type.."/"..jid_type, block_stanza, 10000); |
41fd55eba4a8
mod_block_outgoing: Module to block outgoing stanzas from users
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
29 end |
41fd55eba4a8
mod_block_outgoing: Module to block outgoing stanzas from users
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
30 end |
41fd55eba4a8
mod_block_outgoing: Module to block outgoing stanzas from users
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
31 end |