Suchmaschine: Lokale Dateisuche
Mit Hilfe dieses Programmes kann man eine lokale Dateisuche ausführen lassen. 'Lokale Dateisuche' heißt,
daß Dateien auf dem eigenen Server/Account nach dem Vorkommen von eingegebenen Wörtern durchsucht
werden und als Ergebniss eine Liste der Dateien ausgegeben wird, in welchen das oder die Worte vorkamen.
Diese Suchmaschine ist dabei nicht zu verwechseln mit Internet-Suchmaschinen, welche als Ergebnis URL's von
im Netz befindlichen Seiten wiedergeben. Die Suchmaschine beschränkt sich allein auf Dateien, welche auf
demselben Server liegen, wie das CGI-Skript.
Source Code und Beispiel-Datendateien
| Perl Sourcecode | |
| search.pl | Das Skript search.pl (V1.13) |
| Konfigurations- und Styledateien | |
| search_result.html | Beispiel-Layout für die Ausgabe |
| search_ergebniszeile.html | Beispiel-Layout für ein einzelnes Suchergebnis |
| search_notfound.html | Beispiel-Layout für das Nichtfinden von Dateien |
| suchen.html | Beispiel-Layout für eine Suchmaske |
| search_maske.html | Beispiel-Layout für eine in die Ergebnisse eingebettete Suchmaske |
| search_top.html | Beispiel-Layout für den oberen Rahmen der Suchausgabe |
| search_bot.html | Beispiel-Layout für den unteren Rahmen der Suchausgabe |
| ignorefiles.txt | Beispiel für eine Datei mit einer liste zu ignorierender Dateien. |
| Achtung: Sollte beim obigen Download-Link fehlerhafterweise als Dateiname "xload.cgi" angegeben sein, ignorieren Sie dies und benennen den Dateinamen um. Einige Browser ignorieren leider den Standard zur Übermittlung von Dateinamen... | |
Wirkungsweise
Ein Beispiel-Aufruf sehen Sie z.B. in der Menüliste links. Ein anderer Aufruf befindet sich auf
der Seite http://www.xwolf.de/suchen.shtml.
Sie können neben der Eingabe über Eingabefelder natürlich auch direkt ein
Link auf eine Ausgabe setzen. So zum Beispiel folgender Link, der immer auf die Ergebnisse
der Suche nach require in Perldateien weisen würde:
Installation
Kopieren Sie die Datei search.pl in Ihr CGI-BIN-Verzeichnis. Setzen Sie die Ausführungsrechte mittels CHMOD.
Z.B.: chmod 755 search.cgi.
Ändern Sie im Programm folgende Zeilen:
| Zeile 1: #!/local/bin/perl5 | Geben Sie hier Ihren eigenen Pfad zu Perl ein, falls er von diesem abweicht. |
| Zeile 27: my $PROGURL = "/cgi-bin/search.pl"; | Hier tragen Sie die URI ein, mit der das CGI-Skript augerufen wird, falls es woanders liegt. |
| Zeile 30: my @START_DIR = "/local/www/www.xwolf.com/"; | Unterhalb dieses lokalen Verzeichnisses beginnt die Suche. Sollen mehrere verschiedene Verzeichnisse benutzt werden, dann in folgender Weise einfuegen: @START_DIR = ("/xwolf/www","/xwolf/www/misc","/xwolf/www/cgi", "/xwolf/www/perl","/xwolf/www/lib","/xwolf/www/faq", "/xwolf/www/freecode"); Wenn Sie die erlaubten pfade auf diese Weise angeben, sollten Sie die rekursive Suche, d.h. die Suche in Unterverzeichnissen, abschalten, da ja hier bereits dieselben angegeben sind. |
| Zeile 36: my %WEBROOTDIR = ("/local/www/www.xwolf.com/", "http://www.xwolf.de/"); |
Hier wird eingetragen, wo die entsprechenden URLs zu den durchsuchten Verzeichnissen
sind. D.h.: Es werden jeweils 2 Variablen eingetragen, wobei die erste
den lokalen Dateipfad entspricht, und die zweite den entsprechenden
String fuer die Umwandlung zu einer URL. Liegt eine Datei in /xwolf/www/test.html wird daraus die URL: http://www.xwolf.de/test.html In der Regel benötigt man hier nur eine solche Angabe. Beachten Sie, daß die Liste der Reihenfolge nach durchsucht wird. So ist es unnötig hier jedes Verzeichnis UNTERHALB des HTML-Root Verzeichnisses einzutragen, da durch die Angabe des Root-Verzeichnisses die Ersetzungen bereits erledigt werden. |
| Zeile 49/50: @IGNORE_DIR = ('/etc,', '/usr', '/var', '/root', '/dev', '/bin', '/src', '/vol', '/mail'); |
Egal von wo die Suche erfolgt, in diesen Verzeichnissen und dessen Unterverzeichnissen
wird nicht gesucht. Diese Angabe sollte verwendet werden, damit nicht uebers Web das Startdir umdefiniert wird, und Files in z.B. /etc/ durchsucht werden koennen. (Auch wenn dies selbst nicht viel ausmachen wuerde, da auch dann keine Daten zurueckgegeben werden wuerden.) |
| Zeile 57: my $IGNORE_FILELIST = "searchlayout/ignorefiles.txt"; | Hier kann man eine lokale Datei angeben, welche die vollständigen Namen von Dateien enthält, welche nicht durchsucht und damit nicht gefunden werden sollen. Die Liste enthält pro Zeile einen Dateinamen und sonst keine weiteren Angaben. Beachten Sie, dass diese Datei fuer das Skript lesbar sein muß. |
| Zeile 85: my $TEMPLATE_PAGEKOPF = "searchlayout/search_top.html"; |
Falls vor der eigentlichen Ausgabe andere HTML-Tags ausgegeben werden sollen,
können diese eingebunden werden, indem sie in eine Datei gespeichert werden,
und dann hiermit eingelesen werden. Als Variable wird hier also
der Dateiname eingegeben. Die datei muß für den Webserver lesbar sein. |
| Zeile 91: my $TEMPLATE_NOTHINGFOUND = "searchlayout/search_notfound.html"; | Diese HTML-Datei wird eingeblendet, falls kein Suchbegriff gefunden wurde. |
| Zeile 94: my $TEMPLATE_PAGEENDE = "searchlayout/search_bot.html"; | Wie $TEMPLATE_PAGEKOPF, nur das diese Datei die Endtags enthält. |
| Zeile 97: my $TEMPLATE_SUCHMASKE = "searchlayout/search_maske.html"; | Hier tragen Sie den lokalen Pfad zu einer Datei ein, die Ihre individuelle Suchmaske enthält. Hierin sollten/können HTML-Tags verwendet werden. |
| Zeile 101: my $TEMPLATE_RESULTS = "searchlayout/search_result.html"; |
In dieser Datei findet sich das Template fuer die Ausgabe. Ausgaben
werden in die Variablen
Bemerkung zu Templates: In den Templates werden folgende Variablen durch die Programmspezifischen Variablen ersetzt:
|
| Zeile 113: my $TEMPLATE_ERGEBNISSZEILE = "searchlayout/search_ergebnisszeile.html"; |
Hier wird definiert, wie eine einzelne Ergebniszeile auszusehen hat.
Moegliche Variablen hier sind:
|


