Skip to content

Commit 19c2958

Browse files
authored
Merge pull request #4382 from Ginger-Automation/MSSQL-Alert-Fix
MSSQL Fix Test
2 parents 7ba3098 + 04e16b1 commit 19c2958

1 file changed

Lines changed: 52 additions & 44 deletions

File tree

Ginger/GingerCoreNET/Database/DatabaseOperations.cs

Lines changed: 52 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ public string CreateConnectionString()
196196
}
197197

198198
case eDBTypes.DB2:
199-
199+
200200
Database.ConnectionString = $"Server={TNSCalculated};Database={Database.Name};UID={{USER}};PWD={{PASS}}";
201201
//Database.ConnectionString = $"Server={TNSCalculated};Database={Database.Name};UID={{USER}};PWD={{PASS}}";
202202
break;
@@ -272,16 +272,17 @@ public string CreateConnectionString()
272272
//}
273273

274274
case eDBTypes.MSSQL:
275+
var builder = new SqlConnectionStringBuilder
275276
{
276-
var builder = new SqlConnectionStringBuilder();
277-
builder.DataSource = TNSCalculated;
278-
if (!string.IsNullOrEmpty(Database.Name)) builder.InitialCatalog = Database.Name;
279-
builder.IntegratedSecurity = false;
280-
builder.UserID = "{USER}";
281-
builder.Password = "{PASS}";
282-
Database.ConnectionString = builder.ConnectionString;
283-
break;
284-
}
277+
DataSource = TNSCalculated
278+
};
279+
280+
if (!string.IsNullOrEmpty(Database.Name)) builder.InitialCatalog = Database.Name;
281+
builder.IntegratedSecurity = false;
282+
builder.UserID = UserCalculated;
283+
builder.Password = EncryptionHandler.DecryptwithKey(PassCalculated);
284+
Database.ConnectionString = builder.ConnectionString;
285+
break;
285286

286287
default:
287288
throw new NotImplementedException("Unhandled database type: " + Database.DBType);
@@ -344,22 +345,13 @@ public Boolean Connect(bool displayErrorPopup = false)
344345
switch (Database.DBType)
345346
{
346347
case eDBTypes.MSSQL:
347-
var builder = new SqlConnectionStringBuilder();
348-
builder.DataSource = TNSCalculated;
349-
if (!string.IsNullOrEmpty(Database.Name)) builder.InitialCatalog = Database.Name;
350-
builder.IntegratedSecurity = false;
351-
builder.UserID = "{USER}";
352-
builder.Password = "{PASS}";
353-
Database.ConnectionString = builder.ConnectionString;
354-
var sqlConnectionStringBuilder = new SqlConnectionStringBuilder
355-
{
356-
ConnectionString = GetConnectionString()
357-
};
348+
// If a full connection string is provided use it (after resolving placeholders and decrypting password),
349+
// otherwise build from TNS/User/Pass as before.
350+
string connectionString = string.Empty;
351+
var mailBuilder = GetMSSQLConnectionStringBuilder();
352+
353+
oConn = new SqlConnection(mailBuilder.ConnectionString);
358354

359-
oConn = new SqlConnection
360-
{
361-
ConnectionString = sqlConnectionStringBuilder.ConnectionString
362-
};
363355
oConn.Open();
364356
break;
365357

@@ -437,18 +429,13 @@ public Boolean Connect(bool displayErrorPopup = false)
437429
{
438430
Host = postgreSQLHost,
439431
Database = Database.Name ?? string.Empty,
440-
Username = "{USER}",
441-
Password = "{PASS}"
432+
Username = UserCalculated,
433+
Password = EncryptionHandler.DecryptwithKey(PassCalculated)
442434
};
443435
if (port.HasValue) pg.Port = port.Value;
444436
Database.ConnectionString = pg.ConnectionString;
445437

446-
var npgsqlconnectionStringBuilder = new Npgsql.NpgsqlConnectionStringBuilder
447-
{
448-
ConnectionString = GetConnectionString()
449-
};
450-
451-
oConn = new NpgsqlConnection(npgsqlconnectionStringBuilder.ConnectionString);
438+
oConn = new NpgsqlConnection(pg.ConnectionString);
452439
oConn.Open();
453440
break;
454441

@@ -465,7 +452,7 @@ public Boolean Connect(bool displayErrorPopup = false)
465452
{
466453
return false;
467454
}
468-
455+
469456
case eDBTypes.Couchbase:
470457
GingerCouchbase CouchbaseDriver = new GingerCouchbase(Database);
471458
bool isConnectionCB;
@@ -496,20 +483,15 @@ public Boolean Connect(bool displayErrorPopup = false)
496483
{
497484
Server = mySQLHost,
498485
Database = Database.Name ?? string.Empty,
499-
UserID = "{USER}",
500-
Password = "{PASS}"
486+
UserID = UserCalculated,
487+
Password = EncryptionHandler.DecryptwithKey(PassCalculated)
501488
};
502489
if (port1.HasValue) my.Port = port1.Value;
503490
Database.ConnectionString = my.ConnectionString;
504491

505-
var mySqlconnectionStringBuilder = new MySqlConnectionStringBuilder
506-
{
507-
ConnectionString = GetConnectionString()
508-
};
509-
510492
oConn = new MySqlConnection
511493
{
512-
ConnectionString = mySqlconnectionStringBuilder.ConnectionString
494+
ConnectionString = my.ConnectionString
513495
};
514496
oConn.Open();
515497
break;
@@ -526,8 +508,8 @@ public Boolean Connect(bool displayErrorPopup = false)
526508
{
527509
return false;
528510
}
529-
530-
case eDBTypes.CosmosDb:
511+
512+
case eDBTypes.CosmosDb:
531513
Database.ConnectionString = GetConnectionString();
532514
GingerCosmos objGingerCosmos = new GingerCosmos
533515
{
@@ -584,6 +566,32 @@ public Boolean Connect(bool displayErrorPopup = false)
584566

585567
return false;
586568
}
569+
570+
private SqlConnectionStringBuilder GetMSSQLConnectionStringBuilder()
571+
{
572+
//if (string.IsNullOrEmpty(Database.ConnectionString))
573+
{
574+
var builder = new SqlConnectionStringBuilder();
575+
builder.DataSource = TNSCalculated;
576+
if (!string.IsNullOrEmpty(Database.Name)) builder.InitialCatalog = Database.Name;
577+
builder.IntegratedSecurity = false;
578+
builder.UserID = UserCalculated;
579+
builder.Password = EncryptionHandler.DecryptwithKey(PassCalculated);
580+
return builder;
581+
}
582+
//else
583+
//{
584+
// // GetConnectionString will replace {USER} and {PASS} placeholders and decrypt the password
585+
// string connStr = ConnectionStringCalculated;
586+
// connStr = connStr.Replace("{USER}", UserCalculated);
587+
// connStr = ReplacePasswordInConnectionString(connStr);
588+
589+
// // Parse and normalise the connection string using SqlConnectionStringBuilder
590+
// var parsedBuilder = new SqlConnectionStringBuilder(connStr);
591+
// return parsedBuilder;
592+
//}
593+
}
594+
587595
public static string HidePasswordFromString(string dataString)
588596
{
589597
string passwordValue = dataString.Replace(" ", "");//remove spaces

0 commit comments

Comments
 (0)