diff options
author | WouterTinus <wouter.tinus@gmail.com> | 2019-01-10 09:07:19 +0100 |
---|---|---|
committer | WouterTinus <wouter.tinus@gmail.com> | 2019-01-10 09:07:19 +0100 |
commit | 43c1d305e335e7af46ca63e849c9da514bb9302a (patch) | |
tree | 23280b39f20511005606460913fa9e8cec75bacf /src/main/Plugins/ValidationPlugins/Http/FileSystem/FileSystemOptionsFactory.cs | |
parent | 45003b931b04e21f7a1c9a592e9d87449bf7887e (diff) | |
download | letsencrypt-win-simple-43c1d305e335e7af46ca63e849c9da514bb9302a.zip letsencrypt-win-simple-43c1d305e335e7af46ca63e849c9da514bb9302a.tar.gz letsencrypt-win-simple-43c1d305e335e7af46ca63e849c9da514bb9302a.tar.bz2 |
Move plugins in preparation for argument splitting
Diffstat (limited to 'src/main/Plugins/ValidationPlugins/Http/FileSystem/FileSystemOptionsFactory.cs')
-rw-r--r-- | src/main/Plugins/ValidationPlugins/Http/FileSystem/FileSystemOptionsFactory.cs | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/src/main/Plugins/ValidationPlugins/Http/FileSystem/FileSystemOptionsFactory.cs b/src/main/Plugins/ValidationPlugins/Http/FileSystem/FileSystemOptionsFactory.cs new file mode 100644 index 0000000..b16f705 --- /dev/null +++ b/src/main/Plugins/ValidationPlugins/Http/FileSystem/FileSystemOptionsFactory.cs @@ -0,0 +1,61 @@ +using Microsoft.Web.Administration; +using PKISharp.WACS.Clients.IIS; +using PKISharp.WACS.DomainObjects; +using PKISharp.WACS.Extensions; +using PKISharp.WACS.Services; + +namespace PKISharp.WACS.Plugins.ValidationPlugins.Http +{ + /// <summary> + /// Classic FileSystem validation + /// </summary> + internal class FileSystemOptionsFactory : HttpValidationOptionsFactory<FileSystem, FileSystemOptions> + { + private IIISClient _iisClient; + + public FileSystemOptionsFactory(IIISClient iisClient, ILogService log) : base(log) + { + _iisClient = iisClient; + } + public override bool PathIsValid(string path) => path.ValidPath(_log); + public override bool AllowEmtpy(Target target) => target.IIS; + + public override FileSystemOptions Default(Target target, IOptionsService optionsService) + { + var ret = new FileSystemOptions(BaseDefault(target, optionsService)); + if (target.IIS == true && _iisClient.HasWebSites) + { + var validationSiteId = optionsService.TryGetLong(nameof(optionsService.MainArguments.ValidationSiteId), optionsService.MainArguments.ValidationSiteId); + if (validationSiteId != null) + { + var site = _iisClient.GetWebSite(validationSiteId.Value); // Throws exception when not found + ret.Path = site.Path; + ret.SiteId = validationSiteId; + } + } + return ret; + } + + public override FileSystemOptions Aquire(Target target, IOptionsService optionsService, IInputService inputService, RunLevel runLevel) + { + // Choose alternative site for validation + var ret = new FileSystemOptions(BaseAquire(target, optionsService, inputService, runLevel)); + if (target.IIS && _iisClient.HasWebSites && string.IsNullOrEmpty(ret.Path)) + { + if (inputService.PromptYesNo("Use different site for validation?")) + { + var site = inputService.ChooseFromList("Validation site, must receive requests for all hosts on port 80", + _iisClient.WebSites, + x => new Choice<IIISSite>(x) { Command = x.Id.ToString(), Description = x.Name }, true); + if (site != null) + { + ret.Path = site.Path; + ret.SiteId = site.Id; + } + } + } + return ret; + } + } + +} |