mod_track_muc_joins/mod_track_muc_joins.lua
changeset 2161 7d1a22ac2a21
parent 2160 3fcac143fe0b
child 2162 de3fb9d2673c
equal deleted inserted replaced
2160:3fcac143fe0b 2161:7d1a22ac2a21
     5 	local stanza = event.stanza;
     5 	local stanza = event.stanza;
     6 	local session = sessions[stanza.attr.to];
     6 	local session = sessions[stanza.attr.to];
     7 	if not session then return end;
     7 	if not session then return end;
     8 	local log = session.log or module._log;
     8 	local log = session.log or module._log;
     9 
     9 
    10 	local from_jid = stanza.attr.from;
       
    11 	if not session.directed or not session.directed[from_jid] then
       
    12 		return; -- Never sent presence there, can't be a MUC join
       
    13 	end
       
    14 
       
    15 	local muc_x = stanza:get_child("x", "http://jabber.org/protocol/muc#user");
    10 	local muc_x = stanza:get_child("x", "http://jabber.org/protocol/muc#user");
    16 	if not muc_x then return end -- Not MUC related
    11 	if not muc_x then return end -- Not MUC related
    17 
    12 
       
    13 	local from_jid = stanza.attr.from;
    18 	local room = jid_bare(from_jid);
    14 	local room = jid_bare(from_jid);
    19 	local joined = stanza.attr.type;
    15 	local joined = stanza.attr.type;
    20 	if joined == nil then
    16 	if joined == nil then
    21 		joined = true;
    17 		joined = true;
    22 	elseif joined == "unavailable" then
    18 	elseif joined == "unavailable" then
    23 		joined = nil;
    19 		joined = nil;
    24 	else
    20 	else
    25 		-- Ignore errors and whatever
    21 		-- Ignore errors and whatever
    26 		return;
    22 		return;
       
    23 	end
       
    24 
       
    25 	if joined and not session.directed or not session.directed[from_jid] then
       
    26 		return; -- Never sent presence there, can't be a MUC join
    27 	end
    27 	end
    28 
    28 
    29 	-- Check for status code 100, meaning it's their own reflected presence
    29 	-- Check for status code 100, meaning it's their own reflected presence
    30 	for status in muc_x:childtags("status") do
    30 	for status in muc_x:childtags("status") do
    31 		log("debug", "Status code %d", status.attr.code);
    31 		log("debug", "Status code %d", status.attr.code);