Bug Fix: Avoid unnecessary AD queries

In multi-domains, parent domains were searched for child containers.
This commit is contained in:
Gary Sharp
2014-04-17 15:23:47 +10:00
parent 4fc6c3ca9f
commit 5aede7153c
3 changed files with 31 additions and 16 deletions
@@ -124,10 +124,10 @@ namespace Disco.Web.Areas.Config.Models.SystemConfig
m.ADSite = ActiveDirectory.Site;
m.ADSiteServers = m.ADSite.Servers.Cast<DirectoryServer>().Select(s => Tuple.Create(s, s.Reachable())).ToList();
var configSearchContainers = config.ActiveDirectory.SearchContainers;
m.ADSearchContainers = configSearchContainers == null ? null : configSearchContainers.Select(c =>
m.ADSearchContainers = configSearchContainers == null ? null : configSearchContainers.SelectMany(d => d.Value, (k, c) =>
{
var d = ActiveDirectory.GetDomainByDistinguishedName(c);
return Tuple.Create(c, d, d.GetFriendlyOrganisationalUnitName(c));
var domain = ActiveDirectory.GetDomainByDnsName(k.Key);
return Tuple.Create(c, domain, domain.GetFriendlyOrganisationalUnitName(c));
}).ToList();
var loadForestServersTask = ActiveDirectory.LoadForestServersAsync();