config docs

This commit is contained in:
2025-07-20 23:59:30 +01:00
parent d54b682267
commit 590d675075
4 changed files with 102 additions and 113 deletions

209
CONFIG.md
View File

@@ -1,130 +1,117 @@
# Configuration Documentation # Configuration Documentation
## Introduction ## Introduction
The configuration file is stored in a file called config.json, for an example, copy example-config.json to config.json (`cp example-config.json config.json`) and modify from there.<br/> The configuration file is stored in a file called config.json, for an example, copy example-config.json to config.json (`cp example-config.json config.json`) and modify from there.<br/>
Currently all values in example-config.json are required, however I plan to add support for default values in the case of no value being set. Currently all values in example-config.json are required, however I plan to add support for default values in the case of no value being set.<br/>
All options show an example configuartion value and the variable type + an explaination below it.<br/>
## Technical configuration ## Technical configuration
* "site_url": "https://example.com"<br/> * "site_url": "https://example.com"<br/>
This value defines the url of your site, this used for the RSS feed to link back to post. This value defines the url of your site, this used for the RSS feed to link back to post.
* "port": 8080<br/> * "port": 8080<br/>
This value defines the port that you run the blog on. Don't change this value if you don't know what that means. Integer. This value defines the port that you run the blog on. Don't change this value if you don't know what that means.
* "allow_signup": true<br/> * "allow_signup": true<br/>
Boolean that defines weather new people should be allowed to signup. Boolean. Defines weather new people should be allowed to signup.
* "timeline_length": 20<br/> * "timeline_length": 20<br/>
How many posts will be shown on the timeline (home page). Integer. How many posts will be shown on the timeline (home page).
* "enable_hitcount": true<br/> * "enable_hitcount": true<br/>
Enabling the hitcount (a number that represents the amount of front page loads (stored in hitcount.txt)) can slightly slow down loading of the front page. Boolean. Enabling the hitcount (a number that represents the amount of front page loads (stored in hitcount.txt)) can slightly slow down loading of the front page.
* "charset": "UTF-8"<br/> * "charset": "UTF-8"<br/>
This is the value in the <meta charset=""> tag in the html of all pages, you should not change this unless you know why. String. This is the value in the <meta charset=""> tag in the html of all pages, you should not change this unless you know why.
* "root_path": "/path/to/root/of/website"
String. Anything in this directory will be in the webroot, so put favicon.ico and anything else here.
## Basic Customisation ## Basic Customisation
seperator = "<hr/>" * "seperator": "\<hr/\>"<br/>
site_name = "My Blog" String. This is what %S represents in the formatting, this will go inbetween posts and generally to seperate out content on pages.
site_description = "Read my blogs!" * "site_name": "My Blog"<br/>
String. This is what %Y represents; it's the name of your instance, a human readable string.
* "site_description": "Read my blogs!"
String. This is what %W represents; it's the description of your instance, a human readable string.
* "default_commenter_username": "Anon"
String. Default commenter username if no username is inputted in comment submission.
// Anything in this directory will be in the webroot, so put favicon.ico and anything else here. ## Syndication
root_path = "/path/to/root/of/website" * "rss": true<br/>
Boolean. Enable or Disable RSS feeds.
* "rss_path": "/rss"<br/>
String. The path of the global rss feed file.
// Default username if no username is inputted in comment submission ## Dates
default_username = "Anon" Read more at [date-fns](https://date-fns.org/v4.1.0/docs/format)<br/>
* "date_format": "yyyy-MM-dd"<br/>
String. The format of date's on the website.
* "time_zone": "+0000"<br/>
String. Your offset from UTC
// RSS feeds ## Advanced Customisation
rss = true All of these customisations support format indicators<br/>
rss_path = "/rss" Format indicatos are a % sign followed by a character and represent a piece of information<br/>
relevant to the data at hand.
<details open>
<summary>Format Indicators</summary>
The syntax for this is pretty simple
* %% - A literal %
* %A - List of tags
* %B - List of tags, each one with a hyperlink to that tag page
* %C - Post content
* %D - Published date in the format specified by date_format
* %E - Edited date in the format specified by date_format
* %F - Pretty name
* %G - Tag name (used for the tag page only)
* %H - Frontpage hit count
* %I - User description
* %L - URL Permanent link to the post
* %M - comments
* %N - the username of the user (poster)
* %O - URL to edit this post
* %P - URL to create a new post
* %Q - URL to sign up
* %R - Site wide RSS feed
* %S - post seperator as defined by post_seperator
* %T - Title
* %U - URL the the user (poster)
* %W - Site Description as defined by site_description
* %X - Comment submission box
* %Y - Site Name as defined by site_name
* %Z - Attribution (to me) and source code link and license
</details>
### Header's
* "timeline_header": "<h1>%Y</h1><h2>%W</h2><a href="%P">Create Post</a>\<br/\><a href="%R">RSS Feed</a>\<br/\><a href="%Q">Sign Up</a>\<br/\><a href="%D">Delete Account</a>\<br/\>Hit count: %H%S"<br/>
String. The format of the header peice of the home page/timeline page, example includes the site name, desciption and some relevant links.
* "user_page_header": "<h1>%F's posts:</h1>%I%S"<br/>
String. The format of the header peice of the user page which contains all posts from a particular user. example includes the prettyname and their description.
* "tag_page_header": "<h1>Posts tagged: %G</h1>%S"<br/>
String. The format of the header peice of the tag page which contains all posts with a particular tag, example includes the tag name.
### Post's
* "user_post_format": "<h2>%T</h2><p>%C</p><i>%B</i>\<br/\><a href="%L">Permalink</a><\br/\>%X%M%S"<br/>
String. The format of posts on the users page. Example includes title, content, tags, permalink and comments.
* "post_page_format": "<h1>%T</h1><p>%C</p><i>%B</i>\<br/\><i>By <a href="%U">%N</a></i>\<br/\><a href="%O">Edit Post</a>\<br/\><i>Posted: %D</i>\<br/\><i>Edited: %E</i>%S%X%M%S"<br/>
String. The format of the post on the post's page. Example includes title, content, tags, user page hyperlink, edit post hyperlink, publish date, modified date and comments.
* "timeline_post_format": "<h3>%T</h3><p>%C</p><a href="%L">Permalink</a><\br/\><i>By <a href="%U">%N</a></i>%X%M%S"<br/>
String. The format of the posts on the timeline, example includes title, content, permalink, user page hyperlink and comments.
* "tag_post_format": "<h3>%T</h3><p>%C</p><i>%B</i>\<br/\><a href="%L">Permalink</a>\<br/\><i>By <a href="%U">%N</a></i>%S"
String. The format of the posts on the tag page, example includes title, content, permalink and user page hyperlink.
### Other
* "site_wide_footer": "Site is ran by DeaDvey\<br/\>%Z"<br/>
String. The format of the site wide footer, shown on every page.
* "css": "body { background: red; }"<br/>
String. Custom CSS to be applied to all pages, if you want more complex css, you can edit custom.css.
// Dates ## Custom Strings
// https://date-fns.org/v4.1.0/docs/format All of these values are of type String
date_format = "yyyy-MM-dd" * "signup_agreement": "I agree to not post illegal or hateful content"<br/>
time_zone = "+0000" The agreement people must check to signup for the server.
* "signups_unavailable": "Sorry, this server does not allow signups"<br/>
The string to be displayed if the user tries to signup when signup's are disabled.
* "user_exists": "Sorry, this user already exists, try a different username"<br/>
The string to be shown when someone is trying to signup with a name exists.
* "user_doesnt_exist": "Sorry, this user does not exist"<br/>
The string to be shown when someone tries to edit their account or make a post but the username doesn't exist.
* "delete_account_confirmation": "I agree that my account and all of my posts will be permanently deleted instantly"<br/>
The string to be shown as a confirmation when a user tries to delete their account.
* "incorrect_password": "Incorrect Password"<br/>
The string to be shown if the password is incorrect.
//// Format ///// ## Other
// The syntax for this is pretty simple * "attribution" = "Powered by blogger-nodejs: <a href='https://git.javalsai.tuxcord.net/deadvey/blogger-nodejs'>Source Code</a>, <a href='https://git.javalsai.tuxcord.net/deadvey/blogger-nodejs/raw/branch/master/LICENSE'>license (WTFPL)</a>"
// %% - A literal % String. Represented by format indicator %Z. Only change this value if you modify the source code or just want to change some of the formatting.
// %A - List of tags
// %B - List of tags, each one with a hyperlink to that tag page
// %C - Post content
// %D - Published date in the format specified by date_format
// %E - Edited date in the format specified by date_format
// %F - Pretty name
// %G - Tag name (used for the tag page only)
// %H - Frontpage hit count
// %I - User description
// %L - URL Permanent link to the post
// %M - comments
// %N - the username of the user (poster)
// %O - URL to edit this post
// %P - URL to create a new post
// %Q - URL to sign up
// %R - Site wide RSS feed
// %S - post seperator as defined by post_seperator
// %T - Title
// %U - URL the the user (poster)
// %W - Site Description as defined by site_description
// %X - Comment submission box
// %Y - Site Name as defined by site_name
// %Z - Attribution (to me) and source code link and license
timeline_header = `<h1>%Y</h1>
<h2>%W</h2>
<a href="%P">Create Post</a><br/>
<a href="%R">RSS Feed</a><br/>
<a href="%Q">Sign Up</a><br/>
<a href="%D">Delete Account</a><br/>
Hit count: %H
%S`
user_page_header = `<h1>%F's posts:</h1>
%I
%S`
tag_page_header = `<h1>Posts tagged: %G</h1>%S`
// ---------------------------------------------
user_post_format = `<h2>%T</h2>
<p>%C</p>
<i>%B</i><br/>
<a href="%L">Permalink</a><br/>
%X
%M
%S`
post_page_format = `<h1>%T</h1>
<p>%C</p>
<i>%B</i><br/>
<i>By <a href="%U">%N</a></i><br/>
<a href="%O">Edit Post</a><br/>
<i>Posted: %D</i><br/>
<i>Edited: %E</i>
%S
%X
%M
%S`
timeline_post_format = `<h3>%T</h3>
<p>%C</p>
<a href="%L">Permalink</a><br/>
<i>By <a href="%U">%N</a></i>
%X
%M
%S`
tag_post_format = `<h3>%T</h3>
<p>%C</p>
<i>%B</i><br/>
<a href="%L">Permalink</a><br/>
<i>By <a href="%U">%N</a></i>
%S`
// -------------------------------------
site_wide_footer = `Site is ran by DeaDvey<br/>
%Z`
// Custom Strings
signup_agreement = "I agree to not post illegal or hateful content"
signups_unavailable = "Sorry, this server does not allow signups"
user_exists = "Sorry, this user already exists, try a different username"
user_doesnt_exist = "Sorry, this user does not exist"
delete_account_confirmation = "I agree that my account and all of my posts will be permanently deleted instantly"
incorrect_password = "Incorrect Password"
/// Custom CSS to be applied to every page
css = `
/* Put you custom CSS here,
Read about existing classes and ID's in the docs (coming soon)*\
`
// pretty please don't change this
attribution = "Powered by blogger-nodejs: <a href='https://git.javalsai.tuxcord.net/deadvey/blogger-nodejs'>Source Code</a>, <a href='https://git.javalsai.tuxcord.net/deadvey/blogger-nodejs/raw/branch/master/LICENSE'>license (WTFPL)</a>"

View File

@@ -22,6 +22,8 @@ Read the [configuation guide](CONFIG.md) for configuration help (in config.json)
* probably insecure as hell * probably insecure as hell
# planned features/todo list # planned features/todo list
* custom CSS _file_
* custom strings use format indicators
* seperate functions into modules * seperate functions into modules
* builtin crypto * builtin crypto
* ejs * ejs

2
app.js
View File

@@ -388,7 +388,7 @@ app.post("/submit_comment", (req,res) => {
const unix_timestamp = getUnixTime(new Date()) const unix_timestamp = getUnixTime(new Date())
let name = escape_input(req.body.name) let name = escape_input(req.body.name)
if (name == "") { if (name == "") {
name = config.default_username name = config.default_commenter_username
} }
new_comment = { new_comment = {
"name": name, "name": name,

View File

@@ -9,7 +9,7 @@
"enable_hitcount": true, "enable_hitcount": true,
"charset": "UTF-8", "charset": "UTF-8",
"root_path": "/path/to/root/of/website", "root_path": "/path/to/root/of/website",
"default_username": "Anon", "default_comenter_username": "Anon",
"rss": true, "rss": true,
"rss_path": "/rss", "rss_path": "/rss",
"date_format": "yyyy-MM-dd", "date_format": "yyyy-MM-dd",