Exemplo n.º 1
0
        public override IISSitesOptions Default(IOptionsService optionsService)
        {
            var ret        = new IISSitesOptions();
            var args       = optionsService.GetArguments <IISSiteArguments>();
            var sites      = _helper.GetSites(false, false);
            var rawSiteIds = optionsService.TryGetRequiredOption(nameof(args.SiteId), args.SiteId);

            sites = ProcessSiteIds(ret, sites, rawSiteIds);
            if (sites == null)
            {
                return(null);
            }
            ret.ExcludeBindings = args.ExcludeBindings.ParseCsv();
            if (ret.ExcludeBindings != null)
            {
                ret.ExcludeBindings = ret.ExcludeBindings.Select(x => x.ConvertPunycode()).ToList();
            }
            var commonName = args.CommonName;

            if (!string.IsNullOrWhiteSpace(commonName))
            {
                commonName = commonName.ToLower().Trim().ConvertPunycode();
                if (sites.Any(s => s.Hosts.Contains(commonName)) &&
                    (ret.ExcludeBindings == null || !ret.ExcludeBindings.Contains(commonName)))
                {
                    ret.CommonName = commonName;
                }
                else
                {
                    _log.Error("Common name {commonName} not found or excluded", commonName);
                    return(null);
                }
            }
            return(ret);
        }
Exemplo n.º 2
0
        public override IISWebOptions Aquire(Target target, IOptionsService optionsService, IInputService inputService, RunLevel runLevel)
        {
            var args = optionsService.GetArguments <IISWebArguments>();
            var ret  = new IISWebOptions(args);
            var ask  = true;

            if (target.IIS)
            {
                if (runLevel.HasFlag(RunLevel.Advanced))
                {
                    ask = inputService.PromptYesNo("Use different site for installation?");
                }
                else
                {
                    ask = false;
                }
            }
            if (ask)
            {
                var chosen = inputService.ChooseFromList("Choose site to create new bindings",
                                                         _iisClient.WebSites,
                                                         x => new Choice <long>(x.Id)
                {
                    Description = x.Name,
                    Command     = x.Id.ToString()
                },
                                                         false);
                ret.SiteId = chosen;
            }
            return(ret);
        }
Exemplo n.º 3
0
        public override IISBindingOptions Default(IOptionsService optionsService)
        {
            var ret       = new IISBindingOptions();
            var args      = optionsService.GetArguments <IISBindingArguments>();
            var hostName  = optionsService.TryGetRequiredOption(nameof(args.Host), args.Host).ToLower();
            var rawSiteId = args.SiteId;
            var filterSet = _helper.GetBindings(false, false);

            if (!string.IsNullOrEmpty(rawSiteId))
            {
                if (long.TryParse(rawSiteId, out long siteId))
                {
                    filterSet = filterSet.Where(x => x.SiteId == siteId).ToList();
                }
                else
                {
                    _log.Error("Invalid SiteId {siteId}", rawSiteId);
                    return(null);
                }
            }
            var chosenTarget = filterSet.Where(x => x.HostUnicode == hostName || x.HostPunycode == hostName).FirstOrDefault();

            if (chosenTarget != null)
            {
                ret.SiteId = chosenTarget.SiteId;
                ret.Host   = chosenTarget.HostUnicode;
                ret.FriendlyNameSuggestion = chosenTarget.HostUnicode;
                return(ret);
            }
            else
            {
                return(null);
            }
        }
        public override SelfHostingOptions Default(Target target, IOptionsService optionsService)
        {
            var args = optionsService.GetArguments <SelfHostingArguments>();

            return(new SelfHostingOptions()
            {
                Port = args.ValidationPort
            });
        }
Exemplo n.º 5
0
        public override DreamhostOptions Aquire(Target target, IOptionsService options, IInputService input, RunLevel runLevel)
        {
            var arguments = options.GetArguments <DreamhostArguments>();

            return(new DreamhostOptions()
            {
                ApiKey = options.TryGetOption(arguments.ApiKey, input, "ApiKey", true),
            });
        }
