comparison mod_pastebin/mod_pastebin.lua @ 3139:03cda95ae97a

mod_pastebin: Prevent header table form being mutated default_headers was mutated, probably by mod_http_errors and ended up with multiple content-type entries, which led to issues in browsers which would sometimes treat the paste as html
author Kim Alvefur <zash@zash.se>
date Sat, 23 Jun 2018 16:37:15 +0200
parents c88f91626e07
children 11087a72990b
comparison
equal deleted inserted replaced
3138:9817e45a79e6 3139:03cda95ae97a
49 49
50 local trigger_string = module:get_option_string("pastebin_trigger"); 50 local trigger_string = module:get_option_string("pastebin_trigger");
51 trigger_string = (trigger_string and trigger_string .. " "); 51 trigger_string = (trigger_string and trigger_string .. " ");
52 52
53 local pastes = {}; 53 local pastes = {};
54 local default_headers = { ["Content-Type"] = "text/plain; charset=utf-8" };
55 54
56 local xmlns_xhtmlim = "http://jabber.org/protocol/xhtml-im"; 55 local xmlns_xhtmlim = "http://jabber.org/protocol/xhtml-im";
57 local xmlns_xhtml = "http://www.w3.org/1999/xhtml"; 56 local xmlns_xhtml = "http://www.w3.org/1999/xhtml";
58 57
59 function pastebin_text(text) 58 function pastebin_text(text)
65 end 64 end
66 return base_url..uuid; 65 return base_url..uuid;
67 end 66 end
68 67
69 function handle_request(event, pasteid) 68 function handle_request(event, pasteid)
70 if not pasteid or not pastes[pasteid] then 69 event.response.headers.content_type = "text/plain; charset=utf-8";
71 event.response.headers = default_headers; 70
72 return event.response:send("Invalid paste id, perhaps it expired?"); 71 if not pasteid then
72 return "Invalid paste id, perhaps it expired?";
73 end 73 end
74 74
75 --module:log("debug", "Received request, replying: %s", pastes[pasteid].text); 75 --module:log("debug", "Received request, replying: %s", pastes[pasteid].text);
76 76 local paste = pastes[pasteid];
77 return pastes[pasteid]; 77
78 if not paste then
79 return "Invalid paste id, perhaps it expired?";
80 end
81
82 return paste.body;
78 end 83 end
79 84
80 local function replace_tag(s, replacement) 85 local function replace_tag(s, replacement)
81 local once = false; 86 local once = false;
82 s:maptags(function (tag) 87 s:maptags(function (tag)