diff --git a/CORE/Packages/Delphi/Connectors/Indy/RESTDWSocketIndy.cfg b/CORE/Packages/Delphi/Connectors/Indy/RESTDWSocketIndy.cfg deleted file mode 100644 index 70f7de47..00000000 --- a/CORE/Packages/Delphi/Connectors/Indy/RESTDWSocketIndy.cfg +++ /dev/null @@ -1,44 +0,0 @@ --$A8 --$B- --$C+ --$D- --$E- --$F- --$G+ --$H+ --$I+ --$J- --$K- --$L+ --$M- --$N+ --$O- --$P+ --$Q+ --$R+ --$S- --$T- --$U- --$V+ --$W+ --$X+ --$YD --$Z1 --cg --AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; --H+ --W+ --M --$M16384,1048576 --K$00400000 --N"..\..\..\..\compiled" --LE"c:\program files (x86)\borland\delphi7\Projects\Bpl" --LN"c:\program files (x86)\borland\delphi7\Projects\Bpl" --U"c:\program files (x86)\borland\delphi7\Lib\Debug" --O"c:\program files (x86)\borland\delphi7\Lib\Debug" --I"c:\program files (x86)\borland\delphi7\Lib\Debug" --R"c:\program files (x86)\borland\delphi7\Lib\Debug" --DDEBUG --w-UNSAFE_TYPE --w-UNSAFE_CODE --w-UNSAFE_CAST diff --git a/CORE/Packages/Delphi/Connectors/Indy/RESTDWSocketIndyDesign.cfg b/CORE/Packages/Delphi/Connectors/Indy/RESTDWSocketIndyDesign.cfg deleted file mode 100644 index f370da5b..00000000 --- a/CORE/Packages/Delphi/Connectors/Indy/RESTDWSocketIndyDesign.cfg +++ /dev/null @@ -1,40 +0,0 @@ --$A8 --$B- --$C+ --$D- --$E- --$F- --$G+ --$H+ --$I+ --$J- --$K- --$L+ --$M- --$N+ --$O- --$P+ --$Q- --$R- --$S- --$T- --$U- --$V+ --$W+ --$X+ --$YD --$Z1 --cg --AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; --H+ --W+ --M --$M16384,1048576 --K$00400000 --N"..\..\..\..\compiled" --LE"c:\program files (x86)\borland\delphi7\Projects\Bpl" --LN"c:\program files (x86)\borland\delphi7\Projects\Bpl" --DDEBUG --w-UNSAFE_TYPE --w-UNSAFE_CODE --w-UNSAFE_CAST diff --git a/CORE/Packages/Delphi/Drivers/Zeos/RESTDWZEOSDriver.cfg b/CORE/Packages/Delphi/Drivers/Zeos/RESTDWZEOSDriver.cfg deleted file mode 100644 index fbe54187..00000000 --- a/CORE/Packages/Delphi/Drivers/Zeos/RESTDWZEOSDriver.cfg +++ /dev/null @@ -1,39 +0,0 @@ --$A8 --$B- --$C+ --$D- --$E- --$F- --$G+ --$H+ --$I+ --$J- --$K- --$L+ --$M- --$N+ --$O- --$P+ --$Q- --$R- --$S- --$T- --$U- --$V+ --$W+ --$X+ --$YD --$Z1 --cg --AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; --H+ --W+ --M --$M16384,1048576 --K$00400000 --LE"c:\program files (x86)\borland\delphi7\Projects\Bpl" --LN"c:\program files (x86)\borland\delphi7\Projects\Bpl" --DDEBUG --w-UNSAFE_TYPE --w-UNSAFE_CODE --w-UNSAFE_CAST diff --git a/CORE/Packages/Delphi/RESTDWCore.cfg b/CORE/Packages/Delphi/RESTDWCore.cfg deleted file mode 100644 index 83a2a865..00000000 --- a/CORE/Packages/Delphi/RESTDWCore.cfg +++ /dev/null @@ -1,45 +0,0 @@ --$A8 --$B- --$C+ --$D- --$E- --$F- --$G+ --$H+ --$I+ --$J- --$K- --$L+ --$M- --$N+ --$O- --$P+ --$Q- --$R- --$S- --$T- --$U- --$V+ --$W+ --$X+ --$YD --$Z1 --cg --AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; --H+ --W+ --M --$M16384,1048576 --K$00400000 --N"..\..\compiled" --LE"c:\program files (x86)\borland\delphi7\Projects\Bpl" --LN"c:\program files (x86)\borland\delphi7\Projects\Bpl" --U"c:\program files (x86)\borland\delphi7\Lib\Debug" --O"c:\program files (x86)\borland\delphi7\Lib\Debug" --I"c:\program files (x86)\borland\delphi7\Lib\Debug" --R"c:\program files (x86)\borland\delphi7\Lib\Debug" --DDEBUG --Z --w-UNSAFE_TYPE --w-UNSAFE_CODE --w-UNSAFE_CAST diff --git a/CORE/Packages/Delphi/RESTDWCoreDesign.cfg b/CORE/Packages/Delphi/RESTDWCoreDesign.cfg deleted file mode 100644 index 8e31e00c..00000000 --- a/CORE/Packages/Delphi/RESTDWCoreDesign.cfg +++ /dev/null @@ -1,41 +0,0 @@ --$A8 --$B- --$C+ --$D- --$E- --$F- --$G+ --$H+ --$I+ --$J- --$K- --$L+ --$M- --$N+ --$O- --$P+ --$Q- --$R- --$S- --$T- --$U- --$V+ --$W+ --$X+ --$YD --$Z1 --cg --AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; --H+ --W+ --M --$M16384,1048576 --K$00400000 --N"..\..\compiled" --LE"c:\program files (x86)\borland\delphi7\Projects\Bpl" --LN"c:\program files (x86)\borland\delphi7\Projects\Bpl" --DDEBUG --Z --w-UNSAFE_TYPE --w-UNSAFE_CODE --w-UNSAFE_CAST diff --git a/CORE/Packages/Delphi/ShellTools/RESTDWShellServicesDesign.cfg b/CORE/Packages/Delphi/ShellTools/RESTDWShellServicesDesign.cfg deleted file mode 100644 index 526d4347..00000000 --- a/CORE/Packages/Delphi/ShellTools/RESTDWShellServicesDesign.cfg +++ /dev/null @@ -1,41 +0,0 @@ --$A8 --$B- --$C+ --$D- --$E- --$F- --$G+ --$H+ --$I+ --$J- --$K- --$L+ --$M- --$N+ --$O- --$P+ --$Q- --$R- --$S- --$T- --$U- --$V+ --$W+ --$X+ --$YD --$Z1 --cg --AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; --H+ --W+ --M --$M16384,1048576 --K$00400000 --N"..\..\..\compiled" --LE"c:\program files (x86)\borland\delphi7\Projects\Bpl" --LN"c:\program files (x86)\borland\delphi7\Projects\Bpl" --DDEBUG --Z --w-UNSAFE_TYPE --w-UNSAFE_CODE --w-UNSAFE_CAST diff --git a/CORE/Source/Basic/uRESTDWBasic.pas b/CORE/Source/Basic/uRESTDWBasic.pas index b41b3e19..5bb9b067 100644 --- a/CORE/Source/Basic/uRESTDWBasic.pas +++ b/CORE/Source/Basic/uRESTDWBasic.pas @@ -200,12 +200,12 @@ TRESTDWServerIpVersionConfig = class(TPersistent) vFailOverReplaceDefaults, vEncodeStrings, vDatacompress, - vUseSSL, vAuthentication : Boolean; {$IFDEF FPC} vDatabaseCharSet : TDatabaseCharSet; {$ENDIF} vFailOverConnections : TFailOverConnections; + aSSLMethod : TRESTDWSSLVersion; vSSLVersions : TRESTDWSSLVersions; Function SendEvent (EventData : String) : String;Overload; Procedure SetDataRoute (Value : String); @@ -272,14 +272,14 @@ TRESTDWServerIpVersionConfig = class(TPersistent) Property OnBeforeExecute : TOnBeforeExecute Read vOnBeforeExecute Write vOnBeforeExecute; Property OnBeforeGetToken : TOnBeforeGetToken Read vOnBeforeGetToken Write vOnBeforeGetToken; Property FailOver : Boolean Read vFailOver Write vFailOver; - Property UseSSL : Boolean Read vUseSSL Write vUseSSL; + Property SSLMethod : TRESTDWSSLVersion Read aSSLMethod Write aSSLMethod; + Property SSLVersions : TRESTDWSSLVersions Read vSSLVersions Write vSSLVersions; Property FailOverConnections : TFailOverConnections Read vFailOverConnections Write vFailOverConnections; Property FailOverReplaceDefaults : Boolean Read vFailOverReplaceDefaults Write vFailOverReplaceDefaults; Property BinaryRequest : Boolean Read vBinaryRequest Write vBinaryRequest; Property CriptOptions : TCripto Read vCripto Write vCripto; Property UserAgent : String Read vUserAgent Write vUserAgent; Property PoolerNotFoundMessage : String Read vPoolerNotFoundMessage Write vPoolerNotFoundMessage; - Property SSLVersions : TRESTDWSSLVersions Read vSSLVersions Write vSSLVersions; {$IFDEF FPC} Property DatabaseCharSet : TDatabaseCharSet Read vDatabaseCharSet Write vDatabaseCharSet; {$ENDIF} @@ -1530,7 +1530,6 @@ procedure TRESTClientPoolerBase.SetIpVersion(IpV: TRESTDWClientIpVersions); vFailOver := False; vFailOverReplaceDefaults := False; vPropThreadRequest := False; - vUseSSL := False; vFailOverConnections := TFailOverConnections.Create(Self, TRESTDWConnectionServerCP); vPoolerNotFoundMessage := cPoolerNotFound; vClientIpVersion := civIPv4; diff --git a/CORE/Source/Basic/uRESTDWBasicDB.pas b/CORE/Source/Basic/uRESTDWBasicDB.pas index e72b8efd..b76bcee3 100644 --- a/CORE/Source/Basic/uRESTDWBasicDB.pas +++ b/CORE/Source/Basic/uRESTDWBasicDB.pas @@ -313,9 +313,13 @@ interface Type TRESTDWDatabasebaseBase = Class(TRESTDWComponent) Private + {$IFDEF USE_TAURUS_TLS} + vUseTaurus : Boolean; + {$ENDIF} vOnBuildConnection : TOnBuildConnection; vClientIpVersion : TRESTDWClientIpVersions; vSSLVersions : TRESTDWSSLVersions; + aSSLMethod : TRESTDWSSLVersion; vOnWorkBegin, vOnWork : TOnWork; vOnWorkEnd : TOnWorkEnd; @@ -350,7 +354,6 @@ interface vTimeOut : Integer; vConnectTimeOut : Integer; vEncoding : TEncodeSelect; //Enconding se usar CORS usar UTF8 - Alexandre Abade - vUseSSL, vHandleRedirects, vFailOver, vProxy, //Diz se tem servidor Proxy @@ -383,17 +386,6 @@ interface aBinaryRequest : Boolean = False) : Boolean;//Tenta Conectar o Servidor para saber se posso executar comandos Function GetStateDB : Boolean; Procedure SetMyIp(Value : String); - Procedure ReconfigureConnection (Var Connection : TRESTDWPoolerMethodClient; - Var ConnectionExec : TRESTClientPoolerBase; - TypeRequest : Ttyperequest; - WelcomeMessage, - Host : String; - Port : Integer; - Compression, - EncodeStrings : Boolean; - Encoding : TEncodeSelect; - AccessTag : String; - AuthenticationOptions : TRESTDWClientAuthOptionParams); Function GetRestPoolers : TStringList; //Retorna a Lista de DataSet Sources do Pooler Procedure SetDataRoute (Value : String); Function BuildConnection (aBinaryRequest : Boolean) : TRESTDWPoolerMethodClient; @@ -401,7 +393,19 @@ interface Protected Procedure Loaded; override; Public - Function IsServerLive (Aip : String; + Procedure ReconfigureConnection (Var aConnection : TRESTDWPoolerMethodClient; + Var aRESTClientPooler : TRESTClientPoolerBase; + aTypeRequest : Ttyperequest; + aWelcomeMessage, + aHost : String; + aPort : Integer; + aCompression, + aEncodeStrings : Boolean; + aEncoding : TEncodeSelect; + aAccessTag : String; + aAuthenticationOptions : TRESTDWClientAuthOptionParams);Virtual; + Procedure SetSSL; Virtual; + Function IsServerLive (Aip : String; Aport : Integer; AMessageErro : String): Boolean; Virtual; Procedure SetConnection (Value : Boolean; @@ -540,7 +544,10 @@ interface Property FailOverConnections : TListDefConnections Read vFailOverConnections Write vFailOverConnections; Property FailOverReplaceDefaults : Boolean Read vFailOverReplaceDefaults Write vFailOverReplaceDefaults; Property ClientConnectionDefs : TClientConnectionDefs Read vClientConnectionDefs Write vClientConnectionDefs; - Property UseSSL : Boolean Read vUseSSL Write vUseSSL; + {$IFDEF USE_TAURUS_TLS} + Property UseTaurus : Boolean Read vUseTaurus Write vUseTaurus; + {$ENDIF} + Property SSLMethod : TRESTDWSSLVersion Read aSSLMethod Write aSSLMethod; Property SSLVersions : TRESTDWSSLVersions Read vSSLVersions Write vSSLVersions; Property UserAgent : String Read vUserAgent Write vUserAgent; Property ClientIpVersion : TRESTDWClientIpVersions Read vClientIpVersion Write SetIpVersion default civIPv4; @@ -797,6 +804,11 @@ interface Procedure AbortData; Public //Métodos + {$IFDEF FPC} + vDatabaseCharSet : TDatabaseCharSet; + Procedure SetDatabaseCharSet(Value : TDatabaseCharSet); + Function GetDatabaseCharSet : TDatabaseCharSet; + {$ENDIF} Procedure SetInactive (Const Value : Boolean); Procedure Post; Override; Function OpenJson (JsonValue : String = ''; @@ -865,7 +877,7 @@ interface Published Property MasterDataSet : TRESTDWClientSQL Read vMasterDataSet Write SetMasterDataSet; {$IFDEF FPC} - Property DatabaseCharSet; + Property DatabaseCharSet : TDatabaseCharSet Read GetDatabaseCharSet Write SetDatabaseCharSet; {$ENDIF} Property MasterCascadeDelete : Boolean Read vCascadeDelete Write vCascadeDelete; Property Datapacks : Integer Read vDatapacks Write SetDatapacks; @@ -1046,6 +1058,11 @@ interface Procedure Notification(AComponent: TComponent; Operation: TOperation); override; Public //Métodos + {$IFDEF FPC} + vDatabaseCharSet : TDatabaseCharSet; + Procedure SetDatabaseCharSet(Value : TDatabaseCharSet); + Function GetDatabaseCharSet : TDatabaseCharSet; + {$ENDIF} Procedure Post; Override; Function OpenJson (JsonValue : String = ''; Const ElementRoot : String = ''; @@ -1105,7 +1122,7 @@ interface Published Property MasterDataSet : TRESTDWClientSQLBase Read vMasterDataSet Write SetMasterDataSet; {$IFDEF FPC} - Property DatabaseCharSet; + Property DatabaseCharSet : TDatabaseCharSet Read GetDatabaseCharSet Write SetDatabaseCharSet; {$ENDIF} // Property BinaryCompatibleMode; Property MasterCascadeDelete : Boolean Read vCascadeDelete Write vCascadeDelete; @@ -3151,16 +3168,16 @@ procedure TRESTDWDatabasebaseBase.Loaded; If vDWParams <> Nil Then Begin {$IFDEF FPC} - vTempLineParams := EncodeStrings(vDWParams.ToJSON, TRESTDWClientSQL(Value).DatabaseCharSet); + vTempLineParams := EncodeStrings(vDWParams.ToJSON, TRESTDWClientSQL(Value).DatabaseCharSet); {$ELSE} - vTempLineParams := EncodeStrings(vDWParams.ToJSON); + vTempLineParams := EncodeStrings(vDWParams.ToJSON); {$ENDIF} FreeAndNil(vDWParams); End; {$IFDEF FPC} - vTempLineSQL := EncodeStrings(TRESTDWClientSQL(Value).SQL.Text, TRESTDWClientSQL(Value).DatabaseCharSet); + vTempLineSQL := EncodeStrings(TRESTDWClientSQL(Value).SQL.Text, TRESTDWClientSQL(Value).DatabaseCharSet); {$ELSE} - vTempLineSQL := EncodeStrings(TRESTDWClientSQL(Value).SQL.Text); + vTempLineSQL := EncodeStrings(TRESTDWClientSQL(Value).SQL.Text); {$ENDIF} Result := Format(TDatasetRequestJSON, [vTempLineSQL, vTempLineParams, BooleanToString(TRESTDWClientSQL(Value).BinaryRequest), @@ -3835,6 +3852,9 @@ procedure TRESTDWDatabasebaseBase.Loaded; vRESTConnectionDB := BuildConnection(BinaryRequest); PoolerMethodClient := vRESTConnectionDB; vRESTConnectionDB.SSLVersions := SSLVersions; + {$IFDEF FPC} + vRESTConnectionDB.DatabaseCharSet := RESTClientPooler.DatabaseCharSet; + {$ENDIF} CopyParams(vRESTConnectionDB, vRESTClientPooler); Try Try @@ -4145,7 +4165,6 @@ procedure TRESTDWDatabasebaseBase.Loaded; Inherited; vIgnoreEchoPooler := False; vRESTClientPooler := Nil; - vUseSSL := False; vHandleRedirects := False; vRedirectMaximum := 0; vConnected := False; @@ -4911,41 +4930,18 @@ procedure TRESTDWDatabasebaseBase.Loaded; SetConnection(False); End; -Procedure TRESTDWDatabasebaseBase.ReconfigureConnection(Var Connection : TRESTDWPoolerMethodClient; - Var ConnectionExec : TRESTClientPoolerBase; - TypeRequest : Ttyperequest; - WelcomeMessage, - Host : String; - Port : Integer; - Compression, - EncodeStrings : Boolean; - Encoding : TEncodeSelect; - AccessTag : String; - AuthenticationOptions : TRESTDWClientAuthOptionParams); -Begin - Connection.TypeRequest := TypeRequest; - Connection.WelcomeMessage := WelcomeMessage; - Connection.Host := Host; - Connection.Port := Port; - Connection.Compression := Compression; - Connection.EncodeStrings := EncodeStrings; - Connection.Encoding := Encoding; - Connection.AccessTag := AccessTag; - If assigned(ConnectionExec) Then - Begin - ConnectionExec.Host := Connection.Host; - ConnectionExec.Port := Connection.Port; - ConnectionExec.DataCompression := Connection.Compression; - ConnectionExec.TypeRequest := Connection.TypeRequest; - ConnectionExec.WelcomeMessage := Connection.WelcomeMessage; - ConnectionExec.EncodedStrings := Connection.EncodeStrings; - ConnectionExec.SetAccessTag(Connection.AccessTag); - ConnectionExec.Encoding := Connection.Encoding; - ConnectionExec.AuthenticationOptions.Assign(AuthenticationOptions); - {$IFDEF FPC} - ConnectionExec.DatabaseCharSet := csUndefined; - {$ENDIF} - End; +Procedure TRESTDWDatabasebaseBase.ReconfigureConnection(Var aConnection : TRESTDWPoolerMethodClient; + Var aRESTClientPooler : TRESTClientPoolerBase; + aTypeRequest : Ttyperequest; + aWelcomeMessage, + aHost : String; + aPort : Integer; + aCompression, + aEncodeStrings : Boolean; + aEncoding : TEncodeSelect; + aAccessTag : String; + aAuthenticationOptions : TRESTDWClientAuthOptionParams); +Begin End; Function TRESTDWDatabasebaseBase.TryConnect(Connection : TRESTDWPoolerMethodClient; @@ -4998,8 +4994,14 @@ procedure TRESTDWDatabasebaseBase.Loaded; End; End; Begin - vErrorBoolean := False; - vMessageError := ''; + ReconfigureConnection(Connection, vRESTClientPooler, + vTypeRequest, vWelcomeMessage, + PoolerService, PoolerPort, + vCompression, vEncodeStrings, + vEncoding, vAccessTag, + AuthenticationOptions); + vErrorBoolean := False; + vMessageError := ''; Try Try If Assigned(vRESTClientPooler) Then @@ -5265,7 +5267,6 @@ procedure TRESTDWDatabasebaseBase.Loaded; RESTClientPooler.ContentEncoding := ConnectionDB.ContentEncoding; RESTClientPooler.AuthenticationOptions.Assign(ConnectionDB.AuthenticationOptions); RESTClientPooler.SSLVersions := ConnectionDB.SSLVersions; - RESTClientPooler.UseSSL := UseSSL; RESTClientPooler.WelcomeMessage := ConnectionDB.WelcomeMessage; End; End; @@ -5312,7 +5313,6 @@ procedure TRESTDWDatabasebaseBase.Loaded; vRESTConnectionDB : TRESTDWPoolerMethodClient; Begin vRESTConnectionDB := nil; - If (csLoading in ComponentState) then Value := False; If (Value) And Not(vConnected) then @@ -5369,13 +5369,16 @@ procedure TRESTDWDatabasebaseBase.Loaded; End; End; +Procedure TRESTDWDatabasebaseBase.SetSSL; +Begin + +End; + procedure TRESTDWDatabasebaseBase.SetIpVersion(IpV: TRESTDWClientIpVersions); begin vClientIpVersion := IpV; - - if Assigned(RESTClientPooler) then + If Assigned(RESTClientPooler) Then RESTClientPooler.ClientIpVersion := IpV; - end; Procedure TRESTDWDatabasebaseBase.SetPoolerPort(Value : Integer); @@ -5854,6 +5857,18 @@ procedure TRESTDWClientSQL.SetMasterDataSet(Value: TRESTDWClientSQL); vNotRepage := Value; End; +{$IFDEF FPC} +function TRESTDWClientSQL.GetDatabaseCharSet: TDatabaseCharSet; +Begin + Result := vDatabaseCharSet; +End; + +procedure TRESTDWClientSQL.SetDatabaseCharSet(Value: TDatabaseCharSet); +Begin + vDatabaseCharSet := Value; +End; +{$ENDIF} + Procedure TRESTDWClientSQL.Setnotrepage(Value: Boolean); Begin vNotRepage := Value; @@ -5996,6 +6011,9 @@ procedure TRESTDWClientSQL.SetParams(const Value: TParams); vMassiveDataset := TMassiveDatasetBuffer.Create(Self); // vActionCursor := crHourGlass; vUpdateSQL := Nil; + {$IFDEF FPC} + vDatabaseCharSet := csUndefined; + {$ENDIF} SetComponentTAG; End; @@ -6093,6 +6111,9 @@ procedure TRESTDWClientSQL.SetParams(const Value: TParams); Inherited AfterDelete := OldAfterDelete; {$ENDIF} vMassiveDataset := TMassiveDatasetBuffer.Create(Self); + {$IFDEF FPC} + vDatabaseCharSet := csUndefined; + {$ENDIF} // vActionCursor := crHourGlass; vUpdateSQL := Nil; SetComponentTAG; @@ -6423,7 +6444,7 @@ procedure TRESTDWClientSQL.ProcCalcFields(DataSet: TDataSet); JSONValue.Encoding := vRESTDataBase.Encoding; JSONValue.Encoded := vRESTDataBase.EncodedStrings; {$IFDEF FPC} - JSONValue.DatabaseCharSet := DatabaseCharSet; + JSONValue.DatabaseCharSet := DatabaseCharSet; {$ENDIF} JSONValue.Utf8SpecialChars := True; If vInternalLast Then @@ -6549,7 +6570,7 @@ procedure TRESTDWClientSQL.ProcAfterScroll(DataSet: TDataSet); JSONValue.Encoded := vRESTDataBase.EncodedStrings; JSONValue.ServerFieldList := ServerFieldList; {$IFDEF FPC} - JSONValue.DatabaseCharSet := DatabaseCharSet; + JSONValue.DatabaseCharSet := DatabaseCharSet; JSONValue.NewFieldList := @NewFieldList; JSONValue.CreateDataSet := @CreateDataSet; JSONValue.NewDataField := @NewDataField; @@ -9393,13 +9414,14 @@ procedure TRESTDWClientSQL.InternalOpen; TRESTDWMemtable(Self).Close; TRESTDWMemtable(Self).Open; {$ELSE} - {$IFNDEF RESTDWUNIDACMEM} - If Self is TMemDataset Then - TMemDataset(Self).CreateTable; - {$ELSE} + {$IFDEF RESTDWUNIDACMEM} TVirtualTable(Self).Close; TVirtualTable(Self).Open; {$ENDIF} + {$IFDEF ZEOSMEM} + TZMemtable(Self).Close; + TZMemtable(Self).Open; + {$ENDIF} {$ENDIF} {$ENDIF} Self.Open; @@ -9424,13 +9446,14 @@ procedure TRESTDWClientSQL.Newtable; TRESTDWMemtable(Self).Close; TRESTDWMemtable(Self).Open; {$ELSE} - {$IFNDEF RESTDWUNIDACMEM} - If Self is TMemDataset Then - TMemDataset(Self).CreateTable; - {$ELSE} + {$IFDEF RESTDWUNIDACMEM} TVirtualTable(Self).Close; TVirtualTable(Self).Open; {$ENDIF} + {$IFDEF ZEOSMEM} + TZMemtable(Self).Close; + TZMemtable(Self).Open; + {$ENDIF} {$ENDIF} {$ENDIF} Self.Open; @@ -10123,6 +10146,18 @@ procedure TRESTDWClientSQL.PrepareDetailsNew; End; End; +{$IFDEF FPC} +function TRESTDWTable.GetDatabaseCharSet: TDatabaseCharSet; +Begin + Result := vDatabaseCharSet; +End; + +procedure TRESTDWTable.SetDatabaseCharSet(Value: TDatabaseCharSet); +Begin + vDatabaseCharSet := Value; +End; +{$ENDIF} + Procedure TRESTDWTable.Post; Begin {$IFDEF FPC} @@ -10181,7 +10216,7 @@ procedure TRESTDWClientSQL.PrepareDetailsNew; LDataSetList.Encoding := esUtf8; LDataSetList.ServerFieldList := ServerFieldList; {$IFDEF FPC} - LDataSetList.DatabaseCharSet := DatabaseCharSet; + LDataSetList.DatabaseCharSet := DatabaseCharSet; LDataSetList.NewFieldList := @NewFieldList; LDataSetList.CreateDataSet := @CreateDataSet; LDataSetList.NewDataField := @NewDataField; @@ -10263,7 +10298,7 @@ procedure TRESTDWClientSQL.PrepareDetailsNew; LDataSetList.Encoding := esUtf8; LDataSetList.ServerFieldList := ServerFieldList; {$IFDEF FPC} - LDataSetList.DatabaseCharSet := DatabaseCharSet; + LDataSetList.DatabaseCharSet := DatabaseCharSet; LDataSetList.NewFieldList := @NewFieldList; LDataSetList.CreateDataSet := @CreateDataSet; LDataSetList.NewDataField := @NewDataField; @@ -10396,7 +10431,7 @@ procedure TRESTDWClientSQL.PrepareDetailsNew; Try LDataSetList.ServerFieldList := ServerFieldList; {$IFDEF FPC} - LDataSetList.DatabaseCharSet := DatabaseCharSet; + LDataSetList.DatabaseCharSet := DatabaseCharSet; LDataSetList.NewFieldList := @NewFieldList; LDataSetList.CreateDataSet := @CreateDataSet; LDataSetList.NewDataField := @NewDataField; @@ -10475,7 +10510,7 @@ procedure TRESTDWClientSQL.PrepareDetailsNew; LDataSetList.OnWriterProcess := OnWriterProcess; LDataSetList.ServerFieldList := ServerFieldList; {$IFDEF FPC} - LDataSetList.DatabaseCharSet := DatabaseCharSet; + LDataSetList.DatabaseCharSet := DatabaseCharSet; LDataSetList.NewFieldList := @NewFieldList; LDataSetList.CreateDataSet := @CreateDataSet; LDataSetList.NewDataField := @NewDataField; @@ -10739,6 +10774,9 @@ procedure TRESTDWClientSQL.PrepareDetailsNew; vMetaData := FieldDefs.Count = 0; For I := 0 To 1 Do Begin + {$IFDEF FPC} + vRESTDataBase.RESTClientPooler.DatabaseCharSet := DatabaseCharSet; + {$ENDIF} vRESTDataBase.ExecuteCommand(vActualPoolerMethodClient, vSQL, vParams, vError, vMessageError, LDataSetList, vRowsAffected, False, BinaryRequest, BinaryCompatibleMode, vMetaData, vRESTDataBase.RESTClientPooler); If Not(vError) or (vMessageError <> cInvalidAuth) Then @@ -10781,7 +10819,7 @@ procedure TRESTDWClientSQL.PrepareDetailsNew; LDataSetList.OnWriterProcess := OnWriterProcess; LDataSetList.ServerFieldList := ServerFieldList; {$IFDEF FPC} - LDataSetList.DatabaseCharSet := DatabaseCharSet; + LDataSetList.DatabaseCharSet := DatabaseCharSet; LDataSetList.NewFieldList := @NewFieldList; LDataSetList.CreateDataSet := @CreateDataSet; LDataSetList.NewDataField := @NewDataField; @@ -10832,7 +10870,7 @@ procedure TRESTDWClientSQL.PrepareDetailsNew; SetInBlockEvents(True); Try TRESTDWClientSQLBase(Self).DisableControls; - TRESTDWClientSQLBase(Self).LoadFromStream(TMemoryStream(vStream)); + TRESTDWClientSQLBase(Self).LoadFromStream(vStream); If TRESTDWClientSQLBase(Self).Active Then Begin TRESTDWClientSQLBase(Self).SetInBlockEvents(True); // Novavix diff --git a/CORE/Source/Basic/uRESTDWBasicDbTypes.pas b/CORE/Source/Basic/uRESTDWBasicDbTypes.pas index 3c7fdb6b..cc4f0804 100644 --- a/CORE/Source/Basic/uRESTDWBasicDbTypes.pas +++ b/CORE/Source/Basic/uRESTDWBasicDbTypes.pas @@ -126,9 +126,6 @@ Function GetDataset : TDataset; Function GetBlob (RecNo, Index : Integer) : PMemBlobData; Procedure Loaded; - {$IFDEF FPC} - Function GetDatabaseCharSet : TDatabaseCharSet; - {$ENDIF} End; Type TConnectionDefs = Class(TPersistent) diff --git a/CORE/Source/Basic/uRESTDWPoolermethod.pas b/CORE/Source/Basic/uRESTDWPoolermethod.pas index d26dbbdb..cadf5e02 100644 --- a/CORE/Source/Basic/uRESTDWPoolermethod.pas +++ b/CORE/Source/Basic/uRESTDWPoolermethod.pas @@ -74,6 +74,7 @@ vRedirectMaximum : Integer; vOnBeforeGetToken : TOnBeforeGetToken; vActualClientPoolerExec : TRESTClientPoolerBase; + aSSLMethod : TRESTDWSSLVersion; vSSLVersions : TRESTDWSSLVersions; Procedure SetOnWork (Value : TOnWork); Procedure SetOnWorkBegin(Value : TOnWork); @@ -384,10 +385,11 @@ Property CriptOptions : TCripto Read vCripto Write vCripto; Property UserAgent : String Read vUserAgent Write vUserAgent; Property DataRoute : String Read vDataRoute Write vDataRoute; - Property AuthenticationOptions : TRESTDWClientAuthOptionParams Read vAuthOptionParams Write SetAuthOptionParams; + Property AuthenticationOptions : TRESTDWClientAuthOptionParams Read vAuthOptionParams Write SetAuthOptionParams; Property OnBeforeGetToken : TOnBeforeGetToken Read vOnBeforeGetToken Write vOnBeforeGetToken; Property PoolerNotFoundMessage : String Read vPoolerNotFoundMessage Write vPoolerNotFoundMessage; - Property SSLVersions : TRESTDWSSLVersions Read vSSLVersions Write vSSLVersions; + Property SSLMethod : TRESTDWSSLVersion Read aSSLMethod Write aSSLMethod; + Property SSLVersions : TRESTDWSSLVersions Read vSSLVersions Write vSSLVersions; End; implementation diff --git a/CORE/Source/Basic/uRESTDWStorageBin.pas b/CORE/Source/Basic/uRESTDWStorageBin.pas index 3f2b2369..78a443b9 100644 --- a/CORE/Source/Basic/uRESTDWStorageBin.pas +++ b/CORE/Source/Basic/uRESTDWStorageBin.pas @@ -658,8 +658,8 @@ interface {$IFDEF FPC} stream.Read(Pointer(vString)^, vInt64); If EncodeStrs Then - vString := DecodeStrings(vString, Dataset.GetDatabaseCharSet); - vString := GetStringEncode(vString, Dataset.GetDatabaseCharSet); + vString := DecodeStrings(vString, csUndefined); + vString := GetStringEncode(vString, csUndefined); vInt64 := (Length(vString) + 1) * SizeOf(WideChar); If aField <> Nil Then Move(Pointer(WideString(vString))^, PData^, vInt64); @@ -689,8 +689,8 @@ interface {$IFDEF FPC} stream.Read(Pointer(vString)^, vInt64); If EncodeStrs Then - vString := DecodeStrings(vString, Dataset.GetDatabaseCharSet); - vString := GetStringEncode(vString, Dataset.GetDatabaseCharSet); + vString := DecodeStrings(vString, csUndefined); + vString := GetStringEncode(vString, csUndefined); If aField <> Nil Then Move(Pointer(vString)^, pData^, vInt64); {$ELSE} diff --git a/CORE/Source/Database_Drivers/FireDACPhysLink/FireDAC.Phys.RESTDWBase.pas b/CORE/Source/Database_Drivers/FireDACPhysLink/FireDAC.Phys.RESTDWBase.pas index 2ddb710f..82df6c6a 100644 --- a/CORE/Source/Database_Drivers/FireDACPhysLink/FireDAC.Phys.RESTDWBase.pas +++ b/CORE/Source/Database_Drivers/FireDACPhysLink/FireDAC.Phys.RESTDWBase.pas @@ -120,7 +120,7 @@ TFDPhysRDWCommand = class(TFDPhysCommand) protected procedure InternalPrepare; override; procedure InternalUnprepare; override; - function InternalOpen{$IFDEF DELPHI11UP}(var ACount: TFDCounter){$ENDIF}: Boolean; override; + function InternalOpen(var ACount: TFDCounter): Boolean; override; function InternalNextRecordSet: Boolean; override; procedure InternalClose; override; procedure InternalExecute(ATimes, AOffset: integer; @@ -537,7 +537,7 @@ function TFDPhysRDWCommand.InternalNextRecordSet: Boolean; Result := False; end; -function TFDPhysRDWCommand.InternalOpen{$IFDEF DELPHI11UP}(var ACount: TFDCounter){$ENDIF}: Boolean; +function TFDPhysRDWCommand.InternalOpen(var ACount: TFDCounter): Boolean; begin {$IFDEF DELPHI11UP} ACount := -1; diff --git a/CORE/Source/Database_Drivers/uRESTDWZeosDriver.pas b/CORE/Source/Database_Drivers/uRESTDWZeosDriver.pas index 4be416b0..dcfe615a 100644 --- a/CORE/Source/Database_Drivers/uRESTDWZeosDriver.pas +++ b/CORE/Source/Database_Drivers/uRESTDWZeosDriver.pas @@ -530,13 +530,9 @@ procedure TRESTDWZeosQuery.SaveToStream(stream: TStream); qry := TZQuery(Self.Owner); memtable := TZMemTable.Create(nil); try - {$IFDEF ZMEMTABLE_ENABLE_STREAM_EXPORT_IMPORT} - memtable.AssignDataFrom(qry); - {$ELSE} - memtable.Assign(qry); - {$ENDIF} + memtable.AssignDataFrom(qry); //TODO SaveTostream -// memtable.SaveToStream(stream); + memtable.SaveToStream(stream); stream.Position := 0; finally FreeAndNil(memtable); @@ -579,25 +575,13 @@ procedure TRESTDWZeosTable.LoadFromStreamParam(IParam: integer; stream: TStream; procedure TRESTDWZeosTable.SaveToStream(stream: TStream); var qry : TZTable; - {$IFDEF ZMEMTABLE_ENABLE_STREAM_EXPORT_IMPORT} - memtable : TZMemTable; - {$ELSE} - memtable : TRESTDWMemtable; - {$ENDIF} + memtable : TZMemTable; begin - qry := TZTable(Self.Owner); - {$IFDEF ZMEMTABLE_ENABLE_STREAM_EXPORT_IMPORT} - memtable := TZMemTable.Create(nil); - {$ELSE} - memtable := TRESTDWMemtable.Create(nil); - {$ENDIF} + qry := TZTable.Create(Self.Owner); + memtable := TZMemTable.Create(nil); try - {$IFDEF ZMEMTABLE_ENABLE_STREAM_EXPORT_IMPORT} - memtable.AssignDataFrom(qry); - {$ELSE} - memtable.Assign(qry); - {$ENDIF} - memtable.SaveToStream(stream); + memtable.Assign(qry); + memtable .SaveToStream(stream); stream.Position := 0; finally FreeAndNil(memtable); diff --git a/CORE/Source/Includes/uRESTDW.inc b/CORE/Source/Includes/uRESTDW.inc index e9c8f078..afae77f8 100644 --- a/CORE/Source/Includes/uRESTDW.inc +++ b/CORE/Source/Includes/uRESTDW.inc @@ -39,22 +39,18 @@ {$ENDIF} {$ENDIF} -{$IFNDEF FPC} - {$if CompilerVersion < 26} - {$DEFINE RESTDWMEMTABLE} - {$ELSE} - {.$DEFINE RESTDWMEMTABLE} - {$DEFINE RESTFDMEMTABLE} - {.$DEFINE UNIDACMEM} - {.$DEFINE ZEOSMEM} - {.$DEFINE USE_TAURUS_TLS} - {$IFEND} +//Datasets Base for ClientSQL +{$IFDEF FPC} + {.$DEFINE RESTDWMEMTABLE} + {.$DEFINE UNIDACMEM} + {$DEFINE ZEOSMEM} + {.$DEFINE USE_TAURUS_TLS} {$ELSE} - //For Lazarus - {$DEFINE RESTDWMEMTABLE} + {.$DEFINE RESTDWMEMTABLE} + {$DEFINE RESTFDMEMTABLE} {.$DEFINE UNIDACMEM} {.$DEFINE ZEOSMEM} - {.$DEFINE USE_TAURUS_TLS} + {$DEFINE USE_TAURUS_TLS} {$ENDIF} diff --git a/CORE/Source/Plugins/Memdataset/uRESTDWMemoryDataset.pas b/CORE/Source/Plugins/Memdataset/uRESTDWMemoryDataset.pas index f49a1eaf..ed85c3e7 100644 --- a/CORE/Source/Plugins/Memdataset/uRESTDWMemoryDataset.pas +++ b/CORE/Source/Plugins/Memdataset/uRESTDWMemoryDataset.pas @@ -541,12 +541,8 @@ TDoubleLinkedBufIndex = class(TRESTDWIndex) FLastID : Integer; FBlobs : TMemBlobArray; FRecords : TRecordList; - {$IFDEF FPC} - vDatabaseCharSet : TDatabaseCharSet; - Procedure SetDatabaseCharSet(Value : TDatabaseCharSet); - Function GetDatabaseCharSet : TDatabaseCharSet; - {$ELSE} - FFilterExpression : TRDWABExprParser; + {$IFNDEF FPC} + FFilterExpression : TRDWABExprParser; {$ENDIF} Constructor Create(AOwner : TComponent);Override; Destructor Destroy;Override; @@ -692,9 +688,6 @@ TDoubleLinkedBufIndex = class(TRESTDWIndex) {$IFNDEF FPC} Property ObjectView default False; {$ENDIF} - {$IFDEF FPC} - Property DatabaseCharSet : TDatabaseCharSet Read GetDatabaseCharSet Write SetDatabaseCharSet; - {$ENDIF} Property DatasetClosed : Boolean Read FDataSetClosed Write FDataSetClosed Default False; Property KeyFieldNames : String Read FKeyFieldNames Write FKeyFieldNames; Property LoadStructure : Boolean Read FLoadStructure Write FLoadStructure Default False; @@ -6110,18 +6103,6 @@ function TRESTDWMemTable.IsSequenced: Boolean; Result := not Filtered; End; -{$IFDEF FPC} -function TRESTDWMemTable.GetDatabaseCharSet: TDatabaseCharSet; -Begin - Result := vDatabaseCharSet; -End; - -procedure TRESTDWMemTable.SetDatabaseCharSet(Value: TDatabaseCharSet); -Begin - vDatabaseCharSet := Value; -End; -{$ENDIF} - function TRESTDWMemTable.Locate(const KeyFields: String; const KeyValues: Variant; Options: TLocateOptions): Boolean; Begin diff --git a/CORE/Source/Sockets/Indy/uRESTDWIdBase.pas b/CORE/Source/Sockets/Indy/uRESTDWIdBase.pas index f6483558..4f7a6824 100644 --- a/CORE/Source/Sockets/Indy/uRESTDWIdBase.pas +++ b/CORE/Source/Sockets/Indy/uRESTDWIdBase.pas @@ -41,7 +41,7 @@ interface uRESTDWBasic, uRESTDWBasicDB, uRESTDWComponentEvents, uRESTDWBasicTypes, uRESTDWJSONObject, uRESTDWParams, uRESTDWBasicClass, uRESTDWAbout, uRESTDWProtoTypes, uRESTDWDataUtils, uRESTDWTools, uRESTDWZlib, - uRESTDWAuthenticators, + uRESTDWAuthenticators, uRESTDWPoolermethod, IdContext, IdHeaderList, IdTCPConnection, IdHTTPServer, IdCustomHTTPServer, IdSSLOpenSSL, IdSSL, IdAuthentication, IdTCPClient, IdHTTPHeaderInfo, IdComponent, IdBaseComponent, IdHTTP, IdMultipartFormData, IdMessageCoder, @@ -69,9 +69,9 @@ interface vSSLVerifyDepth : Integer; vSSLMode : TRESTDWSSLMode; aSSLVersions : TRESTDWSSLVersions; - Function GetSSlVersion : Integer; - Function GetSSlVersions : TRESTDWVersionsBase; - Function GetSSlMode : Integer; + Function GetSSlVersion : Pointer; + Function GetSSlMode : Pointer; + Function GetSSlVersions : Pointer; Procedure aCommandGet (AContext : TIdContext; ARequestInfo : TIdHTTPRequestInfo; AResponseInfo : TIdHTTPResponseInfo); @@ -291,13 +291,16 @@ interface vHostCert : String; vPortCert : Integer; vOnGetpassword : TOnGetpassword; - vUseTaurus : Boolean; + {$IFDEF USE_TAURUS_TLS} + vUseTaurus : Boolean; + {$ENDIF} ssl : TComponent;//TIdSSLIOHandlerSocketOpenSSL; vSSLVersions : TRESTDWSSLVersions; vCertMode : TRESTDWSSLMode; - Function GetSSlVersion : Integer; - Function GetSSlMode : Integer; - Function GetSSlVersions : TRESTDWVersionsBase; + aSSLMethod : TRESTDWSSLVersion; + Function GetSSlVersion : Pointer; + Function GetSSlMode : Pointer; + Function GetSSlVersions : Pointer; Procedure SetParams; Procedure SetUseSSL (Value : Boolean);Override; Procedure SetHeaders (AHeaders : TStringList);Overload;Override; @@ -457,7 +460,11 @@ interface Const AResponse : TStream = Nil; IgnoreEvents : Boolean = False):Integer;Overload;Override; Published + {$IFDEF USE_TAURUS_TLS} + Property UseTaurus : Boolean Read vUseTaurus Write vUseTaurus; + {$ENDIF} Property VerifyCert : Boolean Read GetVerifyCert Write SetVerifyCert; + Property SSLMethod : TRESTDWSSLVersion Read aSSLMethod Write aSSLMethod; Property SSLVersions : TRESTDWSSLVersions Read vSSLVersions Write vSSLVersions; Property CertMode : TRESTDWSSLMode Read vCertMode Write vCertMode; Property CertFile : String Read vCertFile Write vCertFile; @@ -471,17 +478,26 @@ interface TRESTDWIdDatabase = Class(TRESTDWDatabasebaseBase) Private vCipherList : String; - aSSLMethod : TIdSSLVersion; - vSSLMode : TIdSSLMode; Public + Procedure SetSSL;Override; Constructor Create (AOwner : TComponent);Override; Destructor Destroy;Override; Function IsServerLive (Aip : String; Aport : Integer; - AMessageErro : String): Boolean; Override; + AMessageErro : String) : Boolean; Override; + Procedure ReconfigureConnection(Var aConnection : TRESTDWPoolerMethodClient; + Var aRESTClientPooler : TRESTClientPoolerBase; + aTypeRequest : Ttyperequest; + aWelcomeMessage, + aHost : String; + aPort : Integer; + aCompression, + aEncodeStrings : Boolean; + aEncoding : TEncodeSelect; + aAccessTag : String; + aAuthenticationOptions : TRESTDWClientAuthOptionParams);Override; Published - Property SSLMode : TIdSSLMode Read vSSLMode Write vSSLMode; - Property CipherList : String Read vCipherList Write vCipherList; + Property CipherList : String Read vCipherList Write vCipherList; End; TRESTDWIdClientPooler = Class(TRESTClientPoolerBase) @@ -494,9 +510,9 @@ interface ASSLPrivateKeyFile, ASSLPrivateKeyPassword, ASSLCertFile : String; - aSSLMethod : TRESTDWSSLVersion; HttpRequest : TRESTDWIdClientREST; - vSSLMode : TRESTDWSSLMode; + aSSLMethod : TRESTDWSSLVersion; + vSSLVersions : TRESTDWSSLVersions; Function GetSSlVersion : Integer; Function GetSSlMode : Integer; Function GetSSlVersions : TRESTDWVersionsBase; @@ -525,14 +541,15 @@ interface Function IsServerLive (Aip : String; Aport : Integer; AMessageErro : String): Boolean; + Procedure SetSslOptions; Procedure Abort;Override; Published Property SSLPrivateKeyFile : String Read aSSLPrivateKeyFile Write aSSLPrivateKeyFile; Property SSLPrivateKeyPassword : String Read aSSLPrivateKeyPassword Write aSSLPrivateKeyPassword; Property SSLCertFile : String Read aSSLCertFile Write aSSLCertFile; Property SSLRootCertFile : String Read vaSSLRootCertFile Write vaSSLRootCertFile; - Property SSLMode : TRESTDWSSLMode Read vSSLMode Write vSSLMode; Property SSLMethod : TRESTDWSSLVersion Read aSSLMethod Write aSSLMethod; + Property SSLVersions : TRESTDWSSLVersions Read vSSLVersions Write vSSLVersions; End; TRESTDWIdPoolerList = Class(TRESTDWPoolerListBase) @@ -2956,19 +2973,181 @@ TIdHTTPAccess = class(TIdHTTP) vOnGetpassword(Password); End; -Function TRESTDWIdClientREST.GetSSlMode : Integer; +Function TRESTDWIdClientREST.GetSSlMode : Pointer; +{$IFDEF USE_TAURUS_TLS} + Var + bSSLMode : TIdSSLMode; + aTaurSSLMode : TTaurusTLSSSLMode; +{$ELSE} +Var + SSLMode : TRESTDWSSLMode; +{$ENDIF} Begin - Result := 0; + Result := Nil; + {$IFDEF USE_TAURUS_TLS} + If vUseTaurus Then + Begin + If vCertMode = sslUnassigned Then + aTaurSSLMode := TTaurusTLSSSLMode(sslmUnassigned) + Else If vCertMode = sslClient Then + aTaurSSLMode := TTaurusTLSSSLMode(sslmClient) + Else If vCertMode = sslServer Then + aTaurSSLMode := TTaurusTLSSSLMode(sslmServer) + Else If vCertMode = sslBoth Then + aTaurSSLMode := TTaurusTLSSSLMode(sslmBoth); + Result := @aTaurSSLMode; + End + Else + Begin + If vCertMode = sslUnassigned Then + bSSLMode := sslmUnassigned + Else If vCertMode = sslClient Then + bSSLMode := sslmClient + Else If vCertMode = sslServer Then + bSSLMode := sslmServer + Else If vCertMode = sslBoth Then + bSSLMode := sslmBoth; + Result := @bSSLMode; + End; + {$ELSE} + If vCertMode = sslUnassigned Then + SSLMode := sslUnassigned + Else If vCertMode = sslClient Then + SSLMode := sslClient + Else If vCertMode = sslServer Then + SSLMode := sslServer + Else If vCertMode = sslBoth Then + SSLMode := sslBoth; + Result := @SSLMode; + {$ENDIF} End; -Function TRESTDWIdClientREST.GetSSlVersion : Integer; +Function TRESTDWIdClientREST.GetSSlVersion : Pointer; +Var + SSLVersion : TIdSSLVersion; + {$IFDEF USE_TAURUS_TLS} + MinSSLVersion : TTaurusTLSSSLVersion; + {$ENDIF} Begin - Result := 0; + Result := Nil; + {$IFDEF USE_TAURUS_TLS} + If vUseTaurus Then + Begin + If SSLv2 = aSSLMethod Then + MinSSLVersion := TTaurusTLSSSLVersion(SSLv2); + If SSLv23 = aSSLMethod Then + MinSSLVersion := TTaurusTLSSSLVersion(SSLv23); + If SSLv3 = aSSLMethod Then + MinSSLVersion := TTaurusTLSSSLVersion(SSLv3); + If TLSv1 = aSSLMethod Then + MinSSLVersion := TTaurusTLSSSLVersion(TLSv1); + If TLSv1_1 = aSSLMethod Then + MinSSLVersion := TTaurusTLSSSLVersion(TLSv1_1); + If TLSv1_2 = aSSLMethod Then + MinSSLVersion := TTaurusTLSSSLVersion(TLSv1_2); + If TLSv1_3 = aSSLMethod Then + MinSSLVersion := TTaurusTLSSSLVersion(TLSv1_3); + Result := @MinSSLVersion; + End + Else + Begin + If aSSLMethod = SSLv2 Then + SSLVersion := sslvSSLv2; + If aSSLMethod = SSLv23 Then + SSLVersion := sslvSSLv23; + If aSSLMethod = SSLv3 Then + SSLVersion := sslvSSLv3; + If aSSLMethod = TLSv1 Then + SSLVersion := sslvTLSv1; + If aSSLMethod = TLSv1_1 Then + SSLVersion := sslvTLSv1_1; + If aSSLMethod = TLSv1_2 Then + SSLVersion := sslvTLSv1_2; + If aSSLMethod = TLSv1_3 Then + Raise Exception.Create('Indy no have TLS 1.3 Support...'); + Result := @SSLVersion; + End; + {$ELSE} + If aSSLMethod = SSLv2 Then + SSLVersion := sslvSSLv2; + If aSSLMethod = SSLv23 Then + SSLVersion := sslvSSLv23; + If aSSLMethod = SSLv3 Then + SSLVersion := sslvSSLv3; + If aSSLMethod = TLSv1 Then + SSLVersion := sslvTLSv1; + If aSSLMethod = TLSv1_1 Then + SSLVersion := sslvTLSv1_1; + If aSSLMethod = TLSv1_2 Then + SSLVersion := sslvTLSv1_2; + If aSSLMethod = TLSv1_3 Then + Raise Exception.Create('Indy no have TLS 1.3 Support...'); + Result := @SSLVersion; + {$ENDIF} End; -Function TRESTDWIdClientREST.GetSSlVersions : TRESTDWVersionsBase; +Function TRESTDWIdClientREST.GetSSlVersions : Pointer; +Var + bSSLVersions : TIdSSLVersions; + {$IFDEF USE_TAURUS_TLS} + MinSSLVersion : TTaurusTLSSSLVersion; + {$ENDIF} Begin - Result := Nil; + bSSLVersions := []; + {$IFDEF USE_TAURUS_TLS} + If vUseTaurus Then + Begin + If SSLv2 in vSSLVersions Then + MinSSLVersion := TTaurusTLSSSLVersion(SSLv2); + If SSLv23 in vSSLVersions Then + MinSSLVersion := TTaurusTLSSSLVersion(SSLv23); + If SSLv3 in vSSLVersions Then + MinSSLVersion := TTaurusTLSSSLVersion(SSLv3); + If TLSv1 in vSSLVersions Then + MinSSLVersion := TTaurusTLSSSLVersion(TLSv1); + If TLSv1_1 in vSSLVersions Then + MinSSLVersion := TTaurusTLSSSLVersion(TLSv1_1); + If TLSv1_2 in vSSLVersions Then + MinSSLVersion := TTaurusTLSSSLVersion(TLSv1_2); + If TLSv1_3 in vSSLVersions Then + MinSSLVersion := TTaurusTLSSSLVersion(TLSv1_3); + Result := @MinSSLVersion; + End + Else + Begin + If SSLv2 in vSSLVersions Then + bSSLVersions := bSSLVersions + [sslvSSLv2]; + If SSLv23 in vSSLVersions Then + bSSLVersions := bSSLVersions + [sslvSSLv23]; + If SSLv3 in vSSLVersions Then + bSSLVersions := bSSLVersions + [sslvSSLv3]; + If TLSv1 in vSSLVersions Then + bSSLVersions := bSSLVersions + [sslvTLSv1]; + If TLSv1_1 in vSSLVersions Then + bSSLVersions := bSSLVersions + [sslvTLSv1_1]; + If TLSv1_2 in vSSLVersions Then + bSSLVersions := bSSLVersions + [sslvTLSv1_2]; + If TLSv1_3 in vSSLVersions Then + Raise Exception.Create('Indy no have TLS 1.3 Support...'); + Result := @SSLVersions; + End; + {$ELSE} + If SSLv2 in vSSLVersions Then + bSSLVersions := bSSLVersions + [sslvSSLv2]; + If SSLv23 in vSSLVersions Then + bSSLVersions := bSSLVersions + [sslvSSLv23]; + If SSLv3 in vSSLVersions Then + bSSLVersions := bSSLVersions + [sslvSSLv3]; + If TLSv1 in vSSLVersions Then + bSSLVersions := bSSLVersions + [sslvTLSv1]; + If TLSv1_1 in vSSLVersions Then + bSSLVersions := bSSLVersions + [sslvTLSv1_1]; + If TLSv1_2 in vSSLVersions Then + bSSLVersions := bSSLVersions + [sslvTLSv1_2]; + If TLSv1_3 in vSSLVersions Then + Raise Exception.Create('Indy no have TLS 1.3 Support...'); + Result := @bSSLVersions; + {$ENDIF} End; Function TRESTDWIdClientREST.GetVerifyCert : boolean; @@ -2982,10 +3161,8 @@ TIdHTTPAccess = class(TIdHTTP) End; Procedure TRESTDWIdClientREST.SetCertOptions; -{$IFDEF USE_TAURUS_TLS} Var - vRESTDWVersionsBase : TRESTDWVersionsBase; -{$ENDIF} + vRESTDWVersionsBase : Pointer; Begin If Assigned(ssl) Then Begin @@ -2993,20 +3170,20 @@ TIdHTTPAccess = class(TIdHTTP) TIdSSLIOHandlerSocketOpenSSL(ssl).OnGetPassword := @Getpassword; {$ELSE} vRESTDWVersionsBase := GetSSlVersions; - {$IFDEF USE_TAURUS_TLS} - If vUseTaurus Then - Begin - End - Else - Begin - TIdSSLIOHandlerSocketOpenSSL(ssl).OnGetPassword := Getpassword; - TIdSSLIOHandlerSocketOpenSSL(ssl).SSLOptions.CertFile := vCertFile; - TIdSSLIOHandlerSocketOpenSSL(ssl).SSLOptions.KeyFile := vKeyFile; - TIdSSLIOHandlerSocketOpenSSL(ssl).SSLOptions.RootCertFile := vRootCertFile; - TIdSSLIOHandlerSocketOpenSSL(ssl).Host := vHostCert; - TIdSSLIOHandlerSocketOpenSSL(ssl).Port := vPortCert; - TIdSSLIOHandlerSocketOpenSSL(ssl).SSLOptions.Mode := TIdSSLMode(GetSSlMode);; - End; + {$IFDEF USE_TAURUS_TLS} + If vUseTaurus Then + Begin + End + Else + Begin + TIdSSLIOHandlerSocketOpenSSL(ssl).OnGetPassword := Getpassword; + TIdSSLIOHandlerSocketOpenSSL(ssl).SSLOptions.CertFile := vCertFile; + TIdSSLIOHandlerSocketOpenSSL(ssl).SSLOptions.KeyFile := vKeyFile; + TIdSSLIOHandlerSocketOpenSSL(ssl).SSLOptions.RootCertFile := vRootCertFile; + TIdSSLIOHandlerSocketOpenSSL(ssl).Host := vHostCert; + TIdSSLIOHandlerSocketOpenSSL(ssl).Port := vPortCert; + TIdSSLIOHandlerSocketOpenSSL(ssl).SSLOptions.Mode := TIdSSLMode(GetSSlMode);; + End; {$ELSE} TIdSSLIOHandlerSocketOpenSSL(ssl).OnGetPassword := Getpassword; TIdSSLIOHandlerSocketOpenSSL(ssl).SSLOptions.CertFile := vCertFile; @@ -3155,8 +3332,8 @@ TIdHTTPAccess = class(TIdHTTP) End; {$ELSE} ssl := TIdSSLIOHandlerSocketOpenSSL.Create(HttpRequest); - TIdSSLIOHandlerSocketOpenSSL(ssl).OnVerifyPeer := @IdSSLIOHandlerSocketOpenSSL1VerifyPeer; - TIdSSLIOHandlerSocketOpenSSL(ssl).OnGetPassword := @Getpassword; + TIdSSLIOHandlerSocketOpenSSL(ssl).OnVerifyPeer := IdSSLIOHandlerSocketOpenSSL1VerifyPeer; + TIdSSLIOHandlerSocketOpenSSL(ssl).OnGetPassword := Getpassword; If Assigned(HttpRequest) Then HttpRequest.IOHandler := TIdSSLIOHandlerSocketOpenSSL(ssl); {$ENDIF} @@ -3665,9 +3842,8 @@ TIdHTTPAccess = class(TIdHTTP) If (Value) And (Not (HTTPServer.Active)) Then Begin - if not(Assigned(ServerMethodClass)) and (Self.GetDataRouteCount = 0) then - raise Exception.Create(cServerMethodClassNotAssigned); - + If not(Assigned(ServerMethodClass)) and (Self.GetDataRouteCount = 0) Then + Raise Exception.Create(cServerMethodClassNotAssigned); Try If (ASSLCertFile <> '') Then Begin @@ -3835,19 +4011,19 @@ TIdHTTPAccess = class(TIdHTTP) {$IFDEF USE_TAURUS_TLS} If vUseTaurus Then Begin - If SSLv2 in aSSLVersions Then + If SSLv2 = aSSLMethod Then MinSSLVersion := TTaurusTLSSSLVersion(SSLv2); - If SSLv23 in aSSLVersions Then + If SSLv23 = aSSLMethod Then MinSSLVersion := TTaurusTLSSSLVersion(SSLv23); - If SSLv3 in aSSLVersions Then + If SSLv3 = aSSLMethod Then MinSSLVersion := TTaurusTLSSSLVersion(SSLv3); - If TLSv1 in aSSLVersions Then + If TLSv1 = aSSLMethod Then MinSSLVersion := TTaurusTLSSSLVersion(TLSv1); - If TLSv1_1 in aSSLVersions Then + If TLSv1_1 = aSSLMethod Then MinSSLVersion := TTaurusTLSSSLVersion(TLSv1_1); - If TLSv1_2 in aSSLVersions Then + If TLSv1_2 = aSSLMethod Then MinSSLVersion := TTaurusTLSSSLVersion(TLSv1_2); - If TLSv1_3 in aSSLVersions Then + If TLSv1_3 = aSSLMethod Then MinSSLVersion := TTaurusTLSSSLVersion(TLSv1_3); Result := @MinSSLVersion; End @@ -3956,8 +4132,8 @@ TIdHTTPAccess = class(TIdHTTP) Procedure TRESTDWIdClientPooler.SetParams(TransparentProxy : TProxyConnectionInfo; - aRequestTimeout : Integer; - aConnectTimeout : Integer; + aRequestTimeout : Integer; + aConnectTimeout : Integer; AuthorizationParams : TRESTDWClientAuthOptionParams); Begin HttpRequest.DefaultCustomHeader.Clear; @@ -4023,7 +4199,12 @@ procedure TRESTDWIdClientPooler.Abort; Result := Nil; End; -function TRESTDWIdClientPooler.IsServerLive(Aip: String; Aport: Integer; +Procedure TRESTDWIdClientPooler.SetSslOptions; +Begin + +End; + +Function TRESTDWIdClientPooler.IsServerLive(Aip: String; Aport: Integer; AMessageErro: String): Boolean; var Ping: TIdTCPClient; @@ -4073,7 +4254,7 @@ function TRESTDWIdClientPooler.IsServerLive(Aip: String; Aport: Integer; Inherited; {$ENDIF} {$ENDIF} - If (UseSSL) Then + If (aTyperequest = trHttps) Then Begin vRESTDWVersionsBase := GetSSlVersions; {$IFDEF USE_TAURUS_TLS} @@ -5088,12 +5269,10 @@ function TRESTDWIdClientPooler.IsServerLive(Aip: String; Aport: Integer; Constructor TRESTDWIdDatabase.Create(AOwner: TComponent); Begin Inherited; - vCipherList := ''; RESTClientPooler := TRESTDWIdClientPooler.Create(Self); ContentType := cContentTypeFormUrl; ContentEncoding := cDefaultContentEncoding; - TRESTDWIdClientPooler(RESTClientPooler).ClientIpVersion := ClientIpVersion; End; @@ -5136,36 +5315,238 @@ function TRESTDWIdDatabase.IsServerLive(Aip: String; Aport: Integer; AMessageErr end; end; +Procedure TRESTDWIdDatabase.ReconfigureConnection(Var aConnection : TRESTDWPoolerMethodClient; + Var aRESTClientPooler : TRESTClientPoolerBase; + aTypeRequest : Ttyperequest; + aWelcomeMessage, + aHost : String; + aPort : Integer; + aCompression, + aEncodeStrings : Boolean; + aEncoding : TEncodeSelect; + aAccessTag : String; + aAuthenticationOptions : TRESTDWClientAuthOptionParams); +Begin +// Connection.CriptOptions.Use := CriptOptions.Use; +// Connection.CriptOptions.Key := CriptOptions.Key; + aConnection.DataRoute := DataRoute; + aConnection.AuthenticationOptions.Assign(AuthenticationOptions); + If Assigned(aRESTClientPooler) Then + Begin + aRESTClientPooler.TypeRequest := aTypeRequest; + aRESTClientPooler.SSLMethod := SSLMethod; + aRESTClientPooler.SSLVersions := SSLVersions; + aRESTClientPooler.WelcomeMessage := aWelcomeMessage; + aRESTClientPooler.Host := PoolerService; + aRESTClientPooler.Port := PoolerPort; + aRESTClientPooler.DataCompression := aCompression; + aRESTClientPooler.AccessTag := aAccessTag; + End; + If Assigned(aConnection) Then + Begin + aConnection.TypeRequest := TypeRequest; + aConnection.SSLMethod := SSLMethod; + aConnection.SSLVersions := SSLVersions; + aConnection.WelcomeMessage := aWelcomeMessage; + aConnection.Host := PoolerService; + aConnection.Port := PoolerPort; + aConnection.Compression := aCompression; + aConnection.AccessTag := aAccessTag; + End; +End; + +Procedure TRESTDWIdDatabase.SetSSL; +Begin + Inherited; +End; + { TRESTDWIdPoolerList } constructor TRESTDWIdPoolerList.Create(AOwner: TComponent); begin - Inherited; - - RESTClientPooler := TRESTDWIdClientPooler.Create(Self); + Inherited; + RESTClientPooler := TRESTDWIdClientPooler.Create(Self); end; destructor TRESTDWIdPoolerList.Destroy; begin - - Inherited; + Inherited; end; { TRESTDWIdProxyRequest } -Function TRESTDWIdProxyRequest.GetSSlVersion : Integer; +Function TRESTDWIdProxyRequest.GetSSlVersion : Pointer; +Var + SSLVersion : TIdSSLVersion; + {$IFDEF USE_TAURUS_TLS} + MinSSLVersion : TTaurusTLSSSLVersion; + {$ENDIF} Begin - Result := 0; + Result := Nil; + {$IFDEF USE_TAURUS_TLS} + If vUseTaurus Then + Begin + If SSLv2 in aSSLVersions Then + MinSSLVersion := TTaurusTLSSSLVersion(SSLv2); + If SSLv23 in aSSLVersions Then + MinSSLVersion := TTaurusTLSSSLVersion(SSLv23); + If SSLv3 in aSSLVersions Then + MinSSLVersion := TTaurusTLSSSLVersion(SSLv3); + If TLSv1 in aSSLVersions Then + MinSSLVersion := TTaurusTLSSSLVersion(TLSv1); + If TLSv1_1 in aSSLVersions Then + MinSSLVersion := TTaurusTLSSSLVersion(TLSv1_1); + If TLSv1_2 in aSSLVersions Then + MinSSLVersion := TTaurusTLSSSLVersion(TLSv1_2); + If TLSv1_3 in aSSLVersions Then + MinSSLVersion := TTaurusTLSSSLVersion(TLSv1_3); + Result := @MinSSLVersion; + End + Else + Begin + If aSSLMethod = SSLv2 Then + SSLVersion := sslvSSLv2; + If aSSLMethod = SSLv23 Then + SSLVersion := sslvSSLv23; + If aSSLMethod = SSLv3 Then + SSLVersion := sslvSSLv3; + If aSSLMethod = TLSv1 Then + SSLVersion := sslvTLSv1; + If aSSLMethod = TLSv1_1 Then + SSLVersion := sslvTLSv1_1; + If aSSLMethod = TLSv1_2 Then + SSLVersion := sslvTLSv1_2; + If aSSLMethod = TLSv1_3 Then + Raise Exception.Create('Indy no have TLS 1.3 Support...'); + Result := @SSLVersion; + End; + {$ELSE} + If aSSLMethod = SSLv2 Then + SSLVersion := sslvSSLv2; + If aSSLMethod = SSLv23 Then + SSLVersion := sslvSSLv23; + If aSSLMethod = SSLv3 Then + SSLVersion := sslvSSLv3; + If aSSLMethod = TLSv1 Then + SSLVersion := sslvTLSv1; + If aSSLMethod = TLSv1_1 Then + SSLVersion := sslvTLSv1_1; + If aSSLMethod = TLSv1_2 Then + SSLVersion := sslvTLSv1_2; + If aSSLMethod = TLSv1_3 Then + Raise Exception.Create('Indy no have TLS 1.3 Support...'); + Result := @SSLVersion; + {$ENDIF} End; -Function TRESTDWIdProxyRequest.GetSSlVersions : TRESTDWVersionsBase; +Function TRESTDWIdProxyRequest.GetSSlVersions : Pointer; +Var + bSSLVersions : TIdSSLVersions; + {$IFDEF USE_TAURUS_TLS} + MinSSLVersion : TTaurusTLSSSLVersion; + {$ENDIF} Begin - Result := Nil; + bSSLVersions := []; + {$IFDEF USE_TAURUS_TLS} + If vUseTaurus Then + Begin + If SSLv2 in aSSLVersions Then + MinSSLVersion := TTaurusTLSSSLVersion(SSLv2); + If SSLv23 in aSSLVersions Then + MinSSLVersion := TTaurusTLSSSLVersion(SSLv23); + If SSLv3 in aSSLVersions Then + MinSSLVersion := TTaurusTLSSSLVersion(SSLv3); + If TLSv1 in aSSLVersions Then + MinSSLVersion := TTaurusTLSSSLVersion(TLSv1); + If TLSv1_1 in aSSLVersions Then + MinSSLVersion := TTaurusTLSSSLVersion(TLSv1_1); + If TLSv1_2 in aSSLVersions Then + MinSSLVersion := TTaurusTLSSSLVersion(TLSv1_2); + If TLSv1_3 in aSSLVersions Then + MinSSLVersion := TTaurusTLSSSLVersion(TLSv1_3); + Result := @MinSSLVersion; + End + Else + Begin + If SSLv2 in aSSLVersions Then + bSSLVersions := bSSLVersions + [sslvSSLv2]; + If SSLv23 in aSSLVersions Then + bSSLVersions := bSSLVersions + [sslvSSLv23]; + If SSLv3 in aSSLVersions Then + bSSLVersions := bSSLVersions + [sslvSSLv3]; + If TLSv1 in aSSLVersions Then + bSSLVersions := bSSLVersions + [sslvTLSv1]; + If TLSv1_1 in aSSLVersions Then + bSSLVersions := bSSLVersions + [sslvTLSv1_1]; + If TLSv1_2 in aSSLVersions Then + bSSLVersions := bSSLVersions + [sslvTLSv1_2]; + If TLSv1_3 in aSSLVersions Then + Raise Exception.Create('Indy no have TLS 1.3 Support...'); + Result := @SSLVersions; + End; + {$ELSE} + If SSLv2 in aSSLVersions Then + bSSLVersions := bSSLVersions + [sslvSSLv2]; + If SSLv23 in aSSLVersions Then + bSSLVersions := bSSLVersions + [sslvSSLv23]; + If SSLv3 in aSSLVersions Then + bSSLVersions := bSSLVersions + [sslvSSLv3]; + If TLSv1 in aSSLVersions Then + bSSLVersions := bSSLVersions + [sslvTLSv1]; + If TLSv1_1 in aSSLVersions Then + bSSLVersions := bSSLVersions + [sslvTLSv1_1]; + If TLSv1_2 in aSSLVersions Then + bSSLVersions := bSSLVersions + [sslvTLSv1_2]; + If TLSv1_3 in aSSLVersions Then + Raise Exception.Create('Indy no have TLS 1.3 Support...'); + Result := @bSSLVersions; + {$ENDIF} End; -Function TRESTDWIdProxyRequest.GetSSlMode : Integer; +Function TRESTDWIdProxyRequest.GetSSlMode : Pointer; +{$IFDEF USE_TAURUS_TLS} + Var + bSSLMode : TIdSSLMode; + aTaurSSLMode : TTaurusTLSSSLMode; +{$ENDIF} Begin - Result := 0; + Result := Nil; + {$IFDEF USE_TAURUS_TLS} + If vUseTaurus Then + Begin + If vSSLMode = sslUnassigned Then + aTaurSSLMode := TTaurusTLSSSLMode(sslmUnassigned) + Else If vSSLMode = sslClient Then + aTaurSSLMode := TTaurusTLSSSLMode(sslmClient) + Else If vSSLMode = sslServer Then + aTaurSSLMode := TTaurusTLSSSLMode(sslmServer) + Else If vSSLMode = sslBoth Then + aTaurSSLMode := TTaurusTLSSSLMode(sslmBoth); + Result := @aTaurSSLMode; + End + Else + Begin + If vSSLMode = sslUnassigned Then + bSSLMode := sslmUnassigned + Else If vSSLMode = sslClient Then + bSSLMode := sslmClient + Else If vSSLMode = sslServer Then + bSSLMode := sslmServer + Else If vSSLMode = sslBoth Then + bSSLMode := sslmBoth; + Result := @bSSLMode; + End; + {$ELSE} + If vSSLMode = sslUnassigned Then + SSLMode := sslUnassigned + Else If vSSLMode = sslClient Then + SSLMode := sslClient + Else If vSSLMode = sslServer Then + SSLMode := sslServer + Else If vSSLMode = sslBoth Then + SSLMode := sslBoth; + Result := @SSLMode; + {$ENDIF} End; Procedure TRESTDWIdProxyRequest.aCommandGet(AContext : TIdContext; @@ -5495,14 +5876,14 @@ procedure TRESTDWIdProxyRequest.OnParseAuthentication(AContext : TIdCont procedure TRESTDWIdProxyRequest.SetActive(Value : Boolean); Var - vRESTDWVersionsBase : TRESTDWVersionsBase; + vRESTDWVersionsBase : Pointer; Begin If (Value) And (Not (HTTPServer.Active)) Then Begin - if not(Assigned(ServerMethodClass)) and (Self.GetDataRouteCount = 0) then - raise Exception.Create(cServerMethodClassNotAssigned); - + If Not(Assigned(ServerMethodClass)) And + (Self.GetDataRouteCount = 0) Then + Raise Exception.Create(cServerMethodClassNotAssigned); Try If (ASSLPrivateKeyFile <> '') And // (ASSLPrivateKeyPassword <> '') And @@ -5512,12 +5893,24 @@ procedure TRESTDWIdProxyRequest.SetActive(Value : Boolean); {$IFDEF USE_TAURUS_TLS} If vUseTaurus Then Begin + If (Assigned(lHandler) And (lHandler is TIdServerIOHandlerSSLOpenSSL)) Then + FreeAndNil(lHandler); + If Not Assigned(lHandler) Then + lHandler := TTaurusTLSServerIOHandler.Create(Nil); + TTaurusTLSServerIOHandler(lHandler).SSLOptions.MinTLSVersion := TTaurusTLSSSLVersion(Pointer(GetSSlVersion)^);//vSSLMode; + TTaurusTLSServerIOHandler(lHandler).SSLOptions.Mode := TTaurusTLSSSLMode(Pointer(GetSSlMode)^);//vSSLMode; + TTaurusTLSServerIOHandler(lHandler).DefaultCert.PublicKey := ASSLCertFile; + TTaurusTLSServerIOHandler(lHandler).DefaultCert.PrivateKey := ASSLPrivateKeyFile; + TTaurusTLSServerIOHandler(lHandler).SSLOptions.VerifyDepth := vSSLVerifyDepth; + TTaurusTLSServerIOHandler(lHandler).DefaultCert.RootKey := vASSLRootCertFile; + TTaurusTLSServerIOHandler(lHandler).SSLOptions.CipherList := vCipherList; + TTaurusTLSServerIOHandler(lHandler).SSLOptions.VerifyHostname := False; + HTTPServer.IOHandler := TTaurusTLSServerIOHandler(lHandler); End Else Begin - //TODO SSL - TIdServerIOHandlerSSLOpenSSL(lHandler).SSLOptions.Method := TIdSSLVersion(GetSSlVersion);//aSSLMethod; - TIdServerIOHandlerSSLOpenSSL(lHandler).SSLOptions.SSLVersions := TIdSSLVersions(Pointer(@vRESTDWVersionsBase)^); + TIdServerIOHandlerSSLOpenSSL(lHandler).SSLOptions.Method := TIdSSLVersion(Pointer(GetSSlVersion)^);//aSSLMethod; + TIdServerIOHandlerSSLOpenSSL(lHandler).SSLOptions.SSLVersions := TIdSSLVersions(Pointer(GetSSlVersions)^); // PRESTDWSSLVersions(@SSLVersions)^; {$IFDEF FPC} TIdServerIOHandlerSSLOpenSSL(lHandler).OnGetPassword := @GetSSLPassword; @@ -5531,13 +5924,13 @@ procedure TRESTDWIdProxyRequest.SetActive(Value : Boolean); TIdServerIOHandlerSSLOpenSSL(lHandler).SSLOptions.VerifyMode := vSSLVerifyMode; TIdServerIOHandlerSSLOpenSSL(lHandler).SSLOptions.VerifyDepth := vSSLVerifyDepth; TIdServerIOHandlerSSLOpenSSL(lHandler).SSLOptions.RootCertFile := vASSLRootCertFile; - TIdServerIOHandlerSSLOpenSSL(lHandler).SSLOptions.Mode := TIdSSLMode(GetSSlMode);//vSSLMode; + TIdServerIOHandlerSSLOpenSSL(lHandler).SSLOptions.Mode := TIdSSLMode(Pointer(GetSSlMode)^);//vSSLMode; TIdServerIOHandlerSSLOpenSSL(lHandler).SSLOptions.CipherList := vCipherList; HTTPServer.IOHandler := TIdServerIOHandlerSSLOpenSSL(lHandler); End; {$ELSE} - TIdServerIOHandlerSSLOpenSSL(lHandler).SSLOptions.Method := TIdSSLVersion(GetSSlVersion);//aSSLMethod; - TIdServerIOHandlerSSLOpenSSL(lHandler).SSLOptions.SSLVersions := TIdSSLVersions(Pointer(@vRESTDWVersionsBase)^); + TIdServerIOHandlerSSLOpenSSL(lHandler).SSLOptions.Method := TIdSSLVersion(Pointer(GetSSlVersion)^); + TIdServerIOHandlerSSLOpenSSL(lHandler).SSLOptions.SSLVersions := TIdSSLVersions(Pointer(GetSSlVersions)^); // PRESTDWSSLVersions(@SSLVersions)^; {$IFDEF FPC} TIdServerIOHandlerSSLOpenSSL(lHandler).OnGetPassword := @GetSSLPassword; @@ -5551,7 +5944,7 @@ procedure TRESTDWIdProxyRequest.SetActive(Value : Boolean); TIdServerIOHandlerSSLOpenSSL(lHandler).SSLOptions.VerifyMode := vSSLVerifyMode; TIdServerIOHandlerSSLOpenSSL(lHandler).SSLOptions.VerifyDepth := vSSLVerifyDepth; TIdServerIOHandlerSSLOpenSSL(lHandler).SSLOptions.RootCertFile := vASSLRootCertFile; - TIdServerIOHandlerSSLOpenSSL(lHandler).SSLOptions.Mode := TIdSSLMode(GetSSlMode);//vSSLMode; + TIdServerIOHandlerSSLOpenSSL(lHandler).SSLOptions.Mode := TIdSSLMode(Pointer(GetSSlMode)^); TIdServerIOHandlerSSLOpenSSL(lHandler).SSLOptions.CipherList := vCipherList; HTTPServer.IOHandler := TIdServerIOHandlerSSLOpenSSL(lHandler); {$ENDIF}