comparison mod_pastebin/mod_pastebin.lua @ 2766:314cebb3071e

mod_pastebin: Check for MUC presence before handling a message. Fixes #955.
author Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
date Tue, 19 Sep 2017 18:47:18 +0200
parents 7dbde05b48a9
children 26fe44c68791
comparison
equal deleted inserted replaced
2765:85cf9a8b4020 2766:314cebb3071e
3 module:depends("http"); 3 module:depends("http");
4 local uuid_new = require "util.uuid".generate; 4 local uuid_new = require "util.uuid".generate;
5 local os_time = os.time; 5 local os_time = os.time;
6 local t_insert, t_remove = table.insert, table.remove; 6 local t_insert, t_remove = table.insert, table.remove;
7 local add_task = require "util.timer".add_task; 7 local add_task = require "util.timer".add_task;
8 local jid_bare = require "util.jid".bare;
9 local muc_rooms = module:depends "muc".rooms;
8 10
9 local utf8_pattern = "[\194-\244][\128-\191]*$"; 11 local utf8_pattern = "[\194-\244][\128-\191]*$";
10 local function drop_invalid_utf8(seq) 12 local function drop_invalid_utf8(seq)
11 local start = seq:byte(); 13 local start = seq:byte();
12 module:log("debug", "utf8: %d, %d", start, #seq); 14 module:log("debug", "utf8: %d, %d", start, #seq);
65 return pastes[pasteid]; 67 return pastes[pasteid];
66 end 68 end
67 69
68 function check_message(data) 70 function check_message(data)
69 local origin, stanza = data.origin, data.stanza; 71 local origin, stanza = data.origin, data.stanza;
72
73 -- Only check for MUC presence when loaded on a component.
74 if module:get_host_type() == "component" then
75 local room = muc_rooms[jid_bare(stanza.attr.to)];
76 if not room then return; end
77
78 local nick = room._jid_nick[stanza.attr.from];
79 if not nick then return; end
80 end
70 81
71 local body, bodyindex, htmlindex; 82 local body, bodyindex, htmlindex;
72 for k,v in ipairs(stanza) do 83 for k,v in ipairs(stanza) do
73 if v.name == "body" then 84 if v.name == "body" then
74 body, bodyindex = v, k; 85 body, bodyindex = v, k;