Kapseln der MapServer Konfigurationsparameter
From MapbenderWiki
Kapseln des MapServer Dienstes
Der UMN MapServer benötigt für die Bearbeitung einer Anfrage immer eine MAP-Datei. In der MAP-Datei wird beschrieben, welche Daten zur Anzeige gebracht werden und aus welcher Datenquelle sie gelesen werden. In der MAP-Datei können also Verbindungseigenschaften oder Dateisysteminformationen entalten sein, die nicht durch unberechtigte eingesehen werden sollten. Des weiteren ist der zusätzliche Übergabeparameter map=, der in jedem OGC WMS Aufruf enthalten sein muss nicht OGC konform, sondern ein sogenannter Vendor-Specific Parameter.
Um diesen Parameter aus dem OGC WMS Aufruf zu entfernen kann er in einem Shell-Skript gekapselt werden. Der Aufruf (und damit auch die Online Resource) wird dann an das Shell-Skript geschickt, welches den MapServer mit dem Namen der MAP-Datei parametriert aufruft.
Ein solches Shell-Skript kann aussehen wie folgt:
#!/bin/sh export MS_MAPFILE=/data/umn/germany/wms_germany.map exec /usr/local/www/cgi-bin/mapserv
Das Shell-Skript wird im CGI-Pfad des Webservers gespeichert. In der OnlineResource der MAP-Datei wird statt der ausführbaren Datei MapServer der Name dieses Shell-Skriptes eingetragen. Im OGC WMS Capabilities Dokument wird die MAP-Datei dann ebenfalls nicht mehr angezeigt, sondern nur noch das Shell-Skript.
Eine etwas ausgefeiltere Variante des obigen Scripts könnte auch etwa so aussehen:
#!/bin/sh
MAPSERV="//usr/local/www/cgi-bin/mapserv"
MAPFILE="/data/umn/germany/wms_germany.map"
if [ "${REQUEST_METHOD}" = "GET" ]; then
if [ -z "${QUERY_STRING}" ]; then
QUERY_STRING="map=${MAPFILE}"
else
QUERY_STRING="map=${MAPFILE}&${QUERY_STRING}"
fi
exec ${MAPSERV}
else
echo "Sorry, I only understand GET requests."
fi
exit 1
# End of Script
