CGI und Perl

# Perl-Beispiele

Die HTML-Dokumente und Perl-Scripte sind hier nicht lauffähig, sondern müssen erst angepaßt werden.

Der Upload der Scripten (.cgi) auf irgendeinen Server per FTP muß im ASCII-Modus erfolgen, damit gegebenenfalls die Zeilenenden von DOS/WINDOWS (CR, LF) in UNIX-kompatible Zeilenenden (Newline = LF) umgewandelt werden. eventielle Bild- und HTML-Dateien laden Sie im Binär-Modus hoch. Die Scripte selbst sind im Quelltext kommentiert (manchmal etwas spärlich).

#### Perl-Programme

- Perl-Kamel
- Perl-Variante des fortune-Programms
- Perl-Funktion zum Prüfen einer IBAN
- Indexdateien für Bilderverzeichnisse erzeugen
  Das Verzeichnis wird nach Bilddateien durchsucht und eine Datei "index.html" erzeugt, die links zu den Bilder enthält.
- Attachment-Mail
  Das Programm sendet eine beliebige Datei als E-Mail-Attachment.
- Replace und ScanDirectory
  Rumpfprogramm zum rekursiven traversieren von Verzeichnissen und ein Programm zum Ersetzen von Strings in allen Dateien innerhalb eines Verzeichnisses (rekursiv).
- Find Modules
  Das Programm sucht rekursiv nach alle Perl-Modulen.
- ccverify.pl, ccverify.html
  ccverify_readme.txt
  Verifizieren von Kreditkartennummern.
- Kalenderblatt
  Erstellen eines HTML-Kalenderblatts für beliebige Monate und Jahre.
- Lotto
  erzeugt Lottozahlen (Zufallszahlen ohne DOubletten)
- Banner
  Das gute alte UNIX-Banner als Perl-Programm.
- Crossref
  Ein Perl-Programm, das eine Crossrefernzliste von Programmen erzeugt. Für jedes Wort (Variablenname, res. Wort, usw.) werden alle Zeilen aufgelistet, in denen das Wort vorkommt.
- SID
  Ein Perl-Programm, das eine kryptographisch starke zufaellige Session ID erzeugt.
- Search File
  Durchsuchen von Textdateien als Beispiel für Perl-TK.
- Beep
  Monfone Melodien spielen mit dem Modul "Audio::Beep".
- Eine Sammlung von Funktionen zur Datumsberechnung (Jeff Crum).
- Datum/Uhrzeit synchronisieren mit einem beliebigen Webserver.
- Umsetzung einer Suchzeile mit einfacher Syntax in eine MySQL-Select-Anweisung.

#### CGI-Scripte

- Environment-Variablen auflisten
  Dies ist ein einfaches Testprogramm mit dem man mal die CGI-Funktion testen kann.
- Formulareingaben auflisten
  Dies ist ein einfaches Testprogramm mit dem man Formulareingaben testen kann.
- Netzwerk-Tools
  Aufruf beliebiger Programme über ein CGI-Script. Damit niemand Schindluder damit treiben kann, werden vom Formular aus nicht die Kommandos selbst, sondern nur ein Name/Code übergeben. Die Funktion können Sie auf den Service-Seiten von www.netzmafia.de testen. Die Konfiguration erfolgt über eine Kommandoliste, die als Hash (Code/Kommando) definiert wird. Beginnt der Code mit "P-", ist ein Parameter notwendig, bei "N-" ist er optional und bei "R-" ist der Parameter verboten (Beispiel im Quelltext).
- HTTP-Header
  Gibt den Header einer HTTP-Anfrage zurück; zeigt also, was der Webserver an den Browser schickt. Erwartet als Formulareingabe eine beliebige URL. Testaufruf: `..../httpheader.cgi?URL=www.dings.da`
- Portscanner und Portscanner-CGI
  Ein Portscanner für die Kommandozeile und ein einfacher Portscanner, der sein Formular mitbringt. Als Eingabe werden die Rechneradresse und die niedrigst/höchste zu scannende Portadresse verlangt. Bitte nur die eigenen Rechner scannen, sonst handeln Sie sich eventuell Ärger ein.
