Add live TLS certificate probing and improve restart error handling.
Configure CertificateCheckUrl per container for curl-like TLS checks, classify Sonic permission errors, and extend setup wizard for container management. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
namespace ZA.CoreService.ESBCertificateManager.Services;
|
||||
|
||||
/// <summary>
|
||||
/// Erkennt typische Sonic-/MfApi-Fehlermeldungen und liefert
|
||||
/// verständliche Hinweise für die UI.
|
||||
/// </summary>
|
||||
public static class SonicErrorClassifier
|
||||
{
|
||||
private static readonly string[] PermissionMarkers =
|
||||
[
|
||||
"ManagePermissionDenied",
|
||||
"ConfigurePermissionDenied",
|
||||
"ManagementPermissionDenied",
|
||||
"PermissionDenied",
|
||||
"MFSecurityException",
|
||||
"SecurityException",
|
||||
"Access is denied",
|
||||
"Access denied",
|
||||
"not authorized",
|
||||
"nicht autorisiert",
|
||||
"permission denied",
|
||||
"keine Berechtigung",
|
||||
"Insufficient privileges",
|
||||
"Unauthorized"
|
||||
];
|
||||
|
||||
public static bool LooksLikeMissingPermission(string? text)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(text))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
foreach (string marker in PermissionMarkers)
|
||||
{
|
||||
if (text.Contains(marker, StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public static string PermissionDeniedUserMessage =>
|
||||
"Keine Rechte für den Neustart.\n\n"
|
||||
+ "Der hinterlegte Sonic-Benutzer darf diesen Container "
|
||||
+ "nicht neu starten (Manage-/Restart-Recht fehlt).\n\n"
|
||||
+ "Bitte in der Sonic Management Console die Rechte prüfen "
|
||||
+ "oder ein Profil mit ausreichenden Rechten verwenden.";
|
||||
|
||||
public static string FormatRestartFailure(
|
||||
string? status,
|
||||
string? detail)
|
||||
{
|
||||
string combined = string.Join(
|
||||
Environment.NewLine,
|
||||
new[] { status, detail }
|
||||
.Where(value => !string.IsNullOrWhiteSpace(value)));
|
||||
|
||||
if (LooksLikeMissingPermission(combined))
|
||||
{
|
||||
return PermissionDeniedUserMessage
|
||||
+ Environment.NewLine
|
||||
+ Environment.NewLine
|
||||
+ "--- Technische Details ---"
|
||||
+ Environment.NewLine
|
||||
+ combined;
|
||||
}
|
||||
|
||||
return string.IsNullOrWhiteSpace(combined)
|
||||
? "Neustart fehlgeschlagen (keine Details)."
|
||||
: combined;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user