From daa70c982befc66bce78e1f7ebf470e8f158e3d2 Mon Sep 17 00:00:00 2001 From: Meik Date: Fri, 13 Mar 2026 12:46:37 +0100 Subject: [PATCH] Align NTFS ensure SID arguments --- .../C4IT.LIAM.WorkflowActivities.cs | 37 +++++++------------ 1 file changed, 14 insertions(+), 23 deletions(-) diff --git a/LiamWorkflowActivities/C4IT.LIAM.WorkflowActivities.cs b/LiamWorkflowActivities/C4IT.LIAM.WorkflowActivities.cs index 2c217ad..5ad4524 100644 --- a/LiamWorkflowActivities/C4IT.LIAM.WorkflowActivities.cs +++ b/LiamWorkflowActivities/C4IT.LIAM.WorkflowActivities.cs @@ -975,15 +975,15 @@ namespace C4IT.LIAM.Activities [Category("Input")] [DisplayName("Owner SIDs")] - public InArgument OwnerSids { get; set; } + public InArgument> OwnerSids { get; set; } [Category("Input")] [DisplayName("Reader SIDs")] - public InArgument ReaderSids { get; set; } + public InArgument> ReaderSids { get; set; } [Category("Input")] [DisplayName("Writer SIDs")] - public InArgument WriterSids { get; set; } + public InArgument> WriterSids { get; set; } [Category("Input")] [DisplayName("Ensure Traverse")] @@ -1016,38 +1016,29 @@ namespace C4IT.LIAM.Activities return; } + var ownerSids = OwnerSids.Expression != null ? OwnerSids.Get(context) : null; + var readerSids = ReaderSids.Expression != null ? ReaderSids.Get(context) : null; + var writerSids = WriterSids.Expression != null ? WriterSids.Get(context) : null; + var result = provider.EnsureMissingPermissionGroupsAsync( folderPath, null, - ParseSidList(OwnerSids.Get(context)), - ParseSidList(ReaderSids.Get(context)), - ParseSidList(WriterSids.Get(context)), + NormalizeSidList(ownerSids), + NormalizeSidList(readerSids), + NormalizeSidList(writerSids), EnsureTraverse.Get(context)).GetAwaiter().GetResult(); Success.Set(context, result != null && result.resultErrorId == 0); ResultToken.Set(context, JsonValue.Parse(JsonConvert.SerializeObject(result))); } - private IEnumerable ParseSidList(string raw) + private IEnumerable NormalizeSidList(IEnumerable rawSids) { - if (string.IsNullOrWhiteSpace(raw)) + if (rawSids == null) return Enumerable.Empty(); - var trimmed = raw.Trim(); - if (trimmed.StartsWith("[")) - { - try - { - return JsonConvert.DeserializeObject>(trimmed) ?? Enumerable.Empty(); - } - catch - { - } - } - - return trimmed - .Split(new[] { ';', ',', '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries) - .Select(i => i.Trim()) + return rawSids + .Select(i => i?.Trim()) .Where(i => !string.IsNullOrWhiteSpace(i)) .Distinct(StringComparer.OrdinalIgnoreCase); }