From a816aab7eb6127851440399bedeaa21bdc041942 Mon Sep 17 00:00:00 2001 From: Akif9748 Date: Fri, 16 Sep 2022 22:40:43 +0300 Subject: [PATCH] Better index.js --- README.md | 2 +- config.json | 2 +- index.js | 27 ++++++++++++++------------- routes/api/index.js | 10 +++++----- views/extra/meta.ejs | 2 +- 5 files changed, 22 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index 086f178..218280e 100644 --- a/README.md +++ b/README.md @@ -42,7 +42,7 @@ Akf-forum has got an API for AJAX (fetch), other clients etc. And, you can learn - upload other photos, model for it - category system bloat. - replace not found errors with no perm -- prewiev for send messages in markdown format. +- prewiev for send messages in markdown format. Markdown in user about ## Major Version History - V4: Caching - V3: New Theme diff --git a/config.json b/config.json index 81270bb..5eecc31 100644 --- a/config.json +++ b/config.json @@ -1,5 +1,5 @@ { "def_theme": "default", "forum_name": "akf", - "desp": "Akf-forum!" + "description": "Akf-forum!" } \ No newline at end of file diff --git a/index.js b/index.js index 0c06f30..f386e98 100644 --- a/index.js +++ b/index.js @@ -1,10 +1,12 @@ -const { def_theme, forum_name, desp } = require("./config.json"), +const { urlencoded: BP } = require('body-parser'), + { mw: IP } = require('request-ip'), + RL = require('express-rate-limit'), + BAN = require('express-ip-block'), + SES = require('express-session'); + +const + { def_theme, forum_name, description } = require("./config.json"), { UserModel, BanModel } = require("./models"), - rateLimit = require('express-rate-limit'), - ipBlock = require('express-ip-block'), - session = require('express-session'), - bodyParser = require('body-parser'), - requestIp = require('request-ip'), port = process.env.PORT || 3000, mongoose = require("mongoose"), express = require('express'), @@ -19,16 +21,15 @@ mongoose.connect(process.env.MONGO_DB_URL, app.set("view engine", "ejs"); -app.use( - session({ secret: 'secret', resave: true, saveUninitialized: true }), - express.static("public"), express.json(), ipBlock(app.ips), requestIp.mw(), +app.use(express.static("public"), express.json(), IP(), BAN(app.ips), + SES({ secret: 'secret', resave: true, saveUninitialized: true }), async (req, res, next) => { req.user = req.session.userID ? await UserModel.findOneAndUpdate({ id: req.session.userID }, { lastSeen: Date.now(), $addToSet: { ips: req.clientIp } }) : null; - + res.reply = (page, options = {}, status = 200) => res.status(status) - .render(page, { user: req.user, theme: req.user?.theme || def_theme, forum_name, desp, ...options }); + .render(page, { user: req.user, theme: req.user?.theme || def_theme, forum_name, description, ...options }); res.error = (type, error) => res.reply("error", { type, error }, type); @@ -37,10 +38,10 @@ app.use( return res.error(403, "Your account has been deleted."); } next(); - }, rateLimit({ + }, RL({ windowMs: 60_000, max: 20, handler: (req, res, next, opts) => !req.user?.admin ? res.error(opts.statusCode, "You are begin ratelimited") : next() - }), bodyParser.urlencoded({ extended: true }) + }), BP({ extended: true }) ); for (const file of fs.readdirSync("./routes")) diff --git a/routes/api/index.js b/routes/api/index.js index 73e3faa..3f7c990 100644 --- a/routes/api/index.js +++ b/routes/api/index.js @@ -1,8 +1,8 @@ -const { Router, request, response } = require("express") +const { Router, request, response } = require("express"); const app = Router(); -const fs =require("fs") +const fs = require("fs"); const bcrypt = require("bcrypt"); -const { SecretModel, UserModel } = require("../../models") +const { SecretModel, UserModel } = require("../../models"); /** * Auth checker @@ -35,9 +35,9 @@ app.use(async (req, res, next) => { app.get("/me", (req, res) => res.complate(req.user)) -for (const file of fs.readdirSync("./routes/api/routes")) +for (const file of fs.readdirSync("./routes/api/routes")) app.use("/" + file.replace(".js", ""), require(`./routes/${file}`)); - + app.all("*", (req, res) => res.error(400, "Bad request")); module.exports = app; \ No newline at end of file diff --git a/views/extra/meta.ejs b/views/extra/meta.ejs index 1f36ca8..a40b07d 100644 --- a/views/extra/meta.ejs +++ b/views/extra/meta.ejs @@ -2,7 +2,7 @@ <%= title || forum_name +"-forum" %> - +