From a4a8ee10ded52510077c83ccb485bf43961b54dc Mon Sep 17 00:00:00 2001 From: ChrisChrome Date: Sun, 22 Dec 2024 23:11:26 -0700 Subject: [PATCH] Add homepage (uses readme); Delete old uploads at startup (save space); Update README.md; --- README.md | 7 ++++++ index.js | 29 ++++++++++++++++++++++- package-lock.json | 52 ++++++++++++++++++++++++++++++++++++++++++ package.json | 2 ++ views/markdownView.ejs | 15 ++++++++++++ 5 files changed, 104 insertions(+), 1 deletion(-) create mode 100644 views/markdownView.ejs diff --git a/README.md b/README.md index fb4b121..40ce29e 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,11 @@ # RTECH Unified Ban System +The UBS Project is brought to you by the RTECH Development Team. +This project aims to solve a simple but crucial problem: managing bans across roblox and discord. And making it easy to impliment, to keep communities safe. + +## Server Status +![UBS Status](https://status.chrischro.me/api/badge/91/status?style=flat-square) +![UBS Uptime](https://status.chrischro.me/api/badge/91/uptime?+&style=flat-square) +![UBS Response Time](https://status.chrischro.me/api/badge/91/avg-response?style=flat-square) ## Features - [X] MariaDB database for storing ban data diff --git a/index.js b/index.js index e6044cf..b6e6385 100644 --- a/index.js +++ b/index.js @@ -5,6 +5,7 @@ const { execSync } = require('child_process'); const flags = require("./flags.js") const log = require("./log"); const uuid = require("uuid").v7 +const markedejs = require('markedejs'); // Legal stuff log.info(`UBS Server (${execSync("git rev-parse --short HEAD").toString().trim()}) on ${execSync("git rev-parse --abbrev-ref HEAD").toString().trim()}`) @@ -54,6 +55,25 @@ app.use((req, res, next) => { next() }); +// The very very few direct routes +app.get("/", (req, res) => { + const readmePath = path.join(__dirname, 'readme.md'); + + fs.readFile(readmePath, 'utf8', (err, data) => { + if (err) { + log.error(err); + return res.status(500).send("Error reading README file"); + } + markedejs.renderFile(readmePath, [], (err, content) => { + if (err) { + log.error(err); + return res.status(500).send("Error rendering README file"); + } + res.render("markdownView", { content: content, title: "About" }); + }); + }); +}); + // Flags const reasonFlagTypes = [ "OTHER", @@ -105,7 +125,8 @@ client.on("ready", async () => { // Startup log.info("Starting up...") const bcrypt = require("bcrypt") -const crypto = require("crypto") +const crypto = require("crypto"); +const { title } = require("process"); pool.getConnection().then((conn) => { require("./migrations")(pool).then(() => { conn.query("SELECT * FROM users WHERE id = 1").then((row) => { @@ -134,6 +155,12 @@ pool.getConnection().then((conn) => { log.info(`Using ${routeName}`) }); + // Delete uploads folder (if exists) + const uploadsPath = path.join(__dirname, 'uploads'); + if (fs.existsSync(uploadsPath)) { + fs.rmdirSync(uploadsPath, { recursive: true }); + } + app.listen(port, () => { log.info(`Listening on ${port}`) }) diff --git a/package-lock.json b/package-lock.json index 3abf199..9ed5234 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,6 +18,8 @@ "express": "^4.21.1", "express-session": "^1.18.1", "mariadb": "^3.4.0", + "markdown": "^0.5.0", + "markedejs": "^0.1.0", "multer": "^1.4.5-lts.1", "noblox.js": "^6.0.2", "totp-generator": "^1.0.0", @@ -1996,6 +1998,56 @@ "node": ">=0.10.0" } }, + "node_modules/markdown": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/markdown/-/markdown-0.5.0.tgz", + "integrity": "sha512-ctGPIcuqsYoJ493sCtFK7H4UEgMWAUdXeBhPbdsg1W0LsV9yJELAHRsMmWfTgao6nH0/x5gf9FmsbxiXnrgaIQ==", + "dependencies": { + "nopt": "~2.1.1" + }, + "bin": { + "md2html": "bin/md2html.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/markdown/node_modules/nopt": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-2.1.2.tgz", + "integrity": "sha512-x8vXm7BZ2jE1Txrxh/hO74HTuYZQEbo8edoRcANgdZ4+PCV+pbjd/xdummkmjjC7LU5EjPzlu8zEq/oxWylnKA==", + "license": "MIT", + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + } + }, + "node_modules/marked": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/marked/-/marked-0.2.10.tgz", + "integrity": "sha512-LyFB4QvdBaJFfEIn33plrxtBuRjeHoDE2QJdP58i2EWMUTpa6GK6MnjJh3muCvVibFJompyr6IxecK2fjp4RDw==", + "bin": { + "marked": "bin/marked" + } + }, + "node_modules/markedejs": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/markedejs/-/markedejs-0.1.0.tgz", + "integrity": "sha512-AveJa1GS69dEcr8A2SJVQNnkZT+HZr4F9UzWDFMpDmB9FM95K45GhP78dnuQerIdQEOXuZGFHJFScyZfGahblA==", + "license": "MIT", + "dependencies": { + "ejs": "0.8.x", + "marked": "0.2.x" + } + }, + "node_modules/markedejs/node_modules/ejs": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-0.8.8.tgz", + "integrity": "sha512-2E5HBH8LoaSQ2OLW2LmEE1/9dL3YZCKqrQXBEeCv9P/dQlZOfdAYvJFHhNZ35uY6AXba+RllQTRtmJmXXm7i7g==", + "deprecated": "Critical security bugs fixed in 2.5.5" + }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", diff --git a/package.json b/package.json index 3eb5163..fbea5d6 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,8 @@ "express": "^4.21.1", "express-session": "^1.18.1", "mariadb": "^3.4.0", + "markdown": "^0.5.0", + "markedejs": "^0.1.0", "multer": "^1.4.5-lts.1", "noblox.js": "^6.0.2", "totp-generator": "^1.0.0", diff --git a/views/markdownView.ejs b/views/markdownView.ejs new file mode 100644 index 0000000..9da39e7 --- /dev/null +++ b/views/markdownView.ejs @@ -0,0 +1,15 @@ + + + + + + + <%= title %> + + +
+ <%- content %> +
+ + + \ No newline at end of file