Mercurial > prosody-modules
annotate mod_block_outgoing/mod_block_outgoing.lua @ 6165:e977174082ee
mod_invites_register_api: Use set_password() for password resets
Previously the code relied on the (weird) behaviour of create_user(), which
would update the password for a user account if it already existed. This has
several issues, and we plan to deprecate this behaviour of create_user().
The larger issue is that this route does not trigger the user-password-changed
event, which can be a security problem. For example, it did not disconnect
existing user sessions (this occurs in mod_c2s in response to the event).
Switching to set_password() is the right thing to do
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Thu, 06 Feb 2025 10:24:30 +0000 |
| 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 |
