public override async Task <IISSitesOptions> Aquire(IInputService input, RunLevel runLevel) { var ret = new IISSitesOptions(); var sites = _siteHelper.GetSites(true). Where(x => !_arguments.MainArguments.HideHttps || x.Https == false). Where(x => x.Hosts.Any()). ToList(); if (!sites.Any()) { _log.Error($"No sites with named bindings have been configured in IIS. Add one or choose '{ManualOptions.DescriptionText}'."); return(null); } input.WritePagedList( sites.Select(x => Choice.Create(x, $"{x.Name} ({x.Hosts.Count()} binding{(x.Hosts.Count()==1?"":"s")})", x.Id.ToString(), color: x.Https ? ConsoleColor.DarkGray : (ConsoleColor?)null)).ToList()); var sanInput = await input.RequestString("Enter a comma separated list of SiteIds or 'S' for all sites"); sites = ProcessSiteIds(ret, sites, sanInput); if (sites != null) { var hosts = sites.SelectMany(x => x.Hosts).Distinct().OrderBy(x => x); if (await _optionsHelper.AquireAdvancedOptions(input, hosts, runLevel, ret)) { return(ret); } } return(null); }
public override IISSiteOptions Aquire(IArgumentsService arguments, IInputService input, RunLevel runLevel) { var ret = new IISSiteOptions(); var sites = _siteHelper. GetSites(arguments.MainArguments.HideHttps, true). Where(x => x.Hidden == false). Where(x => x.Hosts.Any()); if (!sites.Any()) { _log.Error($"No sites with named bindings have been configured in IIS. Add one or choose '{ManualOptions.DescriptionText}'."); return(null); } var chosen = input.ChooseFromList("Choose site", sites, x => Choice.Create(x, x.Name), "Abort"); if (chosen != null) { ret.SiteId = chosen.Id; if (_optionsHelper.AquireAdvancedOptions(input, chosen.Hosts, runLevel, ret)) { return(ret); } } return(null); }
public override IISSitesOptions Aquire(IArgumentsService arguments, IInputService input, RunLevel runLevel) { var ret = new IISSitesOptions(); var sites = _siteHelper.GetSites(arguments.MainArguments.HideHttps, true). Where(x => x.Hidden == false). Where(x => x.Hosts.Any()). ToList(); if (!sites.Any()) { _log.Error($"No sites with named bindings have been configured in IIS. Add one or choose '{ManualOptions.DescriptionText}'."); return(null); } input.WritePagedList(sites.Select(x => Choice.Create(x, $"{x.Name} ({x.Hosts.Count()} bindings)", x.Id.ToString())).ToList()); var sanInput = input.RequestString("Enter a comma separated list of SiteIds or 'S' for all sites"); sites = ProcessSiteIds(ret, sites, sanInput); if (sites == null) { return(null); } var hosts = sites.SelectMany(x => x.Hosts).Distinct().OrderBy(x => x); if (_optionsHelper.AquireAdvancedOptions(input, hosts, runLevel, ret)) { return(ret); } return(ret); }
public override IISSitesOptions Aquire(IOptionsService optionsService, IInputService inputService, RunLevel runLevel) { var ret = new IISSitesOptions(); var sites = _helper.GetSites(optionsService.MainArguments.HideHttps, true).Where(x => x.Hidden == false).ToList(); inputService.WritePagedList(sites.Select(x => Choice.Create(x, $"{x.Name} ({x.Hosts.Count()} bindings)", x.Id.ToString())).ToList()); var sanInput = inputService.RequestString("Enter a comma separated list of SiteIds or 'S' for all sites").ToLower().Trim(); sites = ProcessSiteIds(ret, sites, sanInput); if (sites == null) { return(null); } var hosts = sites.SelectMany(x => x.Hosts).Distinct().OrderBy(x => x); inputService.WritePagedList(hosts.Select(x => Choice.Create(x, ""))); ret.ExcludeBindings = inputService.RequestString("Press enter to include all listed hosts, or type a comma-separated lists of exclusions").ParseCsv(); if (runLevel.HasFlag(RunLevel.Advanced)) { ret.CommonName = inputService.ChooseFromList( "Select common name", hosts.Except(ret.ExcludeBindings ?? new List <string>()), (x) => new Choice <string>(x), true); } return(ret); }
public async override Task <IISSiteOptions> Aquire(IInputService input, RunLevel runLevel) { var ret = new IISSiteOptions(); var sites = _siteHelper. GetSites(true). Where(x => !_arguments.MainArguments.HideHttps || x.Https == false). Where(x => x.Hosts.Any()); if (!sites.Any()) { _log.Error($"No sites with named bindings have been configured in IIS. Add one or choose '{ManualOptions.DescriptionText}'."); return(null); } var chosen = await input.ChooseFromList("Choose site", sites, x => Choice.Create(x, $"{x.Name} ({x.Hosts.Count()} binding{(x.Hosts.Count() == 1 ? "" : "s")})", x.Id.ToString(), color: x.Https ? ConsoleColor.DarkGray : (ConsoleColor?)null), "Abort"); if (chosen != null) { ret.SiteId = chosen.Id; if (await _optionsHelper.AquireAdvancedOptions(input, chosen.Hosts, runLevel, ret)) { return(ret); } } return(null); }
public override IISSiteOptions Aquire(IOptionsService optionsService, IInputService inputService, RunLevel runLevel) { var ret = new IISSiteOptions(); var chosen = inputService.ChooseFromList("Choose site", _helper.GetSites(optionsService.MainArguments.HideHttps, true).Where(x => x.Hidden == false), x => new Choice <IISSiteHelper.IISSiteOption>(x) { Description = x.Name }, true); if (chosen != null) { ret.SiteId = chosen.Id; ret.FriendlyNameSuggestion = $"Site-{chosen.Id}"; // Exclude bindings inputService.WritePagedList(chosen.Hosts.Select(x => Choice.Create(x, ""))); ret.ExcludeBindings = inputService.RequestString("Press enter to include all listed hosts, or type a comma-separated lists of exclusions").ParseCsv(); if (runLevel.HasFlag(RunLevel.Advanced)) { ret.CommonName = inputService.ChooseFromList( "Select common name", chosen.Hosts.Except(ret.ExcludeBindings ?? new List <string>()), x => new Choice <string>(x), true); } return(ret); } return(null); }
public override IISSiteOptions Aquire(IArgumentsService arguments, IInputService inputService, RunLevel runLevel) { var ret = new IISSiteOptions(); var sites = _helper. GetSites(arguments.MainArguments.HideHttps, true). Where(x => x.Hidden == false). Where(x => x.Hosts.Any()); if (!sites.Any()) { _log.Error($"No sites with named bindings have been configured in IIS. Add one or choose '{ManualOptions.DescriptionText}'."); return(null); } var chosen = inputService.ChooseFromList("Choose site", sites, x => new Choice <IISSiteHelper.IISSiteOption>(x) { Description = x.Name }, true); if (chosen != null) { ret.SiteId = chosen.Id; // Exclude bindings inputService.WritePagedList(chosen.Hosts.Select(x => Choice.Create(x, ""))); ret.ExcludeBindings = inputService.RequestString("Press enter to include all listed hosts, or type a comma-separated lists of exclusions").ParseCsv(); var remaining = chosen.Hosts.Except(ret.ExcludeBindings ?? new List <string>()); if (remaining.Count() == 0) { _log.Error("No bindings remain"); return(null); } // Set common name if (remaining.Count() > 1) { ret.CommonName = inputService.ChooseFromList( "Select primary domain (common name)", remaining, x => new Choice <string>(x), true); } return(ret); } return(null); }
public Target Generate() { var site = _helper.GetSites(false, false).FirstOrDefault(s => s.Id == _options.SiteId); if (site == null) { _log.Error($"SiteId {_options.SiteId} not found"); return(null); } var hosts = site.Hosts; if (_options.ExcludeBindings != null) { hosts = hosts.Except(_options.ExcludeBindings).ToList(); } var cn = _options.CommonName; var cnDefined = !string.IsNullOrWhiteSpace(cn); var cnValid = cnDefined && hosts.Contains(cn); if (cnDefined && !cnValid) { _log.Warning("Specified common name {cn} not valid", cn); } return(new Target() { CommonName = cnValid ? cn : hosts.FirstOrDefault(), Parts = new[] { new TargetPart() { Identifiers = hosts, SiteId = site.Id } } }); }
public override IISSitesOptions Aquire(IArgumentsService arguments, IInputService inputService, RunLevel runLevel) { var ret = new IISSitesOptions(); var sites = _helper.GetSites(arguments.MainArguments.HideHttps, true). Where(x => x.Hidden == false). Where(x => x.Hosts.Any()). ToList(); if (!sites.Any()) { _log.Error($"No sites with named bindings have been configured in IIS. Add one or choose '{ManualOptions.DescriptionText}'."); return(null); } inputService.WritePagedList(sites.Select(x => Choice.Create(x, $"{x.Name} ({x.Hosts.Count()} bindings)", x.Id.ToString())).ToList()); var sanInput = inputService.RequestString("Enter a comma separated list of SiteIds or 'S' for all sites").ToLower().Trim(); sites = ProcessSiteIds(ret, sites, sanInput); if (sites == null) { return(null); } var hosts = sites.SelectMany(x => x.Hosts).Distinct().OrderBy(x => x); inputService.WritePagedList(hosts.Select(x => Choice.Create(x, ""))); ret.ExcludeBindings = inputService.RequestString("Press enter to include all listed hosts, or type a comma-separated lists of exclusions").ParseCsv(); var remaining = hosts.Except(ret.ExcludeBindings ?? new List <string>()); if (remaining.Count() == 0) { _log.Error("No bindings remain after excluding"); return(null); } // Set common name if (remaining.Count() > 1) { ret.CommonName = inputService.ChooseFromList( "Select primary domain (common name)", remaining, x => new Choice <string>(x), true); } return(ret); }
public Task <Target> Generate() { var sites = _helper.GetSites(false); var filtered = new List <IISSiteHelper.IISSiteOption>(); if (_options.All == true) { filtered = sites; } else { foreach (var id in _options.SiteIds) { var site = sites.FirstOrDefault(s => s.Id == id); if (site != null) { filtered.Add(site); } else { _log.Warning("SiteId {Id} not found", id); } } } var allHosts = filtered.SelectMany(x => x.Hosts); var exclude = _options.ExcludeBindings ?? new List <string>(); allHosts = allHosts.Except(exclude).ToList(); var cn = _options.CommonName; var cnDefined = !string.IsNullOrWhiteSpace(cn); var cnValid = cnDefined && allHosts.Contains(cn); if (cnDefined && !cnValid) { _log.Warning("Specified common name {cn} not valid", cn); } return(Task.FromResult(new Target() { FriendlyName = $"[{nameof(IISSites)}] {(_options.All == true ? "All" : string.Join(",", _options.SiteIds))}", CommonName = cnValid ? cn : allHosts.FirstOrDefault(), Parts = filtered.Select(site => new TargetPart { Identifiers = site.Hosts.Except(exclude).ToList(), SiteId = site.Id }) })); }