| 
									
										
										
										
											2018-12-16 21:19:20 -07:00
										 |  |  | // 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/. */
 | 
					
						
							| 
									
										
										
										
											2018-04-05 01:31:57 -06:00
										 |  |  | 'use strict'; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-13 01:55:25 -06:00
										 |  |  | module.exports.run = function run( | 
					
						
							|  |  |  | 	directoryUrl, | 
					
						
							|  |  |  | 	RSA, | 
					
						
							|  |  |  | 	web, | 
					
						
							|  |  |  | 	chType, | 
					
						
							|  |  |  | 	email, | 
					
						
							|  |  |  | 	accountKeypair, | 
					
						
							|  |  |  | 	domainKeypair | 
					
						
							|  |  |  | ) { | 
					
						
							|  |  |  | 	// [ 'test.ppl.family' ] 'coolaj86@gmail.com''http-01'
 | 
					
						
							|  |  |  | 	var acme2 = require('../').ACME.create({ RSA: RSA }); | 
					
						
							|  |  |  | 	acme2.init(directoryUrl).then(function() { | 
					
						
							|  |  |  | 		var options = { | 
					
						
							|  |  |  | 			agreeToTerms: function(tosUrl, agree) { | 
					
						
							|  |  |  | 				agree(null, tosUrl); | 
					
						
							|  |  |  | 			}, | 
					
						
							|  |  |  | 			setChallenge: function(opts, cb) { | 
					
						
							|  |  |  | 				var pathname; | 
					
						
							| 
									
										
										
										
											2018-04-05 01:31:57 -06:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-13 01:55:25 -06:00
										 |  |  | 				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(''); | 
					
						
							| 
									
										
										
										
											2018-04-05 01:31:57 -06:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-13 01:55:25 -06:00
										 |  |  | 				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( | 
					
						
							|  |  |  | 						'ddig TXT ' + pathname + " '" + opts.dnsAuthorization + "'" | 
					
						
							|  |  |  | 					); | 
					
						
							|  |  |  | 				} else { | 
					
						
							|  |  |  | 					cb(new Error('[acme-v2] unrecognized challenge type')); | 
					
						
							|  |  |  | 					return; | 
					
						
							|  |  |  | 				} | 
					
						
							|  |  |  | 				console.log("\nThen hit the 'any' key to continue..."); | 
					
						
							| 
									
										
										
										
											2018-04-05 01:31:57 -06:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-13 01:55:25 -06:00
										 |  |  | 				function onAny() { | 
					
						
							|  |  |  | 					console.log("'any' key was hit"); | 
					
						
							|  |  |  | 					process.stdin.pause(); | 
					
						
							|  |  |  | 					process.stdin.removeListener('data', onAny); | 
					
						
							|  |  |  | 					process.stdin.setRawMode(false); | 
					
						
							|  |  |  | 					cb(); | 
					
						
							|  |  |  | 				} | 
					
						
							| 
									
										
										
										
											2018-04-05 02:13:20 -06:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-13 01:55:25 -06:00
										 |  |  | 				process.stdin.setRawMode(true); | 
					
						
							|  |  |  | 				process.stdin.resume(); | 
					
						
							|  |  |  | 				process.stdin.on('data', onAny); | 
					
						
							|  |  |  | 			}, | 
					
						
							|  |  |  | 			removeChallenge: function(opts, cb) { | 
					
						
							|  |  |  | 				// hostname, key
 | 
					
						
							|  |  |  | 				console.log( | 
					
						
							|  |  |  | 					'[acme-v2] remove challenge', | 
					
						
							|  |  |  | 					opts.hostname, | 
					
						
							|  |  |  | 					opts.keyAuthorization | 
					
						
							|  |  |  | 				); | 
					
						
							|  |  |  | 				setTimeout(cb, 1 * 1000); | 
					
						
							|  |  |  | 			}, | 
					
						
							|  |  |  | 			challengeType: chType, | 
					
						
							|  |  |  | 			email: email, | 
					
						
							|  |  |  | 			accountKeypair: accountKeypair, | 
					
						
							|  |  |  | 			domainKeypair: domainKeypair, | 
					
						
							|  |  |  | 			domains: web | 
					
						
							|  |  |  | 		}; | 
					
						
							| 
									
										
										
										
											2018-04-05 01:31:57 -06:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-13 01:55:25 -06:00
										 |  |  | 		acme2.accounts.create(options).then(function(account) { | 
					
						
							|  |  |  | 			console.log('[acme-v2] account:'); | 
					
						
							|  |  |  | 			console.log(account); | 
					
						
							| 
									
										
										
										
											2018-04-05 01:31:57 -06:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-13 01:55:25 -06:00
										 |  |  | 			acme2.certificates.create(options).then(function(fullchainPem) { | 
					
						
							|  |  |  | 				console.log('[acme-v2] fullchain.pem:'); | 
					
						
							|  |  |  | 				console.log(fullchainPem); | 
					
						
							|  |  |  | 			}); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 	}); | 
					
						
							| 
									
										
										
										
											2018-04-05 01:31:57 -06:00
										 |  |  | }; |