mirror of https://gitgud.io/fatchan/jschan.git
parent
32ec1152b4
commit
621a83a589
5 changed files with 70 additions and 53 deletions
@ -0,0 +1,53 @@ |
|||||||
|
'use strict'; |
||||||
|
|
||||||
|
/* |
||||||
|
prune IPs from old posts (actually, rehash them with a temporary random salt to maintain |
||||||
|
post history and prevent *-by-ip action unintentionally deleting many posts) |
||||||
|
NOTE: ips may still remain in the following collections: |
||||||
|
- bans, because bans need the IP to function |
||||||
|
- modlog actioner ips, modlogs are already auto-pruned |
||||||
|
- ratelimits, these only last 1 minute |
||||||
|
- stats, these last max of 24 hours |
||||||
|
*/ |
||||||
|
const Mongo = require(__dirname+'/../db/db.js') |
||||||
|
, { Posts } = require(__dirname+'/../db/') |
||||||
|
, { createHash, randomBytes } = require('crypto') |
||||||
|
, { pruneIps } = require(__dirname+'/../configs/main.js'); |
||||||
|
|
||||||
|
module.exports = async (days) => { |
||||||
|
const beforeDate = new Date(); |
||||||
|
beforeDate.setDate(beforeDate.getDate() - days); |
||||||
|
const beforeDateMongoId = Mongo.ObjectId.createFromTime(Math.floor(beforeDate.getTime()/1000)); |
||||||
|
const tempIpHashSecret = randomBytes(20).toString('base64'); |
||||||
|
const bulkWrites = []; |
||||||
|
await Posts.db.find({ |
||||||
|
_id: { |
||||||
|
$lte: beforeDateMongoId, |
||||||
|
}, |
||||||
|
'ip.pruned': { |
||||||
|
$ne: true |
||||||
|
} |
||||||
|
}).forEach(post => { |
||||||
|
const randomIP = createHash('sha256').update(tempIpHashSecret + post.ip.single).digest('base64'); |
||||||
|
bulkWrites.push({ |
||||||
|
updateOne: { |
||||||
|
filter: { |
||||||
|
_id: post._id, |
||||||
|
}, |
||||||
|
update: { |
||||||
|
$set: { |
||||||
|
'ip.pruned': true, |
||||||
|
'ip.raw': randomIP, |
||||||
|
'ip.single': randomIP, |
||||||
|
'ip.qrange': randomIP, |
||||||
|
'ip.hrange': randomIP, |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
}); |
||||||
|
}); |
||||||
|
console.log(`Randomising ip on ${bulkWrites.length} posts`); |
||||||
|
if (bulkWrites.length.length > 0) { |
||||||
|
await Posts.db.bulkWrite(bulkWrites); |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue