Saludos amigos de la comunidad Delphi, les traigo el código de un servidor web hecho en Delphi 2010 que utiliza el componente TTCPServer de la pestaña Internet de la VCL, funciona todo bien, sin embargo, quisiera saber como agregarle soporte para procesar archivos php, tal como apache agrega su Handler, si alguien puede tomar como base el código que comparto aquí y agregarle el parsing de php, se lo agradecería infinitamente:
Código Delphi
[-]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Sockets, Buttons;
type
TForm1 = class(TForm)
servidor: TTcpServer;
txtLog: TMemo;
btnPrender: TBitBtn;
btnApagar: TBitBtn;
btnSalir: TBitBtn;
procedure servidorAccept(Sender: TObject; ClientSocket: TCustomIpClient);
procedure btnPrenderClick(Sender: TObject);
procedure btnApagarClick(Sender: TObject);
procedure btnSalirClick(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.btnApagarClick(Sender: TObject);
begin
servidor.Close;
txtLog.Lines.Add(DateTimeToStr(now) + ': Servidor Parado');
end;
procedure TForm1.btnSalirClick(Sender: TObject);
begin
btnApagarclick(Sender);
close;
end;
procedure TForm1.btnPrenderClick(Sender: TObject);
begin
servidor.Open;
txtLog.Lines.Add(DateTimeToStr(now) + ': Servidor Ok');
end;
procedure TForm1.servidorAccept(Sender: TObject; ClientSocket: TCustomIpClient);
var
Linea, Ruta:string;
HTTPpos:integer;
begin
Linea:=' ';
while ClientSocket.Connected and (Linea<>'') do
begin
Linea:=ClientSocket.Receiveln();
txtLog.Lines.Add(Linea);
if Copy(Linea,1,3) = 'GET' then
begin
HTTPpos:=Pos('HTTP',Linea);
Ruta:=Copy(Linea,5,HTTPpos-6);
txtLog.Lines.Add('Ruta: ' + Ruta);
end;
end;
if Ruta='/' then
Ruta:='index.html';
if FileExists('htdocs/' + Ruta) then
with TStringList.Create do
begin
LoadFromFile('htdocs/' + Ruta);
ClientSocket.Sendln('HTTP/1.0 200 OK');
ClientSocket.Sendln('');
ClientSocket.Sendln(Text);
ClientSocket.Close;
Free;
Exit;
end;
if FileExists('htdocs/404.html') then
begin
with TStringList.Create do
begin
LoadFromFile('htdocs/404.html');
ClientSocket.Sendln('HTTP/1.0 404 Not Found');
ClientSocket.Sendln('');
ClientSocket.Sendln(Text);
ClientSocket.Close;
Free;
end;
end
else
begin
ClientSocket.Sendln('HTTP/1.0 404 Not Found');
ClientSocket.Sendln('');
ClientSocket.Sendln('Error 404 - Archivo No Encontrado: '
+ Ruta + '');
end;
end;
end.