From 2d33ce79a81c3a0323a4eca18000018f553abed0 Mon Sep 17 00:00:00 2001 From: deadvey Date: Fri, 24 Oct 2025 13:05:31 +0100 Subject: [PATCH] Fixed a bug where comments could be submitted without any content and where the hitcount was incremented before the program checked if the post existed --- example-config.json | 2 +- src/routes/form_actions.js | 26 +++++++++++++++----------- src/routes/standard_pages.js | 6 +++--- webroot/default.css | 7 +++++++ 4 files changed, 26 insertions(+), 15 deletions(-) diff --git a/example-config.json b/example-config.json index 1c13d5c..f8cbf4f 100755 --- a/example-config.json +++ b/example-config.json @@ -17,7 +17,7 @@ "new_post_url": "/post", "signup_url": "/signup", "edit_post_base_url": "/edit", - "default_comenter_username": "Anon", + "default_commenter_username": "Anon", "rss": true, "atom": true, "date_format": "yyyy-MM-dd", diff --git a/src/routes/form_actions.js b/src/routes/form_actions.js index 4fc1a94..6d7e32c 100644 --- a/src/routes/form_actions.js +++ b/src/routes/form_actions.js @@ -19,21 +19,25 @@ router.post("/submit_comment", (req,res) => { const postID = parseInt(req.body.post_index) const content = func.escape_input(req.body.content) let name = func.escape_input(req.body.name) - if (name == "") { + // Give the user the default username if they left that bit blank + if (name == "" || typeof name == 'undefined') { name = config.default_commenter_username } - let comments = data.getdata('comments') + // Check there is actually content in the comment + if (content != '' && typeof content != 'undefined') { + let comments = data.getdata('comments') - new_comment = { - "name": name, - "content": content, - "id": comments[postID].length, - "pubdate": unix_timestamp, - "postID": postID, - }; - comments[postID].push(new_comment); - fs.writeFileSync(`../data/comments.json`, `${JSON.stringify(comments)}`, 'utf-8'); + new_comment = { + "name": name, + "content": content, + "id": comments[postID].length, + "pubdate": unix_timestamp, + "postID": postID, + }; + comments[postID].push(new_comment); + fs.writeFileSync(`../data/comments.json`, `${JSON.stringify(comments)}`, 'utf-8'); + } res.redirect(301,`/post/${req.body.post_index}`) }); // /submit_comment diff --git a/src/routes/standard_pages.js b/src/routes/standard_pages.js index f67a3dc..eb1aae3 100644 --- a/src/routes/standard_pages.js +++ b/src/routes/standard_pages.js @@ -62,15 +62,15 @@ router.get("/user/:username", (req, res) => { router.get("/post/:post_index", (req, res) => { const postID = parseInt(req.params.post_index) let post = data.getdata('posts', postID) - if (config.enable_hitcount) { - data.increment_hitcount(postID) - } if (post == 1) { // data.getdata returns error code 1 if nothing is available res.render("partials/message", { message: locale.post_doesnt_exist, config, }) } + if (config.enable_hitcount) { + data.increment_hitcount(postID) + } else if (typeof post["deleted"] == "undefined" || post["deleted"] == false) { res.render("pages/post", { diff --git a/webroot/default.css b/webroot/default.css index 81da789..6542433 100644 --- a/webroot/default.css +++ b/webroot/default.css @@ -36,6 +36,10 @@ a:hover { hr { color: white; } + .comment:nth-child(even) { + background: #1E1E1E; + } + } @media (prefers-color-scheme: light) { @@ -46,4 +50,7 @@ a:hover { hr { color: black; } + .comment:nth-child(even) { + background: #EEEEEE; + } }