* Fix output, add better file serving options for new http app

This commit is contained in:
Michaël Van Canneyt 2021-12-17 13:05:19 +01:00
parent 82518bf64d
commit e2d630da1d
3 changed files with 90 additions and 44 deletions

View File

@ -1,39 +1,39 @@
object NewHTTPApplicationForm: TNewHTTPApplicationForm
Left = 521
Height = 310
Height = 374
Top = 280
Width = 384
Width = 462
Caption = 'New HTTP server application'
ClientHeight = 310
ClientWidth = 384
ClientHeight = 374
ClientWidth = 462
OnCreate = FormCreate
LCLVersion = '0.9.31'
LCLVersion = '2.3.0.0'
object DEDocumentroot: TDirectoryEdit
Left = 40
Height = 22
Top = 128
Height = 27
Top = 160
Width = 272
DialogTitle = 'Select directory'
ShowHidden = False
ButtonWidth = 23
NumGlyphs = 0
NumGlyphs = 1
Enabled = False
MaxLength = 0
TabOrder = 0
end
object CBRegisterFiles: TCheckBox
Left = 16
Height = 21
Height = 23
Top = 14
Width = 228
Width = 239
Caption = 'Register location to serve files from'
OnChange = CBRegisterFilesChange
TabOrder = 1
end
object SEPort: TSpinEdit
Left = 40
Height = 22
Top = 192
Left = 34
Height = 27
Top = 232
Width = 98
MaxValue = 65355
TabOrder = 2
@ -41,57 +41,67 @@ object NewHTTPApplicationForm: TNewHTTPApplicationForm
end
object ButtonPanel1: TButtonPanel
Left = 6
Height = 34
Top = 270
Width = 372
Height = 38
Top = 330
Width = 450
OKButton.Name = 'OKButton'
OKButton.DefaultCaption = True
HelpButton.Name = 'HelpButton'
HelpButton.DefaultCaption = True
CloseButton.Name = 'CloseButton'
CloseButton.DefaultCaption = True
CancelButton.Name = 'CancelButton'
CancelButton.DefaultCaption = True
TabOrder = 3
ShowButtons = [pbOK, pbCancel]
end
object LSEPort: TLabel
Left = 22
Height = 15
Top = 160
Width = 153
Left = 16
Height = 16
Top = 200
Width = 157
Caption = 'Port to listen for requests:'
FocusControl = SEPort
ParentColor = False
end
object ELocation: TEdit
Left = 40
Height = 22
Top = 72
Height = 27
Top = 64
Width = 80
Enabled = False
TabOrder = 4
end
object LELocation: TLabel
Left = 40
Height = 15
Top = 48
Width = 52
Height = 16
Top = 40
Width = 55
Caption = 'Location:'
FocusControl = ELocation
ParentColor = False
end
object LDEDocumentRoot: TLabel
Left = 40
Height = 15
Top = 104
Width = 52
Caption = '&Directory'
Left = 18
Height = 16
Top = 136
Width = 171
Caption = '&Directory to serve files from:'
FocusControl = DEDocumentroot
ParentColor = False
end
object CBthreads: TCheckBox
Left = 24
Height = 21
Top = 232
Width = 213
Left = 18
Height = 23
Top = 272
Width = 217
Caption = 'Use threads to serve requests in'
TabOrder = 5
end
object CBDefaultFileLocation: TCheckBox
Left = 16
Height = 23
Top = 98
Width = 178
Caption = 'Default route serves files'
OnChange = CBDefaultFileLocationChange
TabOrder = 6
end
end

View File

