|
@@ -6,6 +6,7 @@ local parse = neturl.parseQuery;
|
6
|
6
|
local st = require "util.stanza";
|
7
|
7
|
local get_room_from_jid = module:require "util".get_room_from_jid;
|
8
|
8
|
local wrap_async_run = module:require "util".wrap_async_run;
|
|
9
|
+local update_presence_identity = module:require "util".update_presence_identity;
|
9
|
10
|
local timer = require "util.timer";
|
10
|
11
|
local MUC_NS = "http://jabber.org/protocol/muc";
|
11
|
12
|
|
|
@@ -114,8 +115,9 @@ end
|
114
|
115
|
-- @param token the token we received
|
115
|
116
|
-- @param room_name the room name
|
116
|
117
|
-- @param group name of the group (optional)
|
|
118
|
+-- @param session the session to use for storing token specific fields
|
117
|
119
|
-- @return true if values are ok or false otherwise
|
118
|
|
-function verify_token(token, room_name, group)
|
|
120
|
+function verify_token(token, room_name, group, session)
|
119
|
121
|
if disableTokenVerification then
|
120
|
122
|
return true;
|
121
|
123
|
end
|
|
@@ -129,7 +131,6 @@ function verify_token(token, room_name, group)
|
129
|
131
|
return false;
|
130
|
132
|
end
|
131
|
133
|
|
132
|
|
- local session = {};
|
133
|
134
|
session.auth_token = token;
|
134
|
135
|
local verified, reason = token_util:process_and_verify_token(session);
|
135
|
136
|
if not verified then
|
|
@@ -200,7 +201,8 @@ end);
|
200
|
201
|
-- @param name the display name fot the occupant (optional)
|
201
|
202
|
-- @param avatar the avatar to use for the new occupant (optional)
|
202
|
203
|
-- @param status the initial status to use for the new occupant (optional)
|
203
|
|
-function create_poltergeist_occupant(room, nick, name, avatar, status)
|
|
204
|
+-- @param context the information that we will store for this poltergeist
|
|
205
|
+function create_poltergeist_occupant(room, nick, name, avatar, status, context)
|
204
|
206
|
log("debug", "create_poltergeist_occupant %s", nick);
|
205
|
207
|
-- Join poltergeist occupant to room, with the invited JID as their nick
|
206
|
208
|
local join_presence = st.presence({
|
|
@@ -227,6 +229,14 @@ function create_poltergeist_occupant(room, nick, name, avatar, status)
|
227
|
229
|
join:tag("password", { xmlns = MUC_NS }):text(room_password);
|
228
|
230
|
end
|
229
|
231
|
|
|
232
|
+ update_presence_identity(
|
|
233
|
+ join_presence,
|
|
234
|
+ context.user,
|
|
235
|
+ context.group,
|
|
236
|
+ context.creator_user,
|
|
237
|
+ context.creator_group
|
|
238
|
+ );
|
|
239
|
+
|
230
|
240
|
room:handle_first_presence(
|
231
|
241
|
prosody.hosts[poltergeist_component], join_presence);
|
232
|
242
|
|
|
@@ -390,8 +400,9 @@ function handle_create_poltergeist (event)
|
390
|
400
|
local name = params["name"];
|
391
|
401
|
local avatar = params["avatar"];
|
392
|
402
|
local status = params["status"];
|
|
403
|
+ local session = {};
|
393
|
404
|
|
394
|
|
- if not verify_token(params["token"], room_name, group) then
|
|
405
|
+ if not verify_token(params["token"], room_name, group, session) then
|
395
|
406
|
return 403;
|
396
|
407
|
end
|
397
|
408
|
|
|
@@ -410,8 +421,16 @@ function handle_create_poltergeist (event)
|
410
|
421
|
else
|
411
|
422
|
username = generate_uuid();
|
412
|
423
|
store_username(room, user_id, username);
|
|
424
|
+ local context = {
|
|
425
|
+ user = {
|
|
426
|
+ id = user_id;
|
|
427
|
+ };
|
|
428
|
+ group = group;
|
|
429
|
+ creator_user = session.jitsi_meet_context_user;
|
|
430
|
+ creator_group = session.jitsi_meet_context_group;
|
|
431
|
+ };
|
413
|
432
|
create_poltergeist_occupant(
|
414
|
|
- room, string.sub(username, 0, 8), name, avatar, status);
|
|
433
|
+ room, string.sub(username, 0, 8), name, avatar, status, context);
|
415
|
434
|
return 200;
|
416
|
435
|
end
|
417
|
436
|
end
|
|
@@ -430,7 +449,7 @@ function handle_update_poltergeist (event)
|
430
|
449
|
local group = params["group"];
|
431
|
450
|
local status = params["status"];
|
432
|
451
|
|
433
|
|
- if not verify_token(params["token"], room_name, group) then
|
|
452
|
+ if not verify_token(params["token"], room_name, group, {}) then
|
434
|
453
|
return 403;
|
435
|
454
|
end
|
436
|
455
|
|
|
@@ -467,7 +486,7 @@ function handle_remove_poltergeist (event)
|
467
|
486
|
local room_name = params["room"];
|
468
|
487
|
local group = params["group"];
|
469
|
488
|
|
470
|
|
- if not verify_token(params["token"], room_name, group) then
|
|
489
|
+ if not verify_token(params["token"], room_name, group, {}) then
|
471
|
490
|
return 403;
|
472
|
491
|
end
|
473
|
492
|
|