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/TargetPlugins/Manual/ManualOptionsFactory.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/TargetPlugins/Manual/ManualOptionsFactory.cs')
-rw-r--r-- | src/main/Plugins/TargetPlugins/Manual/ManualOptionsFactory.cs | 60 |
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; + } + } + } +} |