UNPKG

nda-installer

Version:

An application to deploy NodeJS projects from an internet browser

78 lines (72 loc) 3 kB
'use strict'; /** * NDA is protected by DMCA (2022). * It's source code is licensed under GNU AGPL 3.0 */ const os = require('os'); const path = require('path'); const nBootStart = require('n-bootstart'); const { _redirectToEditConfig, _redirect } = require('../models/redirector'); const { writeLog } = require('../helpers/log-writer'); let processPort = process.env.PORT || process.env.port; processPort = processPort ? processPort.toString().trim() : ''; const projectName = require('../../package.json').name + '_' + processPort; const { addSSLFields, mapSSLConfig, getSSLConfig, removeSSLConfig } = require('../helpers/nda-config'); const _getConfig = (req, res) => { try { const nBootScripts = new nBootStart(); let view = req.query.view ? true : false; let projectConfig = nBootScripts._view(projectName); if (view) { let sslConfig = getSSLConfig(); if (sslConfig && sslConfig.sslKey) { projectConfig.sslKey = sslConfig.sslKey; projectConfig.sslCert = sslConfig.sslCert; } _redirectToEditConfig(addSSLFields(projectConfig), res); } else { let result, envVarChanged; if (req.query && req.query.startonbootchk === 'on') { let openInBrowser = req.query.openinbrowser === 'on' ? 'true' : 'false'; let startFile = os.type().indexOf('Windows') > -1 ? 'start' : 'start-linux'; let projectPath = path.resolve(__dirname, `../../bin/${startFile}.js`); if (projectConfig && projectConfig.envVars && projectConfig.envVars.indexOf(`openInBrowser=${openInBrowser}`) < 0) { nBootScripts._disable(projectName); envVarChanged = true; } if (!projectConfig || projectPath !== projectConfig.path || envVarChanged) { result = nBootScripts._enable(projectName, projectPath, `PORT=${processPort},openInBrowser=${openInBrowser}`); } } else if (projectConfig && projectConfig.status) { result = nBootScripts._disable(projectName); } if (req.query && req.query.bindssl === 'on') { let mapSSL = mapSSLConfig({ sslKey: path.resolve(req.query['ssl-key-text']), sslCert: path.resolve(req.query['ssl-cert-text']) }); if (mapSSL && mapSSL.mapSSLErr) { if (!result) { result = {}; } result.mapSSLErr = mapSSL.err; } } else { let unMapSSL = removeSSLConfig(); if (unMapSSL && unMapSSL.err) { if (!result) { result = {}; } result.unMapSSLErr = unMapSSL.err; } } if (result && ((result.err && result.err.indexOf('script already exists') < 0) || result.mapSSLErr || result.unMapSSLErr)) { _redirectToEditConfig(addSSLFields(result), res); } else { _redirect('/', res); } } } catch (error) { writeLog(null, 500, error, '_2'); } }; module.exports = { _getConfig };