summaryrefslogtreecommitdiff
path: root/APACHE_1_3_42/htdocs/manual/mod/mod_mime_magic.html
diff options
context:
space:
mode:
Diffstat (limited to 'APACHE_1_3_42/htdocs/manual/mod/mod_mime_magic.html')
-rw-r--r--APACHE_1_3_42/htdocs/manual/mod/mod_mime_magic.html326
1 files changed, 326 insertions, 0 deletions
diff --git a/APACHE_1_3_42/htdocs/manual/mod/mod_mime_magic.html b/APACHE_1_3_42/htdocs/manual/mod/mod_mime_magic.html
new file mode 100644
index 0000000000..3a5a76befb
--- /dev/null
+++ b/APACHE_1_3_42/htdocs/manual/mod/mod_mime_magic.html
@@ -0,0 +1,326 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta name="generator" content="HTML Tidy, see www.w3.org" />
+
+ <title>Apache module mod_mime_magic</title>
+ </head>
+ <!-- Background white, links blue (unvisited), navy (visited), red (active) -->
+
+ <body bgcolor="#FFFFFF" text="#000000" link="#0000FF"
+ vlink="#000080" alink="#FF0000">
+ <div align="CENTER">
+ <img src="../images/sub.gif" alt="[APACHE DOCUMENTATION]" />
+ </div>
+
+ <h1 align="CENTER">Module mod_mime_magic</h1>
+
+ <p>This module provides for determining the MIME type of a file
+ by looking at a few bytes of its contents.</p>
+
+ <p><a href="module-dict.html#Status"
+ rel="Help"><strong>Status:</strong></a> Extension<br />
+ <a href="module-dict.html#SourceFile"
+ rel="Help"><strong>Source File:</strong></a>
+ mod_mime_magic.c<br />
+ <a href="module-dict.html#ModuleIdentifier"
+ rel="Help"><strong>Module Identifier:</strong></a>
+ mime_magic_module</p>
+
+ <h2>Summary</h2>
+
+ <p>This module determines the MIME type of files in the same
+ way the Unix file(1) command works: it looks at the first few
+ bytes of the file. It is intended as a "second line of defense"
+ for cases that <a href="mod_mime.html">mod_mime</a> can't
+ resolve. To assure that mod_mime gets first try at determining
+ a file's MIME type, be sure to list mod_mime_magic
+ <strong>before</strong> mod_mime in the configuration.</p>
+
+ <p>This module is derived from a free version of the
+ <code>file(1)</code> command for Unix, which uses "magic
+ numbers" and other hints from a file's contents to figure out
+ what the contents are. This module is active only if the magic
+ file is specified by the <a
+ href="#mimemagicfile"><code>MimeMagicFile</code></a>
+ directive.</p>
+
+ <h2>Directives</h2>
+
+ <ul>
+ <li><a href="#mimemagicfile">MimeMagicFile</a></li>
+ </ul>
+
+ <h2>Format of the Magic File</h2>
+
+ <p>The contents of the file are plain ASCII text in 4-5
+ columns. Blank lines are allowed but ignored. Commented lines
+ use a hash mark "#". The remaining lines are parsed for the
+ following columns:</p>
+
+ <table border="1">
+ <tr valign="top">
+ <th>Column</th>
+
+ <th>Description</th>
+ </tr>
+
+ <tr valign="top">
+ <td>1</td>
+
+ <td>byte number to begin checking from<br />
+ "&gt;" indicates a dependency upon the previous non-"&gt;"
+ line</td>
+ </tr>
+
+ <tr valign="top">
+ <td>2</td>
+
+ <td>
+ type of data to match
+
+ <table border="1">
+ <tr>
+ <td>byte</td>
+
+ <td>single character</td>
+ </tr>
+
+ <tr>
+ <td>short</td>
+
+ <td>machine-order 16-bit integer</td>
+ </tr>
+
+ <tr>
+ <td>long</td>
+
+ <td>machine-order 32-bit integer</td>
+ </tr>
+
+ <tr>
+ <td>string</td>
+
+ <td>arbitrary-length string</td>
+ </tr>
+
+ <tr>
+ <td>date</td>
+
+ <td>long integer date (seconds since Unix
+ epoch/1970)</td>
+ </tr>
+
+ <tr>
+ <td>beshort</td>
+
+ <td>big-endian 16-bit integer</td>
+ </tr>
+
+ <tr>
+ <td>belong</td>
+
+ <td>big-endian 32-bit integer</td>
+ </tr>
+
+ <tr>
+ <td>bedate</td>
+
+ <td>big-endian 32-bit integer date</td>
+ </tr>
+
+ <tr>
+ <td>leshort</td>
+
+ <td>little-endian 16-bit integer</td>
+ </tr>
+
+ <tr>
+ <td>lelong</td>
+
+ <td>little-endian 32-bit integer</td>
+ </tr>
+
+ <tr>
+ <td>ledate</td>
+
+ <td>little-endian 32-bit integer date</td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr valign="top">
+ <td>3</td>
+
+ <td>contents of data to match</td>
+ </tr>
+
+ <tr valign="top">
+ <td>4</td>
+
+ <td>MIME type if matched</td>
+ </tr>
+
+ <tr valign="top">
+ <td>5</td>
+
+ <td>MIME encoding if matched (optional)</td>
+ </tr>
+ </table>
+
+ <p>For example, the following magic file lines would recognize
+ some audio formats.</p>
+<pre>
+# Sun/NeXT audio data
+0 string .snd
+&gt;12 belong 1 audio/basic
+&gt;12 belong 2 audio/basic
+&gt;12 belong 3 audio/basic
+&gt;12 belong 4 audio/basic
+&gt;12 belong 5 audio/basic
+&gt;12 belong 6 audio/basic
+&gt;12 belong 7 audio/basic
+&gt;12 belong 23 audio/x-adpcm
+</pre>
+ Or these would recognize the difference between "*.doc" files
+ containing Microsoft Word or FrameMaker documents. (These are
+ incompatible file formats which use the same file suffix.)
+<pre>
+# Frame
+0 string \&lt;MakerFile application/x-frame
+0 string \&lt;MIFFile application/x-frame
+0 string \&lt;MakerDictionary application/x-frame
+0 string \&lt;MakerScreenFon application/x-frame
+0 string \&lt;MML application/x-frame
+0 string \&lt;Book application/x-frame
+0 string \&lt;Maker application/x-frame
+
+# MS-Word
+0 string \376\067\0\043 application/msword
+0 string \320\317\021\340\241\261 application/msword
+0 string \333\245-\0\0\0 application/msword
+</pre>
+ An optional MIME encoding can be included as a fifth column.
+ For example, this can recognize gzipped files and set the
+ encoding for them.
+<pre>
+# gzip (GNU zip, not to be confused with [Info-ZIP/PKWARE] zip archiver)
+0 string \037\213 application/octet-stream x-gzip
+</pre>
+
+ <h2>Performance Issues</h2>
+ This module is not for every system. If your system is barely
+ keeping up with its load or if you're performing a web server
+ benchmark, you may not want to enable this because the
+ processing is not free.
+
+ <p>However, an effort was made to improve the performance of
+ the original file(1) code to make it fit in a busy web server.
+ It was designed for a server where there are thousands of users
+ who publish their own documents. This is probably very common
+ on intranets. Many times, it's helpful if the server can make
+ more intelligent decisions about a file's contents than the
+ file name allows ...even if just to reduce the "why doesn't my
+ page work" calls when users improperly name their own files.
+ You have to decide if the extra work suits your
+ environment.</p>
+
+ <p>When compiling an Apache server, this module should be at or
+ near the top of the list of modules in the Configuration file.
+ The modules are listed in increasing priority so that will mean
+ this one is used only as a last resort, just like it was
+ designed to.</p>
+
+ <h2><a id="notes" name="notes">Notes</a></h2>
+ The following notes apply to the mod_mime_magic module and are
+ included here for compliance with contributors' copyright
+ restrictions that require their acknowledgment.
+<pre>
+/*
+ * mod_mime_magic: MIME type lookup via file magic numbers
+ * Copyright (c) 1996-1997 Cisco Systems, Inc.
+ *
+ * This software was submitted by Cisco Systems to the Apache Group in July
+ * 1997. Future revisions and derivatives of this source code must
+ * acknowledge Cisco Systems as the original contributor of this module.
+ * All other licensing and usage conditions are those of the Apache Group.
+ *
+ * Some of this code is derived from the free version of the file command
+ * originally posted to comp.sources.unix. Copyright info for that program
+ * is included below as required.
+ * ---------------------------------------------------------------------------
+ * - Copyright (c) Ian F. Darwin, 1987. Written by Ian F. Darwin.
+ *
+ * This software is not subject to any license of the American Telephone and
+ * Telegraph Company or of the Regents of the University of California.
+ *
+ * Permission is granted to anyone to use this software for any purpose on any
+ * computer system, and to alter it and redistribute it freely, subject to
+ * the following restrictions:
+ *
+ * 1. The author is not responsible for the consequences of use of this
+ * software, no matter how awful, even if they arise from flaws in it.
+ *
+ * 2. The origin of this software must not be misrepresented, either by
+ * explicit claim or by omission. Since few users ever read sources, credits
+ * must appear in the documentation.
+ *
+ * 3. Altered versions must be plainly marked as such, and must not be
+ * misrepresented as being the original software. Since few users ever read
+ * sources, credits must appear in the documentation.
+ *
+ * 4. This notice may not be removed or altered.
+ * -------------------------------------------------------------------------
+ *
+ * For compliance with Mr Darwin's terms: this has been very significantly
+ * modified from the free "file" command.
+ * - all-in-one file for compilation convenience when moving from one
+ * version of Apache to the next.
+ * - Memory allocation is done through the Apache API's pool structure.
+ * - All functions have had necessary Apache API request or server
+ * structures passed to them where necessary to call other Apache API
+ * routines. (<em>i.e.</em>, usually for logging, files, or memory allocation in
+ * itself or a called function.)
+ * - struct magic has been converted from an array to a single-ended linked
+ * list because it only grows one record at a time, it's only accessed
+ * sequentially, and the Apache API has no equivalent of realloc().
+ * - Functions have been changed to get their parameters from the server
+ * configuration instead of globals. (It should be reentrant now but has
+ * not been tested in a threaded environment.)
+ * - Places where it used to print results to stdout now saves them in a
+ * list where they're used to set the MIME type in the Apache request
+ * record.
+ * - Command-line flags have been removed since they will never be used here.
+ *
+ */
+</pre>
+ <hr />
+
+ <h2><a id="mimemagicfile"
+ name="mimemagicfile">MimeMagicFile</a></h2>
+
+ <p><a href="directive-dict.html#Syntax"
+ rel="Help"><strong>Syntax:</strong></a> MimeMagicFile
+ <em>file-path</em><br />
+ <a href="directive-dict.html#Default"
+ rel="Help"><strong>Default:</strong></a> none<br />
+ <a href="directive-dict.html#Context"
+ rel="Help"><strong>Context:</strong></a> server config, virtual
+ host<br />
+ <a href="directive-dict.html#Status"
+ rel="Help"><strong>Status:</strong></a> Extension<br />
+ <a href="directive-dict.html#Module"
+ rel="Help"><strong>Module:</strong></a> mod_mime_magic</p>
+
+ <p>The <code>MimeMagicFile</code> directive can be used to
+ enable this module, the default file is distributed at
+ <code>conf/magic</code>. Non-rooted paths are relative to the
+ ServerRoot. Virtual hosts will use the same file as the main
+ server unless a more specific setting is used, in which case
+ the more specific setting overrides the main server's file.</p>
+ </body>
+</html>
+