Minor improvements

This commit is contained in:
BurnyLlama 2022-08-13 10:47:16 +02:00
parent ec56c7b9f5
commit 88f8e86bb0
2 changed files with 17 additions and 9 deletions

View File

@ -13,6 +13,7 @@ article > header {
article > header > i { article > header > i {
color: var(--accent); color: var(--accent);
display: block; display: block;
font-size: 1rem;
} }
.toc-container { .toc-container {

View File

@ -4,18 +4,25 @@ import { mdRenderer, njkRenderer } from './siteRenderer.js'
// Handle all request and try to find a corresponding file/template. // Handle all request and try to find a corresponding file/template.
export function requestHandler(req, res, Config) { export function requestHandler(req, res, Config) {
// Add some sanitization:
const path = req.path
// Remove all '..' -- should prevent path traversal.
.replace(/\.\.+/g, "")
// Remove trailing slashes ('/').
.replace(/\/+$/g, "")
// Check for njk files first // Check for njk files first
if (fs.existsSync(`./${Config.contentDir}/pages/${req.path}.njk`)) if (fs.existsSync(`./${Config.contentDir}/pages/${path}.njk`))
return res.send(njkRenderer(`./${Config.contentDir}/pages/${req.path}.njk`)) return res.send(njkRenderer(`./${Config.contentDir}/pages/${path}.njk`))
if (fs.existsSync(`./${Config.contentDir}/pages/${req.path}/index.njk`)) if (fs.existsSync(`./${Config.contentDir}/pages/${path}/index.njk`))
return res.send(njkRenderer(`./${Config.contentDir}/pages/${req.path}/index.njk`)) return res.send(njkRenderer(`./${Config.contentDir}/pages/${path}/index.njk`))
// Secondly search for markdown // Secondly search for markdown
if (fs.existsSync(`./${Config.contentDir}/pages/${req.path}.md`)) if (fs.existsSync(`./${Config.contentDir}/pages/${path}.md`))
return res.send(mdRenderer(`./${Config.contentDir}/pages/${req.path}.md`)) return res.send(mdRenderer(`./${Config.contentDir}/pages/${path}.md`))
if (fs.existsSync(`./${Config.contentDir}/pages/${req.path}/index.md`)) if (fs.existsSync(`./${Config.contentDir}/pages/${path}/index.md`))
return res.send(mdRenderer(`./${Config.contentDir}/pages/${req.path}/index.md`)) return res.send(mdRenderer(`./${Config.contentDir}/pages/${path}/index.md`))
// If no matching file is found, return a 404 error. // If no matching file is found, return a 404 error.
return res.status(404).send(njkRenderer(`./${Config.contentDir}/errors/404.njk`)) return res.status(404).send(njkRenderer(`./${Config.contentDir}/errors/404.njk`))
} }