jschan - Anonymous imageboard software. Classic look, modern features and feel. Works without JavaScript and supports Tor, I2P, Lokinet, etc.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

73 lines
2.0 KiB

'use strict';
const Mongo = require(__dirname+'/helpers/db.js')
, util = require('util')
, path = require('path')
, fs = require('fs')
, unlink = util.promisify(fs.unlink)
, readdir = util.promisify(fs.readdir);
(async () => {
console.log('connecting to db...')
await Mongo.connect();
const Boards = require(__dirname+'/db-models/boards.js')
, Posts = require(__dirname+'/db-models/posts.js')
, Trips = require(__dirname+'/db-models/trips.js')
, Accounts = require(__dirname+'/db-models/accounts.js');
console.log('deleting accounts')
await Accounts.deleteAll();
console.log('deleting posts')
await Posts.deleteAll('pol');
await Posts.deleteAll('b');
console.log('deleting boards')
await Boards.deleteIncrement('pol');
await Boards.deleteIncrement('b');
await Boards.deleteAll();
await Trips.deleteAll();
console.log('adding b and pol')
await Boards.insertOne({
_id: 'pol',
name: 'Politically Incorrect',
description: 'Political posts go here.',
owner: '',
moderators: [],
})
await Boards.insertOne({
_id: 'b',
name: 'Random',
description: 'post anything here',
owner: '',
moderators: [],
})
console.log('creating indexes')
await Posts.db.collection('b').createIndex({"thread": 1});
await Posts.db.collection('b').createIndex({"bumped": 1});
await Posts.db.collection('pol').createIndex({"thread": 1});
await Posts.db.collection('pol').createIndex({"bumped": 1});
await Posts.db.collection('pol').createIndex({
'reports.0': 1
}, {
partialFilterExpression: {
'reports.0': {
'$exists': true
}
}
});
await Posts.db.collection('b').createIndex({
'reports.0': 1
}, {
partialFilterExpression: {
'reports.0': {
'$exists': true
}
}
});
await readdir('static/img/').then(async files => {
await Promise.all(files.map(async file => {
unlink(path.join('static/img/', file));
}))
});
console.log('creating admin account: admin:changeme');
await Accounts.insertOne('admin', 'changeme', 3);
console.log('done');
})();