5. CGI-Schnittstelle

5.1. Einleitung

Mit der CGI-Schnittstelle ist es möglich iG/Script Programme im Webserver auszuführen um z.B. dynamische Webseiten zu generieren (z.B. als Resultat einer DB-Anfrage). Damit ein CGI-Script vom Webserver ausgeführt werden kann, muss es die Dateiendung .igs aufweisen (z.B. test.igs). CGI-Skripts werden normalerweise im Verzeichnis \user\www\igs abgelegt. Es kann jedoch auch jedes andere vom Webserver publizierte Verzeichnis für die Ablage von CGI-Skripts verwendet werden.

5.2. Installation

Damit CGI-Skripts im GeoShop ausgeführt werden können, muss zuerst im GeoShop Server der Dienst igs einem oder mehreren ICS-Servern zugewiesen und gestartet werden (s.a. GeoShop Administrator bzw. Konfigurationsdatei \user\services\services.srv).

5.3. Ausführung von CGI-Skripts

Wenn ein Benutzer auf die URL eines CGI-Skripts zugreift, wird der Skript vom GeoShop Webserver mit Hilfe von ics.exe ausgeführt. Der Standardoutput des CGI-Skripts wird dann als Resultat vom GeoShop Webserver zurück gegeben.

5.3.1. OPT.temp_dir

Für temporäre Dateien erzeugt der Webserver vor dem Aufruf des Skripts automatisch ein temporäres Verzeichnis. Der Pfad zu diesem Verzeichnis wird dem Skript als OPT.temp_dir übergeben. Es ist wichtig, dass ein CGI-Skript temporäre Zwischenresultate in das Verzeichnis OPT.temp_dir schreibt. Sonst kann es zu Konflikten mit anderen gleichzeitig laufenden CGI-Sripts kommen. Nach der Ausführung des CGI-Scripts wird das Verzeichnis OPT.temp_dir automatisch wieder gelöscht.

5.3.2. Weitere Laufzeitoptionen

Neben OPT.temp_dir stellt der GeoShop dem CGI-Script folgende zusätzliche Laufzeitoptionen zur Verfügung:

OPT.URL

Relative URL des aufgerufenen .igs Skript.

Client HTTP-Parameter

Alle HTTP-Parameter welcher der aufrufende HTTP-Client schickt in der Form OPT.<HTTP-Param> (z.B. OPT.Host, OPT.User-Agent, OPT.Accept-Encoding, etc.).

ICS Optionen

Alle Optionen, welche ein ICS-Skript zur Laufzeit erhält (z.B. OPT.user_dir, OPT.system_dir, OPT.data_dir, etc.).

[Anmerkung]

Auf die Optionen des GeoShop Server in appserver.opt kann über die Map OPTIONS zugegriffen werden. Dazu muss aber vorgängig die Bibliothek \script\util.lib im Skript eingebunden werden.

5.3.3. Debugging

Für das CGI-Debugging steht folgende Option im Abschnitt AppServer von appserver.opt zur Verfügung:

IGS_DEBUG

Debugging von CGI-Skripts ein- (ON) oder ausschalten (OFF) (Default = OFF). Wenn die Option auf ON gesetzt wird, wird der Debugging Output in die Datei \data\temp\igs.log geschrieben (s.a. CGI-Schnittstelle).

5.3.4. MIME-Type

Der Standard MIME-Type eines CGI-Skripts ist text/xml, da die meisten CGI-Skripts im GeoShop für die Generierung von XML-Dateien verwendet werden (z.B. SOAP-Schnittstelle oder getCapabilities.igs des WMS-Server). Falls ein CGI-Skript einen anderen MIME-Type zurück geben soll (z.B. text/html), muss man als letzten Befehl im Skript folgende Zeile einfügen:

OPT.mime_type '<MIME-Type>' SERIAL.SAVE_OBJECT

5.4. Beispiel

Zum Abschluss ist hier noch ein vollständiges Beispiel für einen CGI-Skript angegeben:

|LICENSE \license\geoshop.lic

DISPLAY '<html>'
DISPLAY '<head>'
DISPLAY '<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">'
DISPLAY '</head>'
DISPLAY '<body>'
DISPLAY '<title>hello, world!</title>'
DISPLAY '</body>'
DISPLAY '</html>'

OPT.mime_type 'text/html' SERIAL.SAVE_OBJECT

Falls der obige Skript unter \user\www\igs\hello.igs abgespeichert wird, erzeugt der Aufruf der URL http://localhost:3501/igs/hello.igs im Webbrowser den folgenden Output:

hello, world!