annotate mod_muc_block_pm/mod_muc_block_pm.lua @ 6319:04c3273cb81f

mod_auth_cyrus: Add empty 'profile' table to SASL handler objects This is for compatibility with Prosody's built-in util.sasl objects. A SASL profile table usually includes methods supported by the backend, which can be used by SASL mechanism handlers to perform operations (such as testing the password). It also optionally contains a 'cb' field with channel binding method handlers. The Cyrus backend doesn't support channel binding, and doesn't have the same concept of auth backend methods (it handles all that internally, and Prosody has no insight or control over it). Thus, we create an empty profile which informs Prosody that the SASL handler does not support any of the auth or channel binding methods. Some features will not work, but they didn't work anyway. This just makes it explicit. This fixes a traceback in mod_sasl2_fast, which expected SASL handlers to always contain a 'profile' field.
author Matthew Wild <mwild1@gmail.com>
date Thu, 04 Sep 2025 10:14:46 +0100
parents 67f7df9892bb
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5591
c7e532ac6bf7 mod_muc_block_pm: Update to 0.12+ API, use roles instead of affiliations
Kim Alvefur <zash@zash.se>
parents: 4027
diff changeset
1 local st = require "util.stanza";
2588
69d3e0037435 mod_muc_block_pm: Prevent unaffiliated users from sending private messages in MUC
Kim Alvefur <zash@zash.se>
parents:
diff changeset
2
5610
67f7df9892bb mod_muc_block_pm: Advertise that Moderators are allowed to send PMs
Kim Alvefur <zash@zash.se>
parents: 5609
diff changeset
3 module:hook("muc-disco#info", function(event)
67f7df9892bb mod_muc_block_pm: Advertise that Moderators are allowed to send PMs
Kim Alvefur <zash@zash.se>
parents: 5609
diff changeset
4 table.insert(event.form, { name = "muc#roomconfig_allowpm"; value = "moderators" });
67f7df9892bb mod_muc_block_pm: Advertise that Moderators are allowed to send PMs
Kim Alvefur <zash@zash.se>
parents: 5609
diff changeset
5 end);
67f7df9892bb mod_muc_block_pm: Advertise that Moderators are allowed to send PMs
Kim Alvefur <zash@zash.se>
parents: 5609
diff changeset
6
5591
c7e532ac6bf7 mod_muc_block_pm: Update to 0.12+ API, use roles instead of affiliations
Kim Alvefur <zash@zash.se>
parents: 4027
diff changeset
7 module:hook("muc-private-message", function(event)
c7e532ac6bf7 mod_muc_block_pm: Update to 0.12+ API, use roles instead of affiliations
Kim Alvefur <zash@zash.se>
parents: 4027
diff changeset
8 local stanza, room = event.stanza, event.room;
c7e532ac6bf7 mod_muc_block_pm: Update to 0.12+ API, use roles instead of affiliations
Kim Alvefur <zash@zash.se>
parents: 4027
diff changeset
9 local from_occupant = room:get_occupant_by_nick(stanza.attr.from);
c7e532ac6bf7 mod_muc_block_pm: Update to 0.12+ API, use roles instead of affiliations
Kim Alvefur <zash@zash.se>
parents: 4027
diff changeset
10
c7e532ac6bf7 mod_muc_block_pm: Update to 0.12+ API, use roles instead of affiliations
Kim Alvefur <zash@zash.se>
parents: 4027
diff changeset
11 if from_occupant and from_occupant.role == "moderator" then
c7e532ac6bf7 mod_muc_block_pm: Update to 0.12+ API, use roles instead of affiliations
Kim Alvefur <zash@zash.se>
parents: 4027
diff changeset
12 return -- moderators may message anyone
3636
afedc2430b0d mod_muc_block_pm: Add support for Prosody 0.11
JC Brand <jc@opkode.com>
parents: 2588
diff changeset
13 end
2588
69d3e0037435 mod_muc_block_pm: Prevent unaffiliated users from sending private messages in MUC
Kim Alvefur <zash@zash.se>
parents:
diff changeset
14
5591
c7e532ac6bf7 mod_muc_block_pm: Update to 0.12+ API, use roles instead of affiliations
Kim Alvefur <zash@zash.se>
parents: 4027
diff changeset
15 local to_occupant = room:get_occupant_by_nick(stanza.attr.to)
c7e532ac6bf7 mod_muc_block_pm: Update to 0.12+ API, use roles instead of affiliations
Kim Alvefur <zash@zash.se>
parents: 4027
diff changeset
16 if to_occupant and to_occupant.role == "moderator" then
c7e532ac6bf7 mod_muc_block_pm: Update to 0.12+ API, use roles instead of affiliations
Kim Alvefur <zash@zash.se>
parents: 4027
diff changeset
17 return -- messaging moderators is ok
4027
291a45919988 mod_muc_block_pm: Don't respond to error stanzas
JC Brand <jc@opkode.com>
parents: 3636
diff changeset
18 end
2588
69d3e0037435 mod_muc_block_pm: Prevent unaffiliated users from sending private messages in MUC
Kim Alvefur <zash@zash.se>
parents:
diff changeset
19
5609
e469642e6a6c mod_muc_block_pm: Allow private messages to yourself
Kim Alvefur <zash@zash.se>
parents: 5591
diff changeset
20 if to_occupant.bare_jid == from_occupant.bare_jid then
e469642e6a6c mod_muc_block_pm: Allow private messages to yourself
Kim Alvefur <zash@zash.se>
parents: 5591
diff changeset
21 return -- to yourself is okay, used by some clients to sync read state in public channels
e469642e6a6c mod_muc_block_pm: Allow private messages to yourself
Kim Alvefur <zash@zash.se>
parents: 5591
diff changeset
22 end
e469642e6a6c mod_muc_block_pm: Allow private messages to yourself
Kim Alvefur <zash@zash.se>
parents: 5591
diff changeset
23
5591
c7e532ac6bf7 mod_muc_block_pm: Update to 0.12+ API, use roles instead of affiliations
Kim Alvefur <zash@zash.se>
parents: 4027
diff changeset
24 room:route_to_occupant(from_occupant, st.error_reply(stanza, "cancel", "policy-violation", "Private messages are disabled", room.jid))
c7e532ac6bf7 mod_muc_block_pm: Update to 0.12+ API, use roles instead of affiliations
Kim Alvefur <zash@zash.se>
parents: 4027
diff changeset
25 return false;
2588
69d3e0037435 mod_muc_block_pm: Prevent unaffiliated users from sending private messages in MUC
Kim Alvefur <zash@zash.se>
parents:
diff changeset
26 end, 1);