better first time xp
This commit is contained in:
parent
bcaa3487dd
commit
f2f244eb9d
64
app.js
64
app.js
@ -1,23 +1,73 @@
|
|||||||
|
const fs = require('fs');
|
||||||
|
if (process.argv[0] == "--first-time") {
|
||||||
|
initialise()
|
||||||
|
}
|
||||||
|
|
||||||
const express = require('express');
|
const express = require('express');
|
||||||
const showdown = require('showdown')
|
const showdown = require('showdown')
|
||||||
const crypto = require('crypto'); // For encrypting passwords
|
const crypto = require('crypto'); // For encrypting passwords
|
||||||
const { fromUnixTime, format, getUnixTime } = require("date-fns")
|
const { fromUnixTime, format, getUnixTime } = require("date-fns")
|
||||||
const fs = require('fs');
|
|
||||||
|
|
||||||
const users = require('./users.js');
|
let users
|
||||||
const posts = require('./posts.js');
|
let posts
|
||||||
const comments = require('./comments.js');
|
let comments
|
||||||
const config = require('./config.js');
|
let config
|
||||||
let converter = new showdown.Converter({simpleLineBreaks: true, tables: true, strikethrough: true, tasklists: true, encodeEmails: true})
|
|
||||||
|
try {
|
||||||
|
users = require('./users.js');
|
||||||
|
posts = require('./posts.js');
|
||||||
|
comments = require('./comments.js');
|
||||||
|
config = require('./config.js');
|
||||||
|
}
|
||||||
|
catch (error) {
|
||||||
|
console.log("A file is missing!")
|
||||||
|
console.log("Run with --first-time to initialise the program")
|
||||||
|
console.log("Error output:\n", error)
|
||||||
|
process.exit(1)
|
||||||
|
}
|
||||||
|
let converter = new showdown.Converter({
|
||||||
|
simpleLineBreaks: true,
|
||||||
|
tables: true,
|
||||||
|
strikethrough: true,
|
||||||
|
tasklists: true,
|
||||||
|
encodeEmails: true
|
||||||
|
})
|
||||||
const app = express();
|
const app = express();
|
||||||
|
|
||||||
let footer_div = config.site_wide_footer
|
let footer_div = config.site_wide_footer
|
||||||
footer_div = replace_format_indicators(footer_div)
|
footer_div = replace_format_indicators(footer_div)
|
||||||
|
|
||||||
|
|
||||||
app.use(express.urlencoded({ extended: true }));
|
app.use(express.urlencoded({ extended: true }));
|
||||||
app.use(express.json());
|
app.use(express.json());
|
||||||
app.use(express.static(config.root_path));
|
app.use(express.static(config.root_path));
|
||||||
|
|
||||||
|
function initialise() {
|
||||||
|
try {
|
||||||
|
const users = require("./users.js");
|
||||||
|
}
|
||||||
|
catch (error) {
|
||||||
|
fs.writeFileSync(`${__dirname}/users.js`, `export const users = []`)
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
const posts = require("./posts.js");
|
||||||
|
}
|
||||||
|
catch (error) {
|
||||||
|
fs.writeFileSync(`${__dirname}/posts.js`, `export const posts = []`)
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
const users = require("./comments.js");
|
||||||
|
}
|
||||||
|
catch (error) {
|
||||||
|
fs.writeFileSync(`${__dirname}/comments.js`, `export const comments = []\nexport const counter = 0`)
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
const users = require("./config.js");
|
||||||
|
}
|
||||||
|
catch (error) {
|
||||||
|
fs.copyFile('example-config.js', 'config.js')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function get_userID(username) {
|
function get_userID(username) {
|
||||||
for (let i = 0; i < users.users.length; i++) {
|
for (let i = 0; i < users.users.length; i++) {
|
||||||
if (users.users[i]['username'] == username) {
|
if (users.users[i]['username'] == username) {
|
||||||
|
@ -43,9 +43,9 @@ export const time_zone = "+0000"
|
|||||||
// %S - post seperator as defined by post_seperator
|
// %S - post seperator as defined by post_seperator
|
||||||
// %T - Title
|
// %T - Title
|
||||||
// %U - URL the the user (poster)
|
// %U - URL the the user (poster)
|
||||||
|
// %W - Site Description as defined by site_description
|
||||||
// %X - Comment submission box
|
// %X - Comment submission box
|
||||||
// %Y - Site Name as defined by site_name
|
// %Y - Site Name as defined by site_name
|
||||||
// %W - Site Description as defined by site_description
|
|
||||||
// %Z - Attribution (to me) and source code link and license
|
// %Z - Attribution (to me) and source code link and license
|
||||||
|
|
||||||
export const timeline_header = `<h1>%Y</h1>
|
export const timeline_header = `<h1>%Y</h1>
|
||||||
@ -63,6 +63,8 @@ export const user_post_format = `<h2>%T</h2>
|
|||||||
<p>%C</p>
|
<p>%C</p>
|
||||||
<i>%B</i><br/>
|
<i>%B</i><br/>
|
||||||
<a href="%L">Permalink</a><br/>
|
<a href="%L">Permalink</a><br/>
|
||||||
|
%X
|
||||||
|
%M
|
||||||
%S`
|
%S`
|
||||||
export const post_page_format = `<h1>%T</h1>
|
export const post_page_format = `<h1>%T</h1>
|
||||||
<p>%C</p>
|
<p>%C</p>
|
||||||
@ -79,6 +81,8 @@ export const timeline_post_format = `<h3>%T</h3>
|
|||||||
<p>%C</p>
|
<p>%C</p>
|
||||||
<a href="%L">Permalink</a><br/>
|
<a href="%L">Permalink</a><br/>
|
||||||
<i>By <a href="%U">%N</a></i>
|
<i>By <a href="%U">%N</a></i>
|
||||||
|
%X
|
||||||
|
%M
|
||||||
%S`
|
%S`
|
||||||
export const tag_post_format = `<h3>%T</h3>
|
export const tag_post_format = `<h3>%T</h3>
|
||||||
<p>%C</p>
|
<p>%C</p>
|
||||||
|
105
example-config.js
Executable file
105
example-config.js
Executable file
@ -0,0 +1,105 @@
|
|||||||
|
export const seperator = "<hr/>"
|
||||||
|
export const site_name = "My Blog"
|
||||||
|
export const site_url = "https://example.com"
|
||||||
|
export const port = 8080
|
||||||
|
export const site_description = "Read my blogs!"
|
||||||
|
export const timeline_length = 20
|
||||||
|
export const enable_hitcount = true // Can slow down page loading a bit
|
||||||
|
export const charset = "UTF-8" // Don't change unless you know why
|
||||||
|
|
||||||
|
// Anything in this directory will be in the webroot, so put favicon.ico and anything else here.
|
||||||
|
export const root_path = "/path/to/root/of/website"
|
||||||
|
|
||||||
|
// Default username if no username is inputted in comment submission
|
||||||
|
export const default_username = "Anon"
|
||||||
|
|
||||||
|
// RSS feeds
|
||||||
|
export const rss = true
|
||||||
|
export const rss_path = "/rss"
|
||||||
|
|
||||||
|
// Dates
|
||||||
|
// https://date-fns.org/v4.1.0/docs/format
|
||||||
|
export const date_format = "yyyy-MM-dd"
|
||||||
|
export const time_zone = "+0000"
|
||||||
|
|
||||||
|
//// Format /////
|
||||||
|
// 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)
|
||||||
|
// %P - URL to create a new post
|
||||||
|
// %O - URL to edit this post
|
||||||
|
// %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
|
||||||
|
|
||||||
|
export const timeline_header = `<h1>%Y</h1>
|
||||||
|
<h2>%W</h2>
|
||||||
|
<a href="%P">Create Post</a><br/>
|
||||||
|
<a href="%R">RSS Feed</a><br/>
|
||||||
|
Hit count: %H
|
||||||
|
%S`
|
||||||
|
export const user_page_header = `<h1>%F's posts:</h1>
|
||||||
|
%I
|
||||||
|
%S`
|
||||||
|
export const tag_page_header = `<h1>Posts tagged: %G</h1>%S`
|
||||||
|
// ---------------------------------------------
|
||||||
|
export const user_post_format = `<h2>%T</h2>
|
||||||
|
<p>%C</p>
|
||||||
|
<i>%B</i><br/>
|
||||||
|
<a href="%L">Permalink</a><br/>
|
||||||
|
%X
|
||||||
|
%M
|
||||||
|
%S`
|
||||||
|
export const 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`
|
||||||
|
export const 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`
|
||||||
|
export const 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`
|
||||||
|
// -------------------------------------
|
||||||
|
export const site_wide_footer = `Site is ran by DeaDvey<br/>
|
||||||
|
%Z`
|
||||||
|
|
||||||
|
|
||||||
|
/// Custom CSS to be applied to every page
|
||||||
|
export const css = `
|
||||||
|
/* Put you custom CSS here,
|
||||||
|
Read about existing classes and ID's in the docs (coming soon)*\
|
||||||
|
`
|
||||||
|
|
||||||
|
// pretty please don't change this
|
||||||
|
export const 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>"
|
@ -1 +1 @@
|
|||||||
228
|
240
|
Loading…
x
Reference in New Issue
Block a user