mirror of
				https://github.com/therootcompany/acme.js.git
				synced 2024-11-16 17:29:00 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			125 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			125 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| // Copyright 2018 AJ ONeal. All rights reserved
 | |
| /* This Source Code Form is subject to the terms of the Mozilla Public
 | |
|  * License, v. 2.0. If a copy of the MPL was not distributed with this
 | |
|  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 | |
| 'use strict';
 | |
| 
 | |
| /* global Promise */
 | |
| module.exports.run = function run(
 | |
| 	directoryUrl,
 | |
| 	RSA,
 | |
| 	web,
 | |
| 	chType,
 | |
| 	email,
 | |
| 	accountKeypair,
 | |
| 	domainKeypair
 | |
| ) {
 | |
| 	var acme2 = require('../').ACME.create({ RSA: RSA });
 | |
| 	// [ 'test.ppl.family' ] 'coolaj86@gmail.com''http-01'
 | |
| 	acme2.init(directoryUrl).then(function() {
 | |
| 		var options = {
 | |
| 			agreeToTerms: function(tosUrl) {
 | |
| 				return Promise.resolve(tosUrl);
 | |
| 			},
 | |
| 			setChallenge: function(opts) {
 | |
| 				return new Promise(function(resolve, reject) {
 | |
| 					var pathname;
 | |
| 
 | |
| 					console.log('');
 | |
| 					console.log('identifier:');
 | |
| 					console.log(opts.identifier);
 | |
| 					console.log('hostname:');
 | |
| 					console.log(opts.hostname);
 | |
| 					console.log('type:');
 | |
| 					console.log(opts.type);
 | |
| 					console.log('token:');
 | |
| 					console.log(opts.token);
 | |
| 					console.log('thumbprint:');
 | |
| 					console.log(opts.thumbprint);
 | |
| 					console.log('keyAuthorization:');
 | |
| 					console.log(opts.keyAuthorization);
 | |
| 					console.log('dnsAuthorization:');
 | |
| 					console.log(opts.dnsAuthorization);
 | |
| 					console.log('');
 | |
| 
 | |
| 					if ('http-01' === opts.type) {
 | |
| 						pathname =
 | |
| 							opts.hostname +
 | |
| 							acme2.challengePrefixes['http-01'] +
 | |
| 							'/' +
 | |
| 							opts.token;
 | |
| 						console.log(
 | |
| 							"Put the string '" +
 | |
| 								opts.keyAuthorization +
 | |
| 								"' into a file at '" +
 | |
| 								pathname +
 | |
| 								"'"
 | |
| 						);
 | |
| 						console.log(
 | |
| 							"echo '" + opts.keyAuthorization + "' > '" + pathname + "'"
 | |
| 						);
 | |
| 					} else if ('dns-01' === opts.type) {
 | |
| 						pathname =
 | |
| 							acme2.challengePrefixes['dns-01'] +
 | |
| 							'.' +
 | |
| 							opts.hostname.replace(/^\*\./, '');
 | |
| 						console.log(
 | |
| 							"Put the string '" +
 | |
| 								opts.dnsAuthorization +
 | |
| 								"' into the TXT record '" +
 | |
| 								pathname +
 | |
| 								"'"
 | |
| 						);
 | |
| 						console.log(
 | |
| 							'dig TXT ' + pathname + " '" + opts.dnsAuthorization + "'"
 | |
| 						);
 | |
| 					} else {
 | |
| 						reject(new Error('[acme-v2] unrecognized challenge type'));
 | |
| 						return;
 | |
| 					}
 | |
| 					console.log("\nThen hit the 'any' key to continue...");
 | |
| 
 | |
| 					function onAny() {
 | |
| 						console.log("'any' key was hit");
 | |
| 						process.stdin.pause();
 | |
| 						process.stdin.removeListener('data', onAny);
 | |
| 						process.stdin.setRawMode(false);
 | |
| 						resolve();
 | |
| 						return;
 | |
| 					}
 | |
| 
 | |
| 					process.stdin.setRawMode(true);
 | |
| 					process.stdin.resume();
 | |
| 					process.stdin.on('data', onAny);
 | |
| 				});
 | |
| 			},
 | |
| 			removeChallenge: function(opts) {
 | |
| 				console.log(
 | |
| 					'[acme-v2] remove challenge',
 | |
| 					opts.hostname,
 | |
| 					opts.keyAuthorization
 | |
| 				);
 | |
| 				return new Promise(function(resolve) {
 | |
| 					// hostname, key
 | |
| 					setTimeout(resolve, 1 * 1000);
 | |
| 				});
 | |
| 			},
 | |
| 			challengeType: chType,
 | |
| 			email: email,
 | |
| 			accountKeypair: accountKeypair,
 | |
| 			domainKeypair: domainKeypair,
 | |
| 			domains: web
 | |
| 		};
 | |
| 
 | |
| 		acme2.accounts.create(options).then(function(account) {
 | |
| 			console.log('[acme-v2] account:');
 | |
| 			console.log(account);
 | |
| 
 | |
| 			acme2.certificates.create(options).then(function(fullchainPem) {
 | |
| 				console.log('[acme-v2] fullchain.pem:');
 | |
| 				console.log(fullchainPem);
 | |
| 			});
 | |
| 		});
 | |
| 	});
 | |
| };
 |