- Formular und CGI-Programm
  für Nachricht an den Webmaster. Die Nachricht wird in eine Datei geschrieben, die sich dann auch automatisch weiterbearbeiten läßt.
- E-Mail per Formular verschicken.
  Im Formular kann man Betreff und Mailtext eingeben. Der Empfänger-Namen wird per Formular-Variable übergeben (...formular-mail.cgi?recipient=meier) Die Mail-Domain (also alles hinter dem '@') ist im Script fest verankert (sonst könnte das Script als Anonymisierer bzw. Mail-Relais verwendet werden). Da auf der Webseite keine Mailadresse auftaucht (sondern nur das Link), ist das auch ein guter Spam-Schutz gegen Programme, die Mailadressen von Webseiten sammeln.
- Kommentar-Formular und Programm
  Hier kann man Kommentare abgeben. Die Kommentare werden automatisch ans Formular angehängt, das dadurch natürlich kontinuierlich wächst.
- Gästebuch-Formular und Programme für die Eingabe sowie Ausgabe.
  Dieses Script ist etwas komfortabler als das vorhergehende. Es gibt ein Formular mit Script zum Eingeben eines Beitrags und ein weiteres Script zum Anschauen. Alle Einträge werden in einer Textdatei gespeichert und um einige Absenderangaben ergänzt.
- Formular und Programm zum Absetzen von Majordomo-Kommandos.
  Majordomo ist zwar komplett per Mail bedienbar, aber wer Mailinglisten zur Unterstützung einer Website betreibt, kann den Besuchern das Ein- und Austragen sowie andere Listenfunktionen erleichtern. Mit Formular und Script lassen sich alle Majordomo-Funktionen aufrufen.
- Webserver-Statistik
  Die meisten "großen" Server-Statistik-Programme liefern oft nur allgemeine Statistiken und die "Top-20". Will man spezielle Daten aus den Webserver-Logs ziehen, muß man auf eigene Entwicklungen zurückgreifen. Das vorliegende Programm liefert zwei Sorten Balkendiagramme, die per TABLE-Tag realisiert werden (ganz ohne Grafik).
- User-Verwaltung für '.htaccess'-Zugang mit Formular und Setup-Tool.
  Eintragen, Löschen, Auflisten von Usern und Passwort-Änderungen werden hiermit einfacher, denn alles erfolgt per Webformular. Damit nicht jeder Änderungen vornehmen kann, muß in der entsprechenden ".htpasswd"-Datei ein Benutzer "admin" eingetragen sein. Alle Aktionen benötigen die Angabe des Admin-Passworts.
  Ein Setup-Programm richtet in einem Verzeichnis des Webservers die entsprechenden Dateien (Userdatei, .htaccess, usw.) und den Admin-User ein.
- Automatische Beantwortung von E-Mails
  Eigentlich eine Studie, denn alles was dies Programm macht, gibt es auch als fertiges Perl-Modul. Das Programm zeigt aber gut, wie man einen "Automaten" zur verarbeitung eies strukturierten Textes baut. Das Programm analysiert den Mail-Header und kann auch mit Multipart-Mime umgehen. Man kann nicht nur eine automatische Antwort generieren (wie z. B. "vacation"), sondern auch z. B. ein Mail-zu-Fax-Gateway oder ähnliches basteln.
- Suchmaschine für kleine Web-Präsenzen mit Formular
  Dies Script kann Suchmaschinen wie Glimpse oder HtDig nicht ersetzen. Er wird kein Index erzeugt, der dann bei einer Suchanfrage durchsucht wird, sondern bei jeder Suchanfrage werden die HTML-Dateien "on the fly" durchsucht. Dabei wird ein Startverzeichnis angegeben, das dann rekursiv durchsucht wird. Bei vielen Dateien dauert die Suche natürlich irgendwann zu lange. Für private Sites reicht es aber allemal. Neben den Suchbegriffen kann man angeben, ob diese Begriffe UND- oder ODER-verknüpft werden sollen. Außerdem können das/die Startverzeichnis(sse) und auszuschließende Verzeichnisse angegeben werden.
