Delphi-PRAXiS
Seite 4 von 4   « Erste     234   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   WebServer (https://www.delphipraxis.net/211718-webserver.html)

Delphi.Narium 27. Okt 2022 22:33

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:
// 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;
Und ja: Einen simplen, anspruchslosen WebServer selbst zu bauen geht und ist einfach.
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 14:50 Uhr.
Seite 4 von 4   « Erste     234   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz