summaryrefslogtreecommitdiffstats
path: root/src/main.lib/Plugins/InstallationPlugins/Script/Script.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.lib/Plugins/InstallationPlugins/Script/Script.cs')
-rw-r--r--src/main.lib/Plugins/InstallationPlugins/Script/Script.cs47
1 files changed, 47 insertions, 0 deletions
diff --git a/src/main.lib/Plugins/InstallationPlugins/Script/Script.cs b/src/main.lib/Plugins/InstallationPlugins/Script/Script.cs
new file mode 100644
index 0000000..65147d2
--- /dev/null
+++ b/src/main.lib/Plugins/InstallationPlugins/Script/Script.cs
@@ -0,0 +1,47 @@
+using PKISharp.WACS.Clients;
+using PKISharp.WACS.DomainObjects;
+using PKISharp.WACS.Plugins.Interfaces;
+using PKISharp.WACS.Services;
+using System.Collections.Generic;
+using System.Linq;
+
+namespace PKISharp.WACS.Plugins.InstallationPlugins
+{
+ internal class Script : ScriptClient, IInstallationPlugin
+ {
+ private readonly Renewal _renewal;
+ private readonly ScriptOptions _options;
+
+ public Script(Renewal renewal, ScriptOptions options, ILogService logService) : base(logService)
+ {
+ _options = options;
+ _renewal = renewal;
+ }
+
+ public void Install(IEnumerable<IStorePlugin> store, CertificateInfo newCertificate, CertificateInfo oldCertificate)
+ {
+ var defaultStoreType = store.First().GetType();
+ var defaultStoreInfo = newCertificate.StoreInfo[defaultStoreType];
+ var parameters = _options.ScriptParameters ?? "";
+ parameters = parameters.Replace("{0}", newCertificate.SubjectName);
+ parameters = parameters.Replace("{1}", _renewal.PfxPassword?.Value);
+ parameters = parameters.Replace("{2}", newCertificate.CacheFile?.FullName);
+ parameters = parameters.Replace("{3}", defaultStoreInfo.Path);
+ parameters = parameters.Replace("{4}", newCertificate.Certificate.FriendlyName);
+ parameters = parameters.Replace("{5}", newCertificate.Certificate.Thumbprint);
+ parameters = parameters.Replace("{6}", newCertificate.CacheFile?.Directory.FullName);
+ parameters = parameters.Replace("{7}", _renewal.Id);
+
+ parameters = parameters.Replace("{CachePassword}", _renewal.PfxPassword?.Value);
+ parameters = parameters.Replace("{CacheFile}", newCertificate.CacheFile?.FullName);
+ parameters = parameters.Replace("{CacheFolder}", newCertificate.CacheFile?.FullName);
+ parameters = parameters.Replace("{CertCommonName}", newCertificate.SubjectName);
+ parameters = parameters.Replace("{CertFriendlyName}", newCertificate.Certificate.FriendlyName);
+ parameters = parameters.Replace("{CertThumbprint}", newCertificate.Certificate.Thumbprint);
+ parameters = parameters.Replace("{StoreType}", defaultStoreInfo.Name);
+ parameters = parameters.Replace("{StorePath}", defaultStoreInfo.Path);
+ parameters = parameters.Replace("{RenewalId}", _renewal.Id);
+ RunScript(_options.Script, parameters);
+ }
+ }
+} \ No newline at end of file