- Einfacher Netzwerkscanner
  Dieses Programm 'pingt' alle möglichen Rechner eines C-Netzes an (von Hostnummer 1 - 253; 254 wird ausgelassen, da Gateway). Nicht erreichbare Hosts spielen keine Rolle. Für erreichbare Hosts wird der Name abgefragt. Hat er keinen Namen (d. h. keinen Nameserver-Eintrag), wird er als 'verdächtig' gemeldet. Wer will kann sich natuerlich auch alle aktiven Rechner ausgeben lassen.
  Die zu scannenden Netze werden auf der Kommandozeile angegeben, z. B.: pinger '10.10.10' '10.10.11' '192.168.33'
  Optionen: -a: Alle aktiven Rechner auflisten, -p: Portscan verdächtiger Rechner.
- Passwort ändern
  Ein Script für Root zum nicht-interaktiven ändern des Passworts eines Users (z. B. für die automatische Vergabe von Passworten. Eventuell müssen Pfade im Programm angepaßt werden.
- Prozesse killen
  Ein Script für Root zum Beenden aller Prozesse des angegebenen Users (hilfreich bei amok laufenden Prozessen oder wenn der User vergessen hat, sich auszuloggen). Eventuell müssen Pfade im Programm angepaßt werden.
- CGI-Telnet
  von Rohitab Batra. Dieses Programm erlaubt Telnet-Funktionen über die CGI-Schnittstelle (Wenn z. B. der Provider kein Telnet oder SSH zuläßt). Mit Dateiup- und Download. Der Betrieb dieses CGI-Scripts macht den Serverbetrieb unsicherer (Eindringen von Hackern möglich).
- Pre-Installation Tester
  von William Bontrager. Das Script testet diverse Voraussetzungen für CGI-Scripte (Environment, intallierte Module, Pfade,etc.). Anleitung im Quellcode.
- CGI-Programm zum Erfassen von Umfragen
  Man baut das Umfrage-Formular in eine Webseite ein und erzeugt die Datei poll.dat und schon kann man Umfragen starten.
- CGI-Programm für das Abonnieren/Kündigen und Verwalten von Newsletter-Adresslisten (letztendlich Mailinglisten). Das CGI-Programm hazt zwei Modi: Anwender-Modus zum Abonnieren/Kündigen und Administrator-Modus zum Bearbeiten einer Liste (Eintragen, Ändern und Löschen von Adressen) und zum Anlegen sowie Löschen von Listen. Die Listen enthalten E-Mail-Adressen, jeweils eine Adresse pro Zeile. Sie lassen sich mit einem eigenen Versende-Programm oder per `include:`-Anweisung in der Datei `/etc/aliases` nutzen. Wer keinen Zugang zu /etc/aliases hat, kann auch das Programm sendfile.pl verwenden, das es erlaubt eine Textdatei und optional ein Attachment an alle User einer Mailingliste zu versenden.
  Um sicherzustellen, daß nicht zum Scherz Einträge erfolgen, landet der Abonnement- oder Kündigungswunsch erst in einer Zwischendatei ("candidates"). Der Benutzer erhät automatisch eine E-Mail mit einem Freigabecode. Erst durch Eingabe des Freigabecodes (Anklicken der URL in der Mail oder Kopiern derselben in die Adresszeile des Browsers) erfolgt die endgültige Freigabe.
  Der Listen-Administrator identifiziert sich mit einem Passwort, das in einer eigenen Datei gespeichert ist (siehe Konfigurationsteil des Programms). Die "candidates"-Datei wächst kontinuierlich und dient so auch als Logfile.
- Grafischer Besucherzähler
  Jeder Aufruf zeigt eine Grafik mit dem Zählerstand, Demonstration für die Referenz auf ein Programm per IMG-Tag.
- Server-Push
  Diashow - wie im Kapitel 4 beschrieben.

###### Copyright © FH München, FB 04, Prof. Jürgen Plate

###### Letzte Aktualisierung: 03. Dec 2004