simplehttpserver.pas 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. program simplehttpserver;
  2. {$mode objfpc}{$H+}
  3. {$define UseCThreads}
  4. uses
  5. {$IFDEF UNIX}{$IFDEF UseCThreads}
  6. cthreads,
  7. {$ENDIF}{$ENDIF}
  8. sysutils, strutils,Classes, fphttpserver, fpmimetypes, testhttpserver, custapp;
  9. Type
  10. { THTTPServer }
  11. THTTPServer = Class(TTestHTTPServer)
  12. Protected
  13. Procedure DoIdle(Sender : TObject);
  14. procedure DoWriteInfo(S: string);
  15. Procedure LogEVent(Sender : TObject; aType : TEventType; Const Msg : String);
  16. end;
  17. Var
  18. Serv : THTTPServer;
  19. { THTTPServer }
  20. procedure THTTPServer.DoIdle(Sender: TObject);
  21. begin
  22. // Writeln('Idle, waiting for connections');
  23. end;
  24. procedure THTTPServer.DoWriteInfo(S: string);
  25. begin
  26. Writeln(S);
  27. end;
  28. procedure THTTPServer.LogEVent(Sender: TObject; aType: TEventType;
  29. const Msg: String);
  30. begin
  31. WriteLn('[',aType,'] ',Msg);
  32. end;
  33. begin
  34. if IndexText(ParamStr(1),['-h','--help'])<>-1 then
  35. begin
  36. Writeln('Usage: ',ExtractFileName(ParamStr(0)),' [dir [port]]');
  37. Writeln('Default dir is binary location');
  38. Writeln('Default port is 8080');
  39. Halt(0);
  40. end;
  41. Serv:=THTTPServer.Create(Nil);
  42. try
  43. if ParamCount=0 then
  44. Serv.BaseDir:=ExtractFilePath(ParamStr(0))
  45. else
  46. Serv.BaseDir:=ParamStr(1);
  47. if ParamCount>1 then
  48. Serv.Port:=StrToIntDef(ParamStr(2),8080)
  49. else
  50. Serv.Port:=8080;
  51. {$ifdef unix}
  52. Serv.MimeTypesFile:='/etc/mime.types';
  53. {$endif}
  54. Serv.ThreadMode:=tmThreadPool;
  55. Serv.AcceptIdleTimeout:=10;
  56. Serv.OnAcceptIdle:[email protected];
  57. Serv.WriteInfo:[email protected];
  58. Serv.KeepConnections:=True;
  59. Serv.OnLog:[email protected];
  60. Serv.LogMoments:=AllLogMoments;
  61. Serv.Active:=True;
  62. finally
  63. Serv.Free;
  64. end;
  65. end.