diff options
Diffstat (limited to 'src/main.lib/Plugins/OrderPlugins/Host')
-rw-r--r-- | src/main.lib/Plugins/OrderPlugins/Host/Host.cs | 39 | ||||
-rw-r--r-- | src/main.lib/Plugins/OrderPlugins/Host/HostOptions.cs | 12 | ||||
-rw-r--r-- | src/main.lib/Plugins/OrderPlugins/Host/HostOptionsFactory.cs | 14 |
3 files changed, 65 insertions, 0 deletions
diff --git a/src/main.lib/Plugins/OrderPlugins/Host/Host.cs b/src/main.lib/Plugins/OrderPlugins/Host/Host.cs new file mode 100644 index 0000000..7cc3f29 --- /dev/null +++ b/src/main.lib/Plugins/OrderPlugins/Host/Host.cs @@ -0,0 +1,39 @@ +using PKISharp.WACS.DomainObjects; +using PKISharp.WACS.Extensions; +using PKISharp.WACS.Plugins.Interfaces; +using System.Collections.Generic; +using System.Linq; + +namespace PKISharp.WACS.Plugins.OrderPlugins +{ + class Host : IOrderPlugin + { + public IEnumerable<Order> Split(Renewal renewal, Target target) + { + var ret = new List<Order>(); + var seen = new List<string>(); + foreach (var part in target.Parts) + { + foreach (var host in part.GetHosts(true)) + { + if (!seen.Contains(host)) + { + var parts = target.Parts.Where(p => p.GetHosts(true).Contains(host)); + var newTarget = new Target( + target.FriendlyName ?? "", + host, + parts.Select(p => new TargetPart(new List<string> { host }) { SiteId = p.SiteId })); + var newOrder = new Order( + renewal, + newTarget, + friendlyNamePart: host, + cacheKeyPart: $"{host}|{part.SiteId ?? -1}"); + ret.Add(newOrder); + seen.Add(host); + } + } + } + return ret; + } + } +} diff --git a/src/main.lib/Plugins/OrderPlugins/Host/HostOptions.cs b/src/main.lib/Plugins/OrderPlugins/Host/HostOptions.cs new file mode 100644 index 0000000..f68a887 --- /dev/null +++ b/src/main.lib/Plugins/OrderPlugins/Host/HostOptions.cs @@ -0,0 +1,12 @@ +using PKISharp.WACS.Plugins.Base; +using PKISharp.WACS.Plugins.Base.Options; + +namespace PKISharp.WACS.Plugins.OrderPlugins +{ + [Plugin("874a86e4-29c7-4294-9ab6-6908866847a0")] + internal class HostOptions : OrderPluginOptions<Host> + { + public override string Name => "Host"; + public override string Description => "Seperate certificate for each host"; + } +} diff --git a/src/main.lib/Plugins/OrderPlugins/Host/HostOptionsFactory.cs b/src/main.lib/Plugins/OrderPlugins/Host/HostOptionsFactory.cs new file mode 100644 index 0000000..719f1eb --- /dev/null +++ b/src/main.lib/Plugins/OrderPlugins/Host/HostOptionsFactory.cs @@ -0,0 +1,14 @@ +using PKISharp.WACS.DomainObjects; +using PKISharp.WACS.Plugins.Base.Factories; +using PKISharp.WACS.Services; +using System.Threading.Tasks; + +namespace PKISharp.WACS.Plugins.OrderPlugins +{ + class HostOptionsFactory : OrderPluginOptionsFactory<Host, HostOptions> + { + public override bool CanProcess(Target target) => true; + public override Task<HostOptions> Aquire(IInputService inputService, RunLevel runLevel) => Default(); + public override Task<HostOptions> Default() => Task.FromResult(new HostOptions()); + } +} |