annotate mod_discoitems/mod_discoitems.lua @ 5170:4d6af8950016

mod_muc_moderation: Derive role from reserved nickname if occupant When using a different client to moderate than the one used to participate in the chat, e.g. a command line tool like clix, there's no occupant and no role to use in the permission check. Previously the default role based on affiliation was used. Now if you are present in the room using your reserved nick, the role you have there is used in the permission check instead of the default affiliation-derived role.
author Kim Alvefur <zash@zash.se>
date Sun, 19 Feb 2023 18:17:37 +0100
parents ae91c98b7e4c
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
78
ae91c98b7e4c mod_discoitems: Initial commit.
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
1 -- mod_discoitems.lua
ae91c98b7e4c mod_discoitems: Initial commit.
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
2 --
ae91c98b7e4c mod_discoitems: Initial commit.
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
3 -- In the config, you can add:
ae91c98b7e4c mod_discoitems: Initial commit.
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
4 --
ae91c98b7e4c mod_discoitems: Initial commit.
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
5 -- disco_items = {
ae91c98b7e4c mod_discoitems: Initial commit.
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
6 -- {"proxy.eu.jabber.org", "Jabber.org SOCKS5 service"};
ae91c98b7e4c mod_discoitems: Initial commit.
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
7 -- {"conference.jabber.org", "The Jabber.org MUC"};
ae91c98b7e4c mod_discoitems: Initial commit.
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
8 -- };
ae91c98b7e4c mod_discoitems: Initial commit.
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
9 --
ae91c98b7e4c mod_discoitems: Initial commit.
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
10
ae91c98b7e4c mod_discoitems: Initial commit.
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
11 local st = require "util.stanza";
ae91c98b7e4c mod_discoitems: Initial commit.
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
12
ae91c98b7e4c mod_discoitems: Initial commit.
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
13 local result_query = st.stanza("query", {xmlns="http://jabber.org/protocol/disco#items"});
ae91c98b7e4c mod_discoitems: Initial commit.
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
14 for _, item in ipairs(module:get_option("disco_items") or {}) do
ae91c98b7e4c mod_discoitems: Initial commit.
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
15 result_query:tag("item", {jid=item[1], name=item[2]}):up();
ae91c98b7e4c mod_discoitems: Initial commit.
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
16 end
ae91c98b7e4c mod_discoitems: Initial commit.
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
17
ae91c98b7e4c mod_discoitems: Initial commit.
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
18 module:hook('iq/host/http://jabber.org/protocol/disco#items:query', function(event)
ae91c98b7e4c mod_discoitems: Initial commit.
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
19 local stanza = event.stanza;
ae91c98b7e4c mod_discoitems: Initial commit.
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
20 local query = stanza.tags[1];
ae91c98b7e4c mod_discoitems: Initial commit.
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
21 if stanza.attr.type == 'get' and not query.attr.node then
ae91c98b7e4c mod_discoitems: Initial commit.
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
22 event.origin.send(st.reply(stanza):add_child(result_query));
ae91c98b7e4c mod_discoitems: Initial commit.
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
23 return true;
ae91c98b7e4c mod_discoitems: Initial commit.
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
24 end
ae91c98b7e4c mod_discoitems: Initial commit.
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
25 end, 100);