'use strict'; const hashIp = require(__dirname+'/../lib/misc/haship.js'); module.exports = async(db, redis) => { console.log('change bans index'); await db.collection('bans').dropIndex('ip_1_board_1'); await db.collection('bans').createIndex({ 'ip.single': 1 , 'board': 1 }); console.log('adjusting ip on posts and clearing reports'); const promises = []; await db.collection('posts').find().forEach(doc => { promises.push(db.collection('posts').updateOne({ '_id':doc._id }, { '$set':{ 'ip.raw': doc.ip.single, 'ip.single': hashIp(doc.ip.single), 'ip.qrange': hashIp(doc.ip.qrange), 'ip.hrange': hashIp(doc.ip.hrange), 'reports': [], //easier than fixing reports 'globalreports': [], //easier than fixing reports } })); }); console.log('adjusting ip in modlogs'); await db.collection('modlog').find().forEach(doc => { promises.push(db.collection('modlog').updateOne({ '_id':doc._id }, { '$set':{ 'ip': { 'raw': doc.ip, 'single': hashIp(doc.ip) } } })); }); console.log('adjust ip in bans, set null type and remove saved posts'); await db.collection('bans').find().forEach(doc => { promises.push(db.collection('bans').updateOne({ '_id':doc._id }, { '$set':{ 'ip': { 'raw': doc.ip, 'single': hashIp(doc.ip) }, 'type': null, 'posts': null //easier than fixing all saved posts } })); }); await Promise.all(promises); console.log('Cleared boards cache'); await redis.deletePattern('board:*'); };