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