summaryrefslogtreecommitdiffstats
path: root/src/main.lib/Plugins/ValidationPlugins/Http/FileSystem/FileSystemOptionsFactory.cs
diff options
context:
space:
mode:
authorWouterTinus <wouter.tinus@gmail.com>2019-09-07 01:36:12 +0200
committerWouterTinus <wouter.tinus@gmail.com>2019-09-07 01:36:12 +0200
commit7673fa357a81444cf6c216267dfab4e76684ba5c (patch)
tree73c0bd36e5b6261cd89a168c2a099f6556c59f4d /src/main.lib/Plugins/ValidationPlugins/Http/FileSystem/FileSystemOptionsFactory.cs
parent42aa0faa4de6ea4184cfe1a5830508777418b11a (diff)
downloadletsencrypt-win-simple-7673fa357a81444cf6c216267dfab4e76684ba5c.zip
letsencrypt-win-simple-7673fa357a81444cf6c216267dfab4e76684ba5c.tar.gz
letsencrypt-win-simple-7673fa357a81444cf6c216267dfab4e76684ba5c.tar.bz2
move plugins & re-implement WebDav
Diffstat (limited to 'src/main.lib/Plugins/ValidationPlugins/Http/FileSystem/FileSystemOptionsFactory.cs')
-rw-r--r--src/main.lib/Plugins/ValidationPlugins/Http/FileSystem/FileSystemOptionsFactory.cs69
1 files changed, 69 insertions, 0 deletions
diff --git a/src/main.lib/Plugins/ValidationPlugins/Http/FileSystem/FileSystemOptionsFactory.cs b/src/main.lib/Plugins/ValidationPlugins/Http/FileSystem/FileSystemOptionsFactory.cs
new file mode 100644
index 0000000..ea639d5
--- /dev/null
+++ b/src/main.lib/Plugins/ValidationPlugins/Http/FileSystem/FileSystemOptionsFactory.cs
@@ -0,0 +1,69 @@
+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 readonly IIISClient _iisClient;
+ private readonly ILogService _log;
+
+ public FileSystemOptionsFactory(
+ IIISClient iisClient, ILogService log,
+ IArgumentsService arguments) : base(arguments)
+ {
+ _log = 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)
+ {
+ var args = _arguments.GetArguments<FileSystemArguments>();
+ var ret = new FileSystemOptions(BaseDefault(target));
+ 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;
+ }
+
+ public override FileSystemOptions Aquire(Target target, IInputService inputService, RunLevel runLevel)
+ {
+ // Choose alternative site for validation
+ var ret = new FileSystemOptions(BaseAquire(target, inputService, runLevel));
+ if (target.IIS && _iisClient.HasWebSites && string.IsNullOrEmpty(ret.Path))
+ {
+ if (inputService.PromptYesNo("Use different site for validation?", false))
+ {
+ var site = inputService.ChooseFromList("Validation site, must receive requests for all hosts on port 80",
+ _iisClient.WebSites,
+ x => Choice.Create(x, x.Name, x.Id.ToString()),
+ "Automatic (target site)");
+ if (site != null)
+ {
+ ret.Path = site.Path;
+ ret.SiteId = site.Id;
+ }
+ }
+ }
+ return ret;
+ }
+ }
+
+}