diff options
author | Wouter Tinus <wouter.tinus@gmail.com> | 2020-06-23 20:03:28 +0200 |
---|---|---|
committer | Wouter Tinus <wouter.tinus@gmail.com> | 2020-06-23 20:03:28 +0200 |
commit | 5a5ed7060e4fd4276fe02ba7655f267b4301546f (patch) | |
tree | 1b324ff855994e86e24db29544da9d3957df1de1 /src/main.lib/Plugins/ValidationPlugins/Dns/Script/Script.cs | |
parent | 69a8aac8487b14f3af45f4d246ce8ac7ff8c820b (diff) | |
download | letsencrypt-win-simple-5a5ed7060e4fd4276fe02ba7655f267b4301546f.zip letsencrypt-win-simple-5a5ed7060e4fd4276fe02ba7655f267b4301546f.tar.gz letsencrypt-win-simple-5a5ed7060e4fd4276fe02ba7655f267b4301546f.tar.bz2 |
fixes #1586
Diffstat (limited to 'src/main.lib/Plugins/ValidationPlugins/Dns/Script/Script.cs')
-rw-r--r-- | src/main.lib/Plugins/ValidationPlugins/Dns/Script/Script.cs | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/src/main.lib/Plugins/ValidationPlugins/Dns/Script/Script.cs b/src/main.lib/Plugins/ValidationPlugins/Dns/Script/Script.cs index dd263b1..222a7d2 100644 --- a/src/main.lib/Plugins/ValidationPlugins/Dns/Script/Script.cs +++ b/src/main.lib/Plugins/ValidationPlugins/Dns/Script/Script.cs @@ -1,6 +1,5 @@ using PKISharp.WACS.Clients; using PKISharp.WACS.Clients.DNS; -using PKISharp.WACS.Context; using PKISharp.WACS.Services; using System.Threading.Tasks; @@ -10,7 +9,7 @@ namespace PKISharp.WACS.Plugins.ValidationPlugins.Dns { private readonly ScriptClient _scriptClient; private readonly ScriptOptions _options; - + private readonly DomainParseService _domainParseService; internal const string DefaultCreateArguments = "create {Identifier} {RecordName} {Token}"; internal const string DefaultDeleteArguments = "delete {Identifier} {RecordName} {Token}"; @@ -19,11 +18,13 @@ namespace PKISharp.WACS.Plugins.ValidationPlugins.Dns LookupClientProvider dnsClient, ScriptClient client, ILogService log, + DomainParseService domainParseService, ISettingsService settings) : base(dnsClient, log, settings) { _options = options; _scriptClient = client; + _domainParseService = domainParseService; } public override async Task<bool> CreateRecord(DnsValidationRecord record) @@ -81,8 +82,26 @@ namespace PKISharp.WACS.Plugins.ValidationPlugins.Dns private string ProcessArguments(string identifier, string recordName, string token, string args, bool escapeToken) { var ret = args; + // recordName: _acme-challenge.sub.domain.com + // zoneName: domain.com + // nodeName: _acme-challenge.sub + + // recordName: domain.com + // zoneName: domain.com + // nodeName: @ + + var zoneName = _domainParseService.GetRegisterableDomain(identifier); + var nodeName = "@"; + if (recordName != zoneName) + { + // Offset by one to prevent trailing dot + nodeName = recordName.Substring(0, recordName.Length - zoneName.Length - 1); + } + ret = ret.Replace("{ZoneName}", zoneName); + ret = ret.Replace("{NodeName}", nodeName); ret = ret.Replace("{Identifier}", identifier); ret = ret.Replace("{RecordName}", recordName); + // Some tokens start with - which confuses Powershell. We did not want to // make a breaking change for .bat or .exe files, so instead escape the // token with double quotes, as Powershell discards the quotes anyway and |