annotate plugins/muc/register.lib.lua @ 13946:f5e8ab42c708

mod_http_file_share: Check that files are still there with correct size Failed uploads can leave behind unused slots. Files shouldn't change size after they have been successfully uploaded, but might as well double check it.
author Kim Alvefur <zash@zash.se>
date Sat, 04 Dec 2021 18:56:51 +0100
parents 356c8ec22e9a
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
12977
74b9e05af71e plugins: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents: 12029
diff changeset
1 local jid_bare = require "prosody.util.jid".bare;
74b9e05af71e plugins: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents: 12029
diff changeset
2 local jid_resource = require "prosody.util.jid".resource;
74b9e05af71e plugins: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents: 12029
diff changeset
3 local resourceprep = require "prosody.util.encodings".stringprep.resourceprep;
74b9e05af71e plugins: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents: 12029
diff changeset
4 local st = require "prosody.util.stanza";
74b9e05af71e plugins: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents: 12029
diff changeset
5 local dataforms = require "prosody.util.dataforms";
9240
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6
13908
356c8ec22e9a MUC: Add basic "GC3" participant (affiliation) list fetch
Matthew Wild <mwild1@gmail.com>
parents: 13907
diff changeset
7 local gc3_mode = module:get_option_boolean("muc_enable_experimental_gc3", false);
9240
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8
13908
356c8ec22e9a MUC: Add basic "GC3" participant (affiliation) list fetch
Matthew Wild <mwild1@gmail.com>
parents: 13907
diff changeset
9 local allow_unaffiliated = module:get_option_boolean("allow_unaffiliated_register", gc3_mode);
356c8ec22e9a MUC: Add basic "GC3" participant (affiliation) list fetch
Matthew Wild <mwild1@gmail.com>
parents: 13907
diff changeset
10 local enforce_nick = module:get_option_boolean("enforce_registered_nickname", gc3_mode);
9240
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11
11906
ba3344926e18 MUC: Add option to include form in registration query
Matthew Wild <mwild1@gmail.com>
parents: 11286
diff changeset
12 -- Whether to include the current registration data as a dataform. Disabled
ba3344926e18 MUC: Add option to include form in registration query
Matthew Wild <mwild1@gmail.com>
parents: 11286
diff changeset
13 -- by default currently as it hasn't been widely tested with clients.
ba3344926e18 MUC: Add option to include form in registration query
Matthew Wild <mwild1@gmail.com>
parents: 11286
diff changeset
14 local include_reg_form = module:get_option_boolean("muc_registration_include_form", false);
ba3344926e18 MUC: Add option to include form in registration query
Matthew Wild <mwild1@gmail.com>
parents: 11286
diff changeset
15
9240
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
16 -- reserved_nicks[nick] = jid
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
17 local function get_reserved_nicks(room)
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
18 if room._reserved_nicks then
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
19 return room._reserved_nicks;
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
20 end
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
21 module:log("debug", "Refreshing reserved nicks...");
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
22 local reserved_nicks = {};
10225
9bdd9b6bf362 MUC: Simplify nickname refresh loop
Kim Alvefur <zash@zash.se>
parents: 9298
diff changeset
23 for jid, _, data in room:each_affiliation() do
9240
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
24 local nick = data and data.reserved_nickname;
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
25 module:log("debug", "Refreshed for %s: %s", jid, nick);
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
26 if nick then
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
27 reserved_nicks[nick] = jid;
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
28 end
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
29 end
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
30 room._reserved_nicks = reserved_nicks;
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
31 return reserved_nicks;
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
32 end
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
33
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
34 -- Returns the registered nick, if any, for a JID
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
35 -- Note: this is just the *nick* part, i.e. the resource of the in-room JID
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
36 local function get_registered_nick(room, jid)
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
37 local registered_data = room._affiliation_data[jid];
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
38 if not registered_data then
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
39 return;
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
40 end
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
41 return registered_data.reserved_nickname;
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
42 end
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
43
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
44 -- Returns the JID, if any, that registered a nick (not in-room JID)
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
45 local function get_registered_jid(room, nick)
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
46 local reserved_nicks = get_reserved_nicks(room);
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
47 return reserved_nicks[nick];
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
48 end
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
49
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
50 module:hook("muc-set-affiliation", function (event)
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
51 -- Clear reserved nick cache
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
52 event.room._reserved_nicks = nil;
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
53 end);
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
54
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
55 module:hook("muc-disco#info", function (event)
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
56 event.reply:tag("feature", { var = "jabber:iq:register" }):up();
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
57 end);
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
58
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
59 local registration_form = dataforms.new {
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
60 { name = "FORM_TYPE", type = "hidden", value = "http://jabber.org/protocol/muc#register" },
10373
51ea82f55322 MUC: Make nickname field in registration form required
Kim Alvefur <zash@zash.se>
parents: 10343
diff changeset
61 { name = "muc#register_roomnick", type = "text-single", required = true, label = "Nickname"},
9240
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
62 };
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
63
11286
336cba957c88 MUC: Allow modules to add to the room registration form, and handle the result
Matthew Wild <mwild1@gmail.com>
parents: 10794
diff changeset
64 module:handle_items("muc-registration-field", function (event)
336cba957c88 MUC: Allow modules to add to the room registration form, and handle the result
Matthew Wild <mwild1@gmail.com>
parents: 10794
diff changeset
65 module:log("debug", "Adding MUC registration form field: %s", event.item.name);
336cba957c88 MUC: Allow modules to add to the room registration form, and handle the result
Matthew Wild <mwild1@gmail.com>
parents: 10794
diff changeset
66 table.insert(registration_form, event.item);
336cba957c88 MUC: Allow modules to add to the room registration form, and handle the result
Matthew Wild <mwild1@gmail.com>
parents: 10794
diff changeset
67 end, function (event)
336cba957c88 MUC: Allow modules to add to the room registration form, and handle the result
Matthew Wild <mwild1@gmail.com>
parents: 10794
diff changeset
68 module:log("debug", "Removing MUC registration form field: %s", event.item.name);
336cba957c88 MUC: Allow modules to add to the room registration form, and handle the result
Matthew Wild <mwild1@gmail.com>
parents: 10794
diff changeset
69 local removed_field_name = event.item.name;
336cba957c88 MUC: Allow modules to add to the room registration form, and handle the result
Matthew Wild <mwild1@gmail.com>
parents: 10794
diff changeset
70 for i, field in ipairs(registration_form) do
336cba957c88 MUC: Allow modules to add to the room registration form, and handle the result
Matthew Wild <mwild1@gmail.com>
parents: 10794
diff changeset
71 if field.name == removed_field_name then
336cba957c88 MUC: Allow modules to add to the room registration form, and handle the result
Matthew Wild <mwild1@gmail.com>
parents: 10794
diff changeset
72 table.remove(registration_form, i);
336cba957c88 MUC: Allow modules to add to the room registration form, and handle the result
Matthew Wild <mwild1@gmail.com>
parents: 10794
diff changeset
73 break;
336cba957c88 MUC: Allow modules to add to the room registration form, and handle the result
Matthew Wild <mwild1@gmail.com>
parents: 10794
diff changeset
74 end
336cba957c88 MUC: Allow modules to add to the room registration form, and handle the result
Matthew Wild <mwild1@gmail.com>
parents: 10794
diff changeset
75 end
336cba957c88 MUC: Allow modules to add to the room registration form, and handle the result
Matthew Wild <mwild1@gmail.com>
parents: 10794
diff changeset
76 end);
336cba957c88 MUC: Allow modules to add to the room registration form, and handle the result
Matthew Wild <mwild1@gmail.com>
parents: 10794
diff changeset
77
9240
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
78 local function enforce_nick_policy(event)
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
79 local origin, stanza = event.origin, event.stanza;
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
80 local room = assert(event.room); -- FIXME
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
81 if not room then return; end
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
82
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
83 -- Check if the chosen nickname is reserved
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
84 local requested_nick = jid_resource(stanza.attr.to);
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
85 local reserved_by = get_registered_jid(room, requested_nick);
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
86 if reserved_by and reserved_by ~= jid_bare(stanza.attr.from) then
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
87 module:log("debug", "%s attempted to use nick %s reserved by %s", stanza.attr.from, requested_nick, reserved_by);
10448
cbe524ed1a6a MUC: Indicate origin of registration related errors
Kim Alvefur <zash@zash.se>
parents: 10373
diff changeset
88 local reply = st.error_reply(stanza, "cancel", "conflict", nil, room.jid):up();
12029
631b2afa7bc1 MUC: Remove <{muc}x> tags in some errors
Kim Alvefur <zash@zash.se>
parents: 12028
diff changeset
89 origin.send(reply);
9240
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
90 return true;
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
91 end
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
92
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
93 -- Check if the occupant has a reservation they must use
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
94 if enforce_nick then
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
95 local nick = get_registered_nick(room, jid_bare(stanza.attr.from));
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
96 if nick then
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
97 if event.occupant then
13300
b73547cfd736 muc.register: Clarify what's going on when enforcing nicknames
Kim Alvefur <zash@zash.se>
parents: 12977
diff changeset
98 -- someone is joining, force their nickname to the registered one
9240
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
99 event.occupant.nick = jid_bare(event.occupant.nick) .. "/" .. nick;
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
100 elseif event.dest_occupant.nick ~= jid_bare(event.dest_occupant.nick) .. "/" .. nick then
13300
b73547cfd736 muc.register: Clarify what's going on when enforcing nicknames
Kim Alvefur <zash@zash.se>
parents: 12977
diff changeset
101 -- someone is trying to change nickname to something other than their registered nickname, can't have that
9240
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
102 module:log("debug", "Attempt by %s to join as %s, but their reserved nick is %s", stanza.attr.from, requested_nick, nick);
10448
cbe524ed1a6a MUC: Indicate origin of registration related errors
Kim Alvefur <zash@zash.se>
parents: 10373
diff changeset
103 local reply = st.error_reply(stanza, "cancel", "not-acceptable", nil, room.jid):up();
12029
631b2afa7bc1 MUC: Remove <{muc}x> tags in some errors
Kim Alvefur <zash@zash.se>
parents: 12028
diff changeset
104 origin.send(reply);
9240
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
105 return true;
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
106 end
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
107 end
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
108 end
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
109 end
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
110
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
111 module:hook("muc-occupant-pre-join", enforce_nick_policy);
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
112 module:hook("muc-occupant-pre-change", enforce_nick_policy);
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
113
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
114 -- Discovering Reserved Room Nickname
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
115 -- http://xmpp.org/extensions/xep-0045.html#reservednick
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
116 module:hook("muc-disco#info/x-roomuser-item", function (event)
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
117 local nick = get_registered_nick(event.room, jid_bare(event.stanza.attr.from));
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
118 if nick then
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
119 event.reply:tag("identity", { category = "conference", type = "text", name = nick })
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
120 end
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
121 end);
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
122
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
123 local function handle_register_iq(room, origin, stanza)
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
124 local user_jid = jid_bare(stanza.attr.from)
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
125 local affiliation = room:get_affiliation(user_jid);
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
126 if affiliation == "outcast" then
12028
9ab202e942f5 MUC: Fix error origin JID in wrong argument position
Kim Alvefur <zash@zash.se>
parents: 11906
diff changeset
127 origin.send(st.error_reply(stanza, "auth", "forbidden"));
9240
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
128 return true;
13907
827a4cfd3fad MUC: Don't allow self-registration into members-only MUCs when unaffiliated registration enabled
Matthew Wild <mwild1@gmail.com>
parents: 13871
diff changeset
129 elseif not affiliation then
827a4cfd3fad MUC: Don't allow self-registration into members-only MUCs when unaffiliated registration enabled
Matthew Wild <mwild1@gmail.com>
parents: 13871
diff changeset
130 if room:get_members_only() then
827a4cfd3fad MUC: Don't allow self-registration into members-only MUCs when unaffiliated registration enabled
Matthew Wild <mwild1@gmail.com>
parents: 13871
diff changeset
131 -- Never allow unaffiliated users to register their way into a members-only room
827a4cfd3fad MUC: Don't allow self-registration into members-only MUCs when unaffiliated registration enabled
Matthew Wild <mwild1@gmail.com>
parents: 13871
diff changeset
132 origin.send(st.error_reply(stanza, "auth", "forbidden"));
827a4cfd3fad MUC: Don't allow self-registration into members-only MUCs when unaffiliated registration enabled
Matthew Wild <mwild1@gmail.com>
parents: 13871
diff changeset
133 return true;
827a4cfd3fad MUC: Don't allow self-registration into members-only MUCs when unaffiliated registration enabled
Matthew Wild <mwild1@gmail.com>
parents: 13871
diff changeset
134 elseif not allow_unaffiliated then
827a4cfd3fad MUC: Don't allow self-registration into members-only MUCs when unaffiliated registration enabled
Matthew Wild <mwild1@gmail.com>
parents: 13871
diff changeset
135 -- Not members-only, but we're not permitting registration due to config
827a4cfd3fad MUC: Don't allow self-registration into members-only MUCs when unaffiliated registration enabled
Matthew Wild <mwild1@gmail.com>
parents: 13871
diff changeset
136 origin.send(st.error_reply(stanza, "auth", "registration-required"));
827a4cfd3fad MUC: Don't allow self-registration into members-only MUCs when unaffiliated registration enabled
Matthew Wild <mwild1@gmail.com>
parents: 13871
diff changeset
137 return true;
827a4cfd3fad MUC: Don't allow self-registration into members-only MUCs when unaffiliated registration enabled
Matthew Wild <mwild1@gmail.com>
parents: 13871
diff changeset
138 end
9240
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
139 end
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
140 local reply = st.reply(stanza);
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
141 local registered_nick = get_registered_nick(room, user_jid);
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
142 if stanza.attr.type == "get" then
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
143 reply:query("jabber:iq:register");
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
144 if registered_nick then
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
145 reply:tag("registered"):up();
11906
ba3344926e18 MUC: Add option to include form in registration query
Matthew Wild <mwild1@gmail.com>
parents: 11286
diff changeset
146 reply:tag("username"):text(registered_nick):up();
ba3344926e18 MUC: Add option to include form in registration query
Matthew Wild <mwild1@gmail.com>
parents: 11286
diff changeset
147 if include_reg_form then
ba3344926e18 MUC: Add option to include form in registration query
Matthew Wild <mwild1@gmail.com>
parents: 11286
diff changeset
148 local aff_data = room:get_affiliation_data(user_jid);
ba3344926e18 MUC: Add option to include form in registration query
Matthew Wild <mwild1@gmail.com>
parents: 11286
diff changeset
149 if aff_data then
ba3344926e18 MUC: Add option to include form in registration query
Matthew Wild <mwild1@gmail.com>
parents: 11286
diff changeset
150 reply:add_child(registration_form:form(aff_data, "result"));
ba3344926e18 MUC: Add option to include form in registration query
Matthew Wild <mwild1@gmail.com>
parents: 11286
diff changeset
151 end
ba3344926e18 MUC: Add option to include form in registration query
Matthew Wild <mwild1@gmail.com>
parents: 11286
diff changeset
152 end
9240
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
153 origin.send(reply);
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
154 return true;
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
155 end
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
156 reply:add_child(registration_form:form());
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
157 else -- type == set -- handle registration form
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
158 local query = stanza.tags[1];
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
159 if query:get_child("remove") then
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
160 -- Remove "member" affiliation, but preserve if any other
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
161 local new_affiliation = affiliation ~= "member" and affiliation;
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
162 local ok, err_type, err_condition = room:set_affiliation(true, user_jid, new_affiliation, nil, false);
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
163 if not ok then
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
164 origin.send(st.error_reply(stanza, err_type, err_condition));
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
165 return true;
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
166 end
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
167 origin.send(reply);
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
168 return true;
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
169 end
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
170 local form_tag = query:get_child("x", "jabber:x:data");
10342
dab2a7a82170 MUC: Validate registration dataform more carefully
Kim Alvefur <zash@zash.se>
parents: 10225
diff changeset
171 if not form_tag then
dab2a7a82170 MUC: Validate registration dataform more carefully
Kim Alvefur <zash@zash.se>
parents: 10225
diff changeset
172 origin.send(st.error_reply(stanza, "modify", "bad-request", "Missing dataform"));
dab2a7a82170 MUC: Validate registration dataform more carefully
Kim Alvefur <zash@zash.se>
parents: 10225
diff changeset
173 return true;
dab2a7a82170 MUC: Validate registration dataform more carefully
Kim Alvefur <zash@zash.se>
parents: 10225
diff changeset
174 end
dab2a7a82170 MUC: Validate registration dataform more carefully
Kim Alvefur <zash@zash.se>
parents: 10225
diff changeset
175 local form_type, err = dataforms.get_type(form_tag);
dab2a7a82170 MUC: Validate registration dataform more carefully
Kim Alvefur <zash@zash.se>
parents: 10225
diff changeset
176 if not form_type then
dab2a7a82170 MUC: Validate registration dataform more carefully
Kim Alvefur <zash@zash.se>
parents: 10225
diff changeset
177 origin.send(st.error_reply(stanza, "modify", "bad-request", "Error with form: "..err));
dab2a7a82170 MUC: Validate registration dataform more carefully
Kim Alvefur <zash@zash.se>
parents: 10225
diff changeset
178 return true;
dab2a7a82170 MUC: Validate registration dataform more carefully
Kim Alvefur <zash@zash.se>
parents: 10225
diff changeset
179 elseif form_type ~= "http://jabber.org/protocol/muc#register" then
dab2a7a82170 MUC: Validate registration dataform more carefully
Kim Alvefur <zash@zash.se>
parents: 10225
diff changeset
180 origin.send(st.error_reply(stanza, "modify", "bad-request", "Error in form"));
dab2a7a82170 MUC: Validate registration dataform more carefully
Kim Alvefur <zash@zash.se>
parents: 10225
diff changeset
181 return true;
dab2a7a82170 MUC: Validate registration dataform more carefully
Kim Alvefur <zash@zash.se>
parents: 10225
diff changeset
182 end
13871
9eee04a95a25 MUC: Fix nickname registration form error handling (fixes #1930)
Kim Alvefur <zash@zash.se>
parents: 13300
diff changeset
183 local reg_data, form_err = registration_form:data(form_tag);
9eee04a95a25 MUC: Fix nickname registration form error handling (fixes #1930)
Kim Alvefur <zash@zash.se>
parents: 13300
diff changeset
184 if form_err then
9eee04a95a25 MUC: Fix nickname registration form error handling (fixes #1930)
Kim Alvefur <zash@zash.se>
parents: 13300
diff changeset
185 local errs = {};
9eee04a95a25 MUC: Fix nickname registration form error handling (fixes #1930)
Kim Alvefur <zash@zash.se>
parents: 13300
diff changeset
186 for field, err in pairs(form_err) do
9eee04a95a25 MUC: Fix nickname registration form error handling (fixes #1930)
Kim Alvefur <zash@zash.se>
parents: 13300
diff changeset
187 table.insert(errs, field..": "..err);
9eee04a95a25 MUC: Fix nickname registration form error handling (fixes #1930)
Kim Alvefur <zash@zash.se>
parents: 13300
diff changeset
188 end
9eee04a95a25 MUC: Fix nickname registration form error handling (fixes #1930)
Kim Alvefur <zash@zash.se>
parents: 13300
diff changeset
189 origin.send(st.error_reply(stanza, "modify", "bad-request", "Error in form: "..table.concat(errs)));
9240
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
190 return true;
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
191 end
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
192 -- Is the nickname valid?
10794
4585fe53e21f MUC: Enforce strict resourceprep when registering room nicknames
Kim Alvefur <zash@zash.se>
parents: 10448
diff changeset
193 local desired_nick = resourceprep(reg_data["muc#register_roomnick"], true);
9240
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
194 if not desired_nick then
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
195 origin.send(st.error_reply(stanza, "modify", "bad-request", "Invalid Nickname"));
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
196 return true;
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
197 end
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
198 -- Is the nickname currently in use by another user?
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
199 local current_occupant = room:get_occupant_by_nick(room.jid.."/"..desired_nick);
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
200 if current_occupant and current_occupant.bare_jid ~= user_jid then
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
201 origin.send(st.error_reply(stanza, "cancel", "conflict"));
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
202 return true;
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
203 end
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
204 -- Is the nickname currently reserved by another user?
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
205 local reserved_by = get_registered_jid(room, desired_nick);
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
206 if reserved_by and reserved_by ~= user_jid then
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
207 origin.send(st.error_reply(stanza, "cancel", "conflict"));
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
208 return true;
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
209 end
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
210
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
211 if enforce_nick then
9262
37b7cf3470f1 MUC: Move comment for clarity
Matthew Wild <mwild1@gmail.com>
parents: 9240
diff changeset
212 -- Kick any sessions that are not using this nick before we register it
9240
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
213 local required_room_nick = room.jid.."/"..desired_nick;
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
214 for room_nick, occupant in room:each_occupant() do
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
215 if occupant.bare_jid == user_jid and room_nick ~= required_room_nick then
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
216 room:set_role(true, room_nick, nil); -- Kick (TODO: would be nice to use 333 code)
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
217 end
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
218 end
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
219 end
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
220
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
221 -- Checks passed, save the registration
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
222 if registered_nick ~= desired_nick then
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
223 local registration_data = { reserved_nickname = desired_nick };
11286
336cba957c88 MUC: Allow modules to add to the room registration form, and handle the result
Matthew Wild <mwild1@gmail.com>
parents: 10794
diff changeset
224 module:fire_event("muc-registration-submitted", {
336cba957c88 MUC: Allow modules to add to the room registration form, and handle the result
Matthew Wild <mwild1@gmail.com>
parents: 10794
diff changeset
225 room = room;
336cba957c88 MUC: Allow modules to add to the room registration form, and handle the result
Matthew Wild <mwild1@gmail.com>
parents: 10794
diff changeset
226 origin = origin;
336cba957c88 MUC: Allow modules to add to the room registration form, and handle the result
Matthew Wild <mwild1@gmail.com>
parents: 10794
diff changeset
227 stanza = stanza;
336cba957c88 MUC: Allow modules to add to the room registration form, and handle the result
Matthew Wild <mwild1@gmail.com>
parents: 10794
diff changeset
228 submitted_data = reg_data;
336cba957c88 MUC: Allow modules to add to the room registration form, and handle the result
Matthew Wild <mwild1@gmail.com>
parents: 10794
diff changeset
229 affiliation_data = registration_data;
336cba957c88 MUC: Allow modules to add to the room registration form, and handle the result
Matthew Wild <mwild1@gmail.com>
parents: 10794
diff changeset
230 });
9298
2d71040a959f MUC: If a user with an existing affiliation registers, preserve that affiliation (thanks jc)
Matthew Wild <mwild1@gmail.com>
parents: 9262
diff changeset
231 local ok, err_type, err_condition = room:set_affiliation(true, user_jid, affiliation or "member", nil, registration_data);
9240
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
232 if not ok then
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
233 origin.send(st.error_reply(stanza, err_type, err_condition));
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
234 return true;
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
235 end
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
236 module:log("debug", "Saved nick registration for %s: %s", user_jid, desired_nick);
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
237 origin.send(reply);
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
238 return true;
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
239 end
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
240 end
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
241 origin.send(reply);
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
242 return true;
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
243 end
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
244
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
245 return {
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
246 get_registered_nick = get_registered_nick;
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
247 get_registered_jid = get_registered_jid;
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
248 handle_register_iq = handle_register_iq;
f9a83aca4421 MUC: Add support for registering with a MUC, including reserving a nickname as per XEP-0045
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
249 }