@ -16,12 +16,14 @@ type
ButtonPanel1: TButtonPanel;
CBRegisterFiles: TCheckBox;
CBthreads: TCheckBox;
CBDefaultFileLocation: TCheckBox;
DEDocumentroot: TDirectoryEdit;
ELocation: TEdit;
LSEPort: TLabel;
LELocation: TLabel;
LDEDocumentRoot: TLabel;
SEPort: TSpinEdit;
procedure CBDefaultFileLocationChange(Sender: TObject);
procedure CBRegisterFilesChange(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
@ -29,6 +31,7 @@ type
function GetL: String;
function GetP: Integer;
function GetS: Boolean;
function GetSD: Boolean;
function Gett: Boolean;
procedure LocalizeForm;
{ private declarations }
@ -39,7 +42,8 @@ type
Property Directory : String Read GetD;
Property Port: Integer Read GetP;
Property Threaded : Boolean Read Gett;
end;
Property ServeFilesDefault : Boolean Read GetSD;
end;
var
NewHTTPApplicationForm: TNewHTTPApplicationForm;
@ -66,6 +70,20 @@ begin
B:=GetS;
ELocation.Enabled:=B;
DEDocumentRoot.Enabled:=B;
CBDefaultFileLocation.Enabled:=Not B;
if not CBDefaultFileLocation.Enabled then
CBDefaultFileLocation.Checked:=False
end;
procedure TNewHTTPApplicationForm.CBDefaultFileLocationChange(Sender: TObject);
begin
CBRegisterFiles.Enabled:=Not CBDefaultFileLocation.Checked;
ELocation.Enabled:=Not CBDefaultFileLocation.Checked;
if not CBRegisterFiles.Enabled then
begin
CBRegisterFiles.Checked:=False;
ELocation.Text:='';
end;
end;
procedure TNewHTTPApplicationForm.LocalizeForm;
@ -99,6 +117,11 @@ begin
Result:=CBRegisterFiles.Checked;
end;
function TNewHTTPApplicationForm.GetSD: Boolean;
begin
Result:=CBDefaultFileLocation.Checked;
end;
function TNewHTTPApplicationForm.Gett: Boolean;
begin
Result:=CBThreads.Checked;

View File

@ -24,7 +24,7 @@ interface
uses
Classes, SysUtils, fpWeb, fpHTML, fpdatasetform,
fpextjs, extjsjson, extjsxml, fpjsonrpc, jstree,jsparser,
fpextdirect,fpwebdata,
fpextdirect,fpwebdata, fpwebfile,
{$IF FPC_FULLVERSION>=30004}
fphttpclient,
fphttpserver,
@ -182,7 +182,8 @@ type
FDir,
FLoc : String;
FPort : Integer;
function GetOPtions: TModalResult;
FDefaultFiles : Boolean;
function GetOptions: TModalResult;
public
constructor Create; override;
function GetLocalizedName: string; override;
@ -806,7 +807,7 @@ begin
Result:=rsHTTPAppli2;
end;
function THTTPApplicationDescriptor.GetOPtions : TModalResult;
function THTTPApplicationDescriptor.GetOptions : TModalResult;
begin
With TNewHTTPApplicationForm.Create(Application) do
@ -821,7 +822,12 @@ begin
begin
FLoc:=Location;
FDir:=Directory;
end;
end
else
begin
FDefaultFiles:=ServeFilesDefault;
FDir:=Directory;
end
end;
finally
Free;
@ -862,6 +868,12 @@ begin
begin
S:=Format(' RegisterFileLocation(''%s'',''%s'');',[FLoc,FDir]);
NewSource:=NewSource+S+le
end
else if FDefaultFiles then
begin
S:='TSimpleFileModule.BaseDir:='+Format('''%s'';',[StringReplace(FDir,'''','''''',[rfReplaceAll])]);
S:=S+le+'TSimpleFileModule.RegisterDefaultRoute;';
NewSource:=NewSource+S+le;
end;
NewSource:=NewSource
+' Application.Title:=''httpproject1'';'+le
@ -962,7 +974,7 @@ function TFileDescWebJSONRPCModule.GetImplementationSource(const Filename,
Var
RH,RM : Boolean;
HP : String;
JRC, HP : String;
begin
RH:=False;
@ -974,6 +986,7 @@ begin
begin
RH:=RegisterHandlers;
RM:=RegisterModule;
JRC:=JSONRPCClass;
If RM then
HP:=HTTPPath;
end;
@ -986,7 +999,7 @@ begin
If RM then
Result:=Result+' RegisterHTTPModule('''+HP+''',T'+ResourceName+');'+LineEnding;
If RH then
Result:=Result+' JSONRPCHandlerManager.RegisterDatamodule(T'+ResourceName+','''+HP+''',);'+LineEnding;
Result:=Result+' JSONRPCHandlerManager.RegisterDatamodule(T'+ResourceName+','''+JRC+''');'+LineEnding;
end;
{ TFileDescExtDirectModule }