author | Kim Alvefur <zash@zash.se> |
Mon, 12 Dec 2022 07:07:13 +0100 | |
branch | 0.12 |
changeset 12803 | 3784a8ce0596 |
parent 12033 | 631b2afa7bc1 |
child 12981 | 74b9e05af71e |
permissions | -rw-r--r-- |
9243
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
|
1 |
local jid_bare = require "util.jid".bare; |
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
|
2 |
local jid_resource = require "util.jid".resource; |
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
|
3 |
local resourceprep = require "util.encodings".stringprep.resourceprep; |
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
|
4 |
local st = require "util.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
|
5 |
local dataforms = require "util.dataforms"; |
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 |
|
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
|
7 |
local allow_unaffiliated = module:get_option_boolean("allow_unaffiliated_register", 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
|
8 |
|
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
|
9 |
local enforce_nick = module:get_option_boolean("enforce_registered_nickname", 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
|
10 |
|
11910
ba3344926e18
MUC: Add option to include form in registration query
Matthew Wild <mwild1@gmail.com>
parents:
11290
diff
changeset
|
11 |
-- 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:
11290
diff
changeset
|
12 |
-- 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:
11290
diff
changeset
|
13 |
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:
11290
diff
changeset
|
14 |
|
9243
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
|
15 |
-- 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
|
16 |
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
|
17 |
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
|
18 |
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
|
19 |
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
|
20 |
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
|
21 |
local reserved_nicks = {}; |
10229
9bdd9b6bf362
MUC: Simplify nickname refresh loop
Kim Alvefur <zash@zash.se>
parents:
9301
diff
changeset
|
22 |
for jid, _, data in room:each_affiliation() do |
9243
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
|
23 |
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
|
24 |
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
|
25 |
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
|
26 |
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
|
27 |
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
|
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 |
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
|
30 |
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
|
31 |
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
|
32 |
|
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 |
-- 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
|
34 |
-- 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
|
35 |
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
|
36 |
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
|
37 |
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
|
38 |
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
|
39 |
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
|
40 |
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
|
41 |
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
|
42 |
|
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 |
-- 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
|
44 |
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
|
45 |
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
|
46 |
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
|
47 |
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
|
48 |
|
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 |
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
|
50 |
-- 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
|
51 |
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
|
52 |
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
|
53 |
|
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 |
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
|
55 |
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
|
56 |
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
|
57 |
|
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 |
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
|
59 |
{ name = "FORM_TYPE", type = "hidden", value = "http://jabber.org/protocol/muc#register" }, |
10377
51ea82f55322
MUC: Make nickname field in registration form required
Kim Alvefur <zash@zash.se>
parents:
10347
diff
changeset
|
60 |
{ name = "muc#register_roomnick", type = "text-single", required = true, label = "Nickname"}, |
9243
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
|
61 |
}; |
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 |
|
11290
336cba957c88
MUC: Allow modules to add to the room registration form, and handle the result
Matthew Wild <mwild1@gmail.com>
parents:
10798
diff
changeset
|
63 |
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:
10798
diff
changeset
|
64 |
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:
10798
diff
changeset
|
65 |
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:
10798
diff
changeset
|
66 |
end, function (event) |
336cba957c88
MUC: Allow modules to add to the room registration form, and handle the result
Matthew Wild <mwild1@gmail.com>
parents:
10798
diff
changeset
|
67 |
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:
10798
diff
changeset
|
68 |
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:
10798
diff
changeset
|
69 |
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:
10798
diff
changeset
|
70 |
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:
10798
diff
changeset
|
71 |
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:
10798
diff
changeset
|
72 |
break; |
336cba957c88
MUC: Allow modules to add to the room registration form, and handle the result
Matthew Wild <mwild1@gmail.com>
parents:
10798
diff
changeset
|
73 |
end |
336cba957c88
MUC: Allow modules to add to the room registration form, and handle the result
Matthew Wild <mwild1@gmail.com>
parents:
10798
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:
10798
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:
10798
diff
changeset
|
76 |
|
9243
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
|
77 |
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
|
78 |
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
|
79 |
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
|
80 |
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
|
81 |
|
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 |
-- 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
|
83 |
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
|
84 |
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
|
85 |
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
|
86 |
module:log("debug", "%s attempted to use nick %s reserved by %s", stanza.attr.from, requested_nick, reserved_by); |
10452
cbe524ed1a6a
MUC: Indicate origin of registration related errors
Kim Alvefur <zash@zash.se>
parents:
10377
diff
changeset
|
87 |
local reply = st.error_reply(stanza, "cancel", "conflict", nil, room.jid):up(); |
12033
631b2afa7bc1
MUC: Remove <{muc}x> tags in some errors
Kim Alvefur <zash@zash.se>
parents:
12032
diff
changeset
|
88 |
origin.send(reply); |
9243
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
|
89 |
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
|
90 |
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
|
91 |
|
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 |
-- 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
|
93 |
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
|
94 |
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
|
95 |
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
|
96 |
if event.occupant 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 |
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
|
98 |
elseif event.dest_occupant.nick ~= jid_bare(event.dest_occupant.nick) .. "/" .. 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
|
99 |
module:log("debug", "Attempt by %s to join as %s, but their reserved nick is %s", stanza.attr.from, requested_nick, nick); |
10452
cbe524ed1a6a
MUC: Indicate origin of registration related errors
Kim Alvefur <zash@zash.se>
parents:
10377
diff
changeset
|
100 |
local reply = st.error_reply(stanza, "cancel", "not-acceptable", nil, room.jid):up(); |
12033
631b2afa7bc1
MUC: Remove <{muc}x> tags in some errors
Kim Alvefur <zash@zash.se>
parents:
12032
diff
changeset
|
101 |
origin.send(reply); |
9243
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 |
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
|
103 |
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
|
104 |
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
|
105 |
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
|
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 |
|
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 |
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
|
109 |
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
|
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 |
-- 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
|
112 |
-- 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
|
113 |
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
|
114 |
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
|
115 |
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
|
116 |
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
|
117 |
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
|
118 |
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
|
119 |
|
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 |
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
|
121 |
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
|
122 |
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
|
123 |
if affiliation == "outcast" then |
12032
9ab202e942f5
MUC: Fix error origin JID in wrong argument position
Kim Alvefur <zash@zash.se>
parents:
11910
diff
changeset
|
124 |
origin.send(st.error_reply(stanza, "auth", "forbidden")); |
9243
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 |
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
|
126 |
elseif not (affiliation or allow_unaffiliated) 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
|
127 |
origin.send(st.error_reply(stanza, "auth", "registration-required")); |
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; |
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
|
129 |
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
|
130 |
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
|
131 |
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
|
132 |
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
|
133 |
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
|
134 |
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
|
135 |
reply:tag("registered"):up(); |
11910
ba3344926e18
MUC: Add option to include form in registration query
Matthew Wild <mwild1@gmail.com>
parents:
11290
diff
changeset
|
136 |
reply:tag("username"):text(registered_nick):up(); |
ba3344926e18
MUC: Add option to include form in registration query
Matthew Wild <mwild1@gmail.com>
parents:
11290
diff
changeset
|
137 |
if include_reg_form then |
ba3344926e18
MUC: Add option to include form in registration query
Matthew Wild <mwild1@gmail.com>
parents:
11290
diff
changeset
|
138 |
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:
11290
diff
changeset
|
139 |
if aff_data then |
ba3344926e18
MUC: Add option to include form in registration query
Matthew Wild <mwild1@gmail.com>
parents:
11290
diff
changeset
|
140 |
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:
11290
diff
changeset
|
141 |
end |
ba3344926e18
MUC: Add option to include form in registration query
Matthew Wild <mwild1@gmail.com>
parents:
11290
diff
changeset
|
142 |
end |
9243
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 |
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
|
144 |
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
|
145 |
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
|
146 |
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
|
147 |
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
|
148 |
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
|
149 |
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
|
150 |
-- 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
|
151 |
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
|
152 |
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
|
153 |
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
|
154 |
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
|
155 |
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
|
156 |
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
|
157 |
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
|
158 |
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
|
159 |
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
|
160 |
local form_tag = query:get_child("x", "jabber:x:data"); |
10346
dab2a7a82170
MUC: Validate registration dataform more carefully
Kim Alvefur <zash@zash.se>
parents:
10229
diff
changeset
|
161 |
if not form_tag then |
dab2a7a82170
MUC: Validate registration dataform more carefully
Kim Alvefur <zash@zash.se>
parents:
10229
diff
changeset
|
162 |
origin.send(st.error_reply(stanza, "modify", "bad-request", "Missing dataform")); |
dab2a7a82170
MUC: Validate registration dataform more carefully
Kim Alvefur <zash@zash.se>
parents:
10229
diff
changeset
|
163 |
return true; |
dab2a7a82170
MUC: Validate registration dataform more carefully
Kim Alvefur <zash@zash.se>
parents:
10229
diff
changeset
|
164 |
end |
dab2a7a82170
MUC: Validate registration dataform more carefully
Kim Alvefur <zash@zash.se>
parents:
10229
diff
changeset
|
165 |
local form_type, err = dataforms.get_type(form_tag); |
dab2a7a82170
MUC: Validate registration dataform more carefully
Kim Alvefur <zash@zash.se>
parents:
10229
diff
changeset
|
166 |
if not form_type then |
dab2a7a82170
MUC: Validate registration dataform more carefully
Kim Alvefur <zash@zash.se>
parents:
10229
diff
changeset
|
167 |
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:
10229
diff
changeset
|
168 |
return true; |
dab2a7a82170
MUC: Validate registration dataform more carefully
Kim Alvefur <zash@zash.se>
parents:
10229
diff
changeset
|
169 |
elseif form_type ~= "http://jabber.org/protocol/muc#register" then |
dab2a7a82170
MUC: Validate registration dataform more carefully
Kim Alvefur <zash@zash.se>
parents:
10229
diff
changeset
|
170 |
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:
10229
diff
changeset
|
171 |
return true; |
dab2a7a82170
MUC: Validate registration dataform more carefully
Kim Alvefur <zash@zash.se>
parents:
10229
diff
changeset
|
172 |
end |
dab2a7a82170
MUC: Validate registration dataform more carefully
Kim Alvefur <zash@zash.se>
parents:
10229
diff
changeset
|
173 |
local reg_data = registration_form:data(form_tag); |
9243
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
|
174 |
if not reg_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
|
175 |
origin.send(st.error_reply(stanza, "modify", "bad-request", "Error in 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
|
176 |
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
|
177 |
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
|
178 |
-- Is the nickname valid? |
10798
4585fe53e21f
MUC: Enforce strict resourceprep when registering room nicknames
Kim Alvefur <zash@zash.se>
parents:
10452
diff
changeset
|
179 |
local desired_nick = resourceprep(reg_data["muc#register_roomnick"], true); |
9243
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
|
180 |
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
|
181 |
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
|
182 |
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
|
183 |
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
|
184 |
-- 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
|
185 |
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
|
186 |
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
|
187 |
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
|
188 |
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
|
189 |
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
|
190 |
-- 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
|
191 |
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
|
192 |
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
|
193 |
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
|
194 |
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
|
195 |
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
|
196 |
|
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 |
if enforce_nick then |
9265
37b7cf3470f1
MUC: Move comment for clarity
Matthew Wild <mwild1@gmail.com>
parents:
9243
diff
changeset
|
198 |
-- Kick any sessions that are not using this nick before we register it |
9243
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 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
|
200 |
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
|
201 |
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
|
202 |
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
|
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 |
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
|
205 |
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
|
206 |
|
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 |
-- 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
|
208 |
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
|
209 |
local registration_data = { reserved_nickname = desired_nick }; |
11290
336cba957c88
MUC: Allow modules to add to the room registration form, and handle the result
Matthew Wild <mwild1@gmail.com>
parents:
10798
diff
changeset
|
210 |
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:
10798
diff
changeset
|
211 |
room = room; |
336cba957c88
MUC: Allow modules to add to the room registration form, and handle the result
Matthew Wild <mwild1@gmail.com>
parents:
10798
diff
changeset
|
212 |
origin = origin; |
336cba957c88
MUC: Allow modules to add to the room registration form, and handle the result
Matthew Wild <mwild1@gmail.com>
parents:
10798
diff
changeset
|
213 |
stanza = stanza; |
336cba957c88
MUC: Allow modules to add to the room registration form, and handle the result
Matthew Wild <mwild1@gmail.com>
parents:
10798
diff
changeset
|
214 |
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:
10798
diff
changeset
|
215 |
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:
10798
diff
changeset
|
216 |
}); |
9301
2d71040a959f
MUC: If a user with an existing affiliation registers, preserve that affiliation (thanks jc)
Matthew Wild <mwild1@gmail.com>
parents:
9265
diff
changeset
|
217 |
local ok, err_type, err_condition = room:set_affiliation(true, user_jid, affiliation or "member", nil, registration_data); |
9243
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 |
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
|
219 |
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
|
220 |
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
|
221 |
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
|
222 |
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
|
223 |
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
|
224 |
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
|
225 |
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
|
226 |
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
|
227 |
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
|
228 |
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
|
229 |
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
|
230 |
|
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
|
231 |
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
|
232 |
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
|
233 |
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
|
234 |
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
|
235 |
} |