======================================================================= R T O S - U H HTTP-Server ======================================================================= Dieses Verzeichnis enthält die Quellen für den RTOS-UH HTTP-Server. Die Dateien stehen zum freien Download zur Verfügung. Es wird keinerlei Gewährleistung für eventuelle Schäden an Daten oder Hardware sowie für irgendwelche Folgeschäden im weitesten Sinne übernommen. Es wird auch in keinster Weise Garantie für die beschriebenen Eigenschaften übernommen. Die Software ist wie sie ist. Die Benutzung erfolgt allein auf eigenes Risiko und es besteht kein Anspruch auf einwandfreie Funktion oder Support. httpd_irt.zip Initialversion vom Institut für Regelungstechnik, Universität Hannover. Als Beispiel-Applikationen sind im Paket eine Shell, eine Positionsregelung sowie die Erstellung von PNG-Grafiken enthalten. Hinweise zur Installation und zur Erstellung eigener Applikationen sind im Ordner DOKU zu finden. httpd_jbs.zip Erweiterte Quellen des Servers von Jan Bartels, Siempelkamp. S-Records von erforderlichen Systemroutinen sowie Beispiele für HTML-Dateien sind httpd_irt.zip zu entnehmen. Version 1.9: ------------ Erweiterungen für die Authentifizierung und die Aliase, Vergrößerung des Text- und Variablen-Pools. Die .SR9-Dateien sind für 68k, die SRP für PPC. Beispiel für die HTTPSERV.INI vorhanden. 1. DIRALIAS /NEU/ = /H0/EIN/DIR/ Damit kann das Verzeichnis /H0/EIN/DIR/, das außerhalb vom Web-Rootverzeichnis liegt, unter dem Alias-Namen /NEU/ angesprochen werden. Beispiel: GET /NEU/DATEI.HTM liefert /H0/EIN/DIR/DATEI.HTM. 2. HTTP-Basic-Authentication Es ist möglich, bestimmte Dateien, Verzeichnisse oder Applikationen mit einem Paßwort zu schützen: REALM GeheimeSeiten = user:password AUTHENTICATE GeheimeSeiten = /NEU/ AUTHENTICATE GeheimeSeiten = /HTTPSERV.INI Mit REALM definiert man einen Bereichsnamen sowie den Usernamen und das Paßwort. Es kann mehrere Bereiche geben. AUTHENTICATE legt fest, welche Verzeichnisse bzw. Dateien zu einem REALM gehören. Die Überprüfung findet statt, bevor die Alias-Namen ausgewertet oder Applikationen aufgerufen werden. Für die spezifischen Siempelkamp-Erweiterungen gibt es 2 #defines, die auf 0 gesetz werden müssen (HTTPSERV.P Zeile 39/40): #DEFINE SICOLOG = 0; ! Logfile for Siempelkamp-System instead Alarm-Dation #DEFINE SICOPWD = 0; ! User/Passwords based on PWD_SERV SICOLOG aktiviert die Ausgabe von Fehlermeldungen in unser Logfilesystem anstelle von Terminalausgaben. SICOPWD führt die Paßwortprüfung nicht innerhalb des Servers aus, sondern bedient sich eines zentralen Paßwortservers. Im Gegensatz zu der Version von November 2004 decodiert der Server nun die BASE64-Darstellung und vergleicht es mit dem Klartext-Paßwort aus der FRM-Datei (früher hat HTTP_INI das Paßwort als BASE64 im FRM abgespeichert). Außerdem kann man mit #DEFINE READINI = 1 ; ! 0=Read Configuration from FRM, 1=Read Configuration from INI den HTTP-Server die INI-Datei direkt einlesen lassen. Neben der Environmentvariable $HTTPDIR gibt es nun auch optional $HTTPINIDIR. $HTTPDIR gibt dann wie bisher das Basisverzeichnis für die Dateien an und $HTTPINIDIR das Verzeichnis, in dem die INI- bzw. FRM-Datei zu finden ist. Wenn $HTTPINIDIR nicht gesetzt ist, wird die INI- bzw. FRM-Datei im $HTTPDIR gesucht. Außerdem verarbeitet HTTP_INI (und natürlich ggf. auch HTTPSERV) Environmentvariablen auf der rechten Seite von Einträgen im INI-File. Wenn ENVGET einen Fehler meldet (d. h. der zurückgelieferte String mit einem Dollarzeichen beginnt), wird der ursprüngliche Eintrag verwendet (ohne ENVGET). Beispiel: "DIRALIAS /PARAMETER/ = $PARAMDIR/" ergibt mit "ENVSET PARAMDIR = /H0/PARAMETE" bei URL "http://server/PARAMETER/PARAM15.PRM" die Datei /H0/PARAMETE/PARAM15.PRM. Beim Upload kann nun der Dateiname in der URL übergeben werden. Dadurch lassen sich Uploads per Paßwort schützen, indem man "REALM PARAMETER = User:Pwd" und "AUTHENTICATE PARAMETER = /UPLOAD/PARAMETER/" im INI-File einträgt. Beispiel:
schreibt z. B. die Datei /H0/PARAMETE/PARAM15.PRM (mit dem oben angegebenen DIRALIAS, der für den Teil hinter /UPLOAD/ ausgewertet wird). Als optionale hidden-FORM-Parameter können außerdem noch die Dateinamen für UPLOADOK.HTM und UPLOADNO.HTM überschrieben werden. Die Variante mit direkter Path-Angabe (wie bisher) sollte auch noch funktionieren (also ), habe ich aber nicht mehr intensiv getestet. Die Datei (Parameter file) muß nach wie vor als letztes Element im POST übertragen werden. Neuerungen Version 1.13: ------------------------ ! 14/06/2005 1.10 HTTP/1.0-POST-corrections for IE * ! 31/03/2006 1.11 Var pool enlarged by J. Bartels/Siempelkamp * ! 26/04/2006 1.12 PUT-method implemented by J.Bartels/Siempelkamp * ! 15/05/2006 1.13 Application3-Pointer by J. Bartels/Siempelkamp * Die wesentlichen Änderungen bestehen darin, daß nun auch die PUT-Methode zum Upload von Dateien genutzt werden kann. Dabei sendet der Client nur die reinen Daten ohne den Formular-Overhead von POST. PUT läßt sich nur von selbst geschriebenen Client-Programmen nutzen, nicht jedoch aus einem Browser (ggf. mit ActiveX und JavaScript). Gleichzeitig habe ich noch einen Fehler beim Upload behoben, wenn konkurrierende Dateizugriffe liefen. Dabei waren die Zugriffe nicht synchronisiert und konnten die Datei folglich zerschießen. Außerdem gibt es nun noch eine erweiterte Aufrufschnittstelle (Application3) für Servererweiterungen. Die neue Schnittstelle kann den HTTP-Statuscode zurückgeben und den content-type als Textstring setzen anstatt über den Lesezeiger Indexr. Zu den Parametern siehe Quelltext.