logs optional, add a config for it

merge-requests/208/head
fatchan 4 years ago
parent 3f7a9cab83
commit 1840265955
  1. 3
      configs/main.js.example
  2. 6
      controllers/forms.js
  3. 3
      gulp/res/css/style.css
  4. 4
      gulp/res/css/themes/chaos.css
  5. 8
      gulp/res/js/theme.js
  6. 22
      helpers/tasks.js
  7. 6
      schedules/index.js
  8. 2
      schedules/prune.js
  9. 4
      schedules/webring.js
  10. 39
      server.js
  11. 6
      worker.js

@ -35,6 +35,9 @@ module.exports = {
//cache templates in memory. disable only if editing templates and doing dev work
cacheTemplates: true,
//log extra info for debugging
debugLogs: true,
//max wait time in ms for obtaining locks for saving files
lockWait: 3000,

@ -3,7 +3,7 @@
const express = require('express')
, router = express.Router()
, Boards = require(__dirname+'/../db/boards.js')
, { globalLimits } = require(__dirname+'/../configs/main.js')
, { globalLimits, debugLogs } = require(__dirname+'/../configs/main.js')
//middlewares
, calcPerms = require(__dirname+'/../helpers/checks/calcpermsmiddleware.js')
, hasPerms = require(__dirname+'/../helpers/checks/haspermsmiddleware.js')
@ -24,7 +24,7 @@ const express = require('express')
}
, upload = require('express-fileupload')
, postFiles = upload({
debug: false,
debug: debugLogs,
createParentPath: true,
safeFileNames: /[^\w\s-]+/g,
preserveExtension: 4,
@ -38,7 +38,7 @@ const express = require('express')
tempFileDir: __dirname+'/../tmp/'
})
, bannerFiles = upload({
debug: false,
debug: debugLogs,
createParentPath: true,
safeFileNames: /[^\w\s-]+/g,
preserveExtension: 3,

@ -552,7 +552,7 @@ details.actions div {
align-items: start;
}
a, video, img, input, summary, select, option {
a, video, img, input, summary, select, option, textarea {
outline: 0;
}
@ -838,7 +838,6 @@ input[type="file"] {
box-sizing: border-box;
border: 5px solid var(--post-color);
overflow-y: auto;
box-shadow: 0 0 3px 1px var(--darken);
}
#postform:target {

@ -50,6 +50,7 @@ textarea,
.postform-style,
.close,
table,
.board-banner,
#postform {
border: 1px dotted;
}
@ -59,9 +60,6 @@ hr {
.navbar {
border-bottom: 1px dotted;
}
#postform {
border-top: none;
}
a .post-name:hover,
a:hover {
background:var(--link-hover)!important;

@ -1,5 +1,6 @@
setDefaultLocalStorage('theme', 'default');
setDefaultLocalStorage('codetheme', 'default');
setDefaultLocalStorage('customcss', '');
let customCSSString = localStorage.getItem('customcss');
window.addEventListener('settingsReady', function(event) {
@ -21,6 +22,7 @@ window.addEventListener('settingsReady', function(event) {
//custom CSS for users
const customCSSSetting = document.getElementById('customcss-setting');
let customCSSString = localStorage.getItem('customcss');
const editCustomCSS = (change) => {
customCSSString = customCSSSetting.value;
console.log('editing custom CSS', customCSSString.length);
@ -36,7 +38,7 @@ function changeTheme(type) {
switch(type) {
case 'theme':
case 'codetheme':
const theme = localStorage.getItem(type) || 'default';
const theme = localStorage.getItem(type);
let tempLink = document.getElementById(`custom${type}`);
let defaultLink = document.getElementById(type);
if (theme === 'default' || theme === defaultLink.dataset.theme) {
@ -83,7 +85,7 @@ function changeTheme(type) {
customCSSLink.id = 'customcss';
document.head.appendChild(customCSSLink);
}
customCSSLink.innerHTML = customCSSString;
customCSSLink.innerHTML = localStorage.getItem('customcss');
break;
}
}

@ -5,7 +5,7 @@ const Mongo = require(__dirname+'/../db/db.js')
, timeUtils = require(__dirname+'/timeutils.js')
, uploadDirectory = require(__dirname+'/files/uploadDirectory.js')
, { remove } = require('fs-extra')
, { pruneModlogs, enableWebring } = require(__dirname+'/../configs/main.js')
, { debusLogs, pruneModlogs, enableWebring } = require(__dirname+'/../configs/main.js')
, { Stats, Posts, Files, Boards, News, Modlogs } = require(__dirname+'/../db/')
, render = require(__dirname+'/render.js')
, timeDiffString = require(__dirname+'/timediffstring.js');
@ -20,7 +20,7 @@ module.exports = {
'data': options.board.banners
});
const end = process.hrtime(start);
console.log(timeDiffString(label, end));
debugLogs && console.log(timeDiffString(label, end));
return html;
},
@ -39,7 +39,7 @@ module.exports = {
'data': threads
});
const end = process.hrtime(start);
console.log(timeDiffString(label, end));
debugLogs && console.log(timeDiffString(label, end));
return html;
},
@ -61,7 +61,7 @@ module.exports = {
'data': thread
});
const end = process.hrtime(start);
console.log(timeDiffString(label, end));
debugLogs && console.log(timeDiffString(label, end));
return html;
},
@ -80,7 +80,7 @@ module.exports = {
'data': threads
});
const end = process.hrtime(start);
console.log(timeDiffString(label, end));
debugLogs && console.log(timeDiffString(label, end));
return html;
},
@ -119,7 +119,7 @@ module.exports = {
}
await Promise.all(buildArray);
const end = process.hrtime(start);
console.log(timeDiffString(label, end));
debugLogs && console.log(timeDiffString(label, end));
},
buildNews: async () => {
@ -130,7 +130,7 @@ module.exports = {
news
});
const end = process.hrtime(start);
console.log(timeDiffString(label, end));
debugLogs && console.log(timeDiffString(label, end));
return html;
},
@ -153,7 +153,7 @@ module.exports = {
...options
});
const end = process.hrtime(start);
console.log(timeDiffString(label, end));
debugLogs && console.log(timeDiffString(label, end));
return html;
},
@ -186,7 +186,7 @@ module.exports = {
dates
});
const end = process.hrtime(start);
console.log(timeDiffString(label, end));
debugLogs && console.log(timeDiffString(label, end));
return html;
},
@ -204,7 +204,7 @@ module.exports = {
fileStats,
});
const end = process.hrtime(start);
console.log(timeDiffString(label, end));
debugLogs && console.log(timeDiffString(label, end));
return html;
},
@ -214,7 +214,7 @@ module.exports = {
await Stats.updateBoards();
await Stats.resetStats();
const end = process.hrtime(start);
console.log(timeDiffString(label, end));
debugLogs && console.log(timeDiffString(label, end));
module.exports.buildHomepage();
},

