Software / code / prosody
Annotate
plugins/muc/register.lib.lua @ 12095:c1d2bc6603ae
moduleapi: Support stripping of multi-word from module names
The goal is to allow module:provides("foo-bar") with a mod_foo_bar_ prefix
being stripped. It will break any existing modules that use a prefix and have
hyphens instead of underscores. No such modules are known.
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Wed, 22 Dec 2021 14:40:42 +0000 |
| parent | 12029:631b2afa7bc1 |
| child | 12977:74b9e05af71e |
| rev | line source |
|---|---|
|
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
|
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 |
|
11906
ba3344926e18
MUC: Add option to include form in registration query
Matthew Wild <mwild1@gmail.com>
parents:
11286
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:
11286
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:
11286
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:
11286
diff
changeset
|
14 |
|
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
|
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 = {}; |
|
10225
9bdd9b6bf362
MUC: Simplify nickname refresh loop
Kim Alvefur <zash@zash.se>
parents:
9298
diff
changeset
|
22 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
|
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" }, |
|
10373
51ea82f55322
MUC: Make nickname field in registration form required
Kim Alvefur <zash@zash.se>
parents:
10343
diff
changeset
|
60 { 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
|
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 |
|
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
|
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:
10794
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:
10794
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:
10794
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:
10794
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:
10794
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:
10794
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:
10794
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:
10794
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:
10794
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:
10794
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:
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 |
|
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
|
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); |
|
10448
cbe524ed1a6a
MUC: Indicate origin of registration related errors
Kim Alvefur <zash@zash.se>
parents:
10373
diff
changeset
|
87 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
|
88 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
|
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); |
|
10448
cbe524ed1a6a
MUC: Indicate origin of registration related errors
Kim Alvefur <zash@zash.se>
parents:
10373
diff
changeset
|
100 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
|
101 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
|
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 |
|
12028
9ab202e942f5
MUC: Fix error origin JID in wrong argument position
Kim Alvefur <zash@zash.se>
parents:
11906
diff
changeset
|
124 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
|
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(); |
|
11906
ba3344926e18
MUC: Add option to include form in registration query
Matthew Wild <mwild1@gmail.com>
parents:
11286
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:
11286
diff
changeset
|
137 if include_reg_form then |
|
ba3344926e18
MUC: Add option to include form in registration query
Matthew Wild <mwild1@gmail.com>
parents:
11286
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:
11286
diff
changeset
|
139 if aff_data then |
|
ba3344926e18
MUC: Add option to include form in registration query
Matthew Wild <mwild1@gmail.com>
parents:
11286
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:
11286
diff
changeset
|
141 end |
|
ba3344926e18
MUC: Add option to include form in registration query
Matthew Wild <mwild1@gmail.com>
parents:
11286
diff
changeset
|
142 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
|
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"); |
|
10342
dab2a7a82170
MUC: Validate registration dataform more carefully
Kim Alvefur <zash@zash.se>
parents:
10225
diff
changeset
|
161 if not form_tag then |
|
dab2a7a82170
MUC: Validate registration dataform more carefully
Kim Alvefur <zash@zash.se>
parents:
10225
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:
10225
diff
changeset
|
163 return true; |
|
dab2a7a82170
MUC: Validate registration dataform more carefully
Kim Alvefur <zash@zash.se>
parents:
10225
diff
changeset
|
164 end |
|
dab2a7a82170
MUC: Validate registration dataform more carefully
Kim Alvefur <zash@zash.se>
parents:
10225
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:
10225
diff
changeset
|
166 if not form_type then |
|
dab2a7a82170
MUC: Validate registration dataform more carefully
Kim Alvefur <zash@zash.se>
parents:
10225
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:
10225
diff
changeset
|
168 return true; |
|
dab2a7a82170
MUC: Validate registration dataform more carefully
Kim Alvefur <zash@zash.se>
parents:
10225
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:
10225
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:
10225
diff
changeset
|
171 return true; |
|
dab2a7a82170
MUC: Validate registration dataform more carefully
Kim Alvefur <zash@zash.se>
parents:
10225
diff
changeset
|
172 end |
|
dab2a7a82170
MUC: Validate registration dataform more carefully
Kim Alvefur <zash@zash.se>
parents:
10225
diff
changeset
|
173 local reg_data = registration_form:data(form_tag); |
|
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
|
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? |
|
10794
4585fe53e21f
MUC: Enforce strict resourceprep when registering room nicknames
Kim Alvefur <zash@zash.se>
parents:
10448
diff
changeset
|
179 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
|
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 |
|
9262
37b7cf3470f1
MUC: Move comment for clarity
Matthew Wild <mwild1@gmail.com>
parents:
9240
diff
changeset
|
198 -- 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
|
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 }; |
|
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
|
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:
10794
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:
10794
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:
10794
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:
10794
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:
10794
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:
10794
diff
changeset
|
216 }); |
|
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
|
217 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
|
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 } |