summaryrefslogtreecommitdiffstats
path: root/src/main.lib/Plugins/ValidationPlugins/Dns/Script/Script.cs
diff options
context:
space:
mode:
authorWouter Tinus <wouter.tinus@gmail.com>2020-06-23 20:03:28 +0200
committerWouter Tinus <wouter.tinus@gmail.com>2020-06-23 20:03:28 +0200
commit5a5ed7060e4fd4276fe02ba7655f267b4301546f (patch)
tree1b324ff855994e86e24db29544da9d3957df1de1 /src/main.lib/Plugins/ValidationPlugins/Dns/Script/Script.cs
parent69a8aac8487b14f3af45f4d246ce8ac7ff8c820b (diff)
downloadletsencrypt-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.cs23
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