<?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&auml;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&uuml;ckschl&uuml;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&auml;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&uuml;r den Beginn der Analyse<br />
         "<code>&gt;</code>" verweist auf eine Abh&auml;ngigkeit von der
         vorherigen Zeile ohne "<code>&gt;</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&auml;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 &Uuml;bereinstimmung</td></tr>

    <tr><td>5</td>
        <td>MIME-Kodierung bei &Uuml;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
&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>
    </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  \&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>
    </example>

    <p>Die f&uuml;nfte Spalte kann eine optionale MIME-Kodierung enthalten.
    Das folgende Beispiel erkennt <code>gzip</code>-Dateien und w&auml;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&uuml;r jedes System. Steht der Rechner
    an der Grenze seiner Leistungsf&auml;higkeit oder wird ein Testlauf 
durchgef&uuml;hrt,
    dann sollte dieses Modul nicht aktiviert werden.</p>

    <p>Es wurden jedoch Anstrengungen unternommen, um den urspr&uuml;nglichen
    <code>file(1)</code>-Code stark ausgelasteten Web-Servern anzupassen.
     Das Modul wurde f&uuml;r einen Server entwickelt, auf dem Tausende von
     Benutzern eigene Dokumente ver&ouml;ffentlichen, was typisch f&uuml;r ein 
Intranet ist.
     Hier ist es oft hilfreich, wenn der Server intelligente Entscheidungen 
&uuml;ber den
     Inhalt treffen kann, die nicht nur auf dem Dateinamen basieren
     und sei es nur, um
     den Benutzer auf falsch gew&auml;hlte Dateinamen hinzuweisen. Es muss
     abgewogen werden, ob sich der zus&auml;tzliche Aufwand f&uuml;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&uuml;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&auml;nzung zu Ian F. Darwin Ausf&uuml;hrungen:
      Folgende wichtige Ver&auml;nderungen wurden am frei zug&auml;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 &uuml;bergebene
        Serverstrukturen m&uuml;ssen andere Apache-API-Routinen aufrufen.
        (F&uuml;r die Protokollierung Datei- oder Speicherzuweisungen oder 
f&uuml;r
        eine aufgerufene Funktion.)</li>

        <li><code>struct magic</code> wurde von einem Array in eine
        einfach verkn&uuml;pfte Liste umgewandelt, weil sie jeweils nur um
        einen Datensatz anw&auml;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&auml;ndert, dass sie ihre Parameter von der
        Serverkonfiguration erhalten.  (Die Ablaufinvarianz sollte 
gew&auml;hrleistet sein,
        sie wurde aber noch nicht in einer Thread-Umgebung getestet.)</li>

        <li>Wo Ergebnisse &uuml;ver <code>stdout</code> ausgegeben wurden,
        werden sie jetzt in einer Liste gespeichert, wo sie daf&uuml;r genutzt 
werden,
        den MIME-Typ im Apache-Anfragedatensatz zu setzen.</li>

        <li>Befehlszeilen-Flags wurden entfernt, da sie nicht ben&ouml;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&uuml;r relative Pfade ist
    <directive module="core">ServerRoot</directive>. Wird keine
    andere Einstellung gew&auml;hlt, benutzen virtuelle Hosts die gleiche Datei
    wie der Server. Bei anderen Einstellungen wird die Datei des Servers
    &uuml;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]

Reply via email to