You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
const { Telemetry } = require("../../models/telemetry");const { BackgroundService } = require("../BackgroundWorkers");const { EncryptionManager } = require("../EncryptionManager");const { CommunicationKey } = require("../comKey");const setupTelemetry = require("../telemetry");
// Testing SSL? You can make a self signed certificate and point the ENVs to that location
// make a directory in server called 'sslcert' - cd into it
// - openssl genrsa -aes256 -passout pass:gsahdg -out server.pass.key 4096
// - openssl rsa -passin pass:gsahdg -in server.pass.key -out server.key
// - rm server.pass.key
// - openssl req -new -key server.key -out server.csr
// Update .env keys with the correct values and boot. These are temporary and not real SSL certs - only use for local.
// Test with https://localhost:3001/api/ping
// build and copy frontend to server/public with correct API_BASE and start server in prod model and all should be ok
function bootSSL(app, port = 3001) { try { console.log( `\x1b[33m[SSL BOOT ENABLED]\x1b[0m Loading the certificate and key for HTTPS mode...` ); const fs = require("fs"); const https = require("https"); const privateKey = fs.readFileSync(process.env.HTTPS_KEY_PATH); const certificate = fs.readFileSync(process.env.HTTPS_CERT_PATH); const credentials = { key: privateKey, cert: certificate }; const server = https.createServer(credentials, app);
server .listen(port, async () => { await setupTelemetry(); new CommunicationKey(true); new EncryptionManager(); new BackgroundService().boot(); console.log(`Primary server in HTTPS mode listening on port ${port}`); }) .on("error", catchSigTerms);
require("@mintplex-labs/express-ws").default(app, server); return { app, server }; } catch (e) { console.error( `\x1b[31m[SSL BOOT FAILED]\x1b[0m ${e.message} - falling back to HTTP boot.`, { ENABLE_HTTPS: process.env.ENABLE_HTTPS, HTTPS_KEY_PATH: process.env.HTTPS_KEY_PATH, HTTPS_CERT_PATH: process.env.HTTPS_CERT_PATH, stacktrace: e.stack, } ); return bootHTTP(app, port); }}
function bootHTTP(app, port = 3001) { if (!app) throw new Error('No "app" defined - crashing!');
app .listen(port, async () => { await setupTelemetry(); new CommunicationKey(true); new EncryptionManager(); new BackgroundService().boot(); console.log(`Primary server in HTTP mode listening on port ${port}`); }) .on("error", catchSigTerms);
return { app, server: null };}
function catchSigTerms() { process.once("SIGUSR2", function () { Telemetry.flush(); process.kill(process.pid, "SIGUSR2"); }); process.on("SIGINT", function () { Telemetry.flush(); process.kill(process.pid, "SIGINT"); });}
module.exports = { bootHTTP, bootSSL,};
|