diff options
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; + } + } + } +} |