]> source.dussan.org Git - rspamd.git/commitdiff
[Minor] Move mime types out of the lua_mime API
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Wed, 24 Feb 2021 11:13:44 +0000 (11:13 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Wed, 24 Feb 2021 11:13:44 +0000 (11:13 +0000)
lualib/lua_mime.lua
lualib/lua_mime_types.lua [new file with mode: 0644]
src/plugins/lua/mime_types.lua

index 8d52488afeffc4013f90ece9669a48d897ad6619..847a00a6941ac2c2922f011fe46c31001c0977d8 100644 (file)
@@ -510,725 +510,5 @@ exports.multipattern_text_replace = function(task, mp, replacements)
   return state
 end
 
--- All mime extensions with corresponding content types
-exports.full_extensions_map = {
-  {"323", "text/h323"},
-  {"3g2", "video/3gpp2"},
-  {"3gp", "video/3gpp"},
-  {"3gp2", "video/3gpp2"},
-  {"3gpp", "video/3gpp"},
-  {"7z", {"application/x-7z-compressed", "application/7z"}},
-  {"aa", "audio/audible"},
-  {"AAC", "audio/aac"},
-  {"aaf", "application/octet-stream"},
-  {"aax", "audio/vnd.audible.aax"},
-  {"ac3", "audio/ac3"},
-  {"aca", "application/octet-stream"},
-  {"accda", "application/msaccess.addin"},
-  {"accdb", "application/msaccess"},
-  {"accdc", "application/msaccess.cab"},
-  {"accde", "application/msaccess"},
-  {"accdr", "application/msaccess.runtime"},
-  {"accdt", "application/msaccess"},
-  {"accdw", "application/msaccess.webapplication"},
-  {"accft", "application/msaccess.ftemplate"},
-  {"acx", "application/internet-property-stream"},
-  {"AddIn", "text/xml"},
-  {"ade", "application/msaccess"},
-  {"adobebridge", "application/x-bridge-url"},
-  {"adp", "application/msaccess"},
-  {"ADT", "audio/vnd.dlna.adts"},
-  {"ADTS", "audio/aac"},
-  {"afm", "application/octet-stream"},
-  {"ai", "application/postscript"},
-  {"aif", "audio/aiff"},
-  {"aifc", "audio/aiff"},
-  {"aiff", "audio/aiff"},
-  {"air", "application/vnd.adobe.air-application-installer-package+zip"},
-  {"amc", "application/mpeg"},
-  {"anx", "application/annodex"},
-  {"apk", "application/vnd.android.package-archive" },
-  {"application", "application/x-ms-application"},
-  {"art", "image/x-jg"},
-  {"asa", "application/xml"},
-  {"asax", "application/xml"},
-  {"ascx", "application/xml"},
-  {"asd", "application/octet-stream"},
-  {"asf", "video/x-ms-asf"},
-  {"ashx", "application/xml"},
-  {"asi", "application/octet-stream"},
-  {"asm", "text/plain"},
-  {"asmx", "application/xml"},
-  {"aspx", "application/xml"},
-  {"asr", "video/x-ms-asf"},
-  {"asx", "video/x-ms-asf"},
-  {"atom", "application/atom+xml"},
-  {"au", "audio/basic"},
-  {"avi", "video/x-msvideo"},
-  {"axa", "audio/annodex"},
-  {"axs", "application/olescript"},
-  {"axv", "video/annodex"},
-  {"bas", "text/plain"},
-  {"bcpio", "application/x-bcpio"},
-  {"bin", "application/octet-stream"},
-  {"bmp", {"image/bmp", "image/x-ms-bmp"}},
-  {"c", "text/plain"},
-  {"cab", "application/octet-stream"},
-  {"caf", "audio/x-caf"},
-  {"calx", "application/vnd.ms-office.calx"},
-  {"cat", "application/vnd.ms-pki.seccat"},
-  {"cc", "text/plain"},
-  {"cd", "text/plain"},
-  {"cdda", "audio/aiff"},
-  {"cdf", "application/x-cdf"},
-  {"cer", "application/x-x509-ca-cert"},
-  {"cfg", "text/plain"},
-  {"chm", "application/octet-stream"},
-  {"class", "application/x-java-applet"},
-  {"clp", "application/x-msclip"},
-  {"cmd", "text/plain"},
-  {"cmx", "image/x-cmx"},
-  {"cnf", "text/plain"},
-  {"cod", "image/cis-cod"},
-  {"config", "application/xml"},
-  {"contact", "text/x-ms-contact"},
-  {"coverage", "application/xml"},
-  {"cpio", "application/x-cpio"},
-  {"cpp", "text/plain"},
-  {"crd", "application/x-mscardfile"},
-  {"crl", "application/pkix-crl"},
-  {"crt", "application/x-x509-ca-cert"},
-  {"cs", "text/plain"},
-  {"csdproj", "text/plain"},
-  {"csh", "application/x-csh"},
-  {"csproj", "text/plain"},
-  {"css", "text/css"},
-  {"csv", {"application/vnd.ms-excel", "text/csv", "text/plain"}},
-  {"cur", "application/octet-stream"},
-  {"cxx", "text/plain"},
-  {"dat", {"application/octet-stream", "application/ms-tnef"}},
-  {"datasource", "application/xml"},
-  {"dbproj", "text/plain"},
-  {"dcr", "application/x-director"},
-  {"def", "text/plain"},
-  {"deploy", "application/octet-stream"},
-  {"der", "application/x-x509-ca-cert"},
-  {"dgml", "application/xml"},
-  {"dib", "image/bmp"},
-  {"dif", "video/x-dv"},
-  {"dir", "application/x-director"},
-  {"disco", "text/xml"},
-  {"divx", "video/divx"},
-  {"dll", "application/x-msdownload"},
-  {"dll.config", "text/xml"},
-  {"dlm", "text/dlm"},
-  {"doc", "application/msword"},
-  {"docm", "application/vnd.ms-word.document.macroEnabled.12"},
-  {"docx", {
-    "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
-    "application/msword",
-    "application/vnd.ms-word.document.12",
-    "application/octet-stream",
-  }},
-  {"dot", "application/msword"},
-  {"dotm", "application/vnd.ms-word.template.macroEnabled.12"},
-  {"dotx", "application/vnd.openxmlformats-officedocument.wordprocessingml.template"},
-  {"dsp", "application/octet-stream"},
-  {"dsw", "text/plain"},
-  {"dtd", "text/xml"},
-  {"dtsConfig", "text/xml"},
-  {"dv", "video/x-dv"},
-  {"dvi", "application/x-dvi"},
-  {"dwf", "drawing/x-dwf"},
-  {"dwg", {"application/acad", "image/vnd.dwg"}},
-  {"dwp", "application/octet-stream"},
-  {"dxf", "application/x-dxf" },
-  {"dxr", "application/x-director"},
-  {"eml", "message/rfc822"},
-  {"emz", "application/octet-stream"},
-  {"eot", "application/vnd.ms-fontobject"},
-  {"eps", "application/postscript"},
-  {"etl", "application/etl"},
-  {"etx", "text/x-setext"},
-  {"evy", "application/envoy"},
-  {"exe", {
-    "application/x-dosexec",
-    "application/x-msdownload",
-    "application/x-executable",
-  }},
-  {"exe.config", "text/xml"},
-  {"fdf", "application/vnd.fdf"},
-  {"fif", "application/fractals"},
-  {"filters", "application/xml"},
-  {"fla", "application/octet-stream"},
-  {"flac", "audio/flac"},
-  {"flr", "x-world/x-vrml"},
-  {"flv", "video/x-flv"},
-  {"fsscript", "application/fsharp-script"},
-  {"fsx", "application/fsharp-script"},
-  {"generictest", "application/xml"},
-  {"gif", "image/gif"},
-  {"gpx", "application/gpx+xml"},
-  {"group", "text/x-ms-group"},
-  {"gsm", "audio/x-gsm"},
-  {"gtar", "application/x-gtar"},
-  {"gz", {"application/gzip", "application/x-gzip"}},
-  {"h", "text/plain"},
-  {"hdf", "application/x-hdf"},
-  {"hdml", "text/x-hdml"},
-  {"hhc", "application/x-oleobject"},
-  {"hhk", "application/octet-stream"},
-  {"hhp", "application/octet-stream"},
-  {"hlp", "application/winhlp"},
-  {"hpp", "text/plain"},
-  {"hqx", "application/mac-binhex40"},
-  {"hta", "application/hta"},
-  {"htc", "text/x-component"},
-  {"htm", "text/html"},
-  {"html", "text/html"},
-  {"htt", "text/webviewhtml"},
-  {"hxa", "application/xml"},
-  {"hxc", "application/xml"},
-  {"hxd", "application/octet-stream"},
-  {"hxe", "application/xml"},
-  {"hxf", "application/xml"},
-  {"hxh", "application/octet-stream"},
-  {"hxi", "application/octet-stream"},
-  {"hxk", "application/xml"},
-  {"hxq", "application/octet-stream"},
-  {"hxr", "application/octet-stream"},
-  {"hxs", "application/octet-stream"},
-  {"hxt", "text/html"},
-  {"hxv", "application/xml"},
-  {"hxw", "application/octet-stream"},
-  {"hxx", "text/plain"},
-  {"i", "text/plain"},
-  {"ico", "image/x-icon"},
-  {"ics", {"text/calendar", "application/ics", "application/octet-stream"}},
-  {"idl", "text/plain"},
-  {"ief", "image/ief"},
-  {"iii", "application/x-iphone"},
-  {"inc", "text/plain"},
-  {"inf", "application/octet-stream"},
-  {"ini", "text/plain"},
-  {"inl", "text/plain"},
-  {"ins", "application/x-internet-signup"},
-  {"ipa", "application/x-itunes-ipa"},
-  {"ipg", "application/x-itunes-ipg"},
-  {"ipproj", "text/plain"},
-  {"ipsw", "application/x-itunes-ipsw"},
-  {"iqy", "text/x-ms-iqy"},
-  {"isp", "application/x-internet-signup"},
-  {"ite", "application/x-itunes-ite"},
-  {"itlp", "application/x-itunes-itlp"},
-  {"itms", "application/x-itunes-itms"},
-  {"itpc", "application/x-itunes-itpc"},
-  {"IVF", "video/x-ivf"},
-  {"jar", "application/java-archive"},
-  {"java", "application/octet-stream"},
-  {"jck", "application/liquidmotion"},
-  {"jcz", "application/liquidmotion"},
-  {"jfif", "image/pjpeg"},
-  {"jnlp", "application/x-java-jnlp-file"},
-  {"jpb", "application/octet-stream"},
-  {"jpe", {"image/jpeg", "image/pjpeg"}},
-  {"jpeg", {"image/jpeg", "image/pjpeg"}},
-  {"jpg", {"image/jpeg", "image/pjpeg"}},
-  {"js", "application/javascript"},
-  {"json", "application/json"},
-  {"jsx", "text/jscript"},
-  {"jsxbin", "text/plain"},
-  {"latex", "application/x-latex"},
-  {"library-ms", "application/windows-library+xml"},
-  {"lit", "application/x-ms-reader"},
-  {"loadtest", "application/xml"},
-  {"lpk", "application/octet-stream"},
-  {"lsf", "video/x-la-asf"},
-  {"lst", "text/plain"},
-  {"lsx", "video/x-la-asf"},
-  {"lzh", "application/octet-stream"},
-  {"m13", "application/x-msmediaview"},
-  {"m14", "application/x-msmediaview"},
-  {"m1v", "video/mpeg"},
-  {"m2t", "video/vnd.dlna.mpeg-tts"},
-  {"m2ts", "video/vnd.dlna.mpeg-tts"},
-  {"m2v", "video/mpeg"},
-  {"m3u", "audio/x-mpegurl"},
-  {"m3u8", "audio/x-mpegurl"},
-  {"m4a", {"audio/m4a", "audio/x-m4a"}},
-  {"m4b", "audio/m4b"},
-  {"m4p", "audio/m4p"},
-  {"m4r", "audio/x-m4r"},
-  {"m4v", "video/x-m4v"},
-  {"mac", "image/x-macpaint"},
-  {"mak", "text/plain"},
-  {"man", "application/x-troff-man"},
-  {"manifest", "application/x-ms-manifest"},
-  {"map", "text/plain"},
-  {"master", "application/xml"},
-  {"mbox", "application/mbox"},
-  {"mda", "application/msaccess"},
-  {"mdb", "application/x-msaccess"},
-  {"mde", "application/msaccess"},
-  {"mdp", "application/octet-stream"},
-  {"me", "application/x-troff-me"},
-  {"mfp", "application/x-shockwave-flash"},
-  {"mht", "message/rfc822"},
-  {"mhtml", "message/rfc822"},
-  {"mid", "audio/mid"},
-  {"midi", "audio/mid"},
-  {"mix", "application/octet-stream"},
-  {"mk", "text/plain"},
-  {"mmf", "application/x-smaf"},
-  {"mno", "text/xml"},
-  {"mny", "application/x-msmoney"},
-  {"mod", "video/mpeg"},
-  {"mov", "video/quicktime"},
-  {"movie", "video/x-sgi-movie"},
-  {"mp2", "video/mpeg"},
-  {"mp2v", "video/mpeg"},
-  {"mp3", "audio/mpeg"},
-  {"mp4", "video/mp4"},
-  {"mp4v", "video/mp4"},
-  {"mpa", "video/mpeg"},
-  {"mpe", "video/mpeg"},
-  {"mpeg", "video/mpeg"},
-  {"mpf", "application/vnd.ms-mediapackage"},
-  {"mpg", "video/mpeg"},
-  {"mpp", "application/vnd.ms-project"},
-  {"mpv2", "video/mpeg"},
-  {"mqv", "video/quicktime"},
-  {"ms", "application/x-troff-ms"},
-  {"msg", "application/vnd.ms-outlook"},
-  {"msi", {"application/x-msi", "application/octet-stream"}},
-  {"mso", "application/octet-stream"},
-  {"mts", "video/vnd.dlna.mpeg-tts"},
-  {"mtx", "application/xml"},
-  {"mvb", "application/x-msmediaview"},
-  {"mvc", "application/x-miva-compiled"},
-  {"mxp", "application/x-mmxp"},
-  {"nc", "application/x-netcdf"},
-  {"nsc", "video/x-ms-asf"},
-  {"nws", "message/rfc822"},
-  {"ocx", "application/octet-stream"},
-  {"oda", "application/oda"},
-  {"odb", "application/vnd.oasis.opendocument.database"},
-  {"odc", "application/vnd.oasis.opendocument.chart"},
-  {"odf", "application/vnd.oasis.opendocument.formula"},
-  {"odg", "application/vnd.oasis.opendocument.graphics"},
-  {"odh", "text/plain"},
-  {"odi", "application/vnd.oasis.opendocument.image"},
-  {"odl", "text/plain"},
-  {"odm", "application/vnd.oasis.opendocument.text-master"},
-  {"odp", "application/vnd.oasis.opendocument.presentation"},
-  {"ods", "application/vnd.oasis.opendocument.spreadsheet"},
-  {"odt", "application/vnd.oasis.opendocument.text"},
-  {"oga", "audio/ogg"},
-  {"ogg", "audio/ogg"},
-  {"ogv", "video/ogg"},
-  {"ogx", "application/ogg"},
-  {"one", "application/onenote"},
-  {"onea", "application/onenote"},
-  {"onepkg", "application/onenote"},
-  {"onetmp", "application/onenote"},
-  {"onetoc", "application/onenote"},
-  {"onetoc2", "application/onenote"},
-  {"opus", "audio/ogg"},
-  {"orderedtest", "application/xml"},
-  {"osdx", "application/opensearchdescription+xml"},
-  {"otf", "application/font-sfnt"},
-  {"otg", "application/vnd.oasis.opendocument.graphics-template"},
-  {"oth", "application/vnd.oasis.opendocument.text-web"},
-  {"otp", "application/vnd.oasis.opendocument.presentation-template"},
-  {"ots", "application/vnd.oasis.opendocument.spreadsheet-template"},
-  {"ott", "application/vnd.oasis.opendocument.text-template"},
-  {"oxt", "application/vnd.openofficeorg.extension"},
-  {"p10", "application/pkcs10"},
-  {"p12", "application/x-pkcs12"},
-  {"p7b", "application/x-pkcs7-certificates"},
-  {"p7c", "application/pkcs7-mime"},
-  {"p7m", "application/pkcs7-mime"},
-  {"p7r", "application/x-pkcs7-certreqresp"},
-  {"p7s", {"application/pkcs7-signature", "text/plain"}},
-  {"pbm", "image/x-portable-bitmap"},
-  {"pcast", "application/x-podcast"},
-  {"pct", "image/pict"},
-  {"pcx", "application/octet-stream"},
-  {"pcz", "application/octet-stream"},
-  {"pdf", "application/pdf"},
-  {"pfb", "application/octet-stream"},
-  {"pfm", "application/octet-stream"},
-  {"pfx", "application/x-pkcs12"},
-  {"pgm", "image/x-portable-graymap"},
-  {"pic", "image/pict"},
-  {"pict", "image/pict"},
-  {"pkgdef", "text/plain"},
-  {"pkgundef", "text/plain"},
-  {"pko", "application/vnd.ms-pki.pko"},
-  {"pls", "audio/scpls"},
-  {"pma", "application/x-perfmon"},
-  {"pmc", "application/x-perfmon"},
-  {"pml", "application/x-perfmon"},
-  {"pmr", "application/x-perfmon"},
-  {"pmw", "application/x-perfmon"},
-  {"png", "image/png"},
-  {"pnm", "image/x-portable-anymap"},
-  {"pnt", "image/x-macpaint"},
-  {"pntg", "image/x-macpaint"},
-  {"pnz", "image/png"},
-  {"pot", "application/vnd.ms-powerpoint"},
-  {"potm", "application/vnd.ms-powerpoint.template.macroEnabled.12"},
-  {"potx", "application/vnd.openxmlformats-officedocument.presentationml.template"},
-  {"ppa", "application/vnd.ms-powerpoint"},
-  {"ppam", "application/vnd.ms-powerpoint.addin.macroEnabled.12"},
-  {"ppm", "image/x-portable-pixmap"},
-  {"pps", "application/vnd.ms-powerpoint"},
-  {"ppsm", "application/vnd.ms-powerpoint.slideshow.macroEnabled.12"},
-  {"ppsx", "application/vnd.openxmlformats-officedocument.presentationml.slideshow"},
-  {"ppt", "application/vnd.ms-powerpoint"},
-  {"pptm", "application/vnd.ms-powerpoint.presentation.macroEnabled.12"},
-  {"pptx", "application/vnd.openxmlformats-officedocument.presentationml.presentation"},
-  {"prf", "application/pics-rules"},
-  {"prm", "application/octet-stream"},
-  {"prx", "application/octet-stream"},
-  {"ps", "application/postscript"},
-  {"psc1", "application/PowerShell"},
-  {"psd", "application/octet-stream"},
-  {"psess", "application/xml"},
-  {"psm", "application/octet-stream"},
-  {"psp", "application/octet-stream"},
-  {"pst", "application/vnd.ms-outlook"},
-  {"pub", "application/x-mspublisher"},
-  {"pwz", "application/vnd.ms-powerpoint"},
-  {"qht", "text/x-html-insertion"},
-  {"qhtm", "text/x-html-insertion"},
-  {"qt", "video/quicktime"},
-  {"qti", "image/x-quicktime"},
-  {"qtif", "image/x-quicktime"},
-  {"qtl", "application/x-quicktimeplayer"},
-  {"qxd", "application/octet-stream"},
-  {"ra", "audio/x-pn-realaudio"},
-  {"ram", "audio/x-pn-realaudio"},
-  {"rar", {"application/x-rar-compressed", "application/x-rar", "application/octet-stream"}},
-  {"ras", "image/x-cmu-raster"},
-  {"rat", "application/rat-file"},
-  {"rc", "text/plain"},
-  {"rc2", "text/plain"},
-  {"rct", "text/plain"},
-  {"rdlc", "application/xml"},
-  {"reg", "text/plain"},
-  {"resx", "application/xml"},
-  {"rf", "image/vnd.rn-realflash"},
-  {"rgb", "image/x-rgb"},
-  {"rgs", "text/plain"},
-  {"rm", "application/vnd.rn-realmedia"},
-  {"rmi", "audio/mid"},
-  {"rmp", "application/vnd.rn-rn_music_package"},
-  {"roff", "application/x-troff"},
-  {"rpm", "audio/x-pn-realaudio-plugin"},
-  {"rqy", "text/x-ms-rqy"},
-  {"rtf", {"application/rtf","application/msword", "text/richtext", "text/rtf"}},
-  {"rtx", "text/richtext"},
-  {"rvt", "application/octet-stream" },
-  {"ruleset", "application/xml"},
-  {"s", "text/plain"},
-  {"safariextz", "application/x-safari-safariextz"},
-  {"scd", "application/x-msschedule"},
-  {"scr", "text/plain"},
-  {"sct", "text/scriptlet"},
-  {"sd2", "audio/x-sd2"},
-  {"sdp", "application/sdp"},
-  {"sea", "application/octet-stream"},
-  {"searchConnector-ms", "application/windows-search-connector+xml"},
-  {"setpay", "application/set-payment-initiation"},
-  {"setreg", "application/set-registration-initiation"},
-  {"settings", "application/xml"},
-  {"sgimb", "application/x-sgimb"},
-  {"sgml", "text/sgml"},
-  {"sh", "application/x-sh"},
-  {"shar", "application/x-shar"},
-  {"shtml", "text/html"},
-  {"sit", "application/x-stuffit"},
-  {"sitemap", "application/xml"},
-  {"skin", "application/xml"},
-  {"skp", "application/x-koan" },
-  {"sldm", "application/vnd.ms-powerpoint.slide.macroEnabled.12"},
-  {"sldx", "application/vnd.openxmlformats-officedocument.presentationml.slide"},
-  {"slk", "application/vnd.ms-excel"},
-  {"sln", "text/plain"},
-  {"slupkg-ms", "application/x-ms-license"},
-  {"smd", "audio/x-smd"},
-  {"smi", "application/octet-stream"},
-  {"smx", "audio/x-smd"},
-  {"smz", "audio/x-smd"},
-  {"snd", "audio/basic"},
-  {"snippet", "application/xml"},
-  {"snp", "application/octet-stream"},
-  {"sol", "text/plain"},
-  {"sor", "text/plain"},
-  {"spc", "application/x-pkcs7-certificates"},
-  {"spl", "application/futuresplash"},
-  {"spx", "audio/ogg"},
-  {"src", "application/x-wais-source"},
-  {"srf", "text/plain"},
-  {"SSISDeploymentManifest", "text/xml"},
-  {"ssm", "application/streamingmedia"},
-  {"sst", "application/vnd.ms-pki.certstore"},
-  {"stl", "application/vnd.ms-pki.stl"},
-  {"sv4cpio", "application/x-sv4cpio"},
-  {"sv4crc", "application/x-sv4crc"},
-  {"svc", "application/xml"},
-  {"svg", "image/svg+xml"},
-  {"swf", "application/x-shockwave-flash"},
-  {"step", "application/step"},
-  {"stp", "application/step"},
-  {"t", "application/x-troff"},
-  {"tar", "application/x-tar"},
-  {"tcl", "application/x-tcl"},
-  {"testrunconfig", "application/xml"},
-  {"testsettings", "application/xml"},
-  {"tex", "application/x-tex"},
-  {"texi", "application/x-texinfo"},
-  {"texinfo", "application/x-texinfo"},
-  {"tgz", "application/x-compressed"},
-  {"thmx", "application/vnd.ms-officetheme"},
-  {"thn", "application/octet-stream"},
-  {"tif", {"image/tiff", "application/octet-stream"}},
-  {"tiff", "image/tiff"},
-  {"tlh", "text/plain"},
-  {"tli", "text/plain"},
-  {"toc", "application/octet-stream"},
-  {"tr", "application/x-troff"},
-  {"trm", "application/x-msterminal"},
-  {"trx", "application/xml"},
-  {"ts", "video/vnd.dlna.mpeg-tts"},
-  {"tsv", "text/tab-separated-values"},
-  {"ttf", "application/font-sfnt"},
-  {"tts", "video/vnd.dlna.mpeg-tts"},
-  {"txt", "text/plain"},
-  {"u32", "application/octet-stream"},
-  {"uls", "text/iuls"},
-  {"user", "text/plain"},
-  {"ustar", "application/x-ustar"},
-  {"vb", "text/plain"},
-  {"vbdproj", "text/plain"},
-  {"vbk", "video/mpeg"},
-  {"vbproj", "text/plain"},
-  {"vbs", "text/vbscript"},
-  {"vcf", {"text/x-vcard", "text/vcard"}},
-  {"vcproj", "application/xml"},
-  {"vcs", "text/plain"},
-  {"vcxproj", "application/xml"},
-  {"vddproj", "text/plain"},
-  {"vdp", "text/plain"},
-  {"vdproj", "text/plain"},
-  {"vdx", "application/vnd.ms-visio.viewer"},
-  {"vml", "text/xml"},
-  {"vscontent", "application/xml"},
-  {"vsct", "text/xml"},
-  {"vsd", "application/vnd.visio"},
-  {"vsi", "application/ms-vsi"},
-  {"vsix", "application/vsix"},
-  {"vsixlangpack", "text/xml"},
-  {"vsixmanifest", "text/xml"},
-  {"vsmdi", "application/xml"},
-  {"vspscc", "text/plain"},
-  {"vss", "application/vnd.visio"},
-  {"vsscc", "text/plain"},
-  {"vssettings", "text/xml"},
-  {"vssscc", "text/plain"},
-  {"vst", "application/vnd.visio"},
-  {"vstemplate", "text/xml"},
-  {"vsto", "application/x-ms-vsto"},
-  {"vsw", "application/vnd.visio"},
-  {"vsx", "application/vnd.visio"},
-  {"vtx", "application/vnd.visio"},
-  {"wav", "audio/wav"},
-  {"wave", "audio/wav"},
-  {"wax", "audio/x-ms-wax"},
-  {"wbk", "application/msword"},
-  {"wbmp", "image/vnd.wap.wbmp"},
-  {"wcm", "application/vnd.ms-works"},
-  {"wdb", "application/vnd.ms-works"},
-  {"wdp", "image/vnd.ms-photo"},
-  {"webarchive", "application/x-safari-webarchive"},
-  {"webm", "video/webm"},
-  {"webp", "image/webp"},
-  {"webtest", "application/xml"},
-  {"wiq", "application/xml"},
-  {"wiz", "application/msword"},
-  {"wks", "application/vnd.ms-works"},
-  {"WLMP", "application/wlmoviemaker"},
-  {"wlpginstall", "application/x-wlpg-detect"},
-  {"wlpginstall3", "application/x-wlpg3-detect"},
-  {"wm", "video/x-ms-wm"},
-  {"wma", "audio/x-ms-wma"},
-  {"wmd", "application/x-ms-wmd"},
-  {"wmf", "application/x-msmetafile"},
-  {"wml", "text/vnd.wap.wml"},
-  {"wmlc", "application/vnd.wap.wmlc"},
-  {"wmls", "text/vnd.wap.wmlscript"},
-  {"wmlsc", "application/vnd.wap.wmlscriptc"},
-  {"wmp", "video/x-ms-wmp"},
-  {"wmv", "video/x-ms-wmv"},
-  {"wmx", "video/x-ms-wmx"},
-  {"wmz", "application/x-ms-wmz"},
-  {"woff", "application/font-woff"},
-  {"wpl", "application/vnd.ms-wpl"},
-  {"wps", "application/vnd.ms-works"},
-  {"wri", "application/x-mswrite"},
-  {"wrl", "x-world/x-vrml"},
-  {"wrz", "x-world/x-vrml"},
-  {"wsc", "text/scriptlet"},
-  {"wsdl", "text/xml"},
-  {"wvx", "video/x-ms-wvx"},
-  {"x", "application/directx"},
-  {"xaf", "x-world/x-vrml"},
-  {"xaml", "application/xaml+xml"},
-  {"xap", "application/x-silverlight-app"},
-  {"xbap", "application/x-ms-xbap"},
-  {"xbm", "image/x-xbitmap"},
-  {"xdr", "text/plain"},
-  {"xht", "application/xhtml+xml"},
-  {"xhtml", "application/xhtml+xml"},
-  {"xla", "application/vnd.ms-excel"},
-  {"xlam", "application/vnd.ms-excel.addin.macroEnabled.12"},
-  {"xlc", "application/vnd.ms-excel"},
-  {"xld", "application/vnd.ms-excel"},
-  {"xlk", "application/vnd.ms-excel"},
-  {"xll", "application/vnd.ms-excel"},
-  {"xlm", "application/vnd.ms-excel"},
-  {"xls", {
-    "application/excel",
-    "application/vnd.ms-excel",
-    "application/vnd.ms-office",
-    "application/x-excel",
-    "application/octet-stream"
-  }},
-  {"xlsb", "application/vnd.ms-excel.sheet.binary.macroEnabled.12"},
-  {"xlsm", "application/vnd.ms-excel.sheet.macroEnabled.12"},
-  {"xlsx", {
-    "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
-    "application/vnd.ms-excel.12",
-    "application/octet-stream"
-  }},
-  {"xlt", "application/vnd.ms-excel"},
-  {"xltm", "application/vnd.ms-excel.template.macroEnabled.12"},
-  {"xltx", "application/vnd.openxmlformats-officedocument.spreadsheetml.template"},
-  {"xlw", "application/vnd.ms-excel"},
-  {"xml", {"application/xml", "text/xml", "application/octet-stream"}},
-  {"xmp", "application/octet-stream" },
-  {"xmta", "application/xml"},
-  {"xof", "x-world/x-vrml"},
-  {"XOML", "text/plain"},
-  {"xpm", "image/x-xpixmap"},
-  {"xps", "application/vnd.ms-xpsdocument"},
-  {"xrm-ms", "text/xml"},
-  {"xsc", "application/xml"},
-  {"xsd", "text/xml"},
-  {"xsf", "text/xml"},
-  {"xsl", "text/xml"},
-  {"xslt", "text/xml"},
-  {"xsn", "application/octet-stream"},
-  {"xss", "application/xml"},
-  {"xspf", "application/xspf+xml"},
-  {"xtp", "application/octet-stream"},
-  {"xwd", "image/x-xwindowdump"},
-  {"z", "application/x-compress"},
-  {"zip", {
-    "application/zip",
-    "application/x-zip-compressed",
-    "application/octet-stream"
-  }},
-  {"zlib", "application/zlib"},
-}
-
--- Used to match extension by content type
-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
diff --git a/lualib/lua_mime_types.lua b/lualib/lua_mime_types.lua
new file mode 100644 (file)
index 0000000..998d004
--- /dev/null
@@ -0,0 +1,745 @@
+--[[
+Copyright (c) 2019, Vsevolod Stakhov <vsevolod@highsecure.ru>
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+]]--
+
+--[[[
+-- @module lua_mime_types
+-- This module contains mime types list
+--]]
+
+local exports = {}
+
+-- All mime extensions with corresponding content types
+exports.full_extensions_map = {
+    {"323", "text/h323"},
+    {"3g2", "video/3gpp2"},
+    {"3gp", "video/3gpp"},
+    {"3gp2", "video/3gpp2"},
+    {"3gpp", "video/3gpp"},
+    {"7z", {"application/x-7z-compressed", "application/7z"}},
+    {"aa", "audio/audible"},
+    {"AAC", "audio/aac"},
+    {"aaf", "application/octet-stream"},
+    {"aax", "audio/vnd.audible.aax"},
+    {"ac3", "audio/ac3"},
+    {"aca", "application/octet-stream"},
+    {"accda", "application/msaccess.addin"},
+    {"accdb", "application/msaccess"},
+    {"accdc", "application/msaccess.cab"},
+    {"accde", "application/msaccess"},
+    {"accdr", "application/msaccess.runtime"},
+    {"accdt", "application/msaccess"},
+    {"accdw", "application/msaccess.webapplication"},
+    {"accft", "application/msaccess.ftemplate"},
+    {"acx", "application/internet-property-stream"},
+    {"AddIn", "text/xml"},
+    {"ade", "application/msaccess"},
+    {"adobebridge", "application/x-bridge-url"},
+    {"adp", "application/msaccess"},
+    {"ADT", "audio/vnd.dlna.adts"},
+    {"ADTS", "audio/aac"},
+    {"afm", "application/octet-stream"},
+    {"ai", "application/postscript"},
+    {"aif", "audio/aiff"},
+    {"aifc", "audio/aiff"},
+    {"aiff", "audio/aiff"},
+    {"air", "application/vnd.adobe.air-application-installer-package+zip"},
+    {"amc", "application/mpeg"},
+    {"anx", "application/annodex"},
+    {"apk", "application/vnd.android.package-archive" },
+    {"application", "application/x-ms-application"},
+    {"art", "image/x-jg"},
+    {"asa", "application/xml"},
+    {"asax", "application/xml"},
+    {"ascx", "application/xml"},
+    {"asd", "application/octet-stream"},
+    {"asf", "video/x-ms-asf"},
+    {"ashx", "application/xml"},
+    {"asi", "application/octet-stream"},
+    {"asm", "text/plain"},
+    {"asmx", "application/xml"},
+    {"aspx", "application/xml"},
+    {"asr", "video/x-ms-asf"},
+    {"asx", "video/x-ms-asf"},
+    {"atom", "application/atom+xml"},
+    {"au", "audio/basic"},
+    {"avi", "video/x-msvideo"},
+    {"axa", "audio/annodex"},
+    {"axs", "application/olescript"},
+    {"axv", "video/annodex"},
+    {"bas", "text/plain"},
+    {"bcpio", "application/x-bcpio"},
+    {"bin", "application/octet-stream"},
+    {"bmp", {"image/bmp", "image/x-ms-bmp"}},
+    {"c", "text/plain"},
+    {"cab", "application/octet-stream"},
+    {"caf", "audio/x-caf"},
+    {"calx", "application/vnd.ms-office.calx"},
+    {"cat", "application/vnd.ms-pki.seccat"},
+    {"cc", "text/plain"},
+    {"cd", "text/plain"},
+    {"cdda", "audio/aiff"},
+    {"cdf", "application/x-cdf"},
+    {"cer", "application/x-x509-ca-cert"},
+    {"cfg", "text/plain"},
+    {"chm", "application/octet-stream"},
+    {"class", "application/x-java-applet"},
+    {"clp", "application/x-msclip"},
+    {"cmd", "text/plain"},
+    {"cmx", "image/x-cmx"},
+    {"cnf", "text/plain"},
+    {"cod", "image/cis-cod"},
+    {"config", "application/xml"},
+    {"contact", "text/x-ms-contact"},
+    {"coverage", "application/xml"},
+    {"cpio", "application/x-cpio"},
+    {"cpp", "text/plain"},
+    {"crd", "application/x-mscardfile"},
+    {"crl", "application/pkix-crl"},
+    {"crt", "application/x-x509-ca-cert"},
+    {"cs", "text/plain"},
+    {"csdproj", "text/plain"},
+    {"csh", "application/x-csh"},
+    {"csproj", "text/plain"},
+    {"css", "text/css"},
+    {"csv", {"application/vnd.ms-excel", "text/csv", "text/plain"}},
+    {"cur", "application/octet-stream"},
+    {"cxx", "text/plain"},
+    {"dat", {"application/octet-stream", "application/ms-tnef"}},
+    {"datasource", "application/xml"},
+    {"dbproj", "text/plain"},
+    {"dcr", "application/x-director"},
+    {"def", "text/plain"},
+    {"deploy", "application/octet-stream"},
+    {"der", "application/x-x509-ca-cert"},
+    {"dgml", "application/xml"},
+    {"dib", "image/bmp"},
+    {"dif", "video/x-dv"},
+    {"dir", "application/x-director"},
+    {"disco", "text/xml"},
+    {"divx", "video/divx"},
+    {"dll", "application/x-msdownload"},
+    {"dll.config", "text/xml"},
+    {"dlm", "text/dlm"},
+    {"doc", "application/msword"},
+    {"docm", "application/vnd.ms-word.document.macroEnabled.12"},
+    {"docx", {
+        "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
+        "application/msword",
+        "application/vnd.ms-word.document.12",
+        "application/octet-stream",
+    }},
+    {"dot", "application/msword"},
+    {"dotm", "application/vnd.ms-word.template.macroEnabled.12"},
+    {"dotx", "application/vnd.openxmlformats-officedocument.wordprocessingml.template"},
+    {"dsp", "application/octet-stream"},
+    {"dsw", "text/plain"},
+    {"dtd", "text/xml"},
+    {"dtsConfig", "text/xml"},
+    {"dv", "video/x-dv"},
+    {"dvi", "application/x-dvi"},
+    {"dwf", "drawing/x-dwf"},
+    {"dwg", {"application/acad", "image/vnd.dwg"}},
+    {"dwp", "application/octet-stream"},
+    {"dxf", "application/x-dxf" },
+    {"dxr", "application/x-director"},
+    {"eml", "message/rfc822"},
+    {"emz", "application/octet-stream"},
+    {"eot", "application/vnd.ms-fontobject"},
+    {"eps", "application/postscript"},
+    {"etl", "application/etl"},
+    {"etx", "text/x-setext"},
+    {"evy", "application/envoy"},
+    {"exe", {
+        "application/x-dosexec",
+        "application/x-msdownload",
+        "application/x-executable",
+    }},
+    {"exe.config", "text/xml"},
+    {"fdf", "application/vnd.fdf"},
+    {"fif", "application/fractals"},
+    {"filters", "application/xml"},
+    {"fla", "application/octet-stream"},
+    {"flac", "audio/flac"},
+    {"flr", "x-world/x-vrml"},
+    {"flv", "video/x-flv"},
+    {"fsscript", "application/fsharp-script"},
+    {"fsx", "application/fsharp-script"},
+    {"generictest", "application/xml"},
+    {"gif", "image/gif"},
+    {"gpx", "application/gpx+xml"},
+    {"group", "text/x-ms-group"},
+    {"gsm", "audio/x-gsm"},
+    {"gtar", "application/x-gtar"},
+    {"gz", {"application/gzip", "application/x-gzip"}},
+    {"h", "text/plain"},
+    {"hdf", "application/x-hdf"},
+    {"hdml", "text/x-hdml"},
+    {"hhc", "application/x-oleobject"},
+    {"hhk", "application/octet-stream"},
+    {"hhp", "application/octet-stream"},
+    {"hlp", "application/winhlp"},
+    {"hpp", "text/plain"},
+    {"hqx", "application/mac-binhex40"},
+    {"hta", "application/hta"},
+    {"htc", "text/x-component"},
+    {"htm", "text/html"},
+    {"html", "text/html"},
+    {"htt", "text/webviewhtml"},
+    {"hxa", "application/xml"},
+    {"hxc", "application/xml"},
+    {"hxd", "application/octet-stream"},
+    {"hxe", "application/xml"},
+    {"hxf", "application/xml"},
+    {"hxh", "application/octet-stream"},
+    {"hxi", "application/octet-stream"},
+    {"hxk", "application/xml"},
+    {"hxq", "application/octet-stream"},
+    {"hxr", "application/octet-stream"},
+    {"hxs", "application/octet-stream"},
+    {"hxt", "text/html"},
+    {"hxv", "application/xml"},
+    {"hxw", "application/octet-stream"},
+    {"hxx", "text/plain"},
+    {"i", "text/plain"},
+    {"ico", "image/x-icon"},
+    {"ics", {"text/calendar", "application/ics", "application/octet-stream"}},
+    {"idl", "text/plain"},
+    {"ief", "image/ief"},
+    {"iii", "application/x-iphone"},
+    {"inc", "text/plain"},
+    {"inf", "application/octet-stream"},
+    {"ini", "text/plain"},
+    {"inl", "text/plain"},
+    {"ins", "application/x-internet-signup"},
+    {"ipa", "application/x-itunes-ipa"},
+    {"ipg", "application/x-itunes-ipg"},
+    {"ipproj", "text/plain"},
+    {"ipsw", "application/x-itunes-ipsw"},
+    {"iqy", "text/x-ms-iqy"},
+    {"isp", "application/x-internet-signup"},
+    {"ite", "application/x-itunes-ite"},
+    {"itlp", "application/x-itunes-itlp"},
+    {"itms", "application/x-itunes-itms"},
+    {"itpc", "application/x-itunes-itpc"},
+    {"IVF", "video/x-ivf"},
+    {"jar", "application/java-archive"},
+    {"java", "application/octet-stream"},
+    {"jck", "application/liquidmotion"},
+    {"jcz", "application/liquidmotion"},
+    {"jfif", "image/pjpeg"},
+    {"jnlp", "application/x-java-jnlp-file"},
+    {"jpb", "application/octet-stream"},
+    {"jpe", {"image/jpeg", "image/pjpeg"}},
+    {"jpeg", {"image/jpeg", "image/pjpeg"}},
+    {"jpg", {"image/jpeg", "image/pjpeg"}},
+    {"js", "application/javascript"},
+    {"json", "application/json"},
+    {"jsx", "text/jscript"},
+    {"jsxbin", "text/plain"},
+    {"latex", "application/x-latex"},
+    {"library-ms", "application/windows-library+xml"},
+    {"lit", "application/x-ms-reader"},
+    {"loadtest", "application/xml"},
+    {"lpk", "application/octet-stream"},
+    {"lsf", "video/x-la-asf"},
+    {"lst", "text/plain"},
+    {"lsx", "video/x-la-asf"},
+    {"lzh", "application/octet-stream"},
+    {"m13", "application/x-msmediaview"},
+    {"m14", "application/x-msmediaview"},
+    {"m1v", "video/mpeg"},
+    {"m2t", "video/vnd.dlna.mpeg-tts"},
+    {"m2ts", "video/vnd.dlna.mpeg-tts"},
+    {"m2v", "video/mpeg"},
+    {"m3u", "audio/x-mpegurl"},
+    {"m3u8", "audio/x-mpegurl"},
+    {"m4a", {"audio/m4a", "audio/x-m4a"}},
+    {"m4b", "audio/m4b"},
+    {"m4p", "audio/m4p"},
+    {"m4r", "audio/x-m4r"},
+    {"m4v", "video/x-m4v"},
+    {"mac", "image/x-macpaint"},
+    {"mak", "text/plain"},
+    {"man", "application/x-troff-man"},
+    {"manifest", "application/x-ms-manifest"},
+    {"map", "text/plain"},
+    {"master", "application/xml"},
+    {"mbox", "application/mbox"},
+    {"mda", "application/msaccess"},
+    {"mdb", "application/x-msaccess"},
+    {"mde", "application/msaccess"},
+    {"mdp", "application/octet-stream"},
+    {"me", "application/x-troff-me"},
+    {"mfp", "application/x-shockwave-flash"},
+    {"mht", "message/rfc822"},
+    {"mhtml", "message/rfc822"},
+    {"mid", "audio/mid"},
+    {"midi", "audio/mid"},
+    {"mix", "application/octet-stream"},
+    {"mk", "text/plain"},
+    {"mmf", "application/x-smaf"},
+    {"mno", "text/xml"},
+    {"mny", "application/x-msmoney"},
+    {"mod", "video/mpeg"},
+    {"mov", "video/quicktime"},
+    {"movie", "video/x-sgi-movie"},
+    {"mp2", "video/mpeg"},
+    {"mp2v", "video/mpeg"},
+    {"mp3", "audio/mpeg"},
+    {"mp4", "video/mp4"},
+    {"mp4v", "video/mp4"},
+    {"mpa", "video/mpeg"},
+    {"mpe", "video/mpeg"},
+    {"mpeg", "video/mpeg"},
+    {"mpf", "application/vnd.ms-mediapackage"},
+    {"mpg", "video/mpeg"},
+    {"mpp", "application/vnd.ms-project"},
+    {"mpv2", "video/mpeg"},
+    {"mqv", "video/quicktime"},
+    {"ms", "application/x-troff-ms"},
+    {"msg", "application/vnd.ms-outlook"},
+    {"msi", {"application/x-msi", "application/octet-stream"}},
+    {"mso", "application/octet-stream"},
+    {"mts", "video/vnd.dlna.mpeg-tts"},
+    {"mtx", "application/xml"},
+    {"mvb", "application/x-msmediaview"},
+    {"mvc", "application/x-miva-compiled"},
+    {"mxp", "application/x-mmxp"},
+    {"nc", "application/x-netcdf"},
+    {"nsc", "video/x-ms-asf"},
+    {"nws", "message/rfc822"},
+    {"ocx", "application/octet-stream"},
+    {"oda", "application/oda"},
+    {"odb", "application/vnd.oasis.opendocument.database"},
+    {"odc", "application/vnd.oasis.opendocument.chart"},
+    {"odf", "application/vnd.oasis.opendocument.formula"},
+    {"odg", "application/vnd.oasis.opendocument.graphics"},
+    {"odh", "text/plain"},
+    {"odi", "application/vnd.oasis.opendocument.image"},
+    {"odl", "text/plain"},
+    {"odm", "application/vnd.oasis.opendocument.text-master"},
+    {"odp", "application/vnd.oasis.opendocument.presentation"},
+    {"ods", "application/vnd.oasis.opendocument.spreadsheet"},
+    {"odt", "application/vnd.oasis.opendocument.text"},
+    {"oga", "audio/ogg"},
+    {"ogg", "audio/ogg"},
+    {"ogv", "video/ogg"},
+    {"ogx", "application/ogg"},
+    {"one", "application/onenote"},
+    {"onea", "application/onenote"},
+    {"onepkg", "application/onenote"},
+    {"onetmp", "application/onenote"},
+    {"onetoc", "application/onenote"},
+    {"onetoc2", "application/onenote"},
+    {"opus", "audio/ogg"},
+    {"orderedtest", "application/xml"},
+    {"osdx", "application/opensearchdescription+xml"},
+    {"otf", "application/font-sfnt"},
+    {"otg", "application/vnd.oasis.opendocument.graphics-template"},
+    {"oth", "application/vnd.oasis.opendocument.text-web"},
+    {"otp", "application/vnd.oasis.opendocument.presentation-template"},
+    {"ots", "application/vnd.oasis.opendocument.spreadsheet-template"},
+    {"ott", "application/vnd.oasis.opendocument.text-template"},
+    {"oxt", "application/vnd.openofficeorg.extension"},
+    {"p10", "application/pkcs10"},
+    {"p12", "application/x-pkcs12"},
+    {"p7b", "application/x-pkcs7-certificates"},
+    {"p7c", "application/pkcs7-mime"},
+    {"p7m", "application/pkcs7-mime"},
+    {"p7r", "application/x-pkcs7-certreqresp"},
+    {"p7s", {"application/pkcs7-signature", "text/plain"}},
+    {"pbm", "image/x-portable-bitmap"},
+    {"pcast", "application/x-podcast"},
+    {"pct", "image/pict"},
+    {"pcx", "application/octet-stream"},
+    {"pcz", "application/octet-stream"},
+    {"pdf", "application/pdf"},
+    {"pfb", "application/octet-stream"},
+    {"pfm", "application/octet-stream"},
+    {"pfx", "application/x-pkcs12"},
+    {"pgm", "image/x-portable-graymap"},
+    {"pic", "image/pict"},
+    {"pict", "image/pict"},
+    {"pkgdef", "text/plain"},
+    {"pkgundef", "text/plain"},
+    {"pko", "application/vnd.ms-pki.pko"},
+    {"pls", "audio/scpls"},
+    {"pma", "application/x-perfmon"},
+    {"pmc", "application/x-perfmon"},
+    {"pml", "application/x-perfmon"},
+    {"pmr", "application/x-perfmon"},
+    {"pmw", "application/x-perfmon"},
+    {"png", "image/png"},
+    {"pnm", "image/x-portable-anymap"},
+    {"pnt", "image/x-macpaint"},
+    {"pntg", "image/x-macpaint"},
+    {"pnz", "image/png"},
+    {"pot", "application/vnd.ms-powerpoint"},
+    {"potm", "application/vnd.ms-powerpoint.template.macroEnabled.12"},
+    {"potx", "application/vnd.openxmlformats-officedocument.presentationml.template"},
+    {"ppa", "application/vnd.ms-powerpoint"},
+    {"ppam", "application/vnd.ms-powerpoint.addin.macroEnabled.12"},
+    {"ppm", "image/x-portable-pixmap"},
+    {"pps", "application/vnd.ms-powerpoint"},
+    {"ppsm", "application/vnd.ms-powerpoint.slideshow.macroEnabled.12"},
+    {"ppsx", "application/vnd.openxmlformats-officedocument.presentationml.slideshow"},
+    {"ppt", "application/vnd.ms-powerpoint"},
+    {"pptm", "application/vnd.ms-powerpoint.presentation.macroEnabled.12"},
+    {"pptx", "application/vnd.openxmlformats-officedocument.presentationml.presentation"},
+    {"prf", "application/pics-rules"},
+    {"prm", "application/octet-stream"},
+    {"prx", "application/octet-stream"},
+    {"ps", "application/postscript"},
+    {"psc1", "application/PowerShell"},
+    {"psd", "application/octet-stream"},
+    {"psess", "application/xml"},
+    {"psm", "application/octet-stream"},
+    {"psp", "application/octet-stream"},
+    {"pst", "application/vnd.ms-outlook"},
+    {"pub", "application/x-mspublisher"},
+    {"pwz", "application/vnd.ms-powerpoint"},
+    {"qht", "text/x-html-insertion"},
+    {"qhtm", "text/x-html-insertion"},
+    {"qt", "video/quicktime"},
+    {"qti", "image/x-quicktime"},
+    {"qtif", "image/x-quicktime"},
+    {"qtl", "application/x-quicktimeplayer"},
+    {"qxd", "application/octet-stream"},
+    {"ra", "audio/x-pn-realaudio"},
+    {"ram", "audio/x-pn-realaudio"},
+    {"rar", {"application/x-rar-compressed", "application/x-rar", "application/octet-stream"}},
+    {"ras", "image/x-cmu-raster"},
+    {"rat", "application/rat-file"},
+    {"rc", "text/plain"},
+    {"rc2", "text/plain"},
+    {"rct", "text/plain"},
+    {"rdlc", "application/xml"},
+    {"reg", "text/plain"},
+    {"resx", "application/xml"},
+    {"rf", "image/vnd.rn-realflash"},
+    {"rgb", "image/x-rgb"},
+    {"rgs", "text/plain"},
+    {"rm", "application/vnd.rn-realmedia"},
+    {"rmi", "audio/mid"},
+    {"rmp", "application/vnd.rn-rn_music_package"},
+    {"roff", "application/x-troff"},
+    {"rpm", "audio/x-pn-realaudio-plugin"},
+    {"rqy", "text/x-ms-rqy"},
+    {"rtf", {"application/rtf","application/msword", "text/richtext", "text/rtf"}},
+    {"rtx", "text/richtext"},
+    {"rvt", "application/octet-stream" },
+    {"ruleset", "application/xml"},
+    {"s", "text/plain"},
+    {"safariextz", "application/x-safari-safariextz"},
+    {"scd", "application/x-msschedule"},
+    {"scr", "text/plain"},
+    {"sct", "text/scriptlet"},
+    {"sd2", "audio/x-sd2"},
+    {"sdp", "application/sdp"},
+    {"sea", "application/octet-stream"},
+    {"searchConnector-ms", "application/windows-search-connector+xml"},
+    {"setpay", "application/set-payment-initiation"},
+    {"setreg", "application/set-registration-initiation"},
+    {"settings", "application/xml"},
+    {"sgimb", "application/x-sgimb"},
+    {"sgml", "text/sgml"},
+    {"sh", "application/x-sh"},
+    {"shar", "application/x-shar"},
+    {"shtml", "text/html"},
+    {"sit", "application/x-stuffit"},
+    {"sitemap", "application/xml"},
+    {"skin", "application/xml"},
+    {"skp", "application/x-koan" },
+    {"sldm", "application/vnd.ms-powerpoint.slide.macroEnabled.12"},
+    {"sldx", "application/vnd.openxmlformats-officedocument.presentationml.slide"},
+    {"slk", "application/vnd.ms-excel"},
+    {"sln", "text/plain"},
+    {"slupkg-ms", "application/x-ms-license"},
+    {"smd", "audio/x-smd"},
+    {"smi", "application/octet-stream"},
+    {"smx", "audio/x-smd"},
+    {"smz", "audio/x-smd"},
+    {"snd", "audio/basic"},
+    {"snippet", "application/xml"},
+    {"snp", "application/octet-stream"},
+    {"sol", "text/plain"},
+    {"sor", "text/plain"},
+    {"spc", "application/x-pkcs7-certificates"},
+    {"spl", "application/futuresplash"},
+    {"spx", "audio/ogg"},
+    {"src", "application/x-wais-source"},
+    {"srf", "text/plain"},
+    {"SSISDeploymentManifest", "text/xml"},
+    {"ssm", "application/streamingmedia"},
+    {"sst", "application/vnd.ms-pki.certstore"},
+    {"stl", "application/vnd.ms-pki.stl"},
+    {"sv4cpio", "application/x-sv4cpio"},
+    {"sv4crc", "application/x-sv4crc"},
+    {"svc", "application/xml"},
+    {"svg", "image/svg+xml"},
+    {"swf", "application/x-shockwave-flash"},
+    {"step", "application/step"},
+    {"stp", "application/step"},
+    {"t", "application/x-troff"},
+    {"tar", "application/x-tar"},
+    {"tcl", "application/x-tcl"},
+    {"testrunconfig", "application/xml"},
+    {"testsettings", "application/xml"},
+    {"tex", "application/x-tex"},
+    {"texi", "application/x-texinfo"},
+    {"texinfo", "application/x-texinfo"},
+    {"tgz", "application/x-compressed"},
+    {"thmx", "application/vnd.ms-officetheme"},
+    {"thn", "application/octet-stream"},
+    {"tif", {"image/tiff", "application/octet-stream"}},
+    {"tiff", "image/tiff"},
+    {"tlh", "text/plain"},
+    {"tli", "text/plain"},
+    {"toc", "application/octet-stream"},
+    {"tr", "application/x-troff"},
+    {"trm", "application/x-msterminal"},
+    {"trx", "application/xml"},
+    {"ts", "video/vnd.dlna.mpeg-tts"},
+    {"tsv", "text/tab-separated-values"},
+    {"ttf", "application/font-sfnt"},
+    {"tts", "video/vnd.dlna.mpeg-tts"},
+    {"txt", "text/plain"},
+    {"u32", "application/octet-stream"},
+    {"uls", "text/iuls"},
+    {"user", "text/plain"},
+    {"ustar", "application/x-ustar"},
+    {"vb", "text/plain"},
+    {"vbdproj", "text/plain"},
+    {"vbk", "video/mpeg"},
+    {"vbproj", "text/plain"},
+    {"vbs", "text/vbscript"},
+    {"vcf", {"text/x-vcard", "text/vcard"}},
+    {"vcproj", "application/xml"},
+    {"vcs", "text/plain"},
+    {"vcxproj", "application/xml"},
+    {"vddproj", "text/plain"},
+    {"vdp", "text/plain"},
+    {"vdproj", "text/plain"},
+    {"vdx", "application/vnd.ms-visio.viewer"},
+    {"vml", "text/xml"},
+    {"vscontent", "application/xml"},
+    {"vsct", "text/xml"},
+    {"vsd", "application/vnd.visio"},
+    {"vsi", "application/ms-vsi"},
+    {"vsix", "application/vsix"},
+    {"vsixlangpack", "text/xml"},
+    {"vsixmanifest", "text/xml"},
+    {"vsmdi", "application/xml"},
+    {"vspscc", "text/plain"},
+    {"vss", "application/vnd.visio"},
+    {"vsscc", "text/plain"},
+    {"vssettings", "text/xml"},
+    {"vssscc", "text/plain"},
+    {"vst", "application/vnd.visio"},
+    {"vstemplate", "text/xml"},
+    {"vsto", "application/x-ms-vsto"},
+    {"vsw", "application/vnd.visio"},
+    {"vsx", "application/vnd.visio"},
+    {"vtx", "application/vnd.visio"},
+    {"wav", "audio/wav"},
+    {"wave", "audio/wav"},
+    {"wax", "audio/x-ms-wax"},
+    {"wbk", "application/msword"},
+    {"wbmp", "image/vnd.wap.wbmp"},
+    {"wcm", "application/vnd.ms-works"},
+    {"wdb", "application/vnd.ms-works"},
+    {"wdp", "image/vnd.ms-photo"},
+    {"webarchive", "application/x-safari-webarchive"},
+    {"webm", "video/webm"},
+    {"webp", "image/webp"},
+    {"webtest", "application/xml"},
+    {"wiq", "application/xml"},
+    {"wiz", "application/msword"},
+    {"wks", "application/vnd.ms-works"},
+    {"WLMP", "application/wlmoviemaker"},
+    {"wlpginstall", "application/x-wlpg-detect"},
+    {"wlpginstall3", "application/x-wlpg3-detect"},
+    {"wm", "video/x-ms-wm"},
+    {"wma", "audio/x-ms-wma"},
+    {"wmd", "application/x-ms-wmd"},
+    {"wmf", "application/x-msmetafile"},
+    {"wml", "text/vnd.wap.wml"},
+    {"wmlc", "application/vnd.wap.wmlc"},
+    {"wmls", "text/vnd.wap.wmlscript"},
+    {"wmlsc", "application/vnd.wap.wmlscriptc"},
+    {"wmp", "video/x-ms-wmp"},
+    {"wmv", "video/x-ms-wmv"},
+    {"wmx", "video/x-ms-wmx"},
+    {"wmz", "application/x-ms-wmz"},
+    {"woff", "application/font-woff"},
+    {"wpl", "application/vnd.ms-wpl"},
+    {"wps", "application/vnd.ms-works"},
+    {"wri", "application/x-mswrite"},
+    {"wrl", "x-world/x-vrml"},
+    {"wrz", "x-world/x-vrml"},
+    {"wsc", "text/scriptlet"},
+    {"wsdl", "text/xml"},
+    {"wvx", "video/x-ms-wvx"},
+    {"x", "application/directx"},
+    {"xaf", "x-world/x-vrml"},
+    {"xaml", "application/xaml+xml"},
+    {"xap", "application/x-silverlight-app"},
+    {"xbap", "application/x-ms-xbap"},
+    {"xbm", "image/x-xbitmap"},
+    {"xdr", "text/plain"},
+    {"xht", "application/xhtml+xml"},
+    {"xhtml", "application/xhtml+xml"},
+    {"xla", "application/vnd.ms-excel"},
+    {"xlam", "application/vnd.ms-excel.addin.macroEnabled.12"},
+    {"xlc", "application/vnd.ms-excel"},
+    {"xld", "application/vnd.ms-excel"},
+    {"xlk", "application/vnd.ms-excel"},
+    {"xll", "application/vnd.ms-excel"},
+    {"xlm", "application/vnd.ms-excel"},
+    {"xls", {
+        "application/excel",
+        "application/vnd.ms-excel",
+        "application/vnd.ms-office",
+        "application/x-excel",
+        "application/octet-stream"
+    }},
+    {"xlsb", "application/vnd.ms-excel.sheet.binary.macroEnabled.12"},
+    {"xlsm", "application/vnd.ms-excel.sheet.macroEnabled.12"},
+    {"xlsx", {
+        "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
+        "application/vnd.ms-excel.12",
+        "application/octet-stream"
+    }},
+    {"xlt", "application/vnd.ms-excel"},
+    {"xltm", "application/vnd.ms-excel.template.macroEnabled.12"},
+    {"xltx", "application/vnd.openxmlformats-officedocument.spreadsheetml.template"},
+    {"xlw", "application/vnd.ms-excel"},
+    {"xml", {"application/xml", "text/xml", "application/octet-stream"}},
+    {"xmp", "application/octet-stream" },
+    {"xmta", "application/xml"},
+    {"xof", "x-world/x-vrml"},
+    {"XOML", "text/plain"},
+    {"xpm", "image/x-xpixmap"},
+    {"xps", "application/vnd.ms-xpsdocument"},
+    {"xrm-ms", "text/xml"},
+    {"xsc", "application/xml"},
+    {"xsd", "text/xml"},
+    {"xsf", "text/xml"},
+    {"xsl", "text/xml"},
+    {"xslt", "text/xml"},
+    {"xsn", "application/octet-stream"},
+    {"xss", "application/xml"},
+    {"xspf", "application/xspf+xml"},
+    {"xtp", "application/octet-stream"},
+    {"xwd", "image/x-xwindowdump"},
+    {"z", "application/x-compress"},
+    {"zip", {
+        "application/zip",
+        "application/x-zip-compressed",
+        "application/octet-stream"
+    }},
+    {"zlib", "application/zlib"},
+}
+
+-- Used to match extension by content type
+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
index 9f6e4f3303d82f8daed219b74f633cdcc454fcf1..627c27f596c3b31edd1a485914fc7535e0a9917d 100644 (file)
@@ -23,7 +23,7 @@ local logger = require "rspamd_logger"
 local lua_util = require "lua_util"
 local rspamd_util = require "rspamd_util"
 local lua_maps = require "lua_maps"
-local lua_mime = require "lua_mime"
+local lua_mime_types = require "lua_mime_types"
 local lua_magic_types = require "lua_magic/types"
 local fun = require "fun"
 
@@ -570,7 +570,7 @@ if opts then
   end
 
   -- Add all extensions
-  for _,pair in ipairs(lua_mime.full_extensions_map) do
+  for _,pair in ipairs(lua_mime_types.full_extensions_map) do
     local ext, ct = pair[1], pair[2]
     if not settings.extension_map[ext] then
         change_extension_map_entry(ext, ct, settings.other_extensions_mult)