2
0

simplehttpserver.pas 1.7 KB

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