comparison mod_pastebin/mod_pastebin.lua @ 5872:8aec430ba205

mod_pastebin: Back out 040eaa3844f4 Triggered error in Lua with if set over 200 and a 200+ line line message is checked.
author Kim Alvefur <zash@zash.se>
date Thu, 21 Mar 2024 19:44:27 +0100
parents f821eeac0e50
children ad9026b6a714
comparison
equal deleted inserted replaced
5871:1c8197075d04 5872:8aec430ba205
98 if not once then 98 if not once then
99 s:add_child(replacement); 99 s:add_child(replacement);
100 end 100 end
101 end 101 end
102 102
103 local line_count_pattern = string.rep("[^\n]*\n", line_threshold + 1):sub(1,-2);
104
105 function check_message(data) 103 function check_message(data)
106 local stanza = data.stanza; 104 local stanza = data.stanza;
107 105
108 -- Only check for MUC presence when loaded on a component. 106 -- Only check for MUC presence when loaded on a component.
109 if is_component then 107 if is_component then
120 118
121 --module:log("debug", "Body(%s) length: %d", type(body), #(body or "")); 119 --module:log("debug", "Body(%s) length: %d", type(body), #(body or ""));
122 120
123 if ( #body > length_threshold and utf8_length(body) > length_threshold ) or 121 if ( #body > length_threshold and utf8_length(body) > length_threshold ) or
124 (trigger_string and body:find(trigger_string, 1, true) == 1) or 122 (trigger_string and body:find(trigger_string, 1, true) == 1) or
125 body:find(line_count_pattern) then 123 (select(2, body:gsub("\n", "%0")) >= line_threshold)
124 then
126 if trigger_string and body:sub(1, #trigger_string) == trigger_string then 125 if trigger_string and body:sub(1, #trigger_string) == trigger_string then
127 body = body:sub(#trigger_string+1); 126 body = body:sub(#trigger_string+1);
128 end 127 end
129 local url = pastebin_text(body); 128 local url = pastebin_text(body);
130 module:log("debug", "Pasted message as %s", url); 129 module:log("debug", "Pasted message as %s", url);