Add SSL, MDC database, and custom HANA connection parameters
Fixes 'error while parsing protocol' HanaException by supporting SSL/TLS encryption, Multi-Tenant Database Container (MDC) database name, and arbitrary additional connection parameters. - HanaServer model: added DatabaseName, UseSsl, ValidateCertificate, AdditionalParams fields + BuildConnectionString() helper - HanaQueryService: accepts HanaServer directly, uses BuildConnectionString() for full parameter support - AppDbContext: added EnsureSchema() method that uses PRAGMA table_info + ALTER TABLE ADD COLUMN to add the new fields to existing SQLite databases without losing data (EnsureCreated does not update schema) - Program.cs: calls EnsureSchema on startup before seeding - Standorte.razor: server dialog now exposes DatabaseName, UseSsl, ValidateCertificate, AdditionalParams with helper texts; test connection uses new signature https://claude.ai/code/session_012heAXNMbbyxqYf2S2HrKLj
This commit is contained in:
@@ -17,4 +17,49 @@ public class HanaServer
|
||||
public string Username { get; set; } = string.Empty;
|
||||
|
||||
public string Password { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// Name der Tenant-Datenbank bei Multi-Tenant Database Container (MDC) Setups.
|
||||
/// Leer lassen, wenn direkt auf einen Tenant-Port verbunden wird.
|
||||
/// </summary>
|
||||
public string DatabaseName { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// SSL/TLS Verschlüsselung aktivieren (encrypt=true).
|
||||
/// </summary>
|
||||
public bool UseSsl { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// SSL-Zertifikat validieren. Bei self-signed Zertifikaten auf false setzen.
|
||||
/// </summary>
|
||||
public bool ValidateCertificate { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Zusätzliche Verbindungsparameter (Semikolon-getrennt), z.B. "sslCryptoProvider=openssl".
|
||||
/// </summary>
|
||||
public string AdditionalParams { get; set; } = string.Empty;
|
||||
|
||||
public string BuildConnectionString()
|
||||
{
|
||||
var parts = new List<string>
|
||||
{
|
||||
$"ServerNode={Host}:{Port}",
|
||||
$"UserName={Username}",
|
||||
$"Password={Password}"
|
||||
};
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(DatabaseName))
|
||||
parts.Add($"DatabaseName={DatabaseName}");
|
||||
|
||||
if (UseSsl)
|
||||
{
|
||||
parts.Add("encrypt=true");
|
||||
parts.Add($"sslValidateCertificate={(ValidateCertificate ? "true" : "false")}");
|
||||
}
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(AdditionalParams))
|
||||
parts.Add(AdditionalParams.Trim().Trim(';'));
|
||||
|
||||
return string.Join(";", parts);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user