chore: sync LIAM solution snapshot incl. diagnostics tooling
- update multiple LIAM projects and solution/config files - add LiamWorkflowDiagnostics app sources and generated outputs - include current workspace state (dependencies and build outputs)
This commit is contained in:
@@ -1,165 +1,165 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Security.AccessControl;
|
||||
using System.Security.Principal;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using C4IT.Logging;
|
||||
|
||||
using static C4IT.Logging.cLogManager;
|
||||
using System.Reflection;
|
||||
namespace C4IT_IAM_Engine
|
||||
{
|
||||
public class DataArea
|
||||
{
|
||||
public List<IAM_Folder> IAM_Folders;
|
||||
public string rootUID;
|
||||
public static string GetRelativePath(string childFolder, string rootFolder)
|
||||
{
|
||||
LogMethodBegin(MethodBase.GetCurrentMethod());
|
||||
|
||||
try
|
||||
{
|
||||
// Folders must end in a slash
|
||||
if (!childFolder.EndsWith(Path.DirectorySeparatorChar.ToString()))
|
||||
{
|
||||
childFolder += Path.DirectorySeparatorChar;
|
||||
}
|
||||
Uri childUri = new Uri(childFolder);
|
||||
|
||||
// Folders must end in a slash
|
||||
if (!rootFolder.EndsWith(Path.DirectorySeparatorChar.ToString()))
|
||||
{
|
||||
rootFolder += Path.DirectorySeparatorChar;
|
||||
}
|
||||
Uri folderUri = new Uri(rootFolder);
|
||||
return Uri.UnescapeDataString(folderUri.MakeRelativeUri(childUri).ToString().Replace('/', Path.DirectorySeparatorChar));
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
cLogManager.DefaultLogger.LogException(E);
|
||||
throw;
|
||||
}
|
||||
finally
|
||||
{
|
||||
LogMethodEnd(MethodBase.GetCurrentMethod());
|
||||
}
|
||||
}
|
||||
public static string GetUniqueDataAreaID(string name)
|
||||
{
|
||||
LogMethodBegin(MethodBase.GetCurrentMethod());
|
||||
try
|
||||
{
|
||||
var md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
|
||||
var utf8 = new System.Text.UTF8Encoding();
|
||||
var hash = BitConverter.ToString(md5.ComputeHash(utf8.GetBytes(name)));
|
||||
hash = hash.ToLower().Replace("-", "");
|
||||
return hash;
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
cLogManager.DefaultLogger.LogException(E);
|
||||
throw;
|
||||
}
|
||||
finally
|
||||
{
|
||||
LogMethodEnd(MethodBase.GetCurrentMethod());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public DataArea()
|
||||
{
|
||||
IAM_Folders = new List<IAM_Folder>();
|
||||
}
|
||||
public static void AddDirectorySecurity(string baseFolderTechnicalName, string newFolderTechnicalName, SecurityIdentifier Account, FileSystemRights Rights, AccessControlType ControlType)
|
||||
{
|
||||
LogMethodBegin(MethodBase.GetCurrentMethod());
|
||||
|
||||
try
|
||||
{
|
||||
// Create a new DirectoryInfo object.
|
||||
DirectoryInfo dInfo = new DirectoryInfo(newFolderTechnicalName);
|
||||
//DirectoryInfo dInfoBaseFolder = new DirectoryInfo(baseFolderTechnicalName);
|
||||
|
||||
// Get a DirectorySecurity object that represents the
|
||||
// current security settings.
|
||||
DirectorySecurity dSecurity = dInfo.GetAccessControl();
|
||||
|
||||
// Add the FileSystemAccessRule to the security settings.
|
||||
|
||||
dSecurity.AddAccessRule(new FileSystemAccessRule(Account,
|
||||
Rights, InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, PropagationFlags.None,
|
||||
AccessControlType.Allow));
|
||||
DefaultLogger.LogEntry(LogLevels.Debug, $"Set ACL for folder: {newFolderTechnicalName} for { Account }");
|
||||
// Set the new access settings.
|
||||
dInfo.SetAccessControl(dSecurity);
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
cLogManager.DefaultLogger.LogException(E);
|
||||
throw;
|
||||
}
|
||||
finally
|
||||
{
|
||||
LogMethodEnd(MethodBase.GetCurrentMethod());
|
||||
}
|
||||
}
|
||||
|
||||
// Removes an ACL entry on the specified directory for the specified account.
|
||||
public static void RemoveDirectorySecurity(string FileName, string Account, FileSystemRights Rights, AccessControlType ControlType)
|
||||
{
|
||||
LogMethodBegin(MethodBase.GetCurrentMethod());
|
||||
|
||||
try
|
||||
{
|
||||
|
||||
// Create a new DirectoryInfo object.
|
||||
DirectoryInfo dInfo = new DirectoryInfo(FileName);
|
||||
|
||||
// Get a DirectorySecurity object that represents the
|
||||
// current security settings.
|
||||
DirectorySecurity dSecurity = dInfo.GetAccessControl();
|
||||
|
||||
// Add the FileSystemAccessRule to the security settings.
|
||||
dSecurity.RemoveAccessRule(new FileSystemAccessRule(Account,
|
||||
Rights,
|
||||
ControlType));
|
||||
|
||||
// Set the new access settings.
|
||||
dInfo.SetAccessControl(dSecurity);
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
cLogManager.DefaultLogger.LogException(E);
|
||||
throw;
|
||||
}
|
||||
finally
|
||||
{
|
||||
LogMethodEnd(MethodBase.GetCurrentMethod());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class IAM_Folder
|
||||
{
|
||||
public string Name = String.Empty;
|
||||
public string technicalName = String.Empty;
|
||||
public string UID = String.Empty;
|
||||
public string Parent = String.Empty;
|
||||
public string ParentUID = String.Empty;
|
||||
public string Owner = String.Empty;
|
||||
public string Write = String.Empty;
|
||||
public string Read = String.Empty;
|
||||
public string Traverse = String.Empty;
|
||||
public string CreatedDate = String.Empty;
|
||||
public int Level = 0;
|
||||
public int targetType;
|
||||
public string configurationID = String.Empty;
|
||||
public string baseFolder = String.Empty;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Security.AccessControl;
|
||||
using System.Security.Principal;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using C4IT.Logging;
|
||||
|
||||
using static C4IT.Logging.cLogManager;
|
||||
using System.Reflection;
|
||||
namespace C4IT_IAM_Engine
|
||||
{
|
||||
public class DataArea
|
||||
{
|
||||
public List<IAM_Folder> IAM_Folders;
|
||||
public string rootUID;
|
||||
public static string GetRelativePath(string childFolder, string rootFolder)
|
||||
{
|
||||
LogMethodBegin(MethodBase.GetCurrentMethod());
|
||||
|
||||
try
|
||||
{
|
||||
// Folders must end in a slash
|
||||
if (!childFolder.EndsWith(Path.DirectorySeparatorChar.ToString()))
|
||||
{
|
||||
childFolder += Path.DirectorySeparatorChar;
|
||||
}
|
||||
Uri childUri = new Uri(childFolder);
|
||||
|
||||
// Folders must end in a slash
|
||||
if (!rootFolder.EndsWith(Path.DirectorySeparatorChar.ToString()))
|
||||
{
|
||||
rootFolder += Path.DirectorySeparatorChar;
|
||||
}
|
||||
Uri folderUri = new Uri(rootFolder);
|
||||
return Uri.UnescapeDataString(folderUri.MakeRelativeUri(childUri).ToString().Replace('/', Path.DirectorySeparatorChar));
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
cLogManager.DefaultLogger.LogException(E);
|
||||
throw;
|
||||
}
|
||||
finally
|
||||
{
|
||||
LogMethodEnd(MethodBase.GetCurrentMethod());
|
||||
}
|
||||
}
|
||||
public static string GetUniqueDataAreaID(string name)
|
||||
{
|
||||
LogMethodBegin(MethodBase.GetCurrentMethod());
|
||||
try
|
||||
{
|
||||
var md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
|
||||
var utf8 = new System.Text.UTF8Encoding();
|
||||
var hash = BitConverter.ToString(md5.ComputeHash(utf8.GetBytes(name)));
|
||||
hash = hash.ToLower().Replace("-", "");
|
||||
return hash;
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
cLogManager.DefaultLogger.LogException(E);
|
||||
throw;
|
||||
}
|
||||
finally
|
||||
{
|
||||
LogMethodEnd(MethodBase.GetCurrentMethod());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public DataArea()
|
||||
{
|
||||
IAM_Folders = new List<IAM_Folder>();
|
||||
}
|
||||
public static void AddDirectorySecurity(string baseFolderTechnicalName, string newFolderTechnicalName, SecurityIdentifier Account, FileSystemRights Rights, AccessControlType ControlType)
|
||||
{
|
||||
LogMethodBegin(MethodBase.GetCurrentMethod());
|
||||
|
||||
try
|
||||
{
|
||||
// Create a new DirectoryInfo object.
|
||||
DirectoryInfo dInfo = new DirectoryInfo(newFolderTechnicalName);
|
||||
//DirectoryInfo dInfoBaseFolder = new DirectoryInfo(baseFolderTechnicalName);
|
||||
|
||||
// Get a DirectorySecurity object that represents the
|
||||
// current security settings.
|
||||
DirectorySecurity dSecurity = dInfo.GetAccessControl();
|
||||
|
||||
// Add the FileSystemAccessRule to the security settings.
|
||||
|
||||
dSecurity.AddAccessRule(new FileSystemAccessRule(Account,
|
||||
Rights, InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, PropagationFlags.None,
|
||||
AccessControlType.Allow));
|
||||
DefaultLogger.LogEntry(LogLevels.Debug, $"Set ACL for folder: {newFolderTechnicalName} for { Account }");
|
||||
// Set the new access settings.
|
||||
dInfo.SetAccessControl(dSecurity);
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
cLogManager.DefaultLogger.LogException(E);
|
||||
throw;
|
||||
}
|
||||
finally
|
||||
{
|
||||
LogMethodEnd(MethodBase.GetCurrentMethod());
|
||||
}
|
||||
}
|
||||
|
||||
// Removes an ACL entry on the specified directory for the specified account.
|
||||
public static void RemoveDirectorySecurity(string FileName, string Account, FileSystemRights Rights, AccessControlType ControlType)
|
||||
{
|
||||
LogMethodBegin(MethodBase.GetCurrentMethod());
|
||||
|
||||
try
|
||||
{
|
||||
|
||||
// Create a new DirectoryInfo object.
|
||||
DirectoryInfo dInfo = new DirectoryInfo(FileName);
|
||||
|
||||
// Get a DirectorySecurity object that represents the
|
||||
// current security settings.
|
||||
DirectorySecurity dSecurity = dInfo.GetAccessControl();
|
||||
|
||||
// Add the FileSystemAccessRule to the security settings.
|
||||
dSecurity.RemoveAccessRule(new FileSystemAccessRule(Account,
|
||||
Rights,
|
||||
ControlType));
|
||||
|
||||
// Set the new access settings.
|
||||
dInfo.SetAccessControl(dSecurity);
|
||||
}
|
||||
catch (Exception E)
|
||||
{
|
||||
cLogManager.DefaultLogger.LogException(E);
|
||||
throw;
|
||||
}
|
||||
finally
|
||||
{
|
||||
LogMethodEnd(MethodBase.GetCurrentMethod());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class IAM_Folder
|
||||
{
|
||||
public string Name = String.Empty;
|
||||
public string technicalName = String.Empty;
|
||||
public string UID = String.Empty;
|
||||
public string Parent = String.Empty;
|
||||
public string ParentUID = String.Empty;
|
||||
public string Owner = String.Empty;
|
||||
public string Write = String.Empty;
|
||||
public string Read = String.Empty;
|
||||
public string Traverse = String.Empty;
|
||||
public string CreatedDate = String.Empty;
|
||||
public int Level = 0;
|
||||
public int targetType;
|
||||
public string configurationID = String.Empty;
|
||||
public string baseFolder = String.Empty;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user