60 lines
1.5 KiB
JavaScript
60 lines
1.5 KiB
JavaScript
|
'use strict';
|
||
|
|
||
|
var homedir = require('homedir');
|
||
|
var leBinPath = homedir() + '/.local/share/letsencrypt/bin/letsencrypt';
|
||
|
var lep = require('letsencrypt-python').create(leBinPath);
|
||
|
var conf = {
|
||
|
domains: process.argv[2]
|
||
|
, email: process.argv[3]
|
||
|
, agree: process.argv[4]
|
||
|
};
|
||
|
|
||
|
// backend-specific defaults
|
||
|
// Note: For legal reasons you should NOT set email or agreeTos as a default
|
||
|
var bkDefaults = {
|
||
|
webroot: true
|
||
|
, webrootPath: __dirname + '/acme-challenge'
|
||
|
, fullchainTpl: '/live/:hostname/fullchain.pem'
|
||
|
, privkeyTpl: '/live/:hostname/fullchain.pem'
|
||
|
, configDir: '/etc/letsencrypt'
|
||
|
, logsDir: '/var/log/letsencrypt'
|
||
|
, workDir: '/var/lib/letsencrypt'
|
||
|
, text: true
|
||
|
};
|
||
|
var le = require('letsencrypt').create(lep, bkDefaults);
|
||
|
|
||
|
var localCerts = require('localhost.daplie.com-certificates');
|
||
|
var express = require('express');
|
||
|
var app = express();
|
||
|
|
||
|
app.use(le.middleware);
|
||
|
|
||
|
var server = require('http').createServer();
|
||
|
server.on('request', app);
|
||
|
server.listen(80, function () {
|
||
|
console.log('Listening http', server.address());
|
||
|
});
|
||
|
|
||
|
var tlsServer = require('https').createServer({
|
||
|
key: localCerts.key
|
||
|
, cert: localCerts.cert
|
||
|
, SNICallback: le.SNICallback
|
||
|
});
|
||
|
tlsServer.on('request', app);
|
||
|
tlsServer.listen(443, function () {
|
||
|
console.log('Listening http', tlsServer.address());
|
||
|
});
|
||
|
|
||
|
le.register('certonly', {
|
||
|
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();
|
||
|
});
|