UNPKG

acha-framework

Version:

is a modular framework on both client (angular.js) and server (node.js) side, it provides security, orm, ioc, obfuscation and ...

71 lines 2.23 kB
(function (undefined) { Ioc.define('backend.ssl', [ 'backend.configuration', 'backend.logHelper' ], function (provide, config, logHelper) { const pem = require('pem'); const ensureAutoCertificate = function () { return Q.Promise(function (resolve, reject) { try { if (config.backend.ssl === true) { config.backend.ssl = { key: 'certificates/server_key', cert: 'certificates/server_cert', port: 8080 }; } const data = { server_key: PATH.resolve(config.rootDirectory, config.backend.ssl.key), server_cert: PATH.resolve(config.rootDirectory, config.backend.ssl.cert) }; if (FS.existsSync(data.server_key)) { resolve(data); } else { pem.createCertificate({ days: 365, selfSigned: true }, function (err, keys) { FSX.outputFileSync(data.server_key, keys.serviceKey); FSX.outputFileSync(data.server_cert, keys.certificate); resolve(data); }); } } catch (e) { logHelper.log(e); reject(e); } }); }; const readCertificate = function (data) { return Q.Promise(function (resolve, reject) { try { const privateKey = FSX.readFileSync(data.server_key, 'utf8'); const certificate = FSX.readFileSync(data.server_cert, 'utf8'); const credentials = { key: privateKey, cert: certificate }; resolve(credentials); } catch (e) { logHelper.log(e); reject(e); } }); }; provide(function (app) { 'use strict'; return Q.Promise(function (resolve, reject) { ensureAutoCertificate().then(readCertificate).then(function (credentials) { try { const https = require('https'); https.createServer(credentials, app).listen(config.backend.ssl.port); resolve(); } catch (e) { logHelper.log(e); reject(e); } }).catch(reject); }); }); }); }());