annotate mod_muc_gc10/mod_muc_gc10.lua @ 3503:882180b459a0

mod_pubsub_post: Restructure authentication and authorization (BC) This deprecates the default "superuser" actor model and makes the default equivalent to the previous "request.id". A single actor and secret per node is supported because HTTP and WebHooks don't normally include any authorization identity. Allowing authentication bypass when no secret is given should be relatively safe when the actor is unprivileged, as will be unless explicitly configured otherwise.
author Kim Alvefur <zash@zash.se>
date Sat, 30 Mar 2019 21:16:13 +0100
parents 37ec4c2f319a
children 8a15a9b13881
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2940
0167a102ed35 mod_muc_gc10: Gather statistics on use of the Groupchat 1.0 protocol
Kim Alvefur <zash@zash.se>
parents:
diff changeset
1 local jid_bare = require "util.jid".bare;
0167a102ed35 mod_muc_gc10: Gather statistics on use of the Groupchat 1.0 protocol
Kim Alvefur <zash@zash.se>
parents:
diff changeset
2 local st = require "util.stanza";
0167a102ed35 mod_muc_gc10: Gather statistics on use of the Groupchat 1.0 protocol
Kim Alvefur <zash@zash.se>
parents:
diff changeset
3
0167a102ed35 mod_muc_gc10: Gather statistics on use of the Groupchat 1.0 protocol
Kim Alvefur <zash@zash.se>
parents:
diff changeset
4 local rooms = module:depends"muc".rooms;
0167a102ed35 mod_muc_gc10: Gather statistics on use of the Groupchat 1.0 protocol
Kim Alvefur <zash@zash.se>
parents:
diff changeset
5
2944
37ec4c2f319a mod_muc_gc10: Catch joins correctly (thanks Ge0rG)
Kim Alvefur <zash@zash.se>
parents: 2940
diff changeset
6 module:hook("presence/full", function (event)
2940
0167a102ed35 mod_muc_gc10: Gather statistics on use of the Groupchat 1.0 protocol
Kim Alvefur <zash@zash.se>
parents:
diff changeset
7 local stanza, origin = event.stanza, event.origin;
0167a102ed35 mod_muc_gc10: Gather statistics on use of the Groupchat 1.0 protocol
Kim Alvefur <zash@zash.se>
parents:
diff changeset
8 if stanza.attr.type ~= nil then return end
0167a102ed35 mod_muc_gc10: Gather statistics on use of the Groupchat 1.0 protocol
Kim Alvefur <zash@zash.se>
parents:
diff changeset
9
0167a102ed35 mod_muc_gc10: Gather statistics on use of the Groupchat 1.0 protocol
Kim Alvefur <zash@zash.se>
parents:
diff changeset
10 local muc_x = stanza:get_child("x", "http://jabber.org/protocol/muc");
0167a102ed35 mod_muc_gc10: Gather statistics on use of the Groupchat 1.0 protocol
Kim Alvefur <zash@zash.se>
parents:
diff changeset
11
0167a102ed35 mod_muc_gc10: Gather statistics on use of the Groupchat 1.0 protocol
Kim Alvefur <zash@zash.se>
parents:
diff changeset
12 local room_jid = jid_bare(stanza.attr.to);
0167a102ed35 mod_muc_gc10: Gather statistics on use of the Groupchat 1.0 protocol
Kim Alvefur <zash@zash.se>
parents:
diff changeset
13 local room = rooms[room_jid];
0167a102ed35 mod_muc_gc10: Gather statistics on use of the Groupchat 1.0 protocol
Kim Alvefur <zash@zash.se>
parents:
diff changeset
14 if not room then
0167a102ed35 mod_muc_gc10: Gather statistics on use of the Groupchat 1.0 protocol
Kim Alvefur <zash@zash.se>
parents:
diff changeset
15 if muc_x then
0167a102ed35 mod_muc_gc10: Gather statistics on use of the Groupchat 1.0 protocol
Kim Alvefur <zash@zash.se>
parents:
diff changeset
16 -- Normal MUC creation
0167a102ed35 mod_muc_gc10: Gather statistics on use of the Groupchat 1.0 protocol
Kim Alvefur <zash@zash.se>
parents:
diff changeset
17 else
0167a102ed35 mod_muc_gc10: Gather statistics on use of the Groupchat 1.0 protocol
Kim Alvefur <zash@zash.se>
parents:
diff changeset
18 module:log("info", "GC 1.0 room creation from %s", stanza.attr.from);
0167a102ed35 mod_muc_gc10: Gather statistics on use of the Groupchat 1.0 protocol
Kim Alvefur <zash@zash.se>
parents:
diff changeset
19 module:send(st.iq({type="get",id=module.name,from=module.host,to=stanza.attr.from}):query("jabber:iq:version"));
0167a102ed35 mod_muc_gc10: Gather statistics on use of the Groupchat 1.0 protocol
Kim Alvefur <zash@zash.se>
parents:
diff changeset
20 end
0167a102ed35 mod_muc_gc10: Gather statistics on use of the Groupchat 1.0 protocol
Kim Alvefur <zash@zash.se>
parents:
diff changeset
21 return;
0167a102ed35 mod_muc_gc10: Gather statistics on use of the Groupchat 1.0 protocol
Kim Alvefur <zash@zash.se>
parents:
diff changeset
22 end
0167a102ed35 mod_muc_gc10: Gather statistics on use of the Groupchat 1.0 protocol
Kim Alvefur <zash@zash.se>
parents:
diff changeset
23 local current_nick = room._jid_nick[stanza.attr.from];
0167a102ed35 mod_muc_gc10: Gather statistics on use of the Groupchat 1.0 protocol
Kim Alvefur <zash@zash.se>
parents:
diff changeset
24
0167a102ed35 mod_muc_gc10: Gather statistics on use of the Groupchat 1.0 protocol
Kim Alvefur <zash@zash.se>
parents:
diff changeset
25 if current_nick then
0167a102ed35 mod_muc_gc10: Gather statistics on use of the Groupchat 1.0 protocol
Kim Alvefur <zash@zash.se>
parents:
diff changeset
26 -- present
0167a102ed35 mod_muc_gc10: Gather statistics on use of the Groupchat 1.0 protocol
Kim Alvefur <zash@zash.se>
parents:
diff changeset
27 if muc_x then
0167a102ed35 mod_muc_gc10: Gather statistics on use of the Groupchat 1.0 protocol
Kim Alvefur <zash@zash.se>
parents:
diff changeset
28 module:log("info", "MUC desync with %s", stanza.attr.from);
0167a102ed35 mod_muc_gc10: Gather statistics on use of the Groupchat 1.0 protocol
Kim Alvefur <zash@zash.se>
parents:
diff changeset
29 module:send(st.iq({type="get",id=module.name,from=module.host,to=stanza.attr.from}):query("jabber:iq:version"));
0167a102ed35 mod_muc_gc10: Gather statistics on use of the Groupchat 1.0 protocol
Kim Alvefur <zash@zash.se>
parents:
diff changeset
30 else
0167a102ed35 mod_muc_gc10: Gather statistics on use of the Groupchat 1.0 protocol
Kim Alvefur <zash@zash.se>
parents:
diff changeset
31 -- normal presence update
0167a102ed35 mod_muc_gc10: Gather statistics on use of the Groupchat 1.0 protocol
Kim Alvefur <zash@zash.se>
parents:
diff changeset
32 end
0167a102ed35 mod_muc_gc10: Gather statistics on use of the Groupchat 1.0 protocol
Kim Alvefur <zash@zash.se>
parents:
diff changeset
33 else
0167a102ed35 mod_muc_gc10: Gather statistics on use of the Groupchat 1.0 protocol
Kim Alvefur <zash@zash.se>
parents:
diff changeset
34 -- joining
0167a102ed35 mod_muc_gc10: Gather statistics on use of the Groupchat 1.0 protocol
Kim Alvefur <zash@zash.se>
parents:
diff changeset
35 if muc_x then
0167a102ed35 mod_muc_gc10: Gather statistics on use of the Groupchat 1.0 protocol
Kim Alvefur <zash@zash.se>
parents:
diff changeset
36 -- normal join
0167a102ed35 mod_muc_gc10: Gather statistics on use of the Groupchat 1.0 protocol
Kim Alvefur <zash@zash.se>
parents:
diff changeset
37 else
0167a102ed35 mod_muc_gc10: Gather statistics on use of the Groupchat 1.0 protocol
Kim Alvefur <zash@zash.se>
parents:
diff changeset
38 module:log("info", "GC 1.0 join from %s", stanza.attr.from);
0167a102ed35 mod_muc_gc10: Gather statistics on use of the Groupchat 1.0 protocol
Kim Alvefur <zash@zash.se>
parents:
diff changeset
39 module:send(st.iq({type="get",id=module.name,from=module.host,to=stanza.attr.from}):query("jabber:iq:version"));
0167a102ed35 mod_muc_gc10: Gather statistics on use of the Groupchat 1.0 protocol
Kim Alvefur <zash@zash.se>
parents:
diff changeset
40 end
0167a102ed35 mod_muc_gc10: Gather statistics on use of the Groupchat 1.0 protocol
Kim Alvefur <zash@zash.se>
parents:
diff changeset
41 end
0167a102ed35 mod_muc_gc10: Gather statistics on use of the Groupchat 1.0 protocol
Kim Alvefur <zash@zash.se>
parents:
diff changeset
42 end);
0167a102ed35 mod_muc_gc10: Gather statistics on use of the Groupchat 1.0 protocol
Kim Alvefur <zash@zash.se>
parents:
diff changeset
43
0167a102ed35 mod_muc_gc10: Gather statistics on use of the Groupchat 1.0 protocol
Kim Alvefur <zash@zash.se>
parents:
diff changeset
44 module:hook("iq-result/host/"..module.name, function (event)
0167a102ed35 mod_muc_gc10: Gather statistics on use of the Groupchat 1.0 protocol
Kim Alvefur <zash@zash.se>
parents:
diff changeset
45 local stanza, origin = event.stanza, event.origin;
0167a102ed35 mod_muc_gc10: Gather statistics on use of the Groupchat 1.0 protocol
Kim Alvefur <zash@zash.se>
parents:
diff changeset
46 local version = stanza:get_child("query", "jabber:iq:version");
0167a102ed35 mod_muc_gc10: Gather statistics on use of the Groupchat 1.0 protocol
Kim Alvefur <zash@zash.se>
parents:
diff changeset
47 if not version then
0167a102ed35 mod_muc_gc10: Gather statistics on use of the Groupchat 1.0 protocol
Kim Alvefur <zash@zash.se>
parents:
diff changeset
48 module:log("info", "%s replied with an invalid version reply: %s", stanza.attr.from, tostring(stanza));
0167a102ed35 mod_muc_gc10: Gather statistics on use of the Groupchat 1.0 protocol
Kim Alvefur <zash@zash.se>
parents:
diff changeset
49 return true;
0167a102ed35 mod_muc_gc10: Gather statistics on use of the Groupchat 1.0 protocol
Kim Alvefur <zash@zash.se>
parents:
diff changeset
50 end
0167a102ed35 mod_muc_gc10: Gather statistics on use of the Groupchat 1.0 protocol
Kim Alvefur <zash@zash.se>
parents:
diff changeset
51 module:log("info", "%s is running: %s %s", stanza.attr.from, version:get_child_text("name"), version:get_child_text("version"));
0167a102ed35 mod_muc_gc10: Gather statistics on use of the Groupchat 1.0 protocol
Kim Alvefur <zash@zash.se>
parents:
diff changeset
52 end);
0167a102ed35 mod_muc_gc10: Gather statistics on use of the Groupchat 1.0 protocol
Kim Alvefur <zash@zash.se>
parents:
diff changeset
53
0167a102ed35 mod_muc_gc10: Gather statistics on use of the Groupchat 1.0 protocol
Kim Alvefur <zash@zash.se>
parents:
diff changeset
54 module:hook("iq-error/host/"..module.name, function (event)
0167a102ed35 mod_muc_gc10: Gather statistics on use of the Groupchat 1.0 protocol
Kim Alvefur <zash@zash.se>
parents:
diff changeset
55 local stanza, origin = event.stanza, event.origin;
0167a102ed35 mod_muc_gc10: Gather statistics on use of the Groupchat 1.0 protocol
Kim Alvefur <zash@zash.se>
parents:
diff changeset
56 module:log("info", "%s replied with an error: %s %s", stanza.attr.from, stanza:get_error());
0167a102ed35 mod_muc_gc10: Gather statistics on use of the Groupchat 1.0 protocol
Kim Alvefur <zash@zash.se>
parents:
diff changeset
57 return true;
0167a102ed35 mod_muc_gc10: Gather statistics on use of the Groupchat 1.0 protocol
Kim Alvefur <zash@zash.se>
parents:
diff changeset
58 end);