diff --git a/source/connections.pas b/source/connections.pas index 195044c4..4c6fbb5c 100644 --- a/source/connections.pas +++ b/source/connections.pas @@ -182,7 +182,7 @@ begin MainReg.OpenKey(RegPath + REGKEY_SESSIONS, True); MainReg.GetKeyNames(SessionNames); for i:=0 to SessionNames.Count-1 do begin - Sess := LoadConnectionParams(SessionNames[i]); + Sess := TConnectionParameters.ReadFromRegistry(SessionNames[i]); FSessions.Add(Sess); end; ListSessions.RootNodeCount := FSessions.Count; @@ -352,7 +352,7 @@ begin // Create the key and save its values OpenRegistry(newName); SaveCurrentValues(newName, True); - NewSess := LoadConnectionParams(newName); + NewSess := TConnectionParameters.ReadFromRegistry(newName); FSessions.Add(NewSess); Node := ListSessions.AddChild(nil, @NewSess); SelectNode(ListSessions, Node); diff --git a/source/dbconnection.pas b/source/dbconnection.pas index 25959e41..881d094a 100644 --- a/source/dbconnection.pas +++ b/source/dbconnection.pas @@ -166,6 +166,7 @@ type function GetNetTypeGroup: TNetTypeGroup; function IsMariaDB: Boolean; function IsPercona: Boolean; + class function ReadFromRegistry(Session: String): TConnectionParameters; property ImageIndex: Integer read GetImageIndex; published property NetType: TNetType read FNetType write FNetType; @@ -707,6 +708,41 @@ begin end; +class function TConnectionParameters.ReadFromRegistry(Session: String): TConnectionParameters; +begin + if not Mainreg.KeyExists(REGPATH + REGKEY_SESSIONS + Session) then + raise Exception.Create('Error: Session "'+Session+'" not found in registry.') + else begin + Result := TConnectionParameters.Create; + Result.SessionName := Session; + Result.NetType := TNetType(GetRegValue(REGNAME_NETTYPE, Integer(ntMySQL_TCPIP), Session)); + Result.Hostname := GetRegValue(REGNAME_HOST, '', Session); + Result.Username := GetRegValue(REGNAME_USER, '', Session); + Result.Password := decrypt(GetRegValue(REGNAME_PASSWORD, '', Session)); + Result.LoginPrompt := GetRegValue(REGNAME_LOGINPROMPT, False, Session); + Result.WindowsAuth := GetRegValue(REGNAME_WINDOWSAUTH, False, Session); + Result.Port := StrToIntDef(GetRegValue(REGNAME_PORT, '', Session), DEFAULT_PORT); + Result.AllDatabasesStr := GetRegValue(REGNAME_DATABASES, '', Session); + Result.SSHHost := GetRegValue(REGNAME_SSHHOST, '', Session); + Result.SSHPort := GetRegValue(REGNAME_SSHPORT, DEFAULT_SSHPORT, Session); + Result.SSHUser := GetRegValue(REGNAME_SSHUSER, '', Session); + Result.SSHPassword := decrypt(GetRegValue(REGNAME_SSHPASSWORD, '', Session)); + Result.SSHTimeout := GetRegValue(REGNAME_SSHTIMEOUT, DEFAULT_SSHTIMEOUT, Session); + Result.SSHPrivateKey := GetRegValue(REGNAME_SSHKEY, '', Session); + Result.SSHLocalPort := GetRegValue(REGNAME_SSHLOCALPORT, 0, Session); + Result.SSHPlinkExe := GetRegValue(REGNAME_PLINKEXE, ''); + Result.SSLPrivateKey := GetRegValue(REGNAME_SSL_KEY, '', Session); + // Auto-activate SSL for sessions created before UseSSL was introduced: + Result.WantSSL := GetRegValue(REGNAME_SSL_ACTIVE, Result.SSLPrivateKey<>'', Session); + Result.SSLCertificate := GetRegValue(REGNAME_SSL_CERT, '', Session); + Result.SSLCACertificate := GetRegValue(REGNAME_SSL_CA, '', Session); + Result.StartupScriptFilename := GetRegValue(REGNAME_STARTUPSCRIPT, '', Session); + Result.Compressed := GetRegValue(REGNAME_COMPRESSED, DEFAULT_COMPRESSED, Session); + Result.ServerVersion := GetRegValue(REGNAME_SERVERVERSION_FULL, '', Session); + end; +end; + + { TMySQLConnection } diff --git a/source/helpers.pas b/source/helpers.pas index 18ae0e6f..aa3c33c3 100644 --- a/source/helpers.pas +++ b/source/helpers.pas @@ -191,7 +191,6 @@ type function GeneratePassword(Len: Integer): String; procedure InvalidateVT(VT: TVirtualStringTree; RefreshTag: Integer; ImmediateRepaint: Boolean); procedure HandlePortableSettings(StartupMode: Boolean); - function LoadConnectionParams(Session: String): TConnectionParameters; function CharAtPos(Str: String; Pos: Integer): Char; function CompareAnyNode(Text1, Text2: String): Integer; function StringListCompareAnythingAsc(List: TStringList; Index1, Index2: Integer): Integer; @@ -2335,41 +2334,6 @@ begin end; -function LoadConnectionParams(Session: String): TConnectionParameters; -begin - if not Mainreg.KeyExists(REGPATH + REGKEY_SESSIONS + Session) then - raise Exception.Create('Error: Session "'+Session+'" not found in registry.') - else begin - Result := TConnectionParameters.Create; - Result.SessionName := Session; - Result.NetType := TNetType(GetRegValue(REGNAME_NETTYPE, Integer(ntMySQL_TCPIP), Session)); - Result.Hostname := GetRegValue(REGNAME_HOST, '', Session); - Result.Username := GetRegValue(REGNAME_USER, '', Session); - Result.Password := decrypt(GetRegValue(REGNAME_PASSWORD, '', Session)); - Result.LoginPrompt := GetRegValue(REGNAME_LOGINPROMPT, False, Session); - Result.WindowsAuth := GetRegValue(REGNAME_WINDOWSAUTH, False, Session); - Result.Port := StrToIntDef(GetRegValue(REGNAME_PORT, '', Session), DEFAULT_PORT); - Result.AllDatabasesStr := GetRegValue(REGNAME_DATABASES, '', Session); - Result.SSHHost := GetRegValue(REGNAME_SSHHOST, '', Session); - Result.SSHPort := GetRegValue(REGNAME_SSHPORT, DEFAULT_SSHPORT, Session); - Result.SSHUser := GetRegValue(REGNAME_SSHUSER, '', Session); - Result.SSHPassword := decrypt(GetRegValue(REGNAME_SSHPASSWORD, '', Session)); - Result.SSHTimeout := GetRegValue(REGNAME_SSHTIMEOUT, DEFAULT_SSHTIMEOUT, Session); - Result.SSHPrivateKey := GetRegValue(REGNAME_SSHKEY, '', Session); - Result.SSHLocalPort := GetRegValue(REGNAME_SSHLOCALPORT, 0, Session); - Result.SSHPlinkExe := GetRegValue(REGNAME_PLINKEXE, ''); - Result.SSLPrivateKey := GetRegValue(REGNAME_SSL_KEY, '', Session); - // Auto-activate SSL for sessions created before UseSSL was introduced: - Result.WantSSL := GetRegValue(REGNAME_SSL_ACTIVE, Result.SSLPrivateKey<>'', Session); - Result.SSLCertificate := GetRegValue(REGNAME_SSL_CERT, '', Session); - Result.SSLCACertificate := GetRegValue(REGNAME_SSL_CA, '', Session); - Result.StartupScriptFilename := GetRegValue(REGNAME_STARTUPSCRIPT, '', Session); - Result.Compressed := GetRegValue(REGNAME_COMPRESSED, DEFAULT_COMPRESSED, Session); - Result.ServerVersion := GetRegValue(REGNAME_SERVERVERSION_FULL, '', Session); - end; -end; - - function CharAtPos(Str: String; Pos: Integer): Char; begin // Access char in string without causing access violation diff --git a/source/main.pas b/source/main.pas index 1909810f..8ecd2e3e 100644 --- a/source/main.pas +++ b/source/main.pas @@ -1744,7 +1744,7 @@ begin LastActiveSession := LastSessions[0]; for i:=0 to LastSessions.Count-1 do begin try - LoadedParams := LoadConnectionParams(LastSessions[i]); + LoadedParams := TConnectionParameters.ReadFromRegistry(LastSessions[i]); if InitConnection(LoadedParams, LastActiveSession=LastSessions[i], Connection) then Connected := True; except on E:Exception do @@ -1813,7 +1813,7 @@ begin SessName := GetParamValue('d', 'description'); if SessName <> '' then begin try - FCmdlineConnectionParams := LoadConnectionParams(SessName); + FCmdlineConnectionParams := TConnectionParameters.ReadFromRegistry(SessName); except on E:Exception do begin // Session params not found in registry @@ -3075,7 +3075,7 @@ begin if Assigned(Node) then SelectNode(DBtree, Node) else begin - Params := LoadConnectionParams(Session); + Params := TConnectionParameters.ReadFromRegistry(Session); InitConnection(Params, True, Connection); end; end; diff --git a/source/syncdb.pas b/source/syncdb.pas index 30bdebe8..63c1e466 100644 --- a/source/syncdb.pas +++ b/source/syncdb.pas @@ -359,7 +359,7 @@ var Parameters: TConnectionParameters; begin // Create target connection - Parameters := LoadConnectionParams(comboTargetServer.Text); + Parameters := TConnectionParameters.ReadFromRegistry(comboTargetServer.Text); Result := Parameters.CreateConnection(Self); Result.OnLog := MainForm.LogSQL; Result.LogPrefix := comboTargetServer.Text; diff --git a/source/tabletools.pas b/source/tabletools.pas index b4691781..3786c4c4 100644 --- a/source/tabletools.pas +++ b/source/tabletools.pas @@ -940,7 +940,7 @@ begin btnExportOutputTargetSelect.ImageIndex := 27; SessionName := Copy(comboExportOutputType.Text, Length(OUTPUT_SERVER)+1, Length(comboExportOutputType.Text)); FreeAndNil(FTargetConnection); - Params := LoadConnectionParams(SessionName); + Params := TConnectionParameters.ReadFromRegistry(SessionName); FTargetConnection := Params.CreateConnection(Self); FTargetConnection.LogPrefix := SessionName; FTargetConnection.OnLog := Mainform.LogSQL;