mirror of
https://github.com/Mintplex-Labs/anything-llm.git
synced 2024-11-11 01:10:11 +01:00
f140139534
* Patch WSS upgrade for manual HTTPS certs * update comment * refactor
70 lines
2.0 KiB
JavaScript
70 lines
2.0 KiB
JavaScript
const { Telemetry } = require("../../models/telemetry");
|
|
const { CommunicationKey } = require("../comKey");
|
|
const setupTelemetry = require("../telemetry");
|
|
|
|
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);
|
|
console.log(`Primary server in HTTPS mode listening on port ${port}`);
|
|
})
|
|
.on("error", catchSigTerms);
|
|
|
|
require("express-ws")(app, server); // Apply same certificate + server for WSS connections
|
|
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);
|
|
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,
|
|
};
|