@ -6,14 +6,14 @@ process
const timeUtils = require(__dirname+'/../helpers/timeutils.js')
, Mongo = require(__dirname+'/../db/db.js')
, { enableWebring } = require(__dirname+'/../configs/main.js')
, { debugLogs, enableWebring } = require(__dirname+'/../configs/main.js')
, doInterval = require(__dirname+'/../helpers/dointerval.js');
(async () => {
console.log('CONNECTING TO MONGODB');
debugLogs && console.log('CONNECTING TO MONGODB');
await Mongo.connect();
console.log('STARTING SCHEDULES');
debugLogs && console.log('STARTING SCHEDULES');
//update board stats and homepage
const taskQueue = require(__dirname+'/../queue.js');

@ -1,6 +1,7 @@
'use strict';
const Files = require(__dirname+'/../db/files.js')
, { debugLogs } = require(__dirname+'/../configs/main.js')
, { remove } = require('fs-extra')
, uploadDirectory = require(__dirname+'/../helpers/files/uploadDirectory.js');
@ -22,6 +23,7 @@ module.exports = async() => {
}
});
await Promise.all(files.map(async file => {
debugLogs && console.log(file._id)
return Promise.all(
[remove(`${uploadDirectory}/img/${file._id}`)]
.concat(file.exts.filter(ext => ext).map(ext => {

@ -1,7 +1,7 @@
'use strict';
const fetch = require('node-fetch')
, { meta } = require(__dirname+'/../configs/main.js')
, { debugLogs, meta } = require(__dirname+'/../configs/main.js')
, { logo, following, blacklist } = require(__dirname+'/../configs/webring.json')
, { Boards, Webring } = require(__dirname+'/../db/')
, { outputFile } = require('fs-extra')
@ -87,5 +87,5 @@ module.exports = async () => {
}
const end = process.hrtime(start);
console.log(timeDiffString(label, end));
debugLogs && console.log(timeDiffString(label, end));
}

@ -11,7 +11,8 @@ const express = require('express')
, app = express()
, server = require('http').createServer(app)
, cookieParser = require('cookie-parser')
, configs = require(__dirname+'/configs/main.js')
, { cacheTemplates, boardDefaults, sessionSecret, globalLimits,
secureCookies, debugLogs, meta, port } = require(__dirname+'/configs/main.js')
, processIp = require(__dirname+'/helpers/processip.js')
, referrerCheck = require(__dirname+'/helpers/referrercheck.js')
, { themes, codeThemes } = require(__dirname+'/helpers/themes.js')
@ -25,18 +26,18 @@ const express = require('express')
const env = process.env.NODE_ENV;
const production = env === 'production';
console.log('STARTING IN MODE:', env);
debugLogs && console.log('STARTING IN MODE:', env);
// connect to mongodb
console.log('CONNECTING TO MONGODB');
debugLogs && console.log('CONNECTING TO MONGODB');
await Mongo.connect();
// connect to redis
console.log('CONNECTING TO REDIS');
debugLogs && console.log('CONNECTING TO REDIS');
const { redisClient } = require(__dirname+'/redis.js');
// connect socketio
console.log('STARTING WEBSOCKET');
debugLogs && console.log('STARTING WEBSOCKET');
Socketio.connect(server);
// disable useless express header
@ -49,7 +50,7 @@ const express = require('express')
// session store
app.use(session({
secret: configs.sessionSecret,
secret: sessionSecret,
store: new redisStore({
client: redisClient,
}),
@ -57,7 +58,7 @@ const express = require('express')
saveUninitialized: false,
cookie: {
httpOnly: true,
secure: configs.secureCookies && production,
secure: secureCookies && production,
sameSite: 'strict',
maxAge: DAY,
}
@ -75,15 +76,15 @@ const express = require('express')
app.set('view engine', 'pug');
app.set('views', views);
//cache loaded templates
if (configs.cacheTemplates === true) {
if (cacheTemplates === true) {
app.enable('view cache');
}
//default settings
app.locals.defaultTheme = configs.boardDefaults.theme;
app.locals.defaultCodeTheme = configs.boardDefaults.codeTheme;
app.locals.globalLimits = configs.globalLimits;
app.locals.meta = configs.meta;
app.locals.defaultTheme = boardDefaults.theme;
app.locals.defaultCodeTheme = boardDefaults.codeTheme;
app.locals.globalLimits = globalLimits;
app.locals.meta = meta;
// routes
if (!production) {
@ -116,33 +117,33 @@ const express = require('express')
})
//listen
server.listen(configs.port, '127.0.0.1', () => {
server.listen(port, '127.0.0.1', () => {
new CachePugTemplates({ app, views }).start();
console.log(`LISTENING ON :${configs.port}`);
debugLogs && console.log(`LISTENING ON :${port}`);
//let PM2 know that this is ready for graceful reloads and to serialise startup
if (typeof process.send === 'function') {
//make sure we are a child process of PM2 i.e. not in dev
console.log('SENT READY SIGNAL TO PM2');
debugLogs && console.log('SENT READY SIGNAL TO PM2');
process.send('ready');
}
});
//listen for sigint from PM2
process.on('SIGINT', () => {
console.log('SIGINT SIGNAL RECEIVED');
debugLogs && console.log('SIGINT SIGNAL RECEIVED');
// Stops the server from accepting new connections and finishes existing connections.
Socketio.io.close((err) => {
// if error, log and exit with error (1 code)
console.log('CLOSING SERVER');
debugLogs && console.log('CLOSING SERVER');
if (err) {
console.error(err);
process.exit(1);
}
// close database connection
console.log('DISCONNECTING MONGODB');
debugLogs && console.log('DISCONNECTING MONGODB');
Mongo.client.close();
//close redis connection
console.log('DISCONNECTING REDIS')
debugLogs && console.log('DISCONNECTING REDIS')
redisClient.quit();
// now close without error
process.exit(0);

@ -5,16 +5,16 @@ process
.on('unhandledRejection', console.error);
const Queue = require('bull')
, configs = require(__dirname+'/configs/main.js')
, { redis, debugLogs } = require(__dirname+'/configs/main.js')
, Mongo = require(__dirname+'/db/db.js');
(async () => {
console.log('CONNECTING TO MONGODB');
debugLogs && console.log('CONNECTING TO MONGODB');
await Mongo.connect();
const tasks = require(__dirname+'/helpers/tasks.js')
, taskQueue = new Queue('task', { 'redis': configs.redis });
, taskQueue = new Queue('task', { redis });
taskQueue
.on('error', console.error)

Loading…
Cancel
Save