summaryrefslogtreecommitdiffstats
path: root/src/main.lib/Plugins/OrderPlugins/Host
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.lib/Plugins/OrderPlugins/Host')
-rw-r--r--src/main.lib/Plugins/OrderPlugins/Host/Host.cs39
-rw-r--r--src/main.lib/Plugins/OrderPlugins/Host/HostOptions.cs12
-rw-r--r--src/main.lib/Plugins/OrderPlugins/Host/HostOptionsFactory.cs14
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());
+ }
+}