From f3af7b74f0aa1f406ca949411e8782c9f4cf319c Mon Sep 17 00:00:00 2001 From: Meik Date: Sun, 29 Mar 2026 23:46:20 +0200 Subject: [PATCH] Separate AD group description shortening --- LiamNtfs/C4IT_IAM_SET/DataArea_FileSystem.cs | 15 ++++++++++- LiamNtfs/C4IT_IAM_SET/Helper.cs | 8 +++--- LiamNtfs/C4IT_IAM_SET/SecurityGroup.cs | 26 +++++++++++++++----- 3 files changed, 39 insertions(+), 10 deletions(-) diff --git a/LiamNtfs/C4IT_IAM_SET/DataArea_FileSystem.cs b/LiamNtfs/C4IT_IAM_SET/DataArea_FileSystem.cs index 1667795..4d753a1 100644 --- a/LiamNtfs/C4IT_IAM_SET/DataArea_FileSystem.cs +++ b/LiamNtfs/C4IT_IAM_SET/DataArea_FileSystem.cs @@ -539,11 +539,24 @@ namespace C4IT_IAM_SET null, Helper.MaxAdGroupNameLength, $"Traverse fuer '{parent.FullName}'"); + var boundedTraverseDescriptionContext = Helper.GetBoundedAdGroupTemplateContext( + traverseGroupTemplate.DescriptionTemplate, + true, + relativePath, + sanitizedSegments, + folderName, + null, + Helper.MaxAdGroupDescriptionLength, + $"Traverse fuer '{parent.FullName}'", + "AD-Gruppenbeschreibung"); var adjustedTraverseSegments = boundedTraverseContext.SanitizedSegments ?? Array.Empty(); var adjustedTraverseRelativePath = adjustedTraverseSegments.Length > 0 ? string.Join("_", adjustedTraverseSegments) : string.Empty; var adjustedTraverseFolderName = boundedTraverseContext.FolderName; + var adjustedTraverseDescriptionSegments = boundedTraverseDescriptionContext.SanitizedSegments ?? Array.Empty(); + var adjustedTraverseDescriptionRelativePath = adjustedTraverseDescriptionSegments.Length > 0 ? string.Join("_", adjustedTraverseDescriptionSegments) : string.Empty; + var adjustedTraverseDescriptionFolderName = boundedTraverseDescriptionContext.FolderName; var traverseNameTemplate = Helper.ApplyTemplatePlaceholders(traverseGroupTemplate.NamingTemplate, true, adjustedTraverseRelativePath, adjustedTraverseSegments, adjustedTraverseFolderName); - var traverseDescriptionTemplate = Helper.ApplyTemplatePlaceholders(traverseGroupTemplate.DescriptionTemplate, true, adjustedTraverseRelativePath, adjustedTraverseSegments, adjustedTraverseFolderName); + var traverseDescriptionTemplate = Helper.ApplyTemplatePlaceholders(traverseGroupTemplate.DescriptionTemplate, true, adjustedTraverseDescriptionRelativePath, adjustedTraverseDescriptionSegments, adjustedTraverseDescriptionFolderName); string traverseRegex = null; try diff --git a/LiamNtfs/C4IT_IAM_SET/Helper.cs b/LiamNtfs/C4IT_IAM_SET/Helper.cs index fc35c6c..8cc44f9 100644 --- a/LiamNtfs/C4IT_IAM_SET/Helper.cs +++ b/LiamNtfs/C4IT_IAM_SET/Helper.cs @@ -12,6 +12,7 @@ namespace C4IT_IAM_Engine public static class Helper { public const int MaxAdGroupNameLength = 64; + public const int MaxAdGroupDescriptionLength = 1024; public const int MaxAdGroupLoopDigits = 3; private const int MinLeadingRelativePathSegmentLength = 3; private const int MinSingleLeadingRelativePathSegmentLength = 2; @@ -74,7 +75,8 @@ namespace C4IT_IAM_Engine string folderName, IDictionary replacementTags, int maxLength, - string logContext) + string logContext, + string valueLabel = "AD-Gruppenname") { var effectiveSegments = (sanitizedSegments ?? Array.Empty()).Where(i => i != null).ToArray(); var effectiveFolderName = folderName ?? string.Empty; @@ -132,14 +134,14 @@ namespace C4IT_IAM_Engine { cLogManager.DefaultLogger.LogEntry( LogLevels.Warning, - $"AD-Gruppenname gekuerzt ({logContext}): '{result.OriginalValue}' ({GetMeasuredTemplateLength(result.OriginalValue)}) -> '{result.FinalValue}' ({GetMeasuredTemplateLength(result.FinalValue)}), Strategie: {result.Strategy}, Limit: {maxLength}."); + $"{valueLabel} gekuerzt ({logContext}): '{result.OriginalValue}' ({GetMeasuredTemplateLength(result.OriginalValue)}) -> '{result.FinalValue}' ({GetMeasuredTemplateLength(result.FinalValue)}), Strategie: {result.Strategy}, Limit: {maxLength}."); } if (measuredValue.Length > maxLength) { cLogManager.DefaultLogger.LogEntry( LogLevels.Warning, - $"AD-Gruppenname ueberschreitet weiterhin das sichere Limit ({logContext}): '{result.FinalValue}' ({measuredValue.Length}), Limit: {maxLength}."); + $"{valueLabel} ueberschreitet weiterhin das sichere Limit ({logContext}): '{result.FinalValue}' ({measuredValue.Length}), Limit: {maxLength}."); } return result; diff --git a/LiamNtfs/C4IT_IAM_SET/SecurityGroup.cs b/LiamNtfs/C4IT_IAM_SET/SecurityGroup.cs index de11b0e..4029f79 100644 --- a/LiamNtfs/C4IT_IAM_SET/SecurityGroup.cs +++ b/LiamNtfs/C4IT_IAM_SET/SecurityGroup.cs @@ -208,20 +208,34 @@ namespace C4IT_IAM_Engine Helper.MaxAdGroupNameLength, $"{template.Type}/{template.Scope} fuer '{newFolderPath}'"); - var adjustedSegments = boundedNameContext.SanitizedSegments ?? Array.Empty(); - var adjustedRelativePath = adjustedSegments.Length > 0 ? string.Join("_", adjustedSegments) : string.Empty; - var adjustedFolderName = boundedNameContext.FolderName; + var boundedDescriptionContext = Helper.GetBoundedAdGroupTemplateContext( + template.DescriptionTemplate, + template.Type != SecurityGroupType.Traverse, + relativePath, + sanitizedSegments, + folderName, + replacementTags, + Helper.MaxAdGroupDescriptionLength, + $"{template.Type}/{template.Scope} fuer '{newFolderPath}'", + "AD-Gruppenbeschreibung"); - template.NamingTemplate = Helper.ApplyTemplatePlaceholders(template.NamingTemplate, template.Type != SecurityGroupType.Traverse, adjustedRelativePath, adjustedSegments, adjustedFolderName) + var adjustedNameSegments = boundedNameContext.SanitizedSegments ?? Array.Empty(); + var adjustedNameRelativePath = adjustedNameSegments.Length > 0 ? string.Join("_", adjustedNameSegments) : string.Empty; + var adjustedNameFolderName = boundedNameContext.FolderName; + var adjustedDescriptionSegments = boundedDescriptionContext.SanitizedSegments ?? Array.Empty(); + var adjustedDescriptionRelativePath = adjustedDescriptionSegments.Length > 0 ? string.Join("_", adjustedDescriptionSegments) : string.Empty; + var adjustedDescriptionFolderName = boundedDescriptionContext.FolderName; + + template.NamingTemplate = Helper.ApplyTemplatePlaceholders(template.NamingTemplate, template.Type != SecurityGroupType.Traverse, adjustedNameRelativePath, adjustedNameSegments, adjustedNameFolderName) .ReplaceTags(customTags).ReplaceTags(tags) .ToUpper(); - template.DescriptionTemplate = Helper.ApplyTemplatePlaceholders(template.DescriptionTemplate, template.Type != SecurityGroupType.Traverse, adjustedRelativePath, adjustedSegments, adjustedFolderName) + template.DescriptionTemplate = Helper.ApplyTemplatePlaceholders(template.DescriptionTemplate, template.Type != SecurityGroupType.Traverse, adjustedDescriptionRelativePath, adjustedDescriptionSegments, adjustedDescriptionFolderName) .ReplaceTags(customTags).ReplaceTags(tags) .ToUpper(); - template.WildcardTemplate = Helper.ApplyTemplatePlaceholders(template.WildcardTemplate, template.Type != SecurityGroupType.Traverse, adjustedRelativePath, adjustedSegments, adjustedFolderName) + template.WildcardTemplate = Helper.ApplyTemplatePlaceholders(template.WildcardTemplate, template.Type != SecurityGroupType.Traverse, adjustedNameRelativePath, adjustedNameSegments, adjustedNameFolderName) .ReplaceTags(customTags).ReplaceTags(tags) .ToUpper();