From bbed3920bc9e93523618a7780295120ffe76c37f Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Thu, 22 Aug 2019 13:00:44 +0100 Subject: [PATCH] [Fix] Lua_mime: Fix reversed extensions map --- lualib/lua_mime.lua | 102 +++++++++++++++++++++++++++------ src/plugins/lua/mime_types.lua | 8 --- 2 files changed, 86 insertions(+), 24 deletions(-) diff --git a/lualib/lua_mime.lua b/lualib/lua_mime.lua index f3fe46c4e..e00e39325 100644 --- a/lualib/lua_mime.lua +++ b/lualib/lua_mime.lua @@ -870,21 +870,91 @@ exports.full_extensions_map = { } -- Used to match extension by content type -exports.reversed_extensions_map = {} - -if #exports.reversed_extensions_map == 0 then - -- Fill reversed extensions map - for _,pair in ipairs(exports.full_extensions_map) do - local ext, ct = pair[1], pair[2] - - if type(ct) == 'table' then - for _,rct in ipairs(ct) do - exports.reversed_extensions_map[rct] = ext - end - else - exports.reversed_extensions_map[ct] = ext - end - end -end +exports.reversed_extensions_map = { + ["text/html"] = "html", + ["text/css"] = "css", + ["text/xml"] = "xml", + ["image/gif"] = "gif", + ["image/jpeg"] = "jpeg", + ["application/javascript"] = "js", + ["application/atom+xml"] = "atom", + ["application/rss+xml"] = "rss", + ["application/csv"] = "csv", + ["text/mathml"] = "mml", + ["text/plain"] = "txt", + ["text/vnd.sun.j2me.app-descriptor"] = "jad", + ["text/vnd.wap.wml"] = "wml", + ["text/x-component"] = "htc", + ["image/png"] = "png", + ["image/svg+xml"] = "svg", + ["image/tiff"] = "tiff", + ["image/vnd.wap.wbmp"] = "wbmp", + ["image/webp"] = "webp", + ["image/x-icon"] = "ico", + ["image/x-jng"] = "jng", + ["image/x-ms-bmp"] = "bmp", + ["font/woff"] = "woff", + ["font/woff2"] = "woff2", + ["application/java-archive"] = "jar", + ["application/json"] = "json", + ["application/mac-binhex40"] = "hqx", + ["application/msword"] = "doc", + ["application/pdf"] = "pdf", + ["application/postscript"] = "ps", + ["application/rtf"] = "rtf", + ["application/vnd.apple.mpegurl"] = "m3u8", + ["application/vnd.google-earth.kml+xml"] = "kml", + ["application/vnd.google-earth.kmz"] = "kmz", + ["application/vnd.ms-excel"] = "xls", + ["application/vnd.ms-fontobject"] = "eot", + ["application/vnd.ms-powerpoint"] = "ppt", + ["application/vnd.oasis.opendocument.graphics"] = "odg", + ["application/vnd.oasis.opendocument.presentation"] = "odp", + ["application/vnd.oasis.opendocument.spreadsheet"] = "ods", + ["application/vnd.oasis.opendocument.text"] = "odt", + ["application/vnd.openxmlformats-officedocument.presentationml.presentation"] = "pptx", + ["application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"] = "xlsx", + ["application/vnd.openxmlformats-officedocument.wordprocessingml.document"] = "docx", + ["application/x-7z-compressed"] = "7z", + ["application/x-cocoa"] = "cco", + ["application/x-java-archive-diff"] = "jardiff", + ["application/x-java-jnlp-file"] = "jnlp", + ["application/x-makeself"] = "run", + ["application/x-perl"] = "pl", + ["application/x-pilot"] = "pdb", + ["application/x-rar-compressed"] = "rar", + ["application/x-redhat-package-manager"] = "rpm", + ["application/x-sea"] = "sea", + ["application/x-shockwave-flash"] = "swf", + ["application/x-stuffit"] = "sit", + ["application/x-tcl"] = "tcl", + ["application/x-x509-ca-cert"] = "crt", + ["application/x-xpinstall"] = "xpi", + ["application/xhtml+xml"] = "xhtml", + ["application/xspf+xml"] = "xspf", + ["application/zip"] = "zip", + ["application/x-dosexec"] = "exe", + ["application/x-msdownload"] = "exe", + ["application/x-executable"] = "exe", + ["text/x-msdos-batch"] = "bat", + + ["audio/midi"] = "mid", + ["audio/mpeg"] = "mp3", + ["audio/ogg"] = "ogg", + ["audio/x-m4a"] = "m4a", + ["audio/x-realaudio"] = "ra", + ["video/3gpp"] = "3gpp", + ["video/mp2t"] = "ts", + ["video/mp4"] = "mp4", + ["video/mpeg"] = "mpeg", + ["video/quicktime"] = "mov", + ["video/webm"] = "webm", + ["video/x-flv"] = "flv", + ["video/x-m4v"] = "m4v", + ["video/x-mng"] = "mng", + ["video/x-ms-asf"] = "asx", + ["video/x-ms-wmv"] = "wmv", + ["video/x-msvideo"] = "avi", +} return exports \ No newline at end of file diff --git a/src/plugins/lua/mime_types.lua b/src/plugins/lua/mime_types.lua index d571f679a..de53b74a7 100644 --- a/src/plugins/lua/mime_types.lua +++ b/src/plugins/lua/mime_types.lua @@ -547,14 +547,6 @@ if opts then end end - for ext,inner_tbl in pairs(settings.extension_map) do - for _,elt in ipairs(inner_tbl) do - if not lua_mime.reversed_extensions_map[elt.ct] then - lua_mime.reversed_extensions_map[elt.ct] = ext - end - end - end - local map_type = 'map' if settings['regexp'] then map_type = 'regexp' end map = lua_maps.rspamd_map_add('mime_types', 'file', map_type, -- 2.39.5