Mercurial > prosody-modules
comparison mod_http_upload/mod_http_upload.lua @ 2207:c45ad4b7aaa3
mod_http_upload: Add additional debug logging
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Sun, 12 Jun 2016 02:51:08 +0200 |
parents | 40824a38d505 |
children | e654d6e1fb50 |
comparison
equal
deleted
inserted
replaced
2206:724809023c92 | 2207:c45ad4b7aaa3 |
---|---|
48 module:hook("iq/host/"..xmlns_http_upload..":request", function (event) | 48 module:hook("iq/host/"..xmlns_http_upload..":request", function (event) |
49 local stanza, origin = event.stanza, event.origin; | 49 local stanza, origin = event.stanza, event.origin; |
50 local request = stanza.tags[1]; | 50 local request = stanza.tags[1]; |
51 -- local clients only | 51 -- local clients only |
52 if origin.type ~= "c2s" then | 52 if origin.type ~= "c2s" then |
53 module:log("debug", "Request for upload slot from a %s", origin.type); | |
53 origin.send(st.error_reply(stanza, "cancel", "not-authorized")); | 54 origin.send(st.error_reply(stanza, "cancel", "not-authorized")); |
54 return true; | 55 return true; |
55 end | 56 end |
56 -- validate | 57 -- validate |
57 local filename = request:get_child_text("filename"); | 58 local filename = request:get_child_text("filename"); |
58 if not filename or filename:find("/") then | 59 if not filename or filename:find("/") then |
60 module:log("debug", "Filename %q not allowed", filename or ""); | |
59 origin.send(st.error_reply(stanza, "modify", "bad-request", "Invalid filename")); | 61 origin.send(st.error_reply(stanza, "modify", "bad-request", "Invalid filename")); |
60 return true; | 62 return true; |
61 end | 63 end |
62 local filesize = tonumber(request:get_child_text("size")); | 64 local filesize = tonumber(request:get_child_text("size")); |
63 if not filesize then | 65 if not filesize then |
66 module:log("debug", "Missing file size"); | |
64 origin.send(st.error_reply(stanza, "modify", "bad-request", "Missing or invalid file size")); | 67 origin.send(st.error_reply(stanza, "modify", "bad-request", "Missing or invalid file size")); |
65 return true; | 68 return true; |
66 elseif filesize > file_size_limit then | 69 elseif filesize > file_size_limit then |
67 origin.send(st.error_reply(stanza, "modify", "not-acceptable", "File too large", | 70 origin.send(st.error_reply(stanza, "modify", "not-acceptable", "File too large", |
68 st.stanza("file-too-large", {xmlns=xmlns_http_upload}) | 71 st.stanza("file-too-large", {xmlns=xmlns_http_upload}) |
75 pending_slots[random.."/"..filename] = origin.full_jid; | 78 pending_slots[random.."/"..filename] = origin.full_jid; |
76 local url = module:http_url() .. "/" .. random .. "/" .. urlencode(filename); | 79 local url = module:http_url() .. "/" .. random .. "/" .. urlencode(filename); |
77 reply:tag("get"):text(url):up(); | 80 reply:tag("get"):text(url):up(); |
78 reply:tag("put"):text(url):up(); | 81 reply:tag("put"):text(url):up(); |
79 origin.send(reply); | 82 origin.send(reply); |
83 origin.log("debug", "Given upload slot %q", random); | |
80 return true; | 84 return true; |
81 end); | 85 end); |
82 | 86 |
83 -- http service | 87 -- http service |
84 local function upload_data(event, path) | 88 local function upload_data(event, path) |
86 module:log("warn", "Attempt to upload to unknown slot %q", path); | 90 module:log("warn", "Attempt to upload to unknown slot %q", path); |
87 return; -- 404 | 91 return; -- 404 |
88 end | 92 end |
89 local random, filename = path:match("^([^/]+)/([^/]+)$"); | 93 local random, filename = path:match("^([^/]+)/([^/]+)$"); |
90 if not random then | 94 if not random then |
95 module:log("warn", "Invalid file path %q", path); | |
91 return 400; | 96 return 400; |
92 end | 97 end |
93 if #event.request.body > file_size_limit then | 98 if #event.request.body > file_size_limit then |
94 module:log("warn", "Uploaded file too large %d bytes", #event.request.body); | 99 module:log("warn", "Uploaded file too large %d bytes", #event.request.body); |
95 return 400; | 100 return 400; |