Mercurial > prosody-modules
diff mod_http_upload/mod_http_upload.lua @ 3625:a578b4977bb0
mod_http_upload: Duplicate mime types handling from mod_http_files (fixes #1374)
When using net.http.files this isn't automatically provided via
mod_http_files so we need to do it ourselves.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Sat, 29 Jun 2019 19:26:08 +0200 |
parents | d8cc8b71a199 |
children | aa12b95a6d36 |
line wrap: on
line diff
--- a/mod_http_upload/mod_http_upload.lua Wed Jun 26 21:45:50 2019 +0200 +++ b/mod_http_upload/mod_http_upload.lua Sat Jun 29 19:26:08 2019 +0200 @@ -52,6 +52,35 @@ http_files = module:depends"http_files"; end +local mime_map = module:shared("/*/http_files/mime").types; +if not mime_map then + mime_map = { + html = "text/html", htm = "text/html", + xml = "application/xml", + txt = "text/plain", + css = "text/css", + js = "application/javascript", + png = "image/png", + gif = "image/gif", + jpeg = "image/jpeg", jpg = "image/jpeg", + svg = "image/svg+xml", + }; + module:shared("/*/http_files/mime").types = mime_map; + + local mime_types, err = io.open(module:get_option_path("mime_types_file", "/etc/mime.types", "config"), "r"); + if mime_types then + local mime_data = mime_types:read("*a"); + mime_types:close(); + setmetatable(mime_map, { + __index = function(t, ext) + local typ = mime_data:match("\n(%S+)[^\n]*%s"..(ext:lower()).."%s") or "application/octet-stream"; + t[ext] = typ; + return typ; + end + }); + end +end + -- namespaces local namespace = "urn:xmpp:http:upload:0"; local legacy_namespace = "urn:xmpp:http:upload"; @@ -342,7 +371,7 @@ end end -local serve_uploaded_files = http_files.serve(storage_path); +local serve_uploaded_files = http_files.serve({ path = storage_path, mime_map = mime_map }); local function serve_head(event, path) set_cross_domain_headers(event.response);