Exemplo n.º 6
0
        public override EcOptions Default(IOptionsService optionsService)
        {
            var args = optionsService.GetArguments <CsrArguments>();

            return(new EcOptions()
            {
                OcspMustStaple = args.OcspMustStaple
            });
        }
Exemplo n.º 7
0
        public override DreamhostOptions Default(Target target, IOptionsService options)
        {
            var az = options.GetArguments <DreamhostArguments>();

            return(new DreamhostOptions()
            {
                ApiKey = options.TryGetRequiredOption(nameof(az.ApiKey), az.ApiKey),
            });
        }
Exemplo n.º 8
0
        public override CertificateStorePluginOptions Default(IOptionsService optionsService)
        {
            var args = optionsService.GetArguments <CertificateStoreArguments>();

            return(new CertificateStorePluginOptions {
                StoreName = args.CertificateStore,
                KeepExisting = args.KeepExisting
            });
        }
Exemplo n.º 9
0
        public override AzureOptions Aquire(Target target, IOptionsService options, IInputService input, RunLevel runLevel)
        {
            var az = options.GetArguments <AzureArguments>();

            return(new AzureOptions()
            {
                TenantId = options.TryGetOption(az.AzureTenantId, input, "Tenant Id"),
                ClientId = options.TryGetOption(az.AzureClientId, input, "Client Id"),
                Secret = options.TryGetOption(az.AzureSecret, input, "Secret", true),
                SubscriptionId = options.TryGetOption(az.AzureSubscriptionId, input, "DNS Subscription ID"),
                ResourceGroupName = options.TryGetOption(az.AzureResourceGroupName, input, "DNS Resoure Group Name")
            });
        }
Exemplo n.º 10
0
        public override AzureOptions Default(Target target, IOptionsService options)
        {
            var az = options.GetArguments <AzureArguments>();

            return(new AzureOptions()
            {
                TenantId = options.TryGetRequiredOption(nameof(az.AzureTenantId), az.AzureTenantId),
                ClientId = options.TryGetRequiredOption(nameof(az.AzureTenantId), az.AzureClientId),
                Secret = options.TryGetRequiredOption(nameof(az.AzureTenantId), az.AzureSecret),
                SubscriptionId = options.TryGetRequiredOption(nameof(az.AzureTenantId), az.AzureSubscriptionId),
                ResourceGroupName = options.TryGetRequiredOption(nameof(az.AzureTenantId), az.AzureResourceGroupName)
            });
        }
Exemplo n.º 11
0
        public override ScriptOptions Default(Target target, IOptionsService optionsService)
        {
            var args = optionsService.GetArguments <ScriptArguments>();
            var ret  = new ScriptOptions
            {
                Script = optionsService.TryGetRequiredOption(nameof(args.Script), args.Script)
            };

            if (!ret.Script.ValidFile(_log))
            {
                throw new ArgumentException(nameof(args.Script));
            }
            ret.ScriptParameters = args.ScriptParameters;
            return(ret);
        }
Exemplo n.º 12
0
        public override ScriptOptions Aquire(Target target, IOptionsService options, IInputService input, RunLevel runLevel)
        {
            var args = options.GetArguments <ScriptArguments>();
            var ret  = new ScriptOptions();

            do
            {
                ret.CreateScript = options.TryGetOption(args.DnsCreateScript, input, "Path to script that creates DNS records. Parameters passed are the hostname, record name and token");
            }while (!ret.CreateScript.ValidFile(_log));
            do
            {
                ret.DeleteScript = options.TryGetOption(args.DnsDeleteScript, input, "Path to script that deletes DNS records. Parameters passed are the hostname and record name");
            }while (!ret.DeleteScript.ValidFile(_log));
            return(ret);
        }
