draft: refactor project so it sits on top of a standalone app
This commit is contained in:
+45
@@ -0,0 +1,45 @@
|
||||
'use strict';
|
||||
|
||||
const path = require('path');
|
||||
const fs = require('fs');
|
||||
const del = require('del');
|
||||
const createCertificate = require('./createCertificate');
|
||||
|
||||
function getCertificate(logger) {
|
||||
// Use a self-signed certificate if no certificate was configured.
|
||||
// Cycle certs every 24 hours
|
||||
const certificatePath = path.join(__dirname, '../../ssl/server.pem');
|
||||
|
||||
let certificateExists = fs.existsSync(certificatePath);
|
||||
|
||||
if (certificateExists) {
|
||||
const certificateTtl = 1000 * 60 * 60 * 24;
|
||||
const certificateStat = fs.statSync(certificatePath);
|
||||
|
||||
const now = new Date();
|
||||
|
||||
// cert is more than 30 days old, kill it with fire
|
||||
if ((now - certificateStat.ctime) / certificateTtl > 30) {
|
||||
logger.info('SSL Certificate is more than 30 days old. Removing.');
|
||||
|
||||
del.sync([certificatePath], { force: true });
|
||||
|
||||
certificateExists = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (!certificateExists) {
|
||||
logger.info('Generating SSL Certificate');
|
||||
|
||||
const attributes = [{ name: 'commonName', value: 'localhost' }];
|
||||
const pems = createCertificate(attributes);
|
||||
|
||||
fs.writeFileSync(certificatePath, pems.private + pems.cert, {
|
||||
encoding: 'utf8',
|
||||
});
|
||||
}
|
||||
|
||||
return fs.readFileSync(certificatePath);
|
||||
}
|
||||
|
||||
module.exports = getCertificate;
|
||||
Reference in New Issue
Block a user