public void WithConnections()

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);
                }
            }
        }