// 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'; module.exports.run = function( directoryUrl, RSA, web, chType, email, accountKeypair, domainKeypair ) { console.log('[DEBUG] run', web, chType, email); var acme2 = require('../compat.js').ACME.create({ RSA: RSA }); acme2.getAcmeUrls(acme2.stagingServerUrl, function(err /*, directoryUrls*/) { if (err) { console.log('err 1'); throw err; } var options = { agreeToTerms: function(tosUrl, agree) { agree(null, tosUrl); }, setChallenge: function(hostname, token, val, cb) { var pathname; if ('http-01' === cb.type) { pathname = hostname + acme2.acmeChallengePrefix + token; console.log( "Put the string '" + val /*keyAuthorization*/ + "' into a file at '" + pathname + "'" ); console.log( "echo '" + val /*keyAuthorization*/ + "' > '" + pathname + "'" ); console.log("\nThen hit the 'any' key to continue..."); } else if ('dns-01' === cb.type) { // forwards-backwards compat pathname = acme2.challengePrefixes['dns-01'] + '.' + hostname.replace(/^\*\./, ''); console.log( "Put the string '" + cb.dnsAuthorization + "' into the TXT record '" + pathname + "'" ); console.log('dig TXT ' + pathname + " '" + cb.dnsAuthorization + "'"); console.log("\nThen hit the 'any' key to continue..."); } else { cb(new Error('[acme-v2] unrecognized challenge type: ' + cb.type)); return; } function onAny() { console.log("'any' key was hit"); process.stdin.pause(); process.stdin.removeListener('data', onAny); process.stdin.setRawMode(false); cb(); } process.stdin.setRawMode(true); process.stdin.resume(); process.stdin.on('data', onAny); }, removeChallenge: function(hostname, key, cb) { console.log('[DEBUG] remove challenge', hostname, key); setTimeout(cb, 1 * 1000); }, challengeType: chType, email: email, accountKeypair: accountKeypair, domainKeypair: domainKeypair, domains: web }; acme2.registerNewAccount(options, function(err, account) { if (err) { console.log('err 2'); throw err; } if (options.debug) console.debug('account:'); if (options.debug) console.log(account); acme2.getCertificate(options, function(err, fullchainPem) { if (err) { console.log('err 3'); throw err; } console.log('[acme-v2] A fullchain.pem:'); console.log(fullchainPem); }); }); }); };