![]() |
AW: WebServer
Nein, hast Du nicht, haben schon viele gesagt, haben schon viele versucht, sind alle gescheitert.
Auszuliefernde Dateien müssen unterhalb des für den WebServer konfigurierten Rootverzeichnisses liegen. .. in der Url wird schlicht als ungültig erkannt und verworfen.
Delphi-Quellcode:
Und ja: Einen simplen, anspruchslosen WebServer selbst zu bauen geht und ist einfach.
// Im realen Leben natürlich konfigurierbar!
const csRootverzeichnis = 'c:\HTTPServer\Root'; procedure TForm1.ServerCommandGet(AContext: TIdContext; ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo); var Stream : TFileStream; Filename : String; begin Filename := Format('%s%s',[csRootverzeichnis,ARequestinfo.Document]); if (Pos('..',sFilename) = 0 then begin if not FileExists(sFilename) then Filename := Format('%s\index.html',csRootverzeichnis]); Stream := TFileStream.Create(sFilename, fmOpenRead or fmShareDenyWrite); // Hier muss man noch den ContentType abhängig vom Dateityp, setzen. AResponseinfo.ContentType := 'text/html'; AResponseinfo.ContentStream := Stream; AResponseinfo.ContentLength := Stream.Size; end else begin // Warum sollte man hier 'nem Hacker antworten? // Wenn man 'ne Sperrliste für IPs (ARequestinfo.RemoteIP) implementiert hat, kommt die da rein. // Die wird natürlich dann auch am Anfang dieser Prozedur abgefragt ;-) end; end; Den Bau eines Webservers für den professionellen Einsatz sollte man anderen überlassen. Und wenn man 'nen Webserver selbst baut lernt man recht schnell, welche Fallstricke es in dem Umfeld gibt auf die geachtet werden muss. Als Hobbyprogrammierer kann ich mir diesen Spass durchaus leisten. Allerdings käme ich nie auf die Idee "so ein Dingen" für 'nen Kunden zu bauen und dann die ganze Welt darauf zugreifen zu lassen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:06 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz