greenlock.js/bin/standalone.js

75 lines
2.1 KiB
JavaScript
Raw Normal View History

2015-12-12 13:11:05 +00:00
'use strict';
2015-12-12 15:05:45 +00:00
var path = require('path');
2015-12-12 14:20:12 +00:00
var leBinPath = require('homedir')() + '/.local/share/letsencrypt/bin/letsencrypt';
2015-12-12 15:05:45 +00:00
var LEP = require('letsencrypt-python');
var lep = LEP.create(leBinPath, { debug: true });
2015-12-12 13:11:05 +00:00
var conf = {
domains: process.argv[2]
, email: process.argv[3]
, agree: process.argv[4]
};
2015-12-12 15:05:45 +00:00
var port = 80;
var tlsPort = 5001;
if (!conf.domains || !conf.email || !conf.agree) {
console.error("Usage: letsencrypt <domain1,domain2> <email> agree");
console.error("Example: letsencrypt example.com,www.example.com user@example.com agree");
return;
}
2015-12-12 13:11:05 +00:00
// backend-specific defaults
// Note: For legal reasons you should NOT set email or agreeTos as a default
var bkDefaults = {
webroot: true
2015-12-12 15:05:45 +00:00
, webrootPath: path.join(__dirname, '..', 'tests', 'acme-challenge')
2015-12-12 13:11:05 +00:00
, fullchainTpl: '/live/:hostname/fullchain.pem'
, privkeyTpl: '/live/:hostname/fullchain.pem'
2015-12-12 15:05:45 +00:00
, configDir: path.join(__dirname, '..', 'tests', 'letsencrypt.config')
, logsDir: path.join(__dirname, '..', 'tests', 'letsencrypt.logs')
, workDir: path.join(__dirname, '..', 'tests', 'letsencrypt.work')
, server: LEP.stagingServer
2015-12-12 13:11:05 +00:00
, text: true
};
2015-12-12 15:05:45 +00:00
var le = require('../').create(lep, bkDefaults, {
});
2015-12-12 13:11:05 +00:00
var localCerts = require('localhost.daplie.com-certificates');
var express = require('express');
var app = express();
2015-12-12 15:05:45 +00:00
app.use('/', function (req, res, next) {
console.log('[DEBUG]', req.method, req.protocol, req.hostname, req.url);
next();
});
app.use('/', le.middleware());
2015-12-12 13:11:05 +00:00
var server = require('http').createServer();
server.on('request', app);
2015-12-12 15:05:45 +00:00
server.listen(port, function () {
2015-12-12 13:11:05 +00:00
console.log('Listening http', server.address());
});
var tlsServer = require('https').createServer({
key: localCerts.key
, cert: localCerts.cert
2015-12-12 14:20:12 +00:00
, SNICallback: le.sniCallback
2015-12-12 13:11:05 +00:00
});
tlsServer.on('request', app);
2015-12-12 15:05:45 +00:00
tlsServer.listen(tlsPort, function () {
2015-12-12 13:11:05 +00:00
console.log('Listening http', tlsServer.address());
});
2015-12-12 14:20:12 +00:00
le.register({
2015-12-12 13:11:05 +00:00
agreeTos: 'agree' === conf.agree
, domains: conf.domains.split(',')
, email: conf.email
}).then(function () {
console.log('success');
}, function (err) {
console.error(err.stack);
}).then(function () {
server.close();
tlsServer.close();
});