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>
76 lines
2.2 KiB
C#
76 lines
2.2 KiB
C#
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;
|
|
}
|
|
}
|