summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWouter Tinus <wouter.tinus@gmail.com>2019-10-14 19:51:29 +0200
committerGitHub <noreply@github.com>2019-10-14 19:51:29 +0200
commit4be426d324120fbc11ae2c1aee2a23c40bd7953f (patch)
tree75c43063b38d531d4685828a33c0fa0254cb1951
parentc2668109b75036e7968a280d7c00f5b450ccdc29 (diff)
parent3b373dd8026f8ba971a79a9c28948e418e4d5c55 (diff)
downloadletsencrypt-win-simple-4be426d324120fbc11ae2c1aee2a23c40bd7953f.zip
letsencrypt-win-simple-4be426d324120fbc11ae2c1aee2a23c40bd7953f.tar.gz
letsencrypt-win-simple-4be426d324120fbc11ae2c1aee2a23c40bd7953f.tar.bz2
Merge pull request #1229 from Jaecen/optional-prevalidation
Make DNS pre-validation a configuration option
-rw-r--r--docs/reference/settings.md6
-rw-r--r--src/main.lib/Plugins/ValidationPlugins/Dns/Acme/Acme.cs4
-rw-r--r--src/main.lib/Plugins/ValidationPlugins/Dns/DnsValidation.cs9
-rw-r--r--src/main.lib/Plugins/ValidationPlugins/Dns/Manual/Manual.cs8
-rw-r--r--src/main.lib/Plugins/ValidationPlugins/Dns/Script/Script.cs3
-rw-r--r--src/main.lib/Services/SettingsService.cs6
-rw-r--r--src/main/settings.json1
-rw-r--r--src/plugin.validation.dns.azure/Azure.cs8
-rw-r--r--src/plugin.validation.dns.dreamhost/DreamhostDnsValidation.cs8
-rw-r--r--src/plugin.validation.dns.route53/Route53.cs7
10 files changed, 49 insertions, 11 deletions
diff --git a/docs/reference/settings.md b/docs/reference/settings.md
index 9dabba4..bcff439 100644
--- a/docs/reference/settings.md
+++ b/docs/reference/settings.md
@@ -247,6 +247,12 @@ Default: `true`
If set to `true`, it will cleanup the folder structure and files it creates
under the site for authorization.
+### `PrevalidateDns`
+Default: `true`
+
+If set to `true`, it will wait until it can verify that the validation record
+has been created and is available before beginning DNS validation.
+
### `DnsServers`
Default: `[ "8.8.8.8", "1.1.1.1", "8.8.4.4" ]`
diff --git a/src/main.lib/Plugins/ValidationPlugins/Dns/Acme/Acme.cs b/src/main.lib/Plugins/ValidationPlugins/Dns/Acme/Acme.cs
index f5ab732..819d0d6 100644
--- a/src/main.lib/Plugins/ValidationPlugins/Dns/Acme/Acme.cs
+++ b/src/main.lib/Plugins/ValidationPlugins/Dns/Acme/Acme.cs
@@ -7,7 +7,6 @@ namespace PKISharp.WACS.Plugins.ValidationPlugins.Dns
{
internal class Acme : DnsValidation<Acme>
{
- private readonly ISettingsService _settings;
private readonly IInputService _input;
private readonly ProxyService _proxy;
private readonly AcmeOptions _options;
@@ -21,11 +20,10 @@ namespace PKISharp.WACS.Plugins.ValidationPlugins.Dns
ProxyService proxy,
AcmeOptions options,
string identifier) :
- base(dnsClient, log)
+ base(dnsClient, log, settings)
{
_options = options;
_identifier = identifier;
- _settings = settings;
_input = input;
_proxy = proxy;
}
diff --git a/src/main.lib/Plugins/ValidationPlugins/Dns/DnsValidation.cs b/src/main.lib/Plugins/ValidationPlugins/Dns/DnsValidation.cs
index 30bf630..6c186f4 100644
--- a/src/main.lib/Plugins/ValidationPlugins/Dns/DnsValidation.cs
+++ b/src/main.lib/Plugins/ValidationPlugins/Dns/DnsValidation.cs
@@ -16,11 +16,16 @@ namespace PKISharp.WACS.Plugins.ValidationPlugins
{
protected readonly LookupClientProvider _dnsClientProvider;
protected readonly ILogService _log;
+ protected readonly ISettingsService _settings;
- protected DnsValidation(LookupClientProvider dnsClient, ILogService log)
+ protected DnsValidation(
+ LookupClientProvider dnsClient,
+ ILogService log,
+ ISettingsService settings)
{
_dnsClientProvider = dnsClient;
_log = log;
+ _settings = settings;
}
public override async Task PrepareChallenge()
@@ -33,7 +38,7 @@ namespace PKISharp.WACS.Plugins.ValidationPlugins
var retry = 0;
var maxRetries = 5;
var retrySeconds = 30;
- while (true)
+ while (_settings.Validation.PrevalidateDns)
{
if (await PreValidate(retry))
{
diff --git a/src/main.lib/Plugins/ValidationPlugins/Dns/Manual/Manual.cs b/src/main.lib/Plugins/ValidationPlugins/Dns/Manual/Manual.cs
index f197e18..d9fc670 100644
--- a/src/main.lib/Plugins/ValidationPlugins/Dns/Manual/Manual.cs
+++ b/src/main.lib/Plugins/ValidationPlugins/Dns/Manual/Manual.cs
@@ -10,8 +10,12 @@ namespace PKISharp.WACS.Plugins.ValidationPlugins.Dns
private readonly string _identifier;
public Manual(
- LookupClientProvider dnsClient, ILogService log,
- IInputService input, string identifier) : base(dnsClient, log)
+ LookupClientProvider dnsClient,
+ ILogService log,
+ IInputService input,
+ ISettingsService settings,
+ string identifier)
+ : base(dnsClient, log, settings)
{
// Usually it's a big no-no to rely on user input in validation plugin
// because this should be able to run unattended. This plugin is for testing
diff --git a/src/main.lib/Plugins/ValidationPlugins/Dns/Script/Script.cs b/src/main.lib/Plugins/ValidationPlugins/Dns/Script/Script.cs
index 9782193..267849b 100644
--- a/src/main.lib/Plugins/ValidationPlugins/Dns/Script/Script.cs
+++ b/src/main.lib/Plugins/ValidationPlugins/Dns/Script/Script.cs
@@ -18,8 +18,9 @@ namespace PKISharp.WACS.Plugins.ValidationPlugins.Dns
ScriptOptions options,
LookupClientProvider dnsClient,
ILogService log,
+ ISettingsService settings,
string identifier) :
- base(dnsClient, log)
+ base(dnsClient, log, settings)
{
_identifier = identifier;
_options = options;
diff --git a/src/main.lib/Services/SettingsService.cs b/src/main.lib/Services/SettingsService.cs
index ed5e12c..dafa4f6 100644
--- a/src/main.lib/Services/SettingsService.cs
+++ b/src/main.lib/Services/SettingsService.cs
@@ -390,6 +390,12 @@ namespace PKISharp.WACS.Services
/// </summary>
public bool CleanupFolders { get; set; }
/// <summary>
+ /// If set to `true`, it will wait until it can verify that the
+ /// validation record has been created and is available before
+ /// beginning DNS validation.
+ /// </summary>
+ public bool PrevalidateDns { get; set; }
+ /// <summary>
/// A comma seperated list of servers to query during DNS
/// prevalidation checks to verify whether or not the validation
/// record has been properly created and is visible for the world.
diff --git a/src/main/settings.json b/src/main/settings.json
index 3b01184..ee38595 100644
--- a/src/main/settings.json
+++ b/src/main/settings.json
@@ -52,6 +52,7 @@
},
"Validation": {
"CleanupFolders": true,
+ "PrevalidateDns": true,
"DnsServers": [ "8.8.8.8", "1.1.1.1", "8.8.4.4" ]
},
"Store": {
diff --git a/src/plugin.validation.dns.azure/Azure.cs b/src/plugin.validation.dns.azure/Azure.cs
index 912bc0f..b13004a 100644
--- a/src/plugin.validation.dns.azure/Azure.cs
+++ b/src/plugin.validation.dns.azure/Azure.cs
@@ -14,7 +14,13 @@ namespace PKISharp.WACS.Plugins.ValidationPlugins.Dns
private DnsManagementClient _azureDnsClient;
private readonly AzureOptions _options;
- public Azure(AzureOptions options, LookupClientProvider dnsClient, ILogService log) : base(dnsClient, log) => _options = options;
+ public Azure(
+ AzureOptions options,
+ LookupClientProvider dnsClient,
+ ILogService log,
+ ISettingsService settings)
+ : base(dnsClient, log, settings)
+ => _options = options;
public override async Task CreateRecord(string recordName, string token)
{
diff --git a/src/plugin.validation.dns.dreamhost/DreamhostDnsValidation.cs b/src/plugin.validation.dns.dreamhost/DreamhostDnsValidation.cs
index 8288f7a..8c971b5 100644
--- a/src/plugin.validation.dns.dreamhost/DreamhostDnsValidation.cs
+++ b/src/plugin.validation.dns.dreamhost/DreamhostDnsValidation.cs
@@ -9,7 +9,13 @@ namespace PKISharp.WACS.Plugins.ValidationPlugins
{
private readonly DnsManagementClient _client;
- public DreamhostDnsValidation(LookupClientProvider dnsClient, ILogService logService, DreamhostOptions options) : base(dnsClient, logService) => _client = new DnsManagementClient(options.ApiKey.Value, logService);
+ public DreamhostDnsValidation(
+ LookupClientProvider dnsClient,
+ ILogService logService,
+ ISettingsService settings,
+ DreamhostOptions options)
+ : base(dnsClient, logService, settings)
+ => _client = new DnsManagementClient(options.ApiKey.Value, logService);
public override Task CreateRecord(string recordName, string token) => _client.CreateRecord(recordName, RecordType.TXT, token);
diff --git a/src/plugin.validation.dns.route53/Route53.cs b/src/plugin.validation.dns.route53/Route53.cs
index c756270..de67819 100644
--- a/src/plugin.validation.dns.route53/Route53.cs
+++ b/src/plugin.validation.dns.route53/Route53.cs
@@ -16,7 +16,12 @@ namespace PKISharp.WACS.Plugins.ValidationPlugins.Dns
{
private readonly IAmazonRoute53 _route53Client;
- public Route53(LookupClientProvider dnsClient, ILogService log, Route53Options options) : base(dnsClient, log)
+ public Route53(
+ LookupClientProvider dnsClient,
+ ILogService log,
+ ISettingsService settings,
+ Route53Options options)
+ : base(dnsClient, log, settings)
{
var region = RegionEndpoint.USEast1;
_route53Client = !string.IsNullOrWhiteSpace(options.IAMRole)