summaryrefslogtreecommitdiffstats
path: root/src/main/Plugins/TargetPlugins/Manual/ManualOptionsFactory.cs
diff options
context:
space:
mode:
authorWouterTinus <wouter.tinus@gmail.com>2019-01-10 09:07:19 +0100
committerWouterTinus <wouter.tinus@gmail.com>2019-01-10 09:07:19 +0100
commit43c1d305e335e7af46ca63e849c9da514bb9302a (patch)
tree23280b39f20511005606460913fa9e8cec75bacf /src/main/Plugins/TargetPlugins/Manual/ManualOptionsFactory.cs
parent45003b931b04e21f7a1c9a592e9d87449bf7887e (diff)
downloadletsencrypt-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/TargetPlugins/Manual/ManualOptionsFactory.cs')
-rw-r--r--src/main/Plugins/TargetPlugins/Manual/ManualOptionsFactory.cs60
1 files changed, 60 insertions, 0 deletions
diff --git a/src/main/Plugins/TargetPlugins/Manual/ManualOptionsFactory.cs b/src/main/Plugins/TargetPlugins/Manual/ManualOptionsFactory.cs
new file mode 100644
index 0000000..4e82150
--- /dev/null
+++ b/src/main/Plugins/TargetPlugins/Manual/ManualOptionsFactory.cs
@@ -0,0 +1,60 @@
+using PKISharp.WACS.Extensions;
+using PKISharp.WACS.Plugins.Base.Factories;
+using PKISharp.WACS.Services;
+using System.Linq;
+
+namespace PKISharp.WACS.Plugins.TargetPlugins
+{
+ internal class ManualOptionsFactory : TargetPluginOptionsFactory<Manual, ManualOptions>
+ {
+ public ManualOptionsFactory(ILogService log) : base(log) { }
+
+ public override ManualOptions Aquire(IOptionsService optionsService, IInputService inputService, RunLevel runLevel)
+ {
+ var input = inputService.RequestString("Enter comma-separated list of host names, starting with the common name");
+ if (string.IsNullOrEmpty(input))
+ {
+ return null;
+ }
+ else
+ {
+ return Create(input);
+ }
+ }
+
+ public override ManualOptions Default(IOptionsService optionsService)
+ {
+ var input = optionsService.TryGetRequiredOption(nameof(optionsService.MainArguments.Host), optionsService.MainArguments.Host);
+ var ret = Create(input);
+ var commonName = optionsService.MainArguments.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;
+ }
+
+ private ManualOptions Create(string input)
+ {
+ var sanList = input.ParseCsv().Select(x => x.ConvertPunycode());
+ if (sanList != null)
+ {
+ return new ManualOptions()
+ {
+ FriendlyNameSuggestion = sanList.First(),
+ CommonName = sanList.First(),
+ AlternativeNames = sanList.ToList()
+ };
+ }
+ else
+ {
+ return null;
+ }
+ }
+ }
+}