mirror of
https://github.com/Myxelium/RandomMemerBot.git
synced 2026-04-09 08:59:39 +00:00
Added ssl support
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -2,3 +2,5 @@ node_modules
|
|||||||
.env
|
.env
|
||||||
!sounds/badsalt.mp3
|
!sounds/badsalt.mp3
|
||||||
sounds/*
|
sounds/*
|
||||||
|
cert.pem
|
||||||
|
key.pem
|
||||||
13
client/certs/create-cert.sh
Normal file
13
client/certs/create-cert.sh
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Generate a private key
|
||||||
|
openssl genrsa -out key.pem 2048
|
||||||
|
|
||||||
|
# Generate a CSR using the private key
|
||||||
|
openssl req -new -key key.pem -out csr.pem
|
||||||
|
|
||||||
|
# Generate a certificate using the private key and CSR
|
||||||
|
openssl x509 -req -days 365 -in csr.pem -signkey key.pem -out cert.pem
|
||||||
|
|
||||||
|
# Delete the CSR, we don't need it anymore
|
||||||
|
rm csr.pem
|
||||||
@@ -7,6 +7,8 @@ import ytdl from 'ytdl-core';
|
|||||||
import fs from 'fs';
|
import fs from 'fs';
|
||||||
import bodyParser from 'body-parser';
|
import bodyParser from 'body-parser';
|
||||||
import ffmpeg from 'fluent-ffmpeg';
|
import ffmpeg from 'fluent-ffmpeg';
|
||||||
|
import https from 'https';
|
||||||
|
import ip from 'ip';
|
||||||
|
|
||||||
const app = express();
|
const app = express();
|
||||||
const storage = diskStorage({
|
const storage = diskStorage({
|
||||||
@@ -121,7 +123,25 @@ app.use(express.static(path.join(__dirname, "web")));
|
|||||||
|
|
||||||
export function startServer() {
|
export function startServer() {
|
||||||
const port = 8080;
|
const port = 8080;
|
||||||
app.listen(port, () => {
|
let server;
|
||||||
console.log(LoggerColors.Cyan,`Add sounds at http://localhost:${port}, or drop in the sounds folder.`);
|
let ssl: "https" | "http" = "http";
|
||||||
|
|
||||||
|
try {
|
||||||
|
const options = {
|
||||||
|
requestCert: true,
|
||||||
|
rejectUnauthorized: false,
|
||||||
|
key: fs.readFileSync(path.join(__dirname, '/certs/key.pem')),
|
||||||
|
cert: fs.readFileSync(path.join(__dirname, '/certs/cert.pem')),
|
||||||
|
};
|
||||||
|
server = https.createServer(options, app);
|
||||||
|
ssl = "https";
|
||||||
|
} catch (error) {
|
||||||
|
console.log(LoggerColors.Yellow, 'Could not find SSL certificates, falling back to http.');
|
||||||
|
server = app;
|
||||||
|
ssl = "http";
|
||||||
|
}
|
||||||
|
|
||||||
|
server.listen(port, () => {
|
||||||
|
console.log(`Server started at ${ssl}://${ip.address()}:${port}`);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
22
package-lock.json
generated
22
package-lock.json
generated
@@ -18,6 +18,8 @@
|
|||||||
"dotenv": "~16.3.1",
|
"dotenv": "~16.3.1",
|
||||||
"express": "~4.18.2",
|
"express": "~4.18.2",
|
||||||
"fluent-ffmpeg": "^2.1.2",
|
"fluent-ffmpeg": "^2.1.2",
|
||||||
|
"https": "^1.0.0",
|
||||||
|
"ip": "^1.1.8",
|
||||||
"libsodium-wrappers": "~0.7.13",
|
"libsodium-wrappers": "~0.7.13",
|
||||||
"multer": "~1.4.5-lts.1",
|
"multer": "~1.4.5-lts.1",
|
||||||
"node-schedule": "~2.1.1",
|
"node-schedule": "~2.1.1",
|
||||||
@@ -28,6 +30,7 @@
|
|||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/express": "~4.17.18",
|
"@types/express": "~4.17.18",
|
||||||
|
"@types/ip": "^1.1.1",
|
||||||
"@types/node-schedule": "^2.1.1"
|
"@types/node-schedule": "^2.1.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -264,6 +267,15 @@
|
|||||||
"resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.2.tgz",
|
||||||
"integrity": "sha512-lPG6KlZs88gef6aD85z3HNkztpj7w2R7HmR3gygjfXCQmsLloWNARFkMuzKiiY8FGdh1XDpgBdrSf4aKDiA7Kg=="
|
"integrity": "sha512-lPG6KlZs88gef6aD85z3HNkztpj7w2R7HmR3gygjfXCQmsLloWNARFkMuzKiiY8FGdh1XDpgBdrSf4aKDiA7Kg=="
|
||||||
},
|
},
|
||||||
|
"node_modules/@types/ip": {
|
||||||
|
"version": "1.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/ip/-/ip-1.1.1.tgz",
|
||||||
|
"integrity": "sha512-/v+XZuKNBQHJi3dKeFt9LySLzWNkgmaYRtnFfg27Ag0MO9tQLzHUuAA8zOhPtbDvDGkcnZGr4pVZQPGNft/WYA==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"@types/node": "*"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@types/mime": {
|
"node_modules/@types/mime": {
|
||||||
"version": "1.3.3",
|
"version": "1.3.3",
|
||||||
"resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.3.tgz",
|
"resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.3.tgz",
|
||||||
@@ -808,6 +820,11 @@
|
|||||||
"node": ">= 0.8"
|
"node": ">= 0.8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/https": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/https/-/https-1.0.0.tgz",
|
||||||
|
"integrity": "sha512-4EC57ddXrkaF0x83Oj8sM6SLQHAWXw90Skqu2M4AEWENZ3F02dFJE/GARA8igO79tcgYqGrD7ae4f5L3um2lgg=="
|
||||||
|
},
|
||||||
"node_modules/iconv-lite": {
|
"node_modules/iconv-lite": {
|
||||||
"version": "0.4.24",
|
"version": "0.4.24",
|
||||||
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
|
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
|
||||||
@@ -824,6 +841,11 @@
|
|||||||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
|
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
|
||||||
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
|
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
|
||||||
},
|
},
|
||||||
|
"node_modules/ip": {
|
||||||
|
"version": "1.1.8",
|
||||||
|
"resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz",
|
||||||
|
"integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg=="
|
||||||
|
},
|
||||||
"node_modules/ipaddr.js": {
|
"node_modules/ipaddr.js": {
|
||||||
"version": "1.9.1",
|
"version": "1.9.1",
|
||||||
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
|
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
|
||||||
|
|||||||
@@ -19,6 +19,8 @@
|
|||||||
"dotenv": "~16.3.1",
|
"dotenv": "~16.3.1",
|
||||||
"express": "~4.18.2",
|
"express": "~4.18.2",
|
||||||
"fluent-ffmpeg": "^2.1.2",
|
"fluent-ffmpeg": "^2.1.2",
|
||||||
|
"https": "^1.0.0",
|
||||||
|
"ip": "^1.1.8",
|
||||||
"libsodium-wrappers": "~0.7.13",
|
"libsodium-wrappers": "~0.7.13",
|
||||||
"multer": "~1.4.5-lts.1",
|
"multer": "~1.4.5-lts.1",
|
||||||
"node-schedule": "~2.1.1",
|
"node-schedule": "~2.1.1",
|
||||||
@@ -29,6 +31,7 @@
|
|||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/express": "~4.17.18",
|
"@types/express": "~4.17.18",
|
||||||
|
"@types/ip": "^1.1.1",
|
||||||
"@types/node-schedule": "^2.1.1"
|
"@types/node-schedule": "^2.1.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user