diff options
author | Ori Livneh <ori.livneh@gmail.com> | 2020-05-12 15:42:35 -0400 |
---|---|---|
committer | Ori Livneh <ori.livneh@gmail.com> | 2020-05-19 00:59:52 -0400 |
commit | cb44ddf85b09d48322f9326b948925b9e3022b92 (patch) | |
tree | 5ae55817d6eb6402030cf4414bb9fff0902031f7 /includes | |
parent | b9973fc3bca0d3e4250d35a136a159883fb04418 (diff) | |
download | mediawikicore-cb44ddf85b09d48322f9326b948925b9e3022b92.tar.gz mediawikicore-cb44ddf85b09d48322f9326b948925b9e3022b92.zip |
mime: Convert built-in MIME mappings to PHP arrays
Currently, MimeAnalyzer builds the internal mappings of MIME types <=> file
extensions by concatenating several string buffers in mime.type format into a
giant string, and then parsing it. The mapping of MIME types to internal
media types is built up in a similar way, except we use a dubious homegrown
format with undocumented conventions. It's a mess, and an expensive one --
~1.5% of api.php CPU time on the WMF cluster is spent building these buffers
and parsing them. Converting the mappings to PHP associative arrays makes
them much cheaper to load and easier to maintain.
Doing this without breaking compatibility with existing behaviors requires
some delicate footwork. The current mime.types buffer is made up of the
following fragments, in order:
1) MimeAnalyzer::$wellKnownTypes
2) If $wgMimeTypeFile == 'includes/mime.types' (sic!):
the contents of includes/libs/mime/mime.types.
If $wgMimeTypeFile is another file path (e.g., '/etc/mime.types'):
the contents of that file.
If !wg$MimeTypeFile, this fragment is blank.
3) MimeAnalyzer::$extraTypes (populated by extensions via hook).
The mime.info buffer is built up in the exact same way, except it's
MimeAnalyzer::$wellKnownInfo, $wgMimeInfoFile, and MimeAnalyzer::$extraInfo.
What this means in effect is that some built-in MediaWiki MIME mappings are
"baked in" (anything in MimeAnalyzer::$wellKnown*), and others can be
overridden (anything in includes/libs/mime/mime.*).
To avoid breaking backward compatibility, we have to preserve the
distinction. Thus this change has two MIME mappings, encapsulated in two
classes: 'MimeMapMinimal', which contains just the baked-in mappings, and
'MimeMap' which contains both the baked-in and overridable mappings. We also
have to keep the code for parsing mime.types and the ad-hoc mime.info format,
at least for now.
In a FUTURE change (i.e., not here), I think we can:
* Deprecate $wgMimeTypeFile in favor of a new config var,
$wgExtraMimeTypeFile. $wgMimeTypeFile is evil because if you are using to
add support for additional MIME types, you can end up unwittingly dropping
support for other types that exist in MediaWiki's mime.types but not your
file. The new $wgExtraMimeTypeFile would only be used to add new MIME
mappings on top of the standard MimeMappings, which was probably the
original intent for $wgMimeTypeFile.
* Deprecate $wgMimeInfoFile. I don't think we need to provide a replacement,
because extensions can use the hook, and I doubt anyone is using the config
var. But if we wanted to provide an alternative, we could have a
$wgExtraMimeInfoMap that has an array of extra mappings.
* Deprecate MimeAnalyzer::addExtraTypes and MimeAnalyzer::addExtraInfo, and
provide alternative interfaces that take structured input instead of string
blobs.
I tested this by dumping the internal state of MimeAnalyzer before and after
this CL using the script in Ib856a69fe, using both default and custom values
for $wgMimeInfo(File|Type).
Bug: T252228
Change-Id: I9b2979d3c9c0dee96bb19e0290f680724e718891
Diffstat (limited to 'includes')
-rw-r--r-- | includes/DefaultSettings.php | 12 | ||||
-rw-r--r-- | includes/ServiceWiring.php | 4 | ||||
-rw-r--r-- | includes/libs/mime/MimeAnalyzer.php | 231 | ||||
-rw-r--r-- | includes/libs/mime/MimeMap.php | 502 | ||||
-rw-r--r-- | includes/libs/mime/MimeMapMinimal.php | 159 | ||||
-rw-r--r-- | includes/libs/mime/mime.info | 123 | ||||
-rw-r--r-- | includes/libs/mime/mime.types | 190 |
7 files changed, 721 insertions, 500 deletions
diff --git a/includes/DefaultSettings.php b/includes/DefaultSettings.php index 9adccfbf1433..557319558a3c 100644 --- a/includes/DefaultSettings.php +++ b/includes/DefaultSettings.php @@ -1471,16 +1471,20 @@ $wgVerifyMimeTypeIE = true; /** * Sets the MIME type definition file to use by includes/libs/mime/MimeAnalyzer.php. - * Set to null, to use built-in defaults only. + * When this is set to the path of a mime.types file, MediaWiki will use this + * file to map MIME types to file extensions and vice versa, in lieu of its + * internal MIME map. Note that some MIME mappings are considered "baked in" + * and cannot be overridden. See includes/libs/mime/MimeMapMinimal.php for a + * full list. * example: $wgMimeTypeFile = '/etc/mime.types'; */ -$wgMimeTypeFile = 'includes/mime.types'; +$wgMimeTypeFile = 'internal'; /** * Sets the MIME type info file to use by includes/libs/mime/MimeAnalyzer.php. - * Set to null, to use built-in defaults only. + * Set to null to use the minimum set of built-in defaults only. */ -$wgMimeInfoFile = 'includes/mime.info'; +$wgMimeInfoFile = 'internal'; /** * Sets an external MIME detector program. The command must print only diff --git a/includes/ServiceWiring.php b/includes/ServiceWiring.php index 275e7eaeee21..8ed427254322 100644 --- a/includes/ServiceWiring.php +++ b/includes/ServiceWiring.php @@ -663,11 +663,11 @@ return [ ]; if ( $params['infoFile'] === 'includes/mime.info' ) { - $params['infoFile'] = __DIR__ . "/libs/mime/mime.info"; + $params['infoFile'] = MimeAnalyzer::USE_INTERNAL; } if ( $params['typeFile'] === 'includes/mime.types' ) { - $params['typeFile'] = __DIR__ . "/libs/mime/mime.types"; + $params['typeFile'] = MimeAnalyzer::USE_INTERNAL; } $detectorCmd = $mainConfig->get( 'MimeDetectorCommand' ); diff --git a/includes/libs/mime/MimeAnalyzer.php b/includes/libs/mime/MimeAnalyzer.php index d525acc66963..274c175a3adb 100644 --- a/includes/libs/mime/MimeAnalyzer.php +++ b/includes/libs/mime/MimeAnalyzer.php @@ -22,6 +22,8 @@ use Psr\Log\LoggerAwareInterface; use Psr\Log\LoggerInterface; use Psr\Log\NullLogger; +use Wikimedia\Mime\MimeMap; +use Wikimedia\Mime\MimeMapMinimal; /** * Implements functions related to MIME types such as detection and mapping to file extension @@ -64,118 +66,8 @@ class MimeAnalyzer implements LoggerAwareInterface { /** @var LoggerInterface */ private $logger; - /** - * Defines a set of well known MIME types - * This is used as a fallback to mime.types files. - * An extensive list of well known MIME types is provided by - * the file mime.types in the includes directory. - * - * This list concatenated with mime.types is used to create a MIME <-> ext - * map. Each line contains a MIME type followed by a space separated list of - * extensions. If multiple extensions for a single MIME type exist or if - * multiple MIME types exist for a single extension then in most cases - * MediaWiki assumes that the first extension following the MIME type is the - * canonical extension, and the first time a MIME type appears for a certain - * extension is considered the canonical MIME type. - * - * (Note that appending the type file list to the end of self::$wellKnownTypes - * sucks because you can't redefine canonical types. This could be fixed by - * appending self::$wellKnownTypes behind type file list, but who knows - * what will break? In practice this probably isn't a problem anyway -- Bryan) - */ - protected static $wellKnownTypes = <<<EOT -application/ogg ogx ogg ogm ogv oga spx opus -application/pdf pdf -application/vnd.oasis.opendocument.chart odc -application/vnd.oasis.opendocument.chart-template otc -application/vnd.oasis.opendocument.database odb -application/vnd.oasis.opendocument.formula odf -application/vnd.oasis.opendocument.formula-template otf -application/vnd.oasis.opendocument.graphics odg -application/vnd.oasis.opendocument.graphics-template otg -application/vnd.oasis.opendocument.image odi -application/vnd.oasis.opendocument.image-template oti -application/vnd.oasis.opendocument.presentation odp -application/vnd.oasis.opendocument.presentation-template otp -application/vnd.oasis.opendocument.spreadsheet ods -application/vnd.oasis.opendocument.spreadsheet-template ots -application/vnd.oasis.opendocument.text odt -application/vnd.oasis.opendocument.text-master otm -application/vnd.oasis.opendocument.text-template ott -application/vnd.oasis.opendocument.text-web oth -application/javascript js -application/x-shockwave-flash swf -audio/midi mid midi kar -audio/mpeg mpga mpa mp2 mp3 -audio/x-aiff aif aiff aifc -audio/x-wav wav -audio/ogg oga spx ogg opus -audio/opus opus ogg oga ogg spx -image/x-bmp bmp -image/gif gif -image/jpeg jpeg jpg jpe -image/png png -image/svg+xml svg -image/svg svg -image/tiff tiff tif -image/vnd.djvu djvu -image/x.djvu djvu -image/x-djvu djvu -image/x-portable-pixmap ppm -image/x-xcf xcf -text/plain txt -text/html html htm -video/ogg ogv ogm ogg -video/mpeg mpg mpeg -EOT; - - /** - * Defines a set of well known MIME info entries - * This is used as a fallback to mime.info files. - * An extensive list of well known MIME types is provided by - * the file mime.info in the includes directory. - */ - protected static $wellKnownInfo = <<<EOT -application/pdf [OFFICE] -application/vnd.oasis.opendocument.chart [OFFICE] -application/vnd.oasis.opendocument.chart-template [OFFICE] -application/vnd.oasis.opendocument.database [OFFICE] -application/vnd.oasis.opendocument.formula [OFFICE] -application/vnd.oasis.opendocument.formula-template [OFFICE] -application/vnd.oasis.opendocument.graphics [OFFICE] -application/vnd.oasis.opendocument.graphics-template [OFFICE] -application/vnd.oasis.opendocument.image [OFFICE] -application/vnd.oasis.opendocument.image-template [OFFICE] -application/vnd.oasis.opendocument.presentation [OFFICE] -application/vnd.oasis.opendocument.presentation-template [OFFICE] -application/vnd.oasis.opendocument.spreadsheet [OFFICE] -application/vnd.oasis.opendocument.spreadsheet-template [OFFICE] -application/vnd.oasis.opendocument.text [OFFICE] -application/vnd.oasis.opendocument.text-template [OFFICE] -application/vnd.oasis.opendocument.text-master [OFFICE] -application/vnd.oasis.opendocument.text-web [OFFICE] -application/javascript text/javascript application/x-javascript [EXECUTABLE] -application/x-shockwave-flash [MULTIMEDIA] -audio/midi [AUDIO] -audio/x-aiff [AUDIO] -audio/x-wav [AUDIO] -audio/mp3 audio/mpeg [AUDIO] -application/ogg audio/ogg video/ogg [MULTIMEDIA] -image/x-bmp image/x-ms-bmp image/bmp [BITMAP] -image/gif [BITMAP] -image/jpeg [BITMAP] -image/png [BITMAP] -image/svg+xml [DRAWING] -image/tiff [BITMAP] -image/vnd.djvu [BITMAP] -image/x-xcf [BITMAP] -image/x-portable-pixmap [BITMAP] -text/plain [TEXT] -text/html [TEXT] -video/ogg [VIDEO] -video/mpeg [VIDEO] -unknown/unknown application/octet-stream application/x-empty [UNKNOWN] -EOT; + /** @var string Use the full, built-in MIME mapping rather than load from a file */ + public const USE_INTERNAL = 'internal'; /** * @param array $params Configuration map, includes: @@ -206,40 +98,56 @@ EOT; } protected function loadFiles() { - /** - * --- load mime.types --- - */ - # Allow media handling extensions adding MIME-types and MIME-info if ( $this->initCallback ) { call_user_func( $this->initCallback, $this ); } - $types = self::$wellKnownTypes; - - $mimeTypeFile = $this->typeFile; - if ( $mimeTypeFile ) { - if ( is_file( $mimeTypeFile ) && is_readable( $mimeTypeFile ) ) { - $this->logger->info( __METHOD__ . ": loading mime types from $mimeTypeFile\n" ); - $types .= "\n"; - $types .= file_get_contents( $mimeTypeFile ); - } else { - $this->logger->info( __METHOD__ . ": can't load mime types from $mimeTypeFile\n" ); - } + $rawTypes = $this->extraTypes; + if ( $this->typeFile === self::USE_INTERNAL ) { + $this->mimeToExt = MimeMap::MIME_EXTENSIONS; } else { - $this->logger->info( __METHOD__ . - ": no mime types file defined, using built-ins only.\n" ); + $this->mimeToExt = MimeMapMinimal::MIME_EXTENSIONS; + if ( $this->typeFile ) { + $rawTypes = file_get_contents( $this->typeFile ) . "\n" . $this->extraTypes; + } + } + if ( $rawTypes ) { + $this->parseMimeTypes( $rawTypes ); } - $types .= "\n" . $this->extraTypes; + // Build the reverse mapping (extension => MIME type). + foreach ( $this->mimeToExt as $mime => $exts ) { + foreach ( explode( ' ', $exts ) as $ext ) { + if ( isset( $this->mExtToMime[$ext] ) ) { + $this->mExtToMime[$ext] .= " " . $mime; + } else { + $this->mExtToMime[$ext] = $mime; + } + } + } - $types = str_replace( [ "\r\n", "\n\r", "\n\n", "\r\r", "\r" ], "\n", $types ); - $types = str_replace( "\t", " ", $types ); + $rawInfo = $this->extraInfo; + if ( $this->infoFile === self::USE_INTERNAL ) { + $this->mimeTypeAliases = MimeMap::MIME_TYPE_ALIASES; + $this->mediaTypes = MimeMap::MEDIA_TYPES; + } else { + $this->mimeTypeAliases = MimeMapMinimal::MIME_TYPE_ALIASES; + $this->mediaTypes = MimeMapMinimal::MEDIA_TYPES; + if ( $this->infoFile ) { + $rawInfo = file_get_contents( $this->infoFile ) . "\n" . $this->extraInfo; + } + } + if ( $rawInfo ) { + $this->parseMimeInfo( $rawInfo ); + } + } - $this->mimeToExt = []; - $this->mExtToMime = []; + protected function parseMimeTypes( $rawMimeTypes ) { + $rawMimeTypes = str_replace( [ "\r\n", "\n\r", "\n\n", "\r\r", "\r" ], "\n", $rawMimeTypes ); + $rawMimeTypes = str_replace( "\t", " ", $rawMimeTypes ); - $lines = explode( "\n", $types ); + $lines = explode( "\n", $rawMimeTypes ); foreach ( $lines as $s ) { $s = trim( $s ); if ( empty( $s ) ) { @@ -268,53 +176,14 @@ EOT; } else { $this->mimeToExt[$mime] = $ext; } - - $extensions = explode( ' ', $ext ); - - foreach ( $extensions as $e ) { - $e = trim( $e ); - if ( empty( $e ) ) { - continue; - } - - if ( !empty( $this->mExtToMime[$e] ) ) { - $this->mExtToMime[$e] .= ' ' . $mime; - } else { - $this->mExtToMime[$e] = $mime; - } - } } + } - /** - * --- load mime.info --- - */ - - $mimeInfoFile = $this->infoFile; - - $info = self::$wellKnownInfo; - - if ( $mimeInfoFile ) { - if ( is_file( $mimeInfoFile ) && is_readable( $mimeInfoFile ) ) { - $this->logger->info( __METHOD__ . ": loading mime info from $mimeInfoFile\n" ); - $info .= "\n"; - $info .= file_get_contents( $mimeInfoFile ); - } else { - $this->logger->info( __METHOD__ . ": can't load mime info from $mimeInfoFile\n" ); - } - } else { - $this->logger->info( __METHOD__ . - ": no mime info file defined, using built-ins only.\n" ); - } - - $info .= "\n" . $this->extraInfo; - - $info = str_replace( [ "\r\n", "\n\r", "\n\n", "\r\r", "\r" ], "\n", $info ); - $info = str_replace( "\t", " ", $info ); - - $this->mimeTypeAliases = []; - $this->mediaTypes = []; + protected function parseMimeInfo( $rawMimeInfo ) { + $rawMimeInfo = str_replace( [ "\r\n", "\n\r", "\n\n", "\r\r", "\r" ], "\n", $rawMimeInfo ); + $rawMimeInfo = str_replace( "\t", " ", $rawMimeInfo ); - $lines = explode( "\n", $info ); + $lines = explode( "\n", $rawMimeInfo ); foreach ( $lines as $s ) { $s = trim( $s ); if ( empty( $s ) ) { @@ -374,7 +243,7 @@ EOT; /** * Adds to the list mapping MIME to file extensions. * As an extension author, you are encouraged to submit patches to - * MediaWiki's core to add new MIME types to mime.types. + * MediaWiki's core to add new MIME types to MimeMap.php. * @param string $types */ public function addExtraTypes( $types ) { @@ -384,7 +253,7 @@ EOT; /** * Adds to the list mapping MIME to media type. * As an extension author, you are encouraged to submit patches to - * MediaWiki's core to add new MIME info to mime.info. + * MediaWiki's core to add new MIME info to MimeMap.php. * @param string $info */ public function addExtraInfo( $info ) { diff --git a/includes/libs/mime/MimeMap.php b/includes/libs/mime/MimeMap.php new file mode 100644 index 000000000000..303d18d61aa7 --- /dev/null +++ b/includes/libs/mime/MimeMap.php @@ -0,0 +1,502 @@ +<?php +/** + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * http://www.gnu.org/copyleft/gpl.html + * + * @file + */ + +namespace Wikimedia\Mime; + +/** + * MimeMap defines the mapping of MIME types to file extensions and media + * types. + * + * @internal + */ +class MimeMap { + /** @var array Map of MIME types to a string of space-separated file extensions */ + public const MIME_EXTENSIONS = [ + 'application/ogg' => 'ogx ogg ogm ogv oga spx opus', + 'application/pdf' => 'pdf', + 'application/vnd.oasis.opendocument.chart' => 'odc', + 'application/vnd.oasis.opendocument.chart-template' => 'otc', + 'application/vnd.oasis.opendocument.database' => 'odb', + 'application/vnd.oasis.opendocument.formula' => 'odf', + 'application/vnd.oasis.opendocument.formula-template' => 'otf', + 'application/vnd.oasis.opendocument.graphics' => 'odg', + 'application/vnd.oasis.opendocument.graphics-template' => 'otg', + 'application/vnd.oasis.opendocument.image' => 'odi', + 'application/vnd.oasis.opendocument.image-template' => 'oti', + 'application/vnd.oasis.opendocument.presentation' => 'odp', + 'application/vnd.oasis.opendocument.presentation-template' => 'otp', + 'application/vnd.oasis.opendocument.spreadsheet' => 'ods', + 'application/vnd.oasis.opendocument.spreadsheet-template' => 'ots', + 'application/vnd.oasis.opendocument.text' => 'odt', + 'application/vnd.oasis.opendocument.text-master' => 'otm odm', + 'application/vnd.oasis.opendocument.text-template' => 'ott', + 'application/vnd.oasis.opendocument.text-web' => 'oth', + 'application/javascript' => 'js', + 'application/x-shockwave-flash' => 'swf', + 'audio/midi' => 'mid midi kar', + 'audio/mpeg' => 'mpga mpa mp2 mp3', + 'audio/x-aiff' => 'aif aiff aifc', + 'audio/x-wav' => 'wav', + 'audio/ogg' => 'oga spx ogg opus', + 'audio/opus' => 'opus ogg oga spx', + 'image/x-bmp' => 'bmp', + 'image/gif' => 'gif', + 'image/jpeg' => 'jpeg jpg jpe', + 'image/png' => 'png apng', + 'image/svg+xml' => 'svg', + 'image/svg' => 'svg', + 'image/tiff' => 'tiff tif', + 'image/vnd.djvu' => 'djvu djv', + 'image/x.djvu' => 'djvu', + 'image/x-djvu' => 'djvu', + 'image/x-portable-pixmap' => 'ppm', + 'image/x-xcf' => 'xcf', + 'text/plain' => 'txt', + 'text/html' => 'html htm', + 'video/ogg' => 'ogv ogm ogg', + 'video/mpeg' => 'mpg mpeg mpe', + 'application/acad' => 'dwg', + 'application/andrew-inset' => 'ez', + 'application/mac-binhex40' => 'hqx', + 'application/mac-compactpro' => 'cpt', + 'application/mathml+xml' => 'mathml', + 'application/msword' => 'doc dot', + 'application/octet-stream' => 'bin dms lha lzh exe class so dll', + 'application/oda' => 'oda', + 'application/postscript' => 'ai eps ps', + 'application/rdf+xml' => 'rdf', + 'application/smil' => 'smi smil', + 'application/srgs' => 'gram', + 'application/srgs+xml' => 'grxml', + 'application/vnd.mif' => 'mif', + 'application/vnd.ms-excel' => 'xls xlt xla', + 'application/vnd.ms-powerpoint' => 'ppt pot pps ppa', + 'application/vnd.wap.wbxml' => 'wbxml', + 'application/vnd.wap.wmlc' => 'wmlc', + 'application/vnd.wap.wmlscriptc' => 'wmlsc', + 'application/voicexml+xml' => 'vxml', + 'application/x-7z-compressed' => '7z', + 'application/x-bcpio' => 'bcpio', + 'application/x-bzip' => 'bz', + 'application/x-bzip2' => 'bz2', + 'application/x-cdlink' => 'vcd', + 'application/x-chess-pgn' => 'pgn', + 'application/x-cpio' => 'cpio', + 'application/x-csh' => 'csh', + 'application/x-dia-diagram' => 'dia', + 'application/x-director' => 'dcr dir dxr', + 'application/x-dvi' => 'dvi', + 'application/x-futuresplash' => 'spl', + 'application/x-gtar' => 'gtar tar', + 'application/x-gzip' => 'gz', + 'application/x-hdf' => 'hdf', + 'application/x-jar' => 'jar', + 'application/json' => 'json', + 'application/x-koan' => 'skp skd skt skm', + 'application/x-latex' => 'latex', + 'application/x-netcdf' => 'nc cdf', + 'application/x-sh' => 'sh', + 'application/x-shar' => 'shar', + 'application/x-stuffit' => 'sit', + 'application/x-sv4cpio' => 'sv4cpio', + 'application/x-sv4crc' => 'sv4crc', + 'application/x-tar' => 'tar', + 'application/x-tcl' => 'tcl', + 'application/x-tex' => 'tex', + 'application/x-texinfo' => 'texinfo texi', + 'application/x-troff' => 't tr roff', + 'application/x-troff-man' => 'man', + 'application/x-troff-me' => 'me', + 'application/x-troff-ms' => 'ms', + 'application/x-ustar' => 'ustar', + 'application/x-wais-source' => 'src', + 'application/x-xpinstall' => 'xpi', + 'application/xhtml+xml' => 'xhtml xht', + 'application/xslt+xml' => 'xslt', + 'application/xml' => 'xml xsl xsd kml', + 'application/xml-dtd' => 'dtd', + 'application/zip' => 'zip jar xpi sxc stc sxd std sxi sti sxm stm sxw stw', + 'application/x-rar' => 'rar', + 'application/font-woff' => 'woff', + 'application/font-woff2' => 'woff2', + 'application/vnd.ms-fontobject' => 'eot', + 'application/x-font-ttf' => 'ttf', + 'audio/basic' => 'au snd', + 'video/webm' => 'webm', + 'audio/webm' => 'webm', + 'audio/x-matroska' => 'mka mkv', + 'audio/x-mpegurl' => 'm3u', + 'audio/x-ogg' => 'oga ogg spx opus', + 'audio/x-pn-realaudio' => 'ram rm', + 'audio/x-pn-realaudio-plugin' => 'rpm', + 'audio/x-realaudio' => 'ra', + 'audio/wav' => 'wav', + 'audio/x-flac' => 'flac', + 'audio/flac' => 'flac', + 'chemical/x-pdb' => 'pdb', + 'chemical/x-xyz' => 'xyz', + 'image/bmp' => 'bmp', + 'image/cgm' => 'cgm', + 'image/ief' => 'ief', + 'image/jp2' => 'j2k jp2 jpg2', + 'image/vnd.microsoft.icon' => 'ico', + 'image/vnd.wap.wbmp' => 'wbmp', + 'image/webp' => 'webp', + 'image/x-cmu-raster' => 'ras', + 'image/x-icon' => 'ico', + 'image/x-ms-bmp' => 'bmp', + 'image/x-portable-anymap' => 'pnm', + 'image/x-portable-bitmap' => 'pbm', + 'image/x-portable-graymap' => 'pgm', + 'image/x-rgb' => 'rgb', + 'image/x-photoshop' => 'psd', + 'image/x-xbitmap' => 'xbm', + 'image/x-xpixmap' => 'xpm', + 'image/x-xwindowdump' => 'xwd', + 'model/iges' => 'igs iges', + 'model/mesh' => 'msh mesh silo', + 'model/vrml' => 'wrl vrml', + 'text/calendar' => 'ics ifb', + 'text/css' => 'css', + 'text/csv' => 'csv', + 'text/richtext' => 'rtx', + 'text/rtf' => 'rtf', + 'text/sgml' => 'sgml sgm', + 'text/tab-separated-values' => 'tsv', + 'text/vnd.wap.wml' => 'wml', + 'text/vnd.wap.wmlscript' => 'wmls', + 'text/xml' => 'xml xsl xslt rss rdf', + 'text/x-component' => 'htc', + 'text/x-setext' => 'etx', + 'text/x-sawfish' => 'jl', + 'video/mp4' => 'mp4 m4a m4p m4b m4r m4v', + 'audio/mp4' => 'm4a', + 'video/quicktime' => 'qt mov', + 'video/vnd.mpegurl' => 'mxu', + 'video/x-flv' => 'flv', + 'video/x-matroska' => 'mkv mka', + 'video/x-msvideo' => 'avi', + 'video/x-ogg' => 'ogv ogm ogg', + 'video/x-sgi-movie' => 'movie', + 'x-conference/x-cooltalk' => 'ice', + 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' => 'docx', + 'application/vnd.openxmlformats-officedocument.wordprocessingml.template' => 'dotx', + 'application/vnd.ms-word.document.macroenabled.12' => 'docm', + 'application/vnd.ms-word.template.macroenabled.12' => 'dotm', + 'application/vnd.openxmlformats-officedocument.presentationml.template' => 'potx', + 'application/vnd.openxmlformats-officedocument.presentationml.slideshow' => 'ppsx', + 'application/vnd.openxmlformats-officedocument.presentationml.presentation' => 'pptx', + 'application/vnd.ms-powerpoint.addin.macroenabled.12' => 'ppam', + 'application/vnd.ms-powerpoint.presentation.macroenabled.12' => 'pptm potm', + 'application/vnd.ms-powerpoint.slideshow.macroenabled.12' => 'ppsm', + 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' => 'xlsx', + 'application/vnd.openxmlformats-officedocument.spreadsheetml.template' => 'xltx', + 'application/vnd.ms-excel.sheet.macroenabled.12' => 'xlsm', + 'application/vnd.ms-excel.template.macroenabled.12' => 'xltm', + 'application/vnd.ms-excel.addin.macroenabled.12' => 'xlam', + 'application/vnd.ms-excel.sheet.binary.macroenabled.12' => 'xlsb', + 'model/vnd.dwfx+xps' => 'dwfx', + 'application/vnd.ms-xpsdocument' => 'xps', + 'application/x-opc+zip' => + 'docx dotx docm dotm potx ppsx pptx ppam pptm potm ppsm xlsx xltx xlsm xltm xlam xlsb dwfx xps', + 'chemical/x-mdl-molfile' => 'mol', + 'chemical/x-mdl-sdfile' => 'sdf', + 'chemical/x-mdl-rxnfile' => 'rxn', + 'chemical/x-mdl-rdfile' => 'rd', + 'chemical/x-mdl-rgfile' => 'rg', + 'application/x-amf' => 'amf', + 'application/sla' => 'stl', + 'application/wasm' => 'wasm', + ]; + + /** @var array Map of built-in media types and their associated MIME types */ + public const MEDIA_TYPES = [ + MEDIATYPE_OFFICE => [ + 'application/pdf', + 'application/vnd.oasis.opendocument.chart', + 'application/vnd.oasis.opendocument.chart-template', + 'application/vnd.oasis.opendocument.database', + 'application/vnd.oasis.opendocument.formula', + 'application/vnd.oasis.opendocument.formula-template', + 'application/vnd.oasis.opendocument.graphics', + 'application/vnd.oasis.opendocument.graphics-template', + 'application/vnd.oasis.opendocument.image', + 'application/vnd.oasis.opendocument.image-template', + 'application/vnd.oasis.opendocument.presentation', + 'application/vnd.oasis.opendocument.presentation-template', + 'application/vnd.oasis.opendocument.spreadsheet', + 'application/vnd.oasis.opendocument.spreadsheet-template', + 'application/vnd.oasis.opendocument.text', + 'application/vnd.oasis.opendocument.text-template', + 'application/vnd.oasis.opendocument.text-master', + 'application/vnd.oasis.opendocument.text-web', + 'application/pdf', + 'application/acrobat', + 'application/msword', + 'application/vnd.ms-excel', + 'application/vnd.ms-powerpoint', + 'application/x-director', + 'image/vnd.djvu', + 'image/x.djvu', + 'image/x-djvu', + 'text/rtf', + 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', + 'application/vnd.openxmlformats-officedocument.wordprocessingml.template', + 'application/vnd.ms-word.document.macroenabled.12', + 'application/vnd.ms-word.template.macroenabled.12', + 'application/vnd.openxmlformats-officedocument.presentationml.template', + 'application/vnd.openxmlformats-officedocument.presentationml.slideshow', + 'application/vnd.openxmlformats-officedocument.presentationml.presentation', + 'application/vnd.ms-powerpoint.addin.macroenabled.12', + 'application/vnd.ms-powerpoint.presentation.macroenabled.12', + 'application/vnd.ms-powerpoint.presentation.macroenabled.12', + 'application/vnd.ms-powerpoint.slideshow.macroenabled.12', + 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', + 'application/vnd.openxmlformats-officedocument.spreadsheetml.template', + 'application/vnd.ms-excel.sheet.macroenabled.12', + 'application/vnd.ms-excel.template.macroenabled.12', + 'application/vnd.ms-excel.addin.macroenabled.12', + 'application/vnd.ms-excel.sheet.binary.macroenabled.12', + ], + MEDIATYPE_EXECUTABLE => [ + 'application/javascript', + 'text/javascript', + 'application/x-javascript', + 'application/javascript', + 'text/javascript', + 'application/x-javascript', + 'application/x-ecmascript', + 'text/ecmascript', + 'application/x-bash', + 'application/x-sh', + 'application/x-csh', + 'application/x-tcsh', + 'application/x-tcl', + 'application/x-perl', + 'application/x-python', + 'application/wasm', + ], + MEDIATYPE_MULTIMEDIA => [ + 'application/x-shockwave-flash', + 'application/ogg', + 'audio/ogg', + 'video/ogg', + 'application/ogg', + 'application/x-ogg', + 'audio/ogg', + 'audio/x-ogg', + 'video/ogg', + 'video/x-ogg', + 'application/x-shockwave-flash', + 'audio/x-pn-realaudio-plugin', + 'model/iges', + 'model/mesh', + 'model/vrml', + 'video/quicktime', + 'video/x-msvideo', + ], + MEDIATYPE_AUDIO => [ + 'audio/midi', + 'audio/x-aiff', + 'audio/x-wav', + 'audio/mp3', + 'audio/mpeg', + 'audio/mpeg', + 'audio/mp3', + 'audio/mpeg3', + 'audio/mp4', + 'audio/wav', + 'audio/x-wav', + 'audio/wave', + 'audio/midi', + 'audio/mid', + 'audio/basic', + 'audio/ogg', + 'audio/opus', + 'audio/x-aiff', + 'audio/x-pn-realaudio', + 'audio/x-realaudio', + 'audio/webm', + 'audio/x-matroska', + 'audio/x-flac', + 'audio/flac', + ], + MEDIATYPE_BITMAP => [ + 'image/x-bmp', + 'image/x-ms-bmp', + 'image/bmp', + 'image/gif', + 'image/jpeg', + 'image/png', + 'image/tiff', + 'image/vnd.djvu', + 'image/x-xcf', + 'image/x-portable-pixmap', + 'image/gif', + 'image/png', + 'image/x-png', + 'image/ief', + 'image/jpeg', + 'image/pjpeg', + 'image/jp2', + 'image/xbm', + 'image/tiff', + 'image/x-icon', + 'image/x-ico', + 'image/vnd.microsoft.icon', + 'image/x-rgb', + 'image/x-portable-pixmap', + 'image/x-portable-graymap', + 'image/x-portable-greymap', + 'image/x-bmp', + 'image/x-ms-bmp', + 'image/bmp', + 'application/x-bmp', + 'application/bmp', + 'image/x-photoshop', + 'image/psd', + 'image/x-psd', + 'image/photoshop', + 'image/vnd.adobe.photoshop', + 'image/webp', + ], + MEDIATYPE_DRAWING => [ + 'image/svg+xml', + 'image/svg+xml', + 'application/svg+xml', + 'application/svg', + 'image/svg', + 'application/postscript', + 'application/x-latex', + 'application/x-tex', + 'application/x-dia-diagram', + 'application/acad', + 'application/x-acad', + 'application/autocad_dwg', + 'image/x-dwg', + 'application/dwg', + 'application/x-dwg', + 'application/x-autocad', + 'image/vnd.dwg', + 'drawing/dwg', + 'chemical/x-mdl-molfile', + 'chemical/x-mdl-sdfile', + 'chemical/x-mdl-rxnfile', + 'chemical/x-mdl-rdfile', + 'chemical/x-mdl-rgfile', + ], + MEDIATYPE_TEXT => [ + 'text/plain', + 'text/html', + 'text/plain', + 'text/html', + 'application/xhtml+xml', + 'application/xml', + 'text/xml', + 'text', + 'application/json', + 'text/csv', + 'text/tab-separated-values', + ], + MEDIATYPE_VIDEO => [ + 'video/ogg', + 'video/mpeg', + 'video/mpeg', + 'application/mpeg', + 'video/ogg', + 'video/x-sgi-video', + 'video/x-flv', + 'video/webm', + 'video/x-matroska', + 'video/mp4', + ], + MEDIATYPE_UNKNOWN => [ + 'unknown/unknown', + 'application/octet-stream', + 'application/x-empty', + ], + MEDIATYPE_ARCHIVE => [ + 'application/zip', + 'application/x-zip', + 'application/x-gzip', + 'application/x-bzip', + 'application/x-bzip2', + 'application/x-tar', + 'application/x-stuffit', + 'application/x-opc+zip', + 'application/x-7z-compressed', + ], + MEDIATYPE_3D => [ + 'application/sla', + ], + ]; + + /** @var array Map of variant MIME types to their canonical MIME type */ + public const MIME_TYPE_ALIASES = [ + 'text/javascript' => 'application/javascript', + 'application/x-javascript' => 'application/javascript', + 'audio/mpeg' => 'audio/mp3', + 'audio/ogg' => 'application/ogg', + 'video/ogg' => 'application/ogg', + 'image/x-ms-bmp' => 'image/x-bmp', + 'image/bmp' => 'image/x-bmp', + 'application/octet-stream' => 'unknown/unknown', + 'application/x-empty' => 'unknown/unknown', + 'image/x-png' => 'image/png', + 'image/pjpeg' => 'image/jpeg', + 'image/x-ico' => 'image/x-icon', + 'image/vnd.microsoft.icon' => 'image/x-icon', + 'image/x-portable-greymap' => 'image/x-portable-graymap', + 'application/x-bmp' => 'image/x-bmp', + 'application/bmp' => 'image/x-bmp', + 'image/psd' => 'image/x-photoshop', + 'image/x-psd' => 'image/x-photoshop', + 'image/photoshop' => 'image/x-photoshop', + 'image/vnd.adobe.photoshop' => 'image/x-photoshop', + 'application/svg+xml' => 'image/svg+xml', + 'application/svg' => 'image/svg+xml', + 'image/svg' => 'image/svg+xml', + 'audio/mp3' => 'audio/mpeg', + 'audio/mpeg3' => 'audio/mpeg', + 'audio/x-wav' => 'audio/wav', + 'audio/wave' => 'audio/wav', + 'audio/mid' => 'audio/midi', + 'application/mpeg' => 'video/mpeg', + 'application/x-ogg' => 'application/ogg', + 'audio/x-ogg' => 'application/ogg', + 'video/x-ogg' => 'application/ogg', + 'application/xhtml+xml' => 'text/html', + 'text/xml' => 'application/xml', + 'application/x-zip' => 'application/zip', + 'application/x-ecmascript' => 'application/javascript', + 'text/ecmascript' => 'application/javascript', + 'application/acrobat' => 'application/pdf', + 'image/x.djvu' => 'image/vnd.djvu', + 'image/x-djvu' => 'image/vnd.djvu', + 'application/x-acad' => 'application/acad', + 'application/autocad_dwg' => 'application/acad', + 'image/x-dwg' => 'application/acad', + 'application/dwg' => 'application/acad', + 'application/x-dwg' => 'application/acad', + 'application/x-autocad' => 'application/acad', + 'image/vnd.dwg' => 'application/acad', + 'drawing/dwg' => 'application/acad', + ]; +} diff --git a/includes/libs/mime/MimeMapMinimal.php b/includes/libs/mime/MimeMapMinimal.php new file mode 100644 index 000000000000..740ed04706c2 --- /dev/null +++ b/includes/libs/mime/MimeMapMinimal.php @@ -0,0 +1,159 @@ +<?php +/** + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * http://www.gnu.org/copyleft/gpl.html + * + * @file + */ + +namespace Wikimedia\Mime; + +/** + * MimeMapMinimal defines a core set of MIME types that cannot be overridden by + * configuration. + * + * This class exists for backward compatibility ONLY. New MIME types should be + * added to MimeMap instead. + * + * @internal + */ +class MimeMapMinimal { + public const MIME_EXTENSIONS = [ + 'application/ogg' => 'ogx ogg ogm ogv oga spx opus', + 'application/pdf' => 'pdf', + 'application/vnd.oasis.opendocument.chart' => 'odc', + 'application/vnd.oasis.opendocument.chart-template' => 'otc', + 'application/vnd.oasis.opendocument.database' => 'odb', + 'application/vnd.oasis.opendocument.formula' => 'odf', + 'application/vnd.oasis.opendocument.formula-template' => 'otf', + 'application/vnd.oasis.opendocument.graphics' => 'odg', + 'application/vnd.oasis.opendocument.graphics-template' => 'otg', + 'application/vnd.oasis.opendocument.image' => 'odi', + 'application/vnd.oasis.opendocument.image-template' => 'oti', + 'application/vnd.oasis.opendocument.presentation' => 'odp', + 'application/vnd.oasis.opendocument.presentation-template' => 'otp', + 'application/vnd.oasis.opendocument.spreadsheet' => 'ods', + 'application/vnd.oasis.opendocument.spreadsheet-template' => 'ots', + 'application/vnd.oasis.opendocument.text' => 'odt', + 'application/vnd.oasis.opendocument.text-master' => 'otm', + 'application/vnd.oasis.opendocument.text-template' => 'ott', + 'application/vnd.oasis.opendocument.text-web' => 'oth', + 'application/javascript' => 'js', + 'application/x-shockwave-flash' => 'swf', + 'audio/midi' => 'mid midi kar', + 'audio/mpeg' => 'mpga mpa mp2 mp3', + 'audio/x-aiff' => 'aif aiff aifc', + 'audio/x-wav' => 'wav', + 'audio/ogg' => 'oga spx ogg opus', + 'audio/opus' => 'opus ogg oga spx', + 'image/x-bmp' => 'bmp', + 'image/gif' => 'gif', + 'image/jpeg' => 'jpeg jpg jpe', + 'image/png' => 'png', + 'image/svg+xml' => 'svg', + 'image/svg' => 'svg', + 'image/tiff' => 'tiff tif', + 'image/vnd.djvu' => 'djvu', + 'image/x.djvu' => 'djvu', + 'image/x-djvu' => 'djvu', + 'image/x-portable-pixmap' => 'ppm', + 'image/x-xcf' => 'xcf', + 'text/plain' => 'txt', + 'text/html' => 'html htm', + 'video/ogg' => 'ogv ogm ogg', + 'video/mpeg' => 'mpg mpeg', + ]; + + public const MEDIA_TYPES = [ + MEDIATYPE_OFFICE => [ + 'application/pdf', + 'application/vnd.oasis.opendocument.chart', + 'application/vnd.oasis.opendocument.chart-template', + 'application/vnd.oasis.opendocument.database', + 'application/vnd.oasis.opendocument.formula', + 'application/vnd.oasis.opendocument.formula-template', + 'application/vnd.oasis.opendocument.graphics', + 'application/vnd.oasis.opendocument.graphics-template', + 'application/vnd.oasis.opendocument.image', + 'application/vnd.oasis.opendocument.image-template', + 'application/vnd.oasis.opendocument.presentation', + 'application/vnd.oasis.opendocument.presentation-template', + 'application/vnd.oasis.opendocument.spreadsheet', + 'application/vnd.oasis.opendocument.spreadsheet-template', + 'application/vnd.oasis.opendocument.text', + 'application/vnd.oasis.opendocument.text-template', + 'application/vnd.oasis.opendocument.text-master', + 'application/vnd.oasis.opendocument.text-web', + ], + MEDIATYPE_EXECUTABLE => [ + 'application/javascript', + 'text/javascript', + 'application/x-javascript', + ], + MEDIATYPE_MULTIMEDIA => [ + 'application/x-shockwave-flash', + 'application/ogg', + 'audio/ogg', + 'video/ogg', + ], + MEDIATYPE_AUDIO => [ + 'audio/midi', + 'audio/x-aiff', + 'audio/x-wav', + 'audio/mp3', + 'audio/mpeg', + ], + MEDIATYPE_BITMAP => [ + 'image/x-bmp', + 'image/x-ms-bmp', + 'image/bmp', + 'image/gif', + 'image/jpeg', + 'image/png', + 'image/tiff', + 'image/vnd.djvu', + 'image/x-xcf', + 'image/x-portable-pixmap', + ], + MEDIATYPE_DRAWING => [ + 'image/svg+xml', + ], + MEDIATYPE_TEXT => [ + 'text/plain', + 'text/html', + ], + MEDIATYPE_VIDEO => [ + 'video/ogg', + 'video/mpeg', + ], + MEDIATYPE_UNKNOWN => [ + 'unknown/unknown', + 'application/octet-stream', + 'application/x-empty', + ], + ]; + + public const MIME_TYPE_ALIASES = [ + 'text/javascript' => 'application/javascript', + 'application/x-javascript' => 'application/javascript', + 'audio/mpeg' => 'audio/mp3', + 'audio/ogg' => 'application/ogg', + 'video/ogg' => 'application/ogg', + 'image/x-ms-bmp' => 'image/x-bmp', + 'image/bmp' => 'image/x-bmp', + 'application/octet-stream' => 'unknown/unknown', + 'application/x-empty' => 'unknown/unknown', + ]; +} diff --git a/includes/libs/mime/mime.info b/includes/libs/mime/mime.info deleted file mode 100644 index 8a79bc540aaa..000000000000 --- a/includes/libs/mime/mime.info +++ /dev/null @@ -1,123 +0,0 @@ -# MIME type info file. -# the first MIME type in each line is the "main" MIME type, -# the others are aliases for this type -# the media type is given in upper case and square brackets, -# like [BITMAP], and must indicate a media type as defined by -# the MEDIATYPE_xxx constants in Defines.php - - -image/gif [BITMAP] -image/png image/x-png [BITMAP] -image/ief [BITMAP] -image/jpeg image/pjpeg [BITMAP] -image/jp2 [BITMAP] -image/xbm [BITMAP] -image/tiff [BITMAP] -image/x-icon image/x-ico image/vnd.microsoft.icon [BITMAP] -image/x-rgb [BITMAP] -image/x-portable-pixmap [BITMAP] -image/x-portable-graymap image/x-portable-greymap [BITMAP] -image/x-bmp image/x-ms-bmp image/bmp application/x-bmp application/bmp [BITMAP] -image/x-photoshop image/psd image/x-psd image/photoshop image/vnd.adobe.photoshop [BITMAP] -image/webp [BITMAP] - -image/svg+xml application/svg+xml application/svg image/svg [DRAWING] -application/postscript [DRAWING] -application/x-latex [DRAWING] -application/x-tex [DRAWING] -application/x-dia-diagram [DRAWING] - - -audio/mpeg audio/mp3 audio/mpeg3 [AUDIO] -audio/mp4 [AUDIO] -audio/wav audio/x-wav audio/wave [AUDIO] -audio/midi audio/mid [AUDIO] -audio/basic [AUDIO] -audio/ogg [AUDIO] -audio/opus [AUDIO] -audio/x-aiff [AUDIO] -audio/x-pn-realaudio [AUDIO] -audio/x-realaudio [AUDIO] -audio/webm [AUDIO] -audio/x-matroska [AUDIO] -audio/x-flac [AUDIO] -audio/flac [AUDIO] - -video/mpeg application/mpeg [VIDEO] -video/ogg [VIDEO] -video/x-sgi-video [VIDEO] -video/x-flv [VIDEO] -video/webm [VIDEO] -video/x-matroska [VIDEO] -video/mp4 [VIDEO] - -application/ogg application/x-ogg audio/ogg audio/x-ogg video/ogg video/x-ogg [MULTIMEDIA] - -application/x-shockwave-flash [MULTIMEDIA] -audio/x-pn-realaudio-plugin [MULTIMEDIA] -model/iges [MULTIMEDIA] -model/mesh [MULTIMEDIA] -model/vrml [MULTIMEDIA] -video/quicktime [MULTIMEDIA] -video/x-msvideo [MULTIMEDIA] - -text/plain [TEXT] -text/html application/xhtml+xml [TEXT] -application/xml text/xml [TEXT] -text [TEXT] -application/json [TEXT] -text/csv [TEXT] -text/tab-separated-values [TEXT] - -application/zip application/x-zip [ARCHIVE] -application/x-gzip [ARCHIVE] -application/x-bzip [ARCHIVE] -application/x-bzip2 [ARCHIVE] -application/x-tar [ARCHIVE] -application/x-stuffit [ARCHIVE] -application/x-opc+zip [ARCHIVE] -application/x-7z-compressed [ARCHIVE] - -application/javascript text/javascript application/x-javascript application/x-ecmascript text/ecmascript [EXECUTABLE] -application/x-bash [EXECUTABLE] -application/x-sh [EXECUTABLE] -application/x-csh [EXECUTABLE] -application/x-tcsh [EXECUTABLE] -application/x-tcl [EXECUTABLE] -application/x-perl [EXECUTABLE] -application/x-python [EXECUTABLE] -application/wasm [EXECUTABLE] - -application/pdf application/acrobat [OFFICE] -application/msword [OFFICE] -application/vnd.ms-excel [OFFICE] -application/vnd.ms-powerpoint [OFFICE] -application/x-director [OFFICE] -image/vnd.djvu image/x.djvu image/x-djvu [OFFICE] -text/rtf [OFFICE] - -application/vnd.openxmlformats-officedocument.wordprocessingml.document [OFFICE] -application/vnd.openxmlformats-officedocument.wordprocessingml.template [OFFICE] -application/vnd.ms-word.document.macroEnabled.12 [OFFICE] -application/vnd.ms-word.template.macroEnabled.12 [OFFICE] -application/vnd.openxmlformats-officedocument.presentationml.template [OFFICE] -application/vnd.openxmlformats-officedocument.presentationml.slideshow [OFFICE] -application/vnd.openxmlformats-officedocument.presentationml.presentation [OFFICE] -application/vnd.ms-powerpoint.addin.macroEnabled.12 [OFFICE] -application/vnd.ms-powerpoint.presentation.macroEnabled.12 [OFFICE] -application/vnd.ms-powerpoint.presentation.macroEnabled.12 [OFFICE] -application/vnd.ms-powerpoint.slideshow.macroEnabled.12 [OFFICE] -application/vnd.openxmlformats-officedocument.spreadsheetml.sheet [OFFICE] -application/vnd.openxmlformats-officedocument.spreadsheetml.template [OFFICE] -application/vnd.ms-excel.sheet.macroEnabled.12 [OFFICE] -application/vnd.ms-excel.template.macroEnabled.12 [OFFICE] -application/vnd.ms-excel.addin.macroEnabled.12 [OFFICE] -application/vnd.ms-excel.sheet.binary.macroEnabled.12 [OFFICE] -application/acad application/x-acad application/autocad_dwg image/x-dwg application/dwg application/x-dwg application/x-autocad image/vnd.dwg drawing/dwg [DRAWING] -chemical/x-mdl-molfile [DRAWING] -chemical/x-mdl-sdfile [DRAWING] -chemical/x-mdl-rxnfile [DRAWING] -chemical/x-mdl-rdfile [DRAWING] -chemical/x-mdl-rgfile [DRAWING] - -application/sla [3D] diff --git a/includes/libs/mime/mime.types b/includes/libs/mime/mime.types deleted file mode 100644 index ef6854ce404d..000000000000 --- a/includes/libs/mime/mime.types +++ /dev/null @@ -1,190 +0,0 @@ -application/acad dwg -application/andrew-inset ez -application/mac-binhex40 hqx -application/mac-compactpro cpt -application/mathml+xml mathml -application/msword doc dot -application/octet-stream bin dms lha lzh exe class so dll -application/oda oda -application/ogg ogx ogg ogm ogv oga spx opus -application/pdf pdf -application/postscript ai eps ps -application/rdf+xml rdf -application/smil smi smil -application/srgs gram -application/srgs+xml grxml -application/vnd.mif mif -application/vnd.ms-excel xls xlt xla -application/vnd.ms-powerpoint ppt pot pps ppa -application/vnd.wap.wbxml wbxml -application/vnd.wap.wmlc wmlc -application/vnd.wap.wmlscriptc wmlsc -application/voicexml+xml vxml -application/x-7z-compressed 7z -application/x-bcpio bcpio -application/x-bzip bz -application/x-bzip2 bz2 -application/x-cdlink vcd -application/x-chess-pgn pgn -application/x-cpio cpio -application/x-csh csh -application/x-dia-diagram dia -application/x-director dcr dir dxr -application/x-dvi dvi -application/x-futuresplash spl -application/x-gtar gtar tar -application/x-gzip gz -application/x-hdf hdf -application/x-jar jar -application/javascript js -application/json json -application/x-koan skp skd skt skm -application/x-latex latex -application/x-netcdf nc cdf -application/x-sh sh -application/x-shar shar -application/x-shockwave-flash swf -application/x-stuffit sit -application/x-sv4cpio sv4cpio -application/x-sv4crc sv4crc -application/x-tar tar -application/x-tcl tcl -application/x-tex tex -application/x-texinfo texinfo texi -application/x-troff t tr roff -application/x-troff-man man -application/x-troff-me me -application/x-troff-ms ms -application/x-ustar ustar -application/x-wais-source src -application/x-xpinstall xpi -application/xhtml+xml xhtml xht -application/xslt+xml xslt -application/xml xml xsl xsd kml -application/xml-dtd dtd -application/zip zip jar xpi sxc stc sxd std sxi sti sxm stm sxw stw -application/x-rar rar -application/font-woff woff -application/font-woff2 woff2 -application/vnd.ms-fontobject eot -application/x-font-ttf ttf -audio/basic au snd -audio/midi mid midi kar -audio/mpeg mpga mp2 mp3 -audio/ogg oga ogg spx opus -audio/opus opus oga ogg -video/webm webm -audio/webm webm -audio/x-aiff aif aiff aifc -audio/x-matroska mka mkv -audio/x-mpegurl m3u -audio/x-ogg oga ogg spx opus -audio/x-pn-realaudio ram rm -audio/x-pn-realaudio-plugin rpm -audio/x-realaudio ra -audio/x-wav wav -audio/wav wav -audio/x-flac flac -audio/flac flac -chemical/x-pdb pdb -chemical/x-xyz xyz -image/bmp bmp -image/cgm cgm -image/gif gif -image/ief ief -image/jp2 j2k jp2 jpg2 -image/jpeg jpeg jpg jpe -image/png png apng -image/svg+xml svg -image/tiff tiff tif -image/vnd.djvu djvu djv -image/vnd.microsoft.icon ico -image/vnd.wap.wbmp wbmp -image/webp webp -image/x-cmu-raster ras -image/x-icon ico -image/x-ms-bmp bmp -image/x-portable-anymap pnm -image/x-portable-bitmap pbm -image/x-portable-graymap pgm -image/x-portable-pixmap ppm -image/x-rgb rgb -image/x-photoshop psd -image/x-xbitmap xbm -image/x-xpixmap xpm -image/x-xwindowdump xwd -model/iges igs iges -model/mesh msh mesh silo -model/vrml wrl vrml -text/calendar ics ifb -text/css css -text/csv csv -text/html html htm -text/plain txt -text/richtext rtx -text/rtf rtf -text/sgml sgml sgm -text/tab-separated-values tsv -text/vnd.wap.wml wml -text/vnd.wap.wmlscript wmls -text/xml xml xsl xslt rss rdf -text/x-component htc -text/x-setext etx -text/x-sawfish jl -video/mpeg mpeg mpg mpe -video/mp4 mp4 m4a m4p m4b m4r m4v -audio/mp4 m4a -video/ogg ogv ogm ogg -video/quicktime qt mov -video/vnd.mpegurl mxu -video/x-flv flv -video/x-matroska mkv mka -video/x-msvideo avi -video/x-ogg ogv ogm ogg -video/x-sgi-movie movie -x-conference/x-cooltalk ice -application/vnd.oasis.opendocument.chart odc -application/vnd.oasis.opendocument.chart-template otc -application/vnd.oasis.opendocument.database odb -application/vnd.oasis.opendocument.formula odf -application/vnd.oasis.opendocument.formula-template otf -application/vnd.oasis.opendocument.graphics odg -application/vnd.oasis.opendocument.graphics-template otg -application/vnd.oasis.opendocument.image odi -application/vnd.oasis.opendocument.image-template oti -application/vnd.oasis.opendocument.presentation odp -application/vnd.oasis.opendocument.presentation-template otp -application/vnd.oasis.opendocument.spreadsheet ods -application/vnd.oasis.opendocument.spreadsheet-template ots -application/vnd.oasis.opendocument.text odt -application/vnd.oasis.opendocument.text-master odm -application/vnd.oasis.opendocument.text-template ott -application/vnd.oasis.opendocument.text-web oth -application/vnd.openxmlformats-officedocument.wordprocessingml.document docx -application/vnd.openxmlformats-officedocument.wordprocessingml.template dotx -application/vnd.ms-word.document.macroEnabled.12 docm -application/vnd.ms-word.template.macroEnabled.12 dotm -application/vnd.openxmlformats-officedocument.presentationml.template potx -application/vnd.openxmlformats-officedocument.presentationml.slideshow ppsx -application/vnd.openxmlformats-officedocument.presentationml.presentation pptx -application/vnd.ms-powerpoint.addin.macroEnabled.12 ppam -application/vnd.ms-powerpoint.presentation.macroEnabled.12 pptm -application/vnd.ms-powerpoint.presentation.macroEnabled.12 potm -application/vnd.ms-powerpoint.slideshow.macroEnabled.12 ppsm -application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx -application/vnd.openxmlformats-officedocument.spreadsheetml.template xltx -application/vnd.ms-excel.sheet.macroEnabled.12 xlsm -application/vnd.ms-excel.template.macroEnabled.12 xltm -application/vnd.ms-excel.addin.macroEnabled.12 xlam -application/vnd.ms-excel.sheet.binary.macroEnabled.12 xlsb -model/vnd.dwfx+xps dwfx -application/vnd.ms-xpsdocument xps -application/x-opc+zip docx dotx docm dotm potx ppsx pptx ppam pptm potm ppsm xlsx xltx xlsm xltm xlam xlsb dwfx xps -chemical/x-mdl-molfile mol -chemical/x-mdl-sdfile sdf -chemical/x-mdl-rxnfile rxn -chemical/x-mdl-rdfile rd -chemical/x-mdl-rgfile rg -application/x-amf amf -application/sla stl -application/wasm wasm |