Exemplo n.º 13
0
        public override CentralSslOptions Aquire(IOptionsService optionsService, IInputService inputService, RunLevel runLevel)
        {
            var args = optionsService.GetArguments <CentralSslArguments>();
            var path = args.CentralSslStore;

            while (!path.ValidPath(_log))
            {
                path = inputService.RequestString("Path to Central SSL store");
            }
            return(new CentralSslOptions
            {
                Path = path,
                KeepExisting = args.KeepExisting,
                PfxPassword = inputService.ReadPassword("Password to use for the PFX files")
            });
        }
Exemplo n.º 14
0
        public override IISFtpOptions Default(Target renewal, IOptionsService optionsService)
        {
            var args   = optionsService.GetArguments <IISFtpArguments>();
            var ret    = new IISFtpOptions();
            var siteId = args.FtpSiteId;

            if (siteId == null)
            {
                throw new Exception($"Missing parameter --{nameof(args.FtpSiteId).ToLower()}");
            }
            // Throws exception when site is not found
            var site = _iisClient.GetFtpSite(siteId.Value);

            ret.SiteId = site.Id;
            return(ret);
        }
Exemplo n.º 15
0
        public override IISSiteOptions Default(IOptionsService optionsService)
        {
            var ret       = new IISSiteOptions();
            var args      = optionsService.GetArguments <IISSiteArguments>();
            var rawSiteId = optionsService.TryGetRequiredOption(nameof(args.SiteId), args.SiteId);

            if (long.TryParse(rawSiteId, out long siteId))
            {
                var site = _helper.GetSites(false, false).FirstOrDefault(binding => binding.Id == siteId);
                if (site != null)
                {
                    ret.SiteId          = site.Id;
                    ret.ExcludeBindings = args.ExcludeBindings.ParseCsv();
                    if (ret.ExcludeBindings != null)
                    {
                        ret.ExcludeBindings = ret.ExcludeBindings.Select(x => x.ConvertPunycode()).ToList();
                    }

                    ret.FriendlyNameSuggestion = $"Site-{ret.SiteId}";
                    var commonName = args.CommonName;
                    if (!string.IsNullOrWhiteSpace(commonName))
                    {
                        commonName = commonName.ToLower().Trim().ConvertPunycode();
                        if (site.Hosts.Contains(commonName) &&
                            (ret.ExcludeBindings == null || !ret.ExcludeBindings.Contains(commonName)))
                        {
                            ret.CommonName = commonName;
                        }
                        else
                        {
                            _log.Error("Common name {commonName} not found or excluded", commonName);
                            return(null);
                        }
                    }
                    return(ret);
                }
                else
                {
                    _log.Error("Unable to find SiteId {siteId}", siteId);
                }
            }
            else
            {
                _log.Error("Invalid SiteId {siteId}", args.SiteId);
            }
            return(null);
        }
Exemplo n.º 16
0
        public override IISWebOptions Default(Target target, IOptionsService optionsService)
        {
            var args = optionsService.GetArguments <IISWebArguments>();
            var ret  = new IISWebOptions(args);

            if (args.InstallationSiteId != null)
            {
                // Throws exception when not found
                var site = _iisClient.GetWebSite(args.InstallationSiteId.Value);
                ret.SiteId = site.Id;
            }
            else if (!target.IIS)
            {
                throw new Exception($"Missing parameter --{nameof(args.InstallationSiteId).ToLower()}");
            }
            return(ret);
        }
Exemplo n.º 17
0
        public override FileSystemOptions Default(Target target, IOptionsService optionsService)
        {
            var args = optionsService.GetArguments <FileSystemArguments>();
            var ret  = new FileSystemOptions(BaseDefault(target, optionsService));

            if (target.IIS && _iisClient.HasWebSites)
            {
                if (args.ValidationSiteId != null)
                {
                    // Throws exception when not found
                    var site = _iisClient.GetWebSite(args.ValidationSiteId.Value);
                    ret.Path   = site.Path;
                    ret.SiteId = args.ValidationSiteId.Value;
                }
            }
            return(ret);
        }
