in src/IdFix/ConnectionManager.cs [18:64]
public void WithConnections(Action<LdapConnection, string> action)
{
var activeForestsCopy = SettingsManager.Instance.ActiveForestList.ToArray();
if (activeForestsCopy.Length < 1)
{
throw new Exception("No active forests selected. Check the settings and ensure at least one forest is selected.");
}
for (var i = 0; i < activeForestsCopy.Length; i++)
{
var activeForest = activeForestsCopy[i];
string serverName = SettingsManager.Instance.Server;
string distinguishedName = SettingsManager.Instance.DistinguishedName;
if (SettingsManager.Instance.CurrentDirectoryType == DirectoryType.ActiveDirectory)
{
if (SettingsManager.Instance.Port == Constants.GlobalCatalogPort)
{
serverName = Forest.GetForest(new DirectoryContext(DirectoryContextType.Forest, activeForest)).Name;
distinguishedName = SettingsManager.Instance.SearchBaseEnabled && !String.IsNullOrEmpty(SettingsManager.Instance.SearchBase) ? SettingsManager.Instance.SearchBase : string.Empty;
}
else
{
serverName = Forest.GetForest(new DirectoryContext(DirectoryContextType.Forest, activeForest)).Domains[0].FindDomainController().Name;
if (SettingsManager.Instance.SearchBaseEnabled && !String.IsNullOrEmpty(SettingsManager.Instance.SearchBase))
distinguishedName = SettingsManager.Instance.SearchBase;
else
distinguishedName = "dc=" + Forest.GetForest(new DirectoryContext(DirectoryContextType.Forest, activeForest)).Name.Replace(".", ",dc=");
}
}
else
{
if (String.IsNullOrEmpty(SettingsManager.Instance.DistinguishedName))
{
distinguishedName = "dc=" + Forest.GetForest(new DirectoryContext(DirectoryContextType.Forest, activeForest)).Name.Replace(".", ",dc=");
}
}
using (var connection = this.CreateConnection(serverName + ":" + SettingsManager.Instance.Port))
{
this.OnStatusUpdate?.Invoke("RULES:" + SettingsManager.Instance.CurrentRuleMode.ToString() + " SERVER:" + serverName + " PORT:" + SettingsManager.Instance.Port + " FILTER:" + SettingsManager.Instance.Filter);
action(connection, distinguishedName);
}
}
}