annotate mod_register_oob_url/mod_register_oob_url.lua @ 3656:3e0f4d727825

mod_vcard_muc: Add an alternative method of signaling avatar change When the avatar has been changed, a signal is sent that the room configuration has changed. Clients then do a disco#info query to find the SHA-1 of the new avatar. They can then fetch it as before, or not if they have it cached already. This is meant to be less disruptive than signaling via presence, which caused problems for some clients. If clients transition to the new method, the old one can eventually be removed. The namespace is made up while waiting for standardization. Otherwise it is very close to what's described in https://xmpp.org/extensions/inbox/muc-avatars.html
author Kim Alvefur <zash@zash.se>
date Sun, 25 Aug 2019 20:46:43 +0200
parents a7c2df6b2662
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2860
a7c2df6b2662 mod_registration_oob_url: inital commit. simple/straight forward module to advertise oob registration url
Daniel Gultsch <daniel@gultsch.de>
parents:
diff changeset
1 -- Register via OOB URL
a7c2df6b2662 mod_registration_oob_url: inital commit. simple/straight forward module to advertise oob registration url
Daniel Gultsch <daniel@gultsch.de>
parents:
diff changeset
2 -- Copyright (c) 2018 Daniel Gultsch
a7c2df6b2662 mod_registration_oob_url: inital commit. simple/straight forward module to advertise oob registration url
Daniel Gultsch <daniel@gultsch.de>
parents:
diff changeset
3 --
a7c2df6b2662 mod_registration_oob_url: inital commit. simple/straight forward module to advertise oob registration url
Daniel Gultsch <daniel@gultsch.de>
parents:
diff changeset
4 -- This module is MIT/X11 licensed
a7c2df6b2662 mod_registration_oob_url: inital commit. simple/straight forward module to advertise oob registration url
Daniel Gultsch <daniel@gultsch.de>
parents:
diff changeset
5 --
a7c2df6b2662 mod_registration_oob_url: inital commit. simple/straight forward module to advertise oob registration url
Daniel Gultsch <daniel@gultsch.de>
parents:
diff changeset
6
a7c2df6b2662 mod_registration_oob_url: inital commit. simple/straight forward module to advertise oob registration url
Daniel Gultsch <daniel@gultsch.de>
parents:
diff changeset
7 local st = require "util.stanza";
a7c2df6b2662 mod_registration_oob_url: inital commit. simple/straight forward module to advertise oob registration url
Daniel Gultsch <daniel@gultsch.de>
parents:
diff changeset
8 local namespace = "http://jabber.org/features/iq-register"
a7c2df6b2662 mod_registration_oob_url: inital commit. simple/straight forward module to advertise oob registration url
Daniel Gultsch <daniel@gultsch.de>
parents:
diff changeset
9 local register_stream_feature = st.stanza("register", {xmlns=namespace}):up();
a7c2df6b2662 mod_registration_oob_url: inital commit. simple/straight forward module to advertise oob registration url
Daniel Gultsch <daniel@gultsch.de>
parents:
diff changeset
10 local allow_registration = module:get_option_boolean("allow_registration", false);
a7c2df6b2662 mod_registration_oob_url: inital commit. simple/straight forward module to advertise oob registration url
Daniel Gultsch <daniel@gultsch.de>
parents:
diff changeset
11 local registration_url = module:get_option_string("register_oob_url", nil)
a7c2df6b2662 mod_registration_oob_url: inital commit. simple/straight forward module to advertise oob registration url
Daniel Gultsch <daniel@gultsch.de>
parents:
diff changeset
12
a7c2df6b2662 mod_registration_oob_url: inital commit. simple/straight forward module to advertise oob registration url
Daniel Gultsch <daniel@gultsch.de>
parents:
diff changeset
13 if allow_registration then
a7c2df6b2662 mod_registration_oob_url: inital commit. simple/straight forward module to advertise oob registration url
Daniel Gultsch <daniel@gultsch.de>
parents:
diff changeset
14 module:log("info","obb registration is disabled as long as IBR is allowed. Set `allow_registration` to false")
a7c2df6b2662 mod_registration_oob_url: inital commit. simple/straight forward module to advertise oob registration url
Daniel Gultsch <daniel@gultsch.de>
parents:
diff changeset
15 end
a7c2df6b2662 mod_registration_oob_url: inital commit. simple/straight forward module to advertise oob registration url
Daniel Gultsch <daniel@gultsch.de>
parents:
diff changeset
16
a7c2df6b2662 mod_registration_oob_url: inital commit. simple/straight forward module to advertise oob registration url
Daniel Gultsch <daniel@gultsch.de>
parents:
diff changeset
17 if not registration_url then
a7c2df6b2662 mod_registration_oob_url: inital commit. simple/straight forward module to advertise oob registration url
Daniel Gultsch <daniel@gultsch.de>
parents:
diff changeset
18 module:log("info","registration url not configured. Add `register_oob_url` to prosody.cfg")
a7c2df6b2662 mod_registration_oob_url: inital commit. simple/straight forward module to advertise oob registration url
Daniel Gultsch <daniel@gultsch.de>
parents:
diff changeset
19 end
a7c2df6b2662 mod_registration_oob_url: inital commit. simple/straight forward module to advertise oob registration url
Daniel Gultsch <daniel@gultsch.de>
parents:
diff changeset
20
a7c2df6b2662 mod_registration_oob_url: inital commit. simple/straight forward module to advertise oob registration url
Daniel Gultsch <daniel@gultsch.de>
parents:
diff changeset
21 local function on_stream_features(event)
a7c2df6b2662 mod_registration_oob_url: inital commit. simple/straight forward module to advertise oob registration url
Daniel Gultsch <daniel@gultsch.de>
parents:
diff changeset
22 if not registration_url then
a7c2df6b2662 mod_registration_oob_url: inital commit. simple/straight forward module to advertise oob registration url
Daniel Gultsch <daniel@gultsch.de>
parents:
diff changeset
23 return
a7c2df6b2662 mod_registration_oob_url: inital commit. simple/straight forward module to advertise oob registration url
Daniel Gultsch <daniel@gultsch.de>
parents:
diff changeset
24 end
a7c2df6b2662 mod_registration_oob_url: inital commit. simple/straight forward module to advertise oob registration url
Daniel Gultsch <daniel@gultsch.de>
parents:
diff changeset
25 local session, features = event.origin, event.features;
a7c2df6b2662 mod_registration_oob_url: inital commit. simple/straight forward module to advertise oob registration url
Daniel Gultsch <daniel@gultsch.de>
parents:
diff changeset
26 if session.type == "c2s_unauthed" and not allow_registration then
a7c2df6b2662 mod_registration_oob_url: inital commit. simple/straight forward module to advertise oob registration url
Daniel Gultsch <daniel@gultsch.de>
parents:
diff changeset
27 features:add_child(register_stream_feature);
a7c2df6b2662 mod_registration_oob_url: inital commit. simple/straight forward module to advertise oob registration url
Daniel Gultsch <daniel@gultsch.de>
parents:
diff changeset
28 end
a7c2df6b2662 mod_registration_oob_url: inital commit. simple/straight forward module to advertise oob registration url
Daniel Gultsch <daniel@gultsch.de>
parents:
diff changeset
29 end
a7c2df6b2662 mod_registration_oob_url: inital commit. simple/straight forward module to advertise oob registration url
Daniel Gultsch <daniel@gultsch.de>
parents:
diff changeset
30
a7c2df6b2662 mod_registration_oob_url: inital commit. simple/straight forward module to advertise oob registration url
Daniel Gultsch <daniel@gultsch.de>
parents:
diff changeset
31 local function on_registration_requested(event)
a7c2df6b2662 mod_registration_oob_url: inital commit. simple/straight forward module to advertise oob registration url
Daniel Gultsch <daniel@gultsch.de>
parents:
diff changeset
32 local session, stanza = event.origin, event.stanza
a7c2df6b2662 mod_registration_oob_url: inital commit. simple/straight forward module to advertise oob registration url
Daniel Gultsch <daniel@gultsch.de>
parents:
diff changeset
33 if session.type ~= "c2s_unauthed" or stanza.attr.type ~= "get" then
a7c2df6b2662 mod_registration_oob_url: inital commit. simple/straight forward module to advertise oob registration url
Daniel Gultsch <daniel@gultsch.de>
parents:
diff changeset
34 return
a7c2df6b2662 mod_registration_oob_url: inital commit. simple/straight forward module to advertise oob registration url
Daniel Gultsch <daniel@gultsch.de>
parents:
diff changeset
35 end
a7c2df6b2662 mod_registration_oob_url: inital commit. simple/straight forward module to advertise oob registration url
Daniel Gultsch <daniel@gultsch.de>
parents:
diff changeset
36 if not allow_registration and registration_url then
a7c2df6b2662 mod_registration_oob_url: inital commit. simple/straight forward module to advertise oob registration url
Daniel Gultsch <daniel@gultsch.de>
parents:
diff changeset
37 local reply = st.reply(stanza)
a7c2df6b2662 mod_registration_oob_url: inital commit. simple/straight forward module to advertise oob registration url
Daniel Gultsch <daniel@gultsch.de>
parents:
diff changeset
38 reply:query("jabber:iq:register")
a7c2df6b2662 mod_registration_oob_url: inital commit. simple/straight forward module to advertise oob registration url
Daniel Gultsch <daniel@gultsch.de>
parents:
diff changeset
39 :tag("x", {xmlns = "jabber:x:oob"})
a7c2df6b2662 mod_registration_oob_url: inital commit. simple/straight forward module to advertise oob registration url
Daniel Gultsch <daniel@gultsch.de>
parents:
diff changeset
40 :tag("url"):text(registration_url);
a7c2df6b2662 mod_registration_oob_url: inital commit. simple/straight forward module to advertise oob registration url
Daniel Gultsch <daniel@gultsch.de>
parents:
diff changeset
41 return session.send(reply)
a7c2df6b2662 mod_registration_oob_url: inital commit. simple/straight forward module to advertise oob registration url
Daniel Gultsch <daniel@gultsch.de>
parents:
diff changeset
42 end
a7c2df6b2662 mod_registration_oob_url: inital commit. simple/straight forward module to advertise oob registration url
Daniel Gultsch <daniel@gultsch.de>
parents:
diff changeset
43 end
a7c2df6b2662 mod_registration_oob_url: inital commit. simple/straight forward module to advertise oob registration url
Daniel Gultsch <daniel@gultsch.de>
parents:
diff changeset
44
a7c2df6b2662 mod_registration_oob_url: inital commit. simple/straight forward module to advertise oob registration url
Daniel Gultsch <daniel@gultsch.de>
parents:
diff changeset
45 module:hook("stream-features", on_stream_features)
a7c2df6b2662 mod_registration_oob_url: inital commit. simple/straight forward module to advertise oob registration url
Daniel Gultsch <daniel@gultsch.de>
parents:
diff changeset
46 module:hook("stanza/iq/jabber:iq:register:query", on_registration_requested, 1)
a7c2df6b2662 mod_registration_oob_url: inital commit. simple/straight forward module to advertise oob registration url
Daniel Gultsch <daniel@gultsch.de>
parents:
diff changeset
47
a7c2df6b2662 mod_registration_oob_url: inital commit. simple/straight forward module to advertise oob registration url
Daniel Gultsch <daniel@gultsch.de>
parents:
diff changeset
48 -- vim: noexpandtab tabstop=4 shiftwidth=4