//Todo: Needs refactoring together with FindAllWebFarms, GetWebFarm and GetWebFarms private static IEnumerable<Farm> GetWebFarmsByServer(string serverName, bool useDnsLookup) { using (var serverManager = new ServerManager()) { var config = serverManager.GetApplicationHostConfiguration(); var webFarmsSection = config.GetSection("webFarms"); var foundFarms = new List<Farm>(); var servers = new List<string>(); if(useDnsLookup) { var ips = Dns.GetHostAddresses(serverName); foreach(var ip in ips) { servers.Add(ip.ToString()); } } else { servers.Add(serverName.ToLower()); } foreach (var webFarm in webFarmsSection.GetCollection()) { foreach (var server in webFarm.GetCollection()) { var webFarmServerAddress = server["address"].ToString(); if (WildcardPattern.ContainsWildcard(serverName)) { var serverAddress = server["address"].ToString(); var wildcardPattern = new WildcardPattern(serverName); if(wildcardPattern.IsMatch(serverAddress)) { var farm = new Farm { Name = webFarm["name"].ToString() }; farm.Servers.Add(new FarmServer { Name = server["address"].ToString(), WebFarm = webFarm["name"].ToString() }); foundFarms.Add(farm); } } else if (servers.Contains(webFarmServerAddress.ToLower())) { var farm = new Farm {Name = webFarm["name"].ToString()}; farm.Servers.Add(new FarmServer { Name = server["address"].ToString(), WebFarm = webFarm["name"].ToString() }); foundFarms.Add(farm); if(servers.Count == 1) { break; } } } } return foundFarms; } }
private IEnumerable<Farm> GetWebFarms(string farm, string server, bool useDnsLookup) { if (_noParams) { return FindAllWebFarms(); } if (!string.IsNullOrEmpty(farm)) { if (!string.IsNullOrEmpty(server)) { var f = new Farm { Name = farm }; f.Servers.Add(new FarmServer { Name = server, WebFarm = farm }); return new[] { f }; } return GetWebFarm(farm); } return !string.IsNullOrEmpty(server) ? GetWebFarmsByServer(server, useDnsLookup) : FindAllWebFarms(); }
private static IEnumerable<Farm> GetWebFarm(string farmName) { using (var serverManager = new ServerManager()) { var config = serverManager.GetApplicationHostConfiguration(); var webFarmsSection = config.GetSection("webFarms"); var foundFarmServers = new List<Farm>(); foreach (var webFarm in webFarmsSection.GetCollection()) { if (farmName.ToLower() != webFarm["name"].ToString().ToLower()) continue; var farm = new Farm { Name = webFarm["name"].ToString() }; foreach (var server in webFarm.GetCollection()) { farm.Servers.Add(new FarmServer { WebFarm = farm.Name, Name = server["address"].ToString() }); } foundFarmServers.Add(farm); } return foundFarmServers; } }