<?xml version="1.0"?>
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.de.xsl"?>
<modulesynopsis metafile="mod_mime_magic.xml.meta">
<name>mod_mime_magic</name>
<description>Ermittelt den MIME-Typ einer Datei anhand des
Dateiinhalts.</description>
<status>Erweiterung</status>
<sourcefile>mod_mime_magic.c</sourcefile>
<identifier>mime_magic_module</identifier>
<summary>
<p>Dieses Modul ermittelt den MIME-Typ von Dateien auf
die gleiche Weise wie der Unix-Befehl
<code>file(1)</code>: Die ersten Bytes der Datei werden analysiert. Es
soll das Modul <module>mod_mime</module> ergänzen.</p>
<p>Das Modul wurde von einer freien Version des Unix-Befehls
<code>file(1)</code> abgeleitet, der mit Hilfe von "Magic Numbers"
sowie weiterer Kennzeichen einer Datei verrsucht, Rückschlüsse
auf den Inhalt zu ziehen. Das Modul ist nur aktiv, wenn mit der
<directive module="mod_mime_magic">MimeMagicFile</directive>-Direktive
die externeMagic-Datei angegeben wird .</p>
</summary>
<section id="format"><title>Format der Magic-Datei</title>
<p>Der Inhalt der Datei ist einfacher ASCII-Text in 4 bis 5
Spalten. Leerzeilen sind zulässig, werden aber ignoriert.
Kommentarzeilen
werden mit einem Doppelkreuz gekennzeichnet (<code>#</code>). Die
verbleibenden Zeilen werden auf folgende Spalten untersucht:</p>
<table style="zebra" border="1">
<tr><th>Spalte</th><th>Beschreibung</th></tr>
<tr><td>1</td>
<td>Bytenummer für den Beginn der Analyse<br />
"<code>></code>" verweist auf eine Abhängigkeit von der
vorherigen Zeile ohne "<code>></code>".</td></tr>
<tr><td>2</td>
<td>Typ der zu vergleichenden Daten
<table border="1">
<tr><td><code>byte</code></td>
<td>Einzelnes Zeichen</td></tr>
<tr><td><code>short</code></td>
<td>Rechnerreihenfolge 16-Bit-Integer</td></tr>
<tr><td><code>long</code></td>
<td>Rechnerreihenfolge 32-Bit-Integer</td></tr>
<tr><td><code>string</code></td>
<td>Zeichenfolge beliebiger Länge</td></tr>
<tr><td><code>date</code></td>
<td>Langes <code>int</code>-Datum (Sekunden seit 1970)</td></tr>
<tr><td><code>beshort</code></td>
<td>Big-Endian 16-Bit-Integer</td></tr>
<tr><td><code>belong</code></td>
<td>Big-Endian 32-Bit-Integer</td></tr>
<tr><td><code>bedate</code></td>
<td>Big-Endian 32-Bit-Integer-Datum</td></tr>
<tr><td><code>leshort</code></td>
<td>Little-Endian 16-Bit-Integer</td></tr>
<tr><td><code>lelong</code></td>
<td>Little-Endian 32-Bit-Integer</td></tr>
<tr><td><code>ledate</code></td>
<td>Little-Endian 32-Bit-Integer-Datum</td></tr>
</table></td></tr>
<tr><td>3</td>
<td>Inhalt der zu vergleichenden Daten</td></tr>
<tr><td>4</td>
<td>MIME-Typ bei Übereinstimmung</td></tr>
<tr><td>5</td>
<td>MIME-Kodierung bei Übereinstimmung (optional)</td></tr>
</table>
<p>Mit den folgenden Zeilen einer Magic-Datei werden beispielsweise einige
Audio-Formate erkannt:</p>
<example>
<pre># Sun/NeXT Audio-Daten
0 string .snd
>12 belong 1 audio/basic
>12 belong 2 audio/basic
>12 belong 3 audio/basic
>12 belong 4 audio/basic
>12 belong 5 audio/basic
>12 belong 6 audio/basic
>12 belong 7 audio/basic
>12 belong 23 audio/x-adpcm</pre>
</example>
<p>Mit den folgenden Zeilen wird der Unterschied zwischen
<code>*.doc</code>-Dateien von Microsoft Word und
FrameMaker-Dokumenten erkannt. (Diese inkompatiblen Dateiformate
benutzen den gleichen Suffix.)</p>
<example>
<pre># FrameMaker
0 string \<MakerFile application/x-frame
0 string \<MIFFile application/x-frame
0 string \<MakerDictionary application/x-frame
0 string \<MakerScreenFon application/x-frame
0 string \<MML application/x-frame
0 string \<Book application/x-frame
0 string \<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>
</example>
<p>Die fünfte Spalte kann eine optionale MIME-Kodierung enthalten.
Das folgende Beispiel erkennt <code>gzip</code>-Dateien und wählt
die entsprechende Kodierung.</p>
<example>
<pre># gzip (GNU-zip, nicht zu verwechseln mit
# [Info-ZIP/PKWARE] Zip-Archiv)
0 string \037\213 application/octet-stream x-gzip</pre>
</example>
</section>
<section id="performance"><title>Leistungsverhalten</title>
<p>Dieses Modul eignet sich nicht für jedes System. Steht der Rechner
an der Grenze seiner Leistungsfähigkeit oder wird ein Testlauf
durchgeführt,
dann sollte dieses Modul nicht aktiviert werden.</p>
<p>Es wurden jedoch Anstrengungen unternommen, um den ursprünglichen
<code>file(1)</code>-Code stark ausgelasteten Web-Servern anzupassen.
Das Modul wurde für einen Server entwickelt, auf dem Tausende von
Benutzern eigene Dokumente veröffentlichen, was typisch für ein
Intranet ist.
Hier ist es oft hilfreich, wenn der Server intelligente Entscheidungen
über den
Inhalt treffen kann, die nicht nur auf dem Dateinamen basieren
und sei es nur, um
den Benutzer auf falsch gewählte Dateinamen hinzuweisen. Es muss
abgewogen werden, ob sich der zusätzliche Aufwand für eine
bestimmte
Systemumgebung lohnt.</p>
</section>
<section id="notes"><title>Hinweise</title>
<p>Die folgenden Hinweise betreffen das Modul
<module>mod_mime_magic</module> und wurden zur Berücksichtigung
des Copyrights aufgenommen.</p>
<note>
<p>mod_mime_magic: MIME-Typ lookup via file magic numbers<br />
Copyright (c) 1996-1997 Cisco Systems, Inc.</p>
<p>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.</p>
<p>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.</p>
</note>
<note>
<p> - Copyright (c) Ian F. Darwin, 1987. Written by Ian F. Darwin.</p>
<p>This software is not subject to any license of the American
Telephone and Telegraph Company or of the Regents of the University
of California.</p>
<p>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:</p>
<ol>
<li>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.</li>
<li>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.</li>
<li>Altered Versionen 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.</li>
<li>This notice may not be removed or altered.</li>
</ol>
</note>
<note>
<p>Als Ergänzung zu Ian F. Darwin Ausführungen:
Folgende wichtige Veränderungen wurden am frei zugänglichen
<code>file</code>-Befehl vorgenommen:</p>
<ul>
<li>Der gesamte Code befindet sich in einer Datei, um das Kompilieren
beim Wechsel der Apache-Versionen zu vereinfachen.</li>
<li>Speicherzuweisungen erfolgen mit der API-Pool-Struktur
des Apache.</li>
<li>Alle Funktionen nutzen die Apache-API oder übergebene
Serverstrukturen müssen andere Apache-API-Routinen aufrufen.
(Für die Protokollierung Datei- oder Speicherzuweisungen oder
für
eine aufgerufene Funktion.)</li>
<li><code>struct magic</code> wurde von einem Array in eine
einfach verknüpfte Liste umgewandelt, weil sie jeweils nur um
einen Datensatz anwächst, weil nur sequenziell auf sie zugegriffen
wird
und weil
das Apache-API keine entsprechende <code>realloc()</code>-Funktion
besitzt.</li>
<li>Funktionen wurden so geändert, dass sie ihre Parameter von der
Serverkonfiguration erhalten. (Die Ablaufinvarianz sollte
gewährleistet sein,
sie wurde aber noch nicht in einer Thread-Umgebung getestet.)</li>
<li>Wo Ergebnisse üver <code>stdout</code> ausgegeben wurden,
werden sie jetzt in einer Liste gespeichert, wo sie dafür genutzt
werden,
den MIME-Typ im Apache-Anfragedatensatz zu setzen.</li>
<li>Befehlszeilen-Flags wurden entfernt, da sie nicht benötigt
werden.</li>
</ul>
</note>
</section>
<directivesynopsis>
<name>MimeMagicFile</name>
<description>Aktiviert die MIME-Typbestimmung anhand des Inhalts
mit Hilfe einer Magic-Datei.</description>
<syntax>MimeMagicFile <var>Dateipfad</var></syntax>
<contextlist><context>server config</context><context>virtual host</context>
</contextlist>
<usage>
<p>Mit <directive>MimeMagicFile</directive>-Direktive kann das
Modul aktiviert werden, die Standarddatei is befindet sich im Verzeichnis
<code>conf/magic</code>. Basis für relative Pfade ist
<directive module="core">ServerRoot</directive>. Wird keine
andere Einstellung gewählt, benutzen virtuelle Hosts die gleiche Datei
wie der Server. Bei anderen Einstellungen wird die Datei des Servers
überschrieben.</p>
<example><title>Beispiel</title>
MimeMagicFile conf/magic
</example>
</usage>
</directivesynopsis>
</modulesynopsis>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]