annotate mod_discoitems/mod_discoitems.lua @ 5715:8488ebde5739

mod_http_oauth2: Skip consent screen if requested by client and same scopes already granted This follows the intent behind the OpenID Connect 'prompt' parameter when it does not include the 'consent' keyword, that is the client wishes to skip the consent screen. If the user has already granted the exact same scopes to the exact same client in the past, then one can assume that they may grant it again.
author Kim Alvefur <zash@zash.se>
date Tue, 14 Nov 2023 23:03: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);