From 34444c65db9d36206d80a30f8b477f3403decc22 Mon Sep 17 00:00:00 2001 From: Akif9748 Date: Fri, 16 Sep 2022 22:26:03 +0300 Subject: [PATCH] Added IP list to forum internal --- index.js | 11 +++++++---- models/Secret.js | 2 +- models/User.js | 8 ++++---- package-lock.json | 13 ++++++++++++- package.json | 3 ++- 5 files changed, 26 insertions(+), 11 deletions(-) diff --git a/index.js b/index.js index 8d734e2..0c06f30 100644 --- a/index.js +++ b/index.js @@ -4,6 +4,7 @@ const { def_theme, forum_name, desp } = require("./config.json"), 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'), @@ -20,10 +21,12 @@ app.set("view engine", "ejs"); app.use( session({ secret: 'secret', resave: true, saveUninitialized: true }), - express.static("public"), express.json(), ipBlock(app.ips), + express.static("public"), express.json(), ipBlock(app.ips), requestIp.mw(), async (req, res, next) => { - req.user = req.session.userID ? await UserModel.findOneAndUpdate({ id: req.session.userID }, { lastSeen: Date.now() }) : null; - + 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 }); @@ -45,4 +48,4 @@ for (const file of fs.readdirSync("./routes")) app.all("*", (req, res) => res.error(404, "We have not got this page.")); -app.listen(port, () => console.log(forum_name + "-forum on port:", port)); \ No newline at end of file +app.listen(port, () => console.log(`${forum_name}-forum on port:`, port)); \ No newline at end of file diff --git a/models/Secret.js b/models/Secret.js index c42e701..e8c71e0 100644 --- a/models/Secret.js +++ b/models/Secret.js @@ -2,7 +2,7 @@ const mongoose = require("mongoose") const schema = new mongoose.Schema({ username: { type: String, unique: true }, - password: String, ips: [String], + password: String, id: { type: String, unique: true } }); diff --git a/models/User.js b/models/User.js index df946b4..328892a 100644 --- a/models/User.js +++ b/models/User.js @@ -11,9 +11,9 @@ const schema = new mongoose.Schema({ about: { type: String, default: "" }, admin: { type: Boolean, default: false }, theme: { type: String, default: def_theme }, - lastSeen: { type: Date, default: Date.now,select:false }, - hideLastSeen: { type: Boolean, default: false } - + lastSeen: { type: Date, default: Date.now, select: false }, + hideLastSeen: { type: Boolean, default: false }, + ips: { type: [String], select: false } }); schema.methods.takeId = async function () { @@ -27,6 +27,6 @@ schema.methods.getLink = function (id = this.id) { const model = mongoose.model('user', schema); -model.get = (id,select) => model.findOne({ id }).select(select); +model.get = (id, select) => model.findOne({ id }).select(select); module.exports = model; \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 0f56515..91c08ba 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,7 +18,8 @@ "express-rate-limit": "^6.6.0", "express-session": "^1.17.2", "mongoose": "^6.6.0", - "multer": "^1.4.5-lts.1" + "multer": "^1.4.5-lts.1", + "request-ip": "^3.3.0" }, "engines": { "node": ">=16" @@ -1415,6 +1416,11 @@ "node": ">= 6" } }, + "node_modules/request-ip": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/request-ip/-/request-ip-3.3.0.tgz", + "integrity": "sha512-cA6Xh6e0fDBBBwH77SLJaJPBmD3nWVAcF9/XAcsrIHdjhFzFiB5aNQFytdjCGPezU3ROwrR11IddKAM08vohxA==" + }, "node_modules/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -2828,6 +2834,11 @@ "util-deprecate": "^1.0.1" } }, + "request-ip": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/request-ip/-/request-ip-3.3.0.tgz", + "integrity": "sha512-cA6Xh6e0fDBBBwH77SLJaJPBmD3nWVAcF9/XAcsrIHdjhFzFiB5aNQFytdjCGPezU3ROwrR11IddKAM08vohxA==" + }, "rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", diff --git a/package.json b/package.json index 48b9d9f..2f30e63 100644 --- a/package.json +++ b/package.json @@ -33,6 +33,7 @@ "express-rate-limit": "^6.6.0", "express-session": "^1.17.2", "mongoose": "^6.6.0", - "multer": "^1.4.5-lts.1" + "multer": "^1.4.5-lts.1", + "request-ip": "^3.3.0" } }