In Kapitel 2.3.1 wurde beschrieben, daß es im FH-Intranet eine wichtige Aufgabe ist, Bekanntmachungen und aktuelle Informationen zu veröffentlichen. Bei häufig wechselnden Inhalten oder größerem Umfang derartiger Verzeichnisse kann es sehr aufwendig sein, einen Index als statisches Dokument zu verwalten. Es bietet sich an, diese Inhalte bei Anforderung dynamisch zu erzeugen.
Der DirLister ist eine derartige Anwendung. Als Ersatz für die Datei index.html durchläuft er alle Verzeichniseinträge und listet sie tabellarisch auf. Dabei werden HTML-Dokumente nach ihrem <TITLE> -Eintrag durchsucht und dieser als Inhaltsbeschreibung mit ausgegeben.
Für den Einsatz des Skripts sind zwei Aufrufmöglichkeiten vorgesehen. Zum einen wird bei parameterlosem Start das aktuelle Verzeichnis angezeigt, in dem sich das Programm befindet. Dies ist nützlich, wenn man es als Indexdatei verwendet. Im Verlauf der Anwendung, beim Wechsel von Verzeichnissen über deren Hyperlink, werden die Verzeichnisangaben als Parameter in der Umgebungsvariable PATH_INFO und PATH_TRANSLATED mit übergeben.
Als Sicherheitsmechanismus ist es möglich, Verzeichnisse, die man von einer Anzeige mit dem DirLister ausnehmen will, mit einer Datei .noaccess zu versehen, die auch Nullänge besitzen kann. Bei Anwesenheit dieses Files bricht das Programm mit einer Fehlermeldung ab. Dies kann beispielsweise für das /cgi-bin/ -Verzeichnis nützlich sein, da der DirLister den Schutzmechanismus des Webservers auf dieses Verzeichnis aushebelt.
Die Darstellung der Verzeichnisliste erfolgt tabellarisch. Neben einem Icon für den Dateityp erscheint der Name als Hyperlink: bei Verzeichnissen ist dies ein Verweis auf das Skript mit dem Verzeichnisnamen als Parameter. Bei Dateien ist der Link das Dokument selbst. Auf diese Weise ist ein sinnvolles Navigieren durch die Verzeichnishierarchie und das Anfordern von Webseiten möglich. Als zusätzlich Information werden Datum und Uhrzeit eines Dokumentes, sowie deren Dateityp im Klartext mit ausgegeben. Eine Besonderheit ist bei HTML-Dokumenten möglich. Hier wird aus der Datei der <TITLE> -Eintrag ausgelesen und angezeigt. Dadurch kann man sich eventuell ein Bild über ein bestimmtes Dokument machen.
In der vorliegenden Version des DirListers werden unterschiedliche Dateitypen ,,unterstützt``. Zum einen sind dies alle Verzeichniseinträge. Sie dienen zur Navigation durch den Dateibaum. Zum anderen sind dies Dokumente. An Dokumentenformaten werden bislang HTML-Dateien (.html , .htm ), reine Textdateien (.txt ), Word-Dokumente (.doc ) und alle sonstigen Dateien unterschieden. Ohne viel Mühe kann das Programm um weitere Typen erweitert werden. Versteckte Dateien (,,Punktdateien``), Backups (.bak ) oder alte Versionen werden nicht angezeigt. Darüber hinaus ist es möglich, die Anzeige weiterer Dateitypen zu unterdrücken.
Der DirLister verwendet die Funktionen der CGI.pm -Bibliothek.
Für einen Einsatz ist diese Bibliothek mit dem use lib
... -Befehl bekanntzumachen. Befindet sich die Programmdatei
in einem Verzeichnis, dessen Inhalt nicht ausgegeben werden soll,
so empfiehlt es sich, ein .noaccess -File
anzulegen.
Als Ersatz der Verzeichnisindexdatei index.html bietet
es sich bei Unix-Systemen an, nur einen Softlink auf die Originaldatei zu verwenden. So ist die Datei nicht immer
zu kopieren. Zu beachten ist, daß für diesen Mechanismus ein Eintrag
in der Konfiguration die Datei index.cgi als
Indexdatei zugelassen werden muß.
Weitere Installationsschritte sind nicht auszuführen.
Die Internet-Anwendung DirLister beginnt mit der Initialisierung der Bibliotheken und den verwendeten Programmvariablen. Es wird zunächst überprüft, ob es sich um einen normalen Webserver handelt, oder ob ein SSL-Server verwendet wird, da hier die HTTP-Typkennung unterschiedlich ist (http://... gegenüber https://... ). Daraufhin werden die Verzeichnisnamen (URL und realer Name) ermittelt (bei Aufruf mit und ohne Parameter). Vor der Ausgabe des Verzeichnisinhalts wird noch getestet, ob es sich tatsächlich um ein existierendes Verzeichnis handelt.
Das dynamische HTML-Dokument wird nun erzeugt, in dem zuerst die HTTP- und HTML-Header ausgegeben werden (Unterprogramm http_header ). Existiert im Verzeichnis eine .noaccess -Datei, so wird die Ausgabe und damit der Programmlauf mit einer Warnmeldung beendet.
Die Verzeichnisliste wird tabellarisch dargestellt. Als Überschrift werden hierfür der betroffene Verzeichnisname (als URL) ausgegeben, sowie eine Tabellen-Kopfzeile, die die einzelnen Spalten beschreiben:
Befindet man sich nicht im zulässigen Toplevel-Verzeichnis, so erscheint als erster Eintrag ein Link auf eine ,,Verzeichnisebene höher``. Im Anschluß daran wird das Verzeichnis für die Ausgabe der Einträge geöffnet. Schlägt dies fehl, so wird eine Fehlermeldung zurückgegeben. In der Hauptschleife des Programms werden nun alle Verzeichniseinträge abgearbeitet. Hierbei werden Punktdateien und Backups übersprungen. Mit der Routine datei_eintrag wird schließlich die Ausgabe in der Tabelle generiert. Nachdem das Verzeichnis erfolgreich abgearbeitet wurde wird die Tabelle sowie das HTML-Dokument (Unterprogramm http_end ) noch abgeschlossen und die Anwendung beendet.
Die Programmdatei verwendet 4 Unterprogrammroutinen, die nachfolgend beschrieben werden.
Als Erweiterung dieser Anwendung ist die Einführung weiterer zu unterscheidender Dateitypen, z.B. für komprimierte, Audio- oder Druckdateien zu nennen. Die Webserver bieten eine ganze Reihe von verschiedenen Icons für diese Datentypen an. Bei bestimmten Dateiarten kann es möglich sein, Inhalte in ähnlicher Form auszulesen, wie dies bei HTML mit dem <TITLE> -Tag möglich ist.
Eine andere gewollte Änderung kann es sein, keine Verzeichniseinträge auszugeben, die keinem der angegebenen Typen entsprechen. Damit wären diese Files vor dem Benutzer verborgen. Will man die Navigation durch den Dateibaum unterbinden, so kann man Verzeichnisse ebenfalls nicht in die Tabelle eintragen.
Darüber hinaus könnte die Darstellungsform an bestimmte Gegebenheiten angepaßt werden müssen.