Add NTFS automatic ensure timeout diagnostics

This commit is contained in:
Meik
2026-07-16 12:42:37 +02:00
parent e7fb041ff5
commit 0b1dbd7925
3 changed files with 201 additions and 12 deletions

View File

@@ -352,43 +352,90 @@ namespace C4IT_IAM_SET
public ResultToken ensureDataAreaPermissions(bool ensureTraverseGroups = false)
{
LogMethodBegin(MethodBase.GetCurrentMethod());
var stopwatch = Stopwatch.StartNew();
try
{
DefaultLogger.LogEntry(
LogLevels.Debug,
$"NTFS engine ensure permissions start. Stage=Start Path='{newFolderPath}', BaseFolder='{baseFolder}', EnsureTraverseGroups={ensureTraverseGroups}, WhatIf={WhatIf}");
var resultToken = checkRequiredVariablesForEnsure();
if (resultToken.resultErrorId != 0)
return resultToken;
DefaultLogger.LogEntry(
LogLevels.Debug,
$"NTFS engine ensure permissions stage. Stage=NetworkConnection Path='{newFolderPath}', BaseFolder='{baseFolder}'");
if (Connection != null)
Connection.Dispose();
using (Connection = new cNetworkConnection(baseFolder, username, new NetworkCredential("", password).Password))
{
DefaultLogger.LogEntry(
LogLevels.Debug,
$"NTFS engine ensure permissions stage finished. Stage=NetworkConnection Path='{newFolderPath}', Elapsed='{stopwatch.Elapsed}'");
DefaultLogger.LogEntry(
LogLevels.Debug,
$"NTFS engine ensure permissions stage. Stage=DirectoryExists Path='{newFolderPath}'");
if (!Directory.Exists(newFolderPath))
{
resultToken.resultErrorId = 30203;
resultToken.resultMessage = "Verzeichnis existiert nicht";
return resultToken;
}
DefaultLogger.LogEntry(
LogLevels.Debug,
$"NTFS engine ensure permissions stage finished. Stage=DirectoryExists Path='{newFolderPath}', Elapsed='{stopwatch.Elapsed}'");
DefaultLogger.LogEntry(
LogLevels.Debug,
$"NTFS engine ensure permissions stage. Stage=InitializeFolderContext Path='{newFolderPath}'");
var parentDirectory = Directory.GetParent(newFolderPath);
if (string.IsNullOrWhiteSpace(newFolderParent))
newFolderParent = parentDirectory?.FullName;
InitializeFolderContext();
DefaultLogger.LogEntry(
LogLevels.Debug,
$"NTFS engine ensure permissions stage finished. Stage=InitializeFolderContext Path='{newFolderPath}', ParentPath='{newFolderParent}', Elapsed='{stopwatch.Elapsed}'");
DefaultLogger.LogEntry(
LogLevels.Debug,
$"NTFS engine ensure permissions stage. Stage=ValidateTraverseBoundary Path='{newFolderPath}'");
var traverseBoundaryResult = ValidateTraverseBoundaryForCurrentFolder();
if (traverseBoundaryResult.resultErrorId != 0)
return traverseBoundaryResult;
DefaultLogger.LogEntry(
LogLevels.Debug,
$"NTFS engine ensure permissions stage finished. Stage=ValidateTraverseBoundary Path='{newFolderPath}', Elapsed='{stopwatch.Elapsed}'");
DefaultLogger.LogEntry(
LogLevels.Debug,
$"NTFS engine ensure permissions stage. Stage=EnsureADGroups Path='{newFolderPath}'");
ensureADGroups(resultToken);
DefaultLogger.LogEntry(
LogLevels.Debug,
$"NTFS engine ensure permissions stage finished. Stage=EnsureADGroups Path='{newFolderPath}', CreatedGroups={resultToken.createdGroups.Count}, ReusedGroups={resultToken.reusedGroups.Count}, Warnings={resultToken.warnings.Count}, Elapsed='{stopwatch.Elapsed}'");
DefaultLogger.LogEntry(
LogLevels.Debug,
$"NTFS engine ensure permissions stage. Stage=EnsureFolderPermissions Path='{newFolderPath}'");
resultToken = ensureFolderPermissions(resultToken);
DefaultLogger.LogEntry(
LogLevels.Debug,
$"NTFS engine ensure permissions stage finished. Stage=EnsureFolderPermissions Path='{newFolderPath}', ResultErrorId={resultToken.resultErrorId}, AddedAcls={resultToken.addedAclEntries.Count}, SkippedAcls={resultToken.skippedAclEntries.Count}, Elapsed='{stopwatch.Elapsed}'");
if (resultToken.resultErrorId != 0)
return resultToken;
if (ensureTraverseGroups)
{
DefaultLogger.LogEntry(
LogLevels.Debug,
$"NTFS engine ensure permissions stage. Stage=SetTraversePermissions Path='{newFolderPath}'");
var traverseResult = SetTraversePermissions();
if (traverseResult != null)
{
@@ -405,11 +452,17 @@ namespace C4IT_IAM_SET
return resultToken;
}
}
DefaultLogger.LogEntry(
LogLevels.Debug,
$"NTFS engine ensure permissions stage finished. Stage=SetTraversePermissions Path='{newFolderPath}', TraverseGroups={resultToken.ensuredTraverseGroups.Count}, AddedAcls={resultToken.addedAclEntries.Count}, Elapsed='{stopwatch.Elapsed}'");
}
resultToken.resultMessage = WhatIf
? "Gruppen- und ACL-Vorschau erfolgreich erstellt"
: "Gruppen und ACLs erfolgreich sichergestellt";
DefaultLogger.LogEntry(
LogLevels.Debug,
$"NTFS engine ensure permissions finished. Stage=Finished Path='{newFolderPath}', ResultErrorId={resultToken.resultErrorId}, ResultMessage='{resultToken.resultMessage}', Elapsed='{stopwatch.Elapsed}'");
return resultToken;
}
}