simplehttpserver.pas 1.4 KB

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