Exemplo n.º 18
0
        public override ManualOptions Default(IOptionsService optionsService)
        {
            var args       = optionsService.GetArguments <ManualArguments>();
            var input      = optionsService.TryGetRequiredOption(nameof(args.Host), args.Host);
            var ret        = Create(input);
            var commonName = args.CommonName;

            if (!string.IsNullOrWhiteSpace(commonName))
            {
                commonName     = commonName.ToLower().Trim().ConvertPunycode();
                ret.CommonName = commonName;
                if (!ret.AlternativeNames.Contains(commonName))
                {
                    ret.AlternativeNames.Insert(0, commonName);
                }
            }
            return(ret);
        }
Exemplo n.º 19
0
        public override ScriptOptions Default(Target target, IOptionsService options)
        {
            var args = options.GetArguments <ScriptArguments>();
            var ret  = new ScriptOptions
            {
                CreateScript = options.TryGetRequiredOption(nameof(args.DnsCreateScript), args.DnsCreateScript),
                DeleteScript = options.TryGetRequiredOption(nameof(args.DnsDeleteScript), args.DnsDeleteScript)
            };

            if (!ret.CreateScript.ValidFile(_log))
            {
                throw new ArgumentException(nameof(args.DnsCreateScript));
            }
            if (!ret.DeleteScript.ValidFile(_log))
            {
                throw new ArgumentException(nameof(args.DnsDeleteScript));
            }
            return(ret);
        }
Exemplo n.º 20
0
        public override CentralSslOptions Default(IOptionsService optionsService)
        {
            var args = optionsService.GetArguments <CentralSslArguments>();
            var path = optionsService.TryGetRequiredOption(nameof(args.CentralSslStore), args.CentralSslStore);

            if (path.ValidPath(_log))
            {
                return(new CentralSslOptions
                {
                    Path = path,
                    KeepExisting = args.KeepExisting,
                    PfxPassword = args.PfxPassword
                });
            }
            else
            {
                throw new Exception("Invalid path specified");
            }
        }
Exemplo n.º 21
0
        public override ScriptOptions Aquire(Target target, IOptionsService optionsService, IInputService inputService, RunLevel runLevel)
        {
            var ret  = new ScriptOptions();
            var args = optionsService.GetArguments <ScriptArguments>();

            inputService.Show("Full instructions", "https://github.com/PKISharp/win-acme/wiki/Install-Script");
            do
            {
                ret.Script = optionsService.TryGetOption(args.Script, inputService, "Enter the path to the script that you want to run after renewal");
            }while (!ret.Script.ValidFile(_log));
            inputService.Show("{0}", "Common name");
            inputService.Show("{1}", ".pfx password");
            inputService.Show("{2}", ".pfx path");
            inputService.Show("{3}", "Store name");
            inputService.Show("{4}", "Friendly name");
            inputService.Show("{5}", "Certificate thumbprint");
            ret.ScriptParameters = optionsService.TryGetOption(args.ScriptParameters, inputService, "Enter the parameter format string for the script, e.g. \"--hostname {0}\"");
            return(ret);
        }
Exemplo n.º 22
0
        /// <summary>
        /// Get webroot automatically
        /// </summary>
        public HttpValidationOptions <TPlugin> BaseDefault(Target target, IOptionsService options)
        {
            string path       = null;
            var    allowEmpty = AllowEmtpy(target);
            var    args       = options.GetArguments <HttpValidationArguments>();

            if (string.IsNullOrEmpty(path) && !allowEmpty)
            {
                path = options.TryGetRequiredOption(nameof(args.WebRoot), args.WebRoot);
            }
            if (!string.IsNullOrEmpty(path) && !PathIsValid(path))
            {
                throw new ArgumentException($"Invalid webroot {path}: {WebrootHint(false)[0]}");
            }
            return(new TOptions
            {
                Path = path,
                CopyWebConfig = target.IIS || args.ManualTargetIsIIS
            });
        }