Преглед изворни кода

Adds special case for Route53

chaptergy пре 5 година
родитељ
комит
049e424957
2 измењених фајлова са 23 додато и 4 уклоњено
  1. 20 3
      backend/internal/certificate.js
  2. 3 1
      global/certbot-dns-plugins.js

+ 20 - 3
backend/internal/certificate.js

@@ -792,20 +792,32 @@ const internalCertificate = {
 		const credentials_cmd = 'echo \'' + certificate.meta.dns_provider_credentials.replace('\'', '\\\'') + '\' > \'' + credentials_loc + '\' && chmod 600 \'' + credentials_loc + '\'';
 		const prepare_cmd     = 'pip3 install ' + dns_plugin.package_name + '==' + dns_plugin.package_version;
 
-		const main_cmd = 
+		// Whether the plugin has a --<name>-credentials argument
+		const has_config_arg = certificate.meta.dns_provider !== 'route53';
+
+		let main_cmd = 
 			certbot_command + ' certonly --non-interactive ' +
 			'--cert-name "npm-' + certificate.id + '" ' +
 			'--agree-tos ' +
 			'--email "' + certificate.meta.letsencrypt_email + '" ' +			
 			'--domains "' + certificate.domain_names.join(',') + '" ' +
 			'--authenticator ' + dns_plugin.full_plugin_name + ' ' +
-			'--' + dns_plugin.full_plugin_name + '-credentials "' + credentials_loc + '"' +
+			(
+				has_config_arg 
+					? '--' + dns_plugin.full_plugin_name + '-credentials "' + credentials_loc + '"' 
+					: ''
+			) +
 			(
 				certificate.meta.propagation_seconds !== undefined 
 					? ' --' + dns_plugin.full_plugin_name + '-propagation-seconds ' + certificate.meta.propagation_seconds 
 					: ''
 			) +
 			(le_staging ? ' --staging' : '');
+
+			// Prepend the path to the credentials file as an environment variable
+			if (certificate.meta.dns_provider === 'route53') {
+				main_cmd = 'AWS_CONFIG_FILE=\'' + credentials_loc + '\' ' + main_cmd
+			}
 		
 		const teardown_cmd = `rm '${credentials_loc}'`;
 
@@ -914,12 +926,17 @@ const internalCertificate = {
 		const credentials_cmd = 'echo \'' + certificate.meta.dns_provider_credentials.replace('\'', '\\\'') + '\' > \'' + credentials_loc + '\' && chmod 600 \'' + credentials_loc + '\'';
 		const prepare_cmd     = 'pip3 install ' + dns_plugin.package_name + '==' + dns_plugin.package_version;
 
-		const main_cmd =
+		let main_cmd = 
 			certbot_command + ' renew --non-interactive ' +
 			'--cert-name "npm-' + certificate.id + '" ' +
 			'--disable-hook-validation' +
 			(le_staging ? ' --staging' : '');
 
+		// Prepend the path to the credentials file as an environment variable
+		if (certificate.meta.dns_provider === 'route53') {
+			main_cmd = 'AWS_CONFIG_FILE=\'' + credentials_loc + '\' ' + main_cmd
+		}
+
 		const teardown_cmd = `rm '${credentials_loc}'`;
 
 		if (debug_mode) {

+ 3 - 1
global/certbot-dns-plugins.js

@@ -235,7 +235,9 @@ dns_rfc2136_algorithm = HMAC-SHA512`,
     display_name: "Route 53 (Amazon)",
     package_name: "certbot-dns-route53",
     package_version: "1.8.0",
-    credentials: false,
+    credentials: `[default]
+aws_access_key_id=AKIAIOSFODNN7EXAMPLE
+aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY`,
     full_plugin_name: "dns-route53",
   },
   //####################################################//