improved configuration options -- settings for opengraph url/sitename and render template cache

merge-requests/208/head
fatchan 5 years ago
parent f9ec124d61
commit b3431baadf
  1. 12
      configs/main.json.example
  2. 5
      helpers/render.js
  3. 34
      server.js
  4. 2
      views/pages/board.pug
  5. 6
      views/pages/thread.pug

@ -1,5 +1,11 @@
{
"dbURL": "mongodb://",
"port": 7777,
"sessionSecret": "xxxxx"
"dbURL": "mongodb://username:password@localhost:27017",
"port": 7000,
"sessionSecret": "CHANGE ME",
"cacheTemplates": true,
"refererRegex": "^https?:\\/\\/(?:www\\.)?DOMAIN\\.TLD\\/",
"openGraph": {
"siteName": "CHANGE ME",
"url": "https://DOMAIN.TLD"
}
}

@ -1,12 +1,13 @@
'use strict';
const outputFile = require('fs-extra').outputFile
const configs = require(__dirname+'/../configs/main.json')
, outputFile = require('fs-extra').outputFile
, pug = require('pug')
, path = require('path')
, uploadDirectory = require(__dirname+'/uploadDirectory.js')
, templateDirectory = path.join(__dirname+'/../views/pages/');
module.exports = async (htmlName, templateName, options) => {
const html = pug.renderFile(`${templateDirectory}${templateName}`, { ...options, cache: true });
const html = pug.renderFile(`${templateDirectory}${templateName}`, { ...options, cache: configs.cacheTemplates, opengraph: configs.openGraph });
return outputFile(`${uploadDirectory}html/${htmlName}`, html);
};

@ -1,7 +1,8 @@
'use strict';
process.on('uncaughtException', console.error);
process.on('unhandledRejection', console.error);
process
.on('uncaughtException', console.error)
.on('unhandledRejection', console.error);
const express = require('express')
, session = require('express-session')
@ -11,6 +12,7 @@ const express = require('express')
, bodyParser = require('body-parser')
, cookieParser = require('cookie-parser')
, configs = require(__dirname+'/configs/main.json')
, refererRegex = new RegExp(configs.refererRegex)
, Mongo = require(__dirname+'/db/db.js');
(async () => {
@ -46,11 +48,11 @@ const express = require('express')
if (req.method !== 'POST') {
return next();
}
if (!req.headers.referer || !req.headers.referer.match(/^https:\/\/(www\.)?fatpeople\.lol/)) {
if (!req.headers.referer || !req.headers.referer.match(refererRegex)) {
return res.status(403).render('message', {
'title': 'Forbidden',
'message': 'Invalid or missing "Referer" header. Are you posting from the correct URL?'
})
});
}
next();
})
@ -58,27 +60,29 @@ const express = require('express')
// use pug view engine
app.set('view engine', 'pug');
app.set('views', path.join(__dirname, 'views/pages'));
app.enable('view cache');
if (configs.cacheTemplates === true) {
app.enable('view cache');
}
// routes
app.use('/forms', require(__dirname+'/controllers/forms.js'))
app.use('/', require(__dirname+'/controllers/pages.js'))
app.use('/forms', require(__dirname+'/controllers/forms.js'));
app.use('/', require(__dirname+'/controllers/pages.js'));
//404 catchall
app.get('*', (req, res) => {
res.status(404).render('404')
res.status(404).render('404');
})
// catch any unhandled errors
app.use((err, req, res, next) => {
if (err.code === 'EBADCSRFTOKEN') {
return res.status(403).send('Invalid CSRF token')
return res.status(403).send('Invalid CSRF token');
}
console.error(err.stack)
console.error(err.stack);
return res.status(500).render('message', {
'title': 'Internal Server Error',
'redirect': req.headers.referer || '/'
})
});
})
// listen
@ -88,7 +92,7 @@ const express = require('express')
//let PM2 know that this is ready (for graceful reloads)
if (typeof process.send === 'function') { //make sure we are a child process
console.info('sending ready signal to PM2')
console.info('sending ready signal to PM2');
process.send('ready');
}
@ -96,20 +100,20 @@ const express = require('express')
process.on('SIGINT', () => {
console.info('SIGINT signal received')
console.info('SIGINT signal received');
// Stops the server from accepting new connections and finishes existing connections.
server.close((err) => {
// if error, log and exit with error (1 code)
console.info('closing http server')
console.info('closing http server');
if (err) {
console.error(err);
process.exit(1);
}
// close database connection
console.info('closing db connection')
console.info('closing db connection');
Mongo.client.close();
// now close without error

@ -2,7 +2,7 @@ extends ../layout.pug
include ../mixins/post.pug
block head
title /#{board._id}/ - Recent Posts
title /#{board._id}/ - #{board.description}
block content
include ../includes/boardheader.pug

@ -3,9 +3,9 @@ include ../mixins/post.pug
block head
title /#{board._id}/ - #{thread.subject||thread.postId}
meta(property='og:site_name', value='fatchan')
meta(property='og:title', content=thread.subject)
meta(property='og:url', content='https://fatpeople.lol')
meta(property='og:site_name', value=openGraph.siteName)
meta(property='og:title', content=thread.subjct)
meta(property='og:url', content=openGraph.url)
meta(property='og:description', content=thread.message.substring(0,200))
meta(property='og:image', content=thread.files.length > 0 ? '/img/'+thread.files[0].filename : '')

Loading…
Cancel
Save