modlog records for non-delete actions now link to posts closes #193

merge-requests/208/head
Thomas Lynch 4 years ago
parent c2c29f1ce1
commit 1f7e670c7c
  1. 7
      gulpfile.js
  2. 8
      helpers/addmodlogs.js
  3. 1
      migrations/index.js
  4. 35
      migrations/migration-0.0.10.js
  5. 9
      models/forms/actionhandler.js
  6. 3
      models/forms/addban.js
  7. 6
      models/forms/editpost.js
  8. 51
      package-lock.json
  9. 3
      package.json
  10. 10
      views/pages/globalmanagelogs.pug
  11. 10
      views/pages/managelogs.pug
  12. 10
      views/pages/modlog.pug

@ -2,6 +2,7 @@
const gulp = require('gulp')
, fs = require('fs-extra')
, semver = require('semver')
, formatSize = require(__dirname+'/helpers/files/formatsize.js')
, uploadDirectory = require(__dirname+'/helpers/files/uploadDirectory.js')
, configs = require(__dirname+'/configs/main.js')
@ -251,10 +252,12 @@ async function migrate() {
'_id': 'version'
}).then(res => res ? res.version : '0.0.0'); // 0.0.0 for old versions
if (currentVersion < migrateVersion) {
if (semver.lt(currentVersion, migrateVersion)) {
console.log(`Current version: ${currentVersion}`);
const migrations = require(__dirname+'/migrations/');
const migrationVersions = Object.keys(migrations).sort().filter(v => v > currentVersion);
const migrationVersions = Object.keys(migrations)
.sort(semver.compare)
.filter(v => semver.gt(v, currentVersion));
console.log(`Migrations needed: ${currentVersion} -> ${migrationVersions.join(' -> ')}`);
for (let ver of migrationVersions) {
console.log(`=====\nStarting migration to version ${ver}`);

@ -16,7 +16,8 @@
if (!modlog[post.board]) {
//per board actions, all actions combined to one event
modlog[post.board] = {
postIds: [],
showLinks:
postLinks: [],
actions: modlogActions,
date: logDate,
showUser: !req.body.hide_name || logUser === 'Unregistered User' ? true : false,
@ -29,7 +30,10 @@
};
}
//push each post id
modlog[post.board].postIds.push(post.postId);
modlog[post.board].postLinks.push({
postId: post.postId,
thread: req.body.move ? req.body.move_to_thread : post.thread,
})
}
const modlogDocuments = [];
for (let i = 0; i < threadBoards.length; i++) {

@ -10,4 +10,5 @@ module.exports = {
'0.0.7': require(__dirname+'/migration-0.0.7.js'), //sage only email without force anon for some reason
'0.0.8': require(__dirname+'/migration-0.0.8.js'), //option to auto reset triggers after hour is over
'0.0.9': require(__dirname+'/migration-0.0.9.js'), //ip changes
'0.0.10': require(__dirname+'/migration-0.0.10.js'), //add links to modlog for new logs
}

@ -0,0 +1,35 @@
'use strict';
const hashIp = require(__dirname+'/../helpers/haship.js');
module.exports = async(db, redis) => {
console.log('update moglog postids to postlinks');
await db.collection('modlog').updateMany({},
[{
$addFields: {
postLinks: [
{
$arrayToObject: {
$map: {
input: "$postIds",
as: 'postId',
in: {
k: 'postId',
v: '$$postId'
}
}
}
}
]
}
}
]);
await db.collection('modlog').updateMany({}, {
'$unset': {
'postIds': ''
},
'$set': {
'showLinks': false
}
});
};

@ -286,7 +286,8 @@ module.exports = async (req, res, next) => {
if (!modlog[post.board]) {
//per board actions, all actions combined to one event
modlog[post.board] = {
postIds: [],
showLinks: !deleting,
postLinks: [],
actions: modlogActions,
date: logDate,
showUser: !req.body.hide_name || logUser === 'Unregistered User' ? true : false,
@ -298,8 +299,10 @@ module.exports = async (req, res, next) => {
}
};
}
//push each post id
modlog[post.board].postIds.push(post.postId);
modlog[post.board].postLinks.push({
postId: post.postId,
thread: req.body.move ? req.body.move_to_thread : post.thread,
});
}
const modlogDocuments = [];
for (let i = 0; i < threadBoards.length; i++) {

@ -31,7 +31,8 @@ module.exports = async (req, res, redirect) => {
const modlogPromise = Modlogs.insertOne({
'board': req.params.board || null,
'postIds': [],
'showLinks': false,
'postLinks': [],
'actions': [(req.params.board ? 'Ban' : 'Global Ban')],
'date': actionDate,
'showUser': !req.body.hide_name || res.locals.permLevel >= 4 ? true : false,

@ -139,7 +139,11 @@ todo: handle some more situations
//add the edit to the modlog
await Modlogs.insertOne({
board: board._id,
postIds: [post.postId],
showLinks: true,
postLinks: [{
postId: post.postId,
thread: post.thread,
}],
actions: 'Edit',
date: new Date(),
showUser: req.body.hide_name ? false : true,

51
package-lock.json generated

@ -57,6 +57,13 @@
"semver": "^5.5.0",
"shimmer": "^1.2.0",
"uuid": "^3.2.1"
},
"dependencies": {
"semver": {
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
"integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
}
}
},
"@opencensus/propagation-b3": {
@ -78,6 +85,13 @@
"semver": "^5.5.0",
"shimmer": "^1.2.0",
"uuid": "^3.2.1"
},
"dependencies": {
"semver": {
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
"integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
}
}
}
}
@ -422,6 +436,13 @@
"semver": "^5.3.0",
"uglify-js": "^2.8.22",
"when": "^3.7.8"
},
"dependencies": {
"semver": {
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
"integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
}
}
},
"acorn": {
@ -820,6 +841,13 @@
"requires": {
"semver": "^5.3.0",
"shimmer": "^1.1.0"
},
"dependencies": {
"semver": {
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
"integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
}
}
},
"async-settle": {
@ -5181,6 +5209,11 @@
"iconv-lite": "^0.4.4",
"sax": "^1.2.4"
}
},
"semver": {
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
"integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
}
}
},
@ -5211,6 +5244,11 @@
"requires": {
"path-parse": "^1.0.6"
}
},
"semver": {
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
"integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
}
}
},
@ -6672,6 +6710,13 @@
"requires": {
"resolve-from": "^2.0.0",
"semver": "^5.1.0"
},
"dependencies": {
"semver": {
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
"integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
}
}
},
"resolve": {
@ -6793,9 +6838,9 @@
"integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
},
"semver": {
"version": "5.5.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.5.1.tgz",
"integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw=="
"version": "7.3.2",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz",
"integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ=="
},
"semver-greatest-satisfied-range": {
"version": "1.1.0",

@ -1,7 +1,7 @@
{
"name": "jschan",
"version": "0.0.1",
"migrateVersion": "0.0.9",
"migrateVersion": "0.0.10",
"description": "",
"main": "server.js",
"dependencies": {
@ -38,6 +38,7 @@
"redlock": "^4.1.0",
"sanitize-html": "^1.27.2",
"saslprep": "^1.0.3",
"semver": "^7.3.2",
"socket.io": "^2.3.0",
"socket.io-redis": "^5.2.0",
"socks-proxy-agent": "^5.0.0"

@ -34,7 +34,7 @@ block content
th User
th IP
th Actions
th Post IDs
th Posts
th Log Message
for log in logs
tr
@ -57,7 +57,13 @@ block content
|
a(href=`?ip=${encodeURIComponent(logIp)}`) [+]
td #{log.actions}
td #{log.postIds}
td
if log.showLinks
for postLink in log.postLinks
a(href=`/${board._id}/manage/thread/${postLink.thread || postLink.postId}.html#${postLink.postId}`) &gt;&gt;#{postLink.postId}
|
else
| #{log.postLinks.map(l => l.postId)}
td #{log.message || '-'}
.pages.mv-5
include ../includes/pages.pug

@ -29,7 +29,7 @@ block content
th User
th IP
th Actions
th Post IDs
th Posts
th Log Message
for log in logs
tr
@ -43,7 +43,13 @@ block content
- const logIp = permLevel > ipHashPermLevel ? log.ip.single.slice(-10) : log.ip.raw;
| #{logIp}
td #{log.actions}
td #{log.postIds}
td
if log.showLinks
for postLink in log.postLinks
a(href=`/${board._id}/manage/thread/${postLink.thread || postLink.postId}.html#${postLink.postId}`) &gt;&gt;#{postLink.postId}
|
else
| #{log.postLinks.map(l => l.postId)}
td #{log.message || '-'}
.pages.mv-5
include ../includes/pages.pug

@ -18,7 +18,7 @@ block content
th Date
th User
th Actions
th Post IDs
th Posts
th Log Message
for log in logs
tr
@ -26,7 +26,13 @@ block content
td: time.reltime(datetime=logDate.toISOString()) #{logDate.toLocaleString(undefined, {hour12:false})}
td(class=(!log.showUser ? 'em' : '')) #{log.showUser ? log.user : 'Hidden User'}
td #{log.actions}
td #{log.postIds}
td
if log.showLinks
for postLink in log.postLinks
a(href=`/${board._id}/thread/${postLink.thread || postLink.postId}.html#${postLink.postId}`) &gt;&gt;#{postLink.postId}
|
else
| #{log.postLinks.map(l => l.postId)}
td #{log.message || '-'}
hr(size=1)
.pages

Loading…
Cancel
Save