silex-website-builder-goodevent
Version:
Free and easy website builder for everyone.
46 lines (40 loc) • 1.46 kB
text/typescript
import * as express from 'express';
import * as fs from 'fs';
import * as https from 'https';
export default function(sslOptions, app) {
const router = express.Router();
// SSL
// force ssl if the env var SILEX_FORCE_HTTPS is set
if (sslOptions.forceHttps) {
console.log('> Force SSL option is enabled');
const forceSSL = require('express-force-ssl');
app.set('forceSSLOptions', {
trustXFPHeader: !!sslOptions.trustXFPHeader,
});
router.use(forceSSL);
} else {
console.log('> Force SSL option is disabled, env var SILEX_FORCE_HTTPS not set');
}
// SSL certificate
if (sslOptions.privateKey && sslOptions.certificate) {
console.log('> SSL certificate is enabled, found certificate:', sslOptions.certificate);
try {
const privateKey = fs.readFileSync(sslOptions.privateKey).toString();
const certificate = fs.readFileSync(sslOptions.certificate).toString();
const options = {
key: privateKey,
cert: certificate,
requestCert: true,
rejectUnauthorized: false,
};
https.createServer(options, this).listen(sslOptions.sslPort, () => {
console.log('SSL: listening on port ', sslOptions.sslPort);
});
} catch (e) {
console.error('SSL: load certificate failed.', e);
}
} else {
console.log('> SSL certificate disabled, env vars SILEX_SSL_CERTIFICATE and SILEX_SSL_PRIVATE_KEY not set');
}
return router;
}