filesafe/lolisafe.js
Pitu 18c66d27fb Added support for custom html files
There's a new folder that gets created upon running lolisafe for the first time. On said folder any html file with the same name as the default ones will be loaded instead, letting you place custom frontend files without messing with git.
2017-02-06 00:06:33 -03:00

48 lines
1.6 KiB
JavaScript

const config = require('./config.js')
const api = require('./routes/api.js')
const express = require('express')
const bodyParser = require('body-parser')
const rateLimit = require('express-rate-limit')
const db = require('knex')(config.database)
const fs = require('fs')
const safe = express()
require('./database/db.js')(db)
fs.existsSync('./pages/custom' ) || fs.mkdirSync('./pages/custom')
fs.existsSync('./' + config.logsFolder) || fs.mkdirSync('./' + config.logsFolder)
fs.existsSync('./' + config.uploads.folder) || fs.mkdirSync('./' + config.uploads.folder)
fs.existsSync('./' + config.uploads.folder + '/thumbs') || fs.mkdirSync('./' + config.uploads.folder + '/thumbs')
safe.set('trust proxy', 1)
let limiter = new rateLimit({ windowMs: 5000, max: 2 })
safe.use('/api/login/', limiter)
safe.use('/api/register/', limiter)
safe.use(bodyParser.urlencoded({ extended: true }))
safe.use(bodyParser.json())
safe.use('/', express.static('./uploads'))
safe.use('/', express.static('./public'))
safe.use('/api', api)
for(let page of config.pages){
let root = './pages/'
if(fs.existsSync(`./pages/custom/${page}.html`))
root = './pages/custom/'
if(page === 'home') safe.get('/', (req, res, next) => res.sendFile(`${page}.html`, { root: root }))
else safe.get(`/${page}`, (req, res, next) => res.sendFile(`${page}.html`, { root: root }))
}
safe.use((req, res, next) => res.status(404).sendFile('404.html', { root: './pages/error/' }))
safe.use((req, res, next) => res.status(500).sendFile('500.html', { root: './pages/error/' }))
safe.listen(config.port, () => console.log(`loli-safe started on port ${config.port}`))
safe.prepareFrontendRoutes = function(){
}