change config to js file so it an include comments

merge-requests/208/head
fatchan 5 years ago
parent 5dbbe8d57d
commit 9ce66a303d
  1. 1
      .gitignore
  2. 2
      README.md
  3. 159
      configs/main.js.example
  4. 119
      configs/main.json.example
  5. 4
      controllers/forms.js
  6. 2
      controllers/forms/boardsettings.js
  7. 2
      controllers/forms/create.js
  8. 2
      controllers/forms/makepost.js
  9. 2
      controllers/forms/uploadbanners.js
  10. 2
      db/db.js
  11. 2
      db/posts.js
  12. 2
      gulpfile.js
  13. 2
      helpers/files/ffprobe.js
  14. 2
      helpers/files/imageidentify.js
  15. 2
      helpers/files/imagethumbnail.js
  16. 2
      helpers/files/videothumbnail.js
  17. 2
      helpers/posting/markdown.js
  18. 2
      helpers/posting/tripcode.js
  19. 2
      helpers/processip.js
  20. 2
      helpers/referrercheck.js
  21. 2
      helpers/render.js
  22. 2
      helpers/tasks.js
  23. 2
      models/forms/actionhandler.js
  24. 2
      models/forms/banposter.js
  25. 2
      models/forms/create.js
  26. 2
      models/forms/makepost.js
  27. 2
      models/pages/boardlist.js
  28. 2
      models/pages/captcha.js
  29. 2
      queue.js
  30. 2
      redis.js
  31. 2
      schedules/index.js
  32. 2
      schedules/webring.js
  33. 2
      server.js
  34. 2
      socketio.js
  35. 13
      views/pages/globalmanageaccounts.pug
  36. 2
      views/pages/globalmanagerecent.pug
  37. 2
      worker.js

1
.gitignore vendored

@ -1,6 +1,7 @@
node_modules/
backup.sh
configs/*.json
configs/*.js
static/*
gulp/res/js/socket.io.js
/gulp/res/css/codethemes

@ -65,7 +65,7 @@ Next, get https with a certificate generated from [letsencrypt](https://wiki.deb
Now clone the repo, browse to the folder and set some things up.
```bash
# in repo directory
$ nano configs/main.json #edit config with appropriate data
$ cp configs/main.js.example configs/main.js && nano configs/main.json #copy example config and edit
$ npm run-script setup #install dependencies, pm2, gulp and run gulp tasks
$ npm run-script start #start all the backend processes
$ pm2 list #list running pm2 processes

@ -0,0 +1,159 @@
module.exports = {
//mongodb connection string
dbURL: 'mongodb://username:password@localhost:27017',
//redis connection info
redis: {
host: '127.0.0.1',
port: '6379',
password: 'long random string'
},
//backend webserver port
port: 7000,
//secrets/salts for various things
sessionSecret: 'long random string',
tripcodeSecret: 'long random string',
ipHashSecret: 'long random string',
postPasswordSecret: 'long random string',
//enable secure cookies, only use with https
secureCookies: true,
//check referrer to prevent some CSRF attack
refererCheck: true,
refererRegex: '^https?:\\/\\/(?:www\\.)?domain\\.com\\/',
//data used in opengraph meta tags
meta: {
siteName: 'imageboard',
url: 'https://domain.com'
},
//cache templates in memory
cacheTemplates: true,
//prune modlogs older than 30 days. pruning occurs when new modlog entries are generated
pruneModlogs: true,
//let all users create new boards
enableUserBoards: true,
//extension for thumbnails. png is larger but allows transparency
thumbExtension: '.png',
//max thumb dimensions
thumbSize: 200,
//default ban duration in ms if ban duration field is left blank
defaultBanDuration: 31536000000,
//max number of quotes that will be linked in a post. 0 for unlimited
quoteLimit: 15,
//options for code block highlighting in posts
highlightOptions: {
//subset of languages to allow
languageSubset: [
'javascript',
'js',
'typescript',
'java',
'kotlin',
'php',
'c++',
'c',
'h',
'csharp',
'bash',
'sh',
'zsh',
'python',
'ruby',
'css',
'html',
'json',
'golang',
'rust'
],
//threshold below which auto language is ignored
threshold: 5
},
//global limits for board settings
globalLimits: {
threadLimit: {
min: 10,
max: 200
},
replyLimit: {
min: 10,
max: 500
},
postFiles: {
max: 3
},
postFilesSize: {
max: 10485760
},
bannerFiles: {
max: 10
},
bannerFilesSize: {
max: 10485760
},
messageLength: {
max: 4000
}
},
//default board settings when a board is created
boardDefaults: {
theme: 'lain',
codeTheme: 'ir-black',
sfw: false,
locked: false,
unlisted: false,
captchaMode: 0,
tphTrigger: 0,
pphTrigger: 0,
triggerAction: 0,
forceAnon: false,
early404: true,
ids: false,
flags: false,
userPostDelete: true,
userPostSpoiler: true,
userPostUnlink: true,
threadLimit: 200,
replyLimit: 500,
maxFiles: 1,
forceReplyMessage: false,
forceReplyFile: false,
forceThreadMessage: false,
forceThreadFile: false,
forceThreadSubject: false,
minThreadMessageLength: 0,
minReplyMessageLength: 0,
defaultName: 'Anon',
filters: [],
filterMode: 0,
filterBanDuration: 0,
announcement: {
raw: null,
markdown: null
},
allowedFileTypes: {
animatedImage: true,
image: true,
video: true,
audio: true
}
}
}

@ -1,119 +0,0 @@
{
"dbURL": "mongodb://username:password@localhost:27017",
"redis": {
"host": "127.0.0.1",
"port": "6379",
"password": "long random string"
},
"port": 7000,
"sessionSecret": "long random string",
"tripcodeSecret": "long random string",
"ipHashSecret": "long random string",
"postPasswordSecret": "long random string",
"secureCookies": true,
"cacheTemplates": true,
"pruneModlogs": true,
"enableUserBoards": true,
"thumbExtension": ".png",
"thumbSize": 200,
"defaultBanDuration": 31536000000,
"quoteLimit": 15,
"highlightOptions": {
"languageSubset": [
"javascript",
"js",
"typescript",
"java",
"kotlin",
"php",
"c++",
"c",
"h",
"csharp",
"bash",
"sh",
"zsh",
"python",
"ruby",
"css",
"html",
"json",
"golang",
"rust"
],
"threshold": 5
},
"refererCheck": true,
"refererRegex": "^https?:\\/\\/(?:www\\.)?domain\\.com\\/",
"meta": {
"siteName": "imageboard",
"url": "https://domain.com"
},
"globalLimits": {
"threadLimit": {
"min": 10,
"max": 200
},
"replyLimit": {
"min": 10,
"max": 500
},
"postFiles": {
"max": 3
},
"postFilesSize": {
"max": 10485760
},
"bannerFiles": {
"max": 10
},
"bannerFilesSize": {
"max": 10485760
},
"messageLength": {
"max": 4000
}
},
"boardDefaults": {
"theme": "lain",
"codeTheme": "ir-black",
"sfw": false,
"locked": false,
"unlisted": false,
"captchaMode": 0,
"tphTrigger": 0,
"pphTrigger": 0,
"triggerAction": 0,
"forceAnon": false,
"early404": true,
"ids": false,
"flags": false,
"userPostDelete": true,
"userPostSpoiler": true,
"userPostUnlink": true,
"threadLimit": 200,
"replyLimit": 500,
"maxFiles": 1,
"forceReplyMessage": false,
"forceReplyFile": false,
"forceThreadMessage": false,
"forceThreadFile": false,
"forceThreadSubject": false,
"minThreadMessageLength": 0,
"minReplyMessageLength": 0,
"defaultName": "Anon",
"filters": [],
"filterMode": 0,
"filterBanDuration": 0,
"announcement": {
"raw": null,
"markdown": null
},
"allowedFileTypes": {
"animatedImage": true,
"image": true,
"video": true,
"audio": true
}
}
}

@ -3,7 +3,7 @@
const express = require('express')
, router = express.Router()
, Boards = require(__dirname+'/../db/boards.js')
, { globalLimits } = require(__dirname+'/../configs/main.json')
, { globalLimits } = require(__dirname+'/../configs/main.js')
//middlewares
, calcPerms = require(__dirname+'/../helpers/checks/calcpermsmiddleware.js')
, hasPerms = require(__dirname+'/../helpers/checks/haspermsmiddleware.js')
@ -79,7 +79,7 @@ router.post('/global/editbans', sessionRefresh, csrf, calcPerms, isLoggedIn, has
router.post('/global/addnews', sessionRefresh, csrf, calcPerms, isLoggedIn, hasPerms(0), addNewsController); //add new newspost
router.post('/global/deletenews', sessionRefresh, csrf, calcPerms, isLoggedIn, hasPerms(0), paramConverter, deleteNewsController); //delete news
router.post('/global/editaccounts', sessionRefresh, csrf, calcPerms, isLoggedIn, hasPerms(0), paramConverter, editAccountsController); //account editing
router.post('/global/deleteboard', sessionRefresh, csrf, calcPerms, isLoggedIn, hasPerms(1), deleteBoardController); //delete board
//router.post('/global/deleteboard', sessionRefresh, csrf, calcPerms, isLoggedIn, hasPerms(1), deleteBoardController); //delete board. removed and going to change when i add a board page to globalmanage with unlisted boards and searching
//accounts
router.post('/login', loginController);

@ -3,7 +3,7 @@
const changeBoardSettings = require(__dirname+'/../../models/forms/changeboardsettings.js')
, { themes, codeThemes } = require(__dirname+'/../../helpers/themes.js')
, { Ratelimits } = require(__dirname+'/../../db/')
, { globalLimits } = require(__dirname+'/../../configs/main.json');
, { globalLimits } = require(__dirname+'/../../configs/main.js');
module.exports = async (req, res, next) => {

@ -1,7 +1,7 @@
'use strict';
const createBoard = require(__dirname+'/../../models/forms/create.js')
, { enableUserBoards } = require(__dirname+'/../../configs/main.json')
, { enableUserBoards } = require(__dirname+'/../../configs/main.js')
, alphaNumericRegex = require(__dirname+'/../../helpers/checks/alphanumregex.js')
module.exports = async (req, res, next) => {

@ -3,7 +3,7 @@
const makePost = require(__dirname+'/../../models/forms/makepost.js')
, deleteTempFiles = require(__dirname+'/../../helpers/files/deletetempfiles.js')
, dynamicResponse = require(__dirname+'/../../helpers/dynamic.js')
, { globalLimits } = require(__dirname+'/../../configs/main.json')
, { globalLimits } = require(__dirname+'/../../configs/main.js')
, { Files } = require(__dirname+'/../../db/');
module.exports = async (req, res, next) => {

@ -2,7 +2,7 @@
const uploadBanners = require(__dirname+'/../../models/forms/uploadbanners.js')
, deleteTempFiles = require(__dirname+'/../../helpers/files/deletetempfiles.js')
, { globalLimits } = require(__dirname+'/../../configs/main.json');
, { globalLimits } = require(__dirname+'/../../configs/main.js');
module.exports = async (req, res, next) => {

@ -1,7 +1,7 @@
'use strict';
const { MongoClient, ObjectId, Int32 } = require('mongodb')
, configs = require(__dirname+'/../configs/main.json');
, configs = require(__dirname+'/../configs/main.js');
module.exports = {

@ -5,7 +5,7 @@ const Mongo = require(__dirname+'/db.js')
, Stats = require(__dirname+'/stats.js')
, db = Mongo.client.db('jschan').collection('posts')
, cache = require(__dirname+'/../redis.js')
, { quoteLimit } = require(__dirname+'/../configs/main.json');
, { quoteLimit } = require(__dirname+'/../configs/main.js');
module.exports = {

@ -2,7 +2,7 @@
const gulp = require('gulp')
, fs = require('fs')
, configs = require(__dirname+'/configs/main.json')
, configs = require(__dirname+'/configs/main.js')
, { themes, codeThemes } = require(__dirname+'/helpers/themes.js')
, less = require('gulp-less')
, concat = require('gulp-concat')

@ -1,5 +1,5 @@
const ffmpeg = require('fluent-ffmpeg')
, configs = require(__dirname+'/../../configs/main.json')
, configs = require(__dirname+'/../../configs/main.js')
, uploadDirectory = require(__dirname+'/uploadDirectory.js');
module.exports = (filename, folder, temp) => {

@ -1,5 +1,5 @@
const gm = require('gm')
, configs = require(__dirname+'/../../configs/main.json')
, configs = require(__dirname+'/../../configs/main.js')
, uploadDirectory = require(__dirname+'/uploadDirectory.js');
module.exports = (filename, folder, temp) => {

@ -1,5 +1,5 @@
const gm = require('gm')
, { thumbSize } = require(__dirname+'/../../configs/main.json')
, { thumbSize } = require(__dirname+'/../../configs/main.js')
, uploadDirectory = require(__dirname+'/uploadDirectory.js');
module.exports = (file) => {

@ -1,5 +1,5 @@
const ffmpeg = require('fluent-ffmpeg')
, { thumbSize } = require(__dirname+'/../../configs/main.json')
, { thumbSize } = require(__dirname+'/../../configs/main.js')
, uploadDirectory = require(__dirname+'/uploadDirectory.js');
module.exports = (file, geometry) => {

@ -19,7 +19,7 @@ const greentextRegex = /^>((?!>).+)/gm
, diceRoll = require(__dirname+'/diceroll.js')
, escape = require(__dirname+'/escape.js')
, { highlight, highlightAuto } = require('highlight.js')
, { highlightOptions } = require(__dirname+'/../../configs/main.json');
, { highlightOptions } = require(__dirname+'/../../configs/main.js');
module.exports = {

@ -1,6 +1,6 @@
'use strict';
const { tripcodeSecret } = require(__dirname+'/../../configs/main.json')
const { tripcodeSecret } = require(__dirname+'/../../configs/main.js')
, { createHash } = require('crypto')
module.exports = async (password) => {

@ -1,6 +1,6 @@
'use strict';
const { ipHashSecret } = require(__dirname+'/../configs/main.json')
const { ipHashSecret } = require(__dirname+'/../configs/main.js')
, { isIP } = require('net')
, { createHash } = require('crypto');

@ -1,6 +1,6 @@
'use strict';
const configs = require(__dirname+'/../configs/main.json')
const configs = require(__dirname+'/../configs/main.js')
, refererRegex = new RegExp(configs.refererRegex);
module.exports = (req, res, next) => {

@ -1,6 +1,6 @@
'use strict';
const { globalLimits, boardDefaults, cacheTemplates, meta } = require(__dirname+'/../configs/main.json')
const { globalLimits, boardDefaults, cacheTemplates, meta } = require(__dirname+'/../configs/main.js')
, { outputFile } = require('fs-extra')
, pug = require('pug')
, path = require('path')

@ -5,7 +5,7 @@ const Mongo = require(__dirname+'/../db/db.js')
, timeUtils = require(__dirname+'/timeutils.js')
, uploadDirectory = require(__dirname+'/files/uploadDirectory.js')
, { remove } = require('fs-extra')
, { pruneModlogs, enableWebring } = require(__dirname+'/../configs/main.json')
, { pruneModlogs, enableWebring } = require(__dirname+'/../configs/main.js')
, { Stats, Posts, Files, Boards, News, Modlogs } = require(__dirname+'/../db/')
, render = require(__dirname+'/render.js')
, timeDiffString = require(__dirname+'/timediffstring.js');

@ -16,7 +16,7 @@ const { Posts, Boards, Modlogs } = require(__dirname+'/../../db/')
, { remove } = require('fs-extra')
, uploadDirectory = require(__dirname+'/../../helpers/files/uploadDirectory.js')
, buildQueue = require(__dirname+'/../../queue.js')
, { postPasswordSecret } = require(__dirname+'/../../configs/main.json')
, { postPasswordSecret } = require(__dirname+'/../../configs/main.js')
, { createHash, timingSafeEqual } = require('crypto');
module.exports = async (req, res, next) => {

@ -1,7 +1,7 @@
'use strict';
const { Bans } = require(__dirname+'/../../db/')
, { defaultBanDuration } = require(__dirname+'/../../configs/main.json');
, { defaultBanDuration } = require(__dirname+'/../../configs/main.js');
module.exports = async (req, res, next) => {

@ -1,7 +1,7 @@
'use strict';
const { Boards } = require(__dirname+'/../../db/')
, { boardDefaults } = require(__dirname+'/../../configs/main.json');
, { boardDefaults } = require(__dirname+'/../../configs/main.js');
module.exports = async (req, res, next) => {

@ -25,7 +25,7 @@ const path = require('path')
, timeUtils = require(__dirname+'/../../helpers/timeutils.js')
, deletePosts = require(__dirname+'/deletepost.js')
, spamCheck = require(__dirname+'/../../helpers/checks/spamcheck.js')
, { thumbSize, thumbExtension, postPasswordSecret } = require(__dirname+'/../../configs/main.json')
, { thumbSize, thumbExtension, postPasswordSecret } = require(__dirname+'/../../configs/main.js')
, buildQueue = require(__dirname+'/../../queue.js')
, dynamicResponse = require(__dirname+'/../../helpers/dynamic.js')
, { buildThread } = require(__dirname+'/../../helpers/tasks.js');

@ -1,6 +1,6 @@
'use strict';
const { enableWebring } = require(__dirname+'/../../configs/main.json')
const { enableWebring } = require(__dirname+'/../../configs/main.js')
, { Boards, Webring } = require(__dirname+'/../../db/')
, { relativeString } = require(__dirname+'/../../helpers/timeutils.js')
, pageQueryConverter = require(__dirname+'/../../helpers/pagequeryconverter.js')

@ -2,7 +2,7 @@
const { Captchas, Ratelimits } = require(__dirname+'/../../db/')
, generateCaptcha = require(__dirname+'/../../helpers/captcha/captchagenerate.js')
, { secureCookies } = require(__dirname+'/../../configs/main.json')
, { secureCookies } = require(__dirname+'/../../configs/main.js')
, production = process.env.NODE_ENV === 'production';
module.exports = async (req, res, next) => {

@ -1,7 +1,7 @@
'use strict';
const Queue = require('bull')
, configs = require(__dirname+'/configs/main.json')
, configs = require(__dirname+'/configs/main.js')
, taskQueue = new Queue('task', { 'redis': configs.redis });
module.exports = {

@ -1,7 +1,7 @@
'use strict';
const Redis = require('ioredis')
, configs = require(__dirname+'/configs/main.json')
, configs = require(__dirname+'/configs/main.js')
, client = new Redis(configs.redis);
module.exports = {

@ -6,7 +6,7 @@ process
const timeUtils = require(__dirname+'/../helpers/timeutils.js')
, Mongo = require(__dirname+'/../db/db.js')
, { enableWebring } = require(__dirname+'/../configs/main.json')
, { enableWebring } = require(__dirname+'/../configs/main.js')
, doInterval = require(__dirname+'/../helpers/dointerval.js');
(async () => {

@ -1,7 +1,7 @@
'use strict';
const fetch = require('node-fetch')
, { meta } = require(__dirname+'/../configs/main.json')
, { meta } = require(__dirname+'/../configs/main.js')
, { logos, following, blacklist } = require(__dirname+'/../configs/webring.json')
, { Boards, Webring } = require(__dirname+'/../db/')
, { outputFile } = require('fs-extra')

@ -11,7 +11,7 @@ const express = require('express')
, app = express()
, server = require('http').createServer(app)
, cookieParser = require('cookie-parser')
, configs = require(__dirname+'/configs/main.json')
, configs = require(__dirname+'/configs/main.js')
, processIp = require(__dirname+'/helpers/processip.js')
, referrerCheck = require(__dirname+'/helpers/referrercheck.js')
, { themes, codeThemes } = require(__dirname+'/helpers/themes.js')

@ -1,6 +1,6 @@
'use strict';
const configs = require(__dirname+'/configs/main.json');
const configs = require(__dirname+'/configs/main.js');
module.exports = {

@ -10,19 +10,6 @@ block content
br
+globalmanagenav('accounts')
hr(size=1)
h4.no-m-p Delete board:
.form-wrapper.flexleft
form.form-post(action=`/forms/global/deleteboard`, enctype='application/x-www-form-urlencoded', method='POST')
input(type='hidden' name='_csrf' value=csrf)
.row
.label I'm sure
label.postform-style.ph-5
input(type='checkbox', name='confirm', value='true' required)
.row
.label Board URI
input(type='text' name='uri' required)
input(type='submit', value='submit')
hr(size-1)
h4.no-m-p Accounts:
.form-wrapper.flexleft
form.form-post(action=`/forms/global/editaccounts` method='POST' enctype='application/x-www-form-urlencoded')

@ -16,8 +16,6 @@ block content
hr(size=1)
p No posts.
else
nav.pages.mv-5
include ../includes/pages.pug
hr(size=1)
for p in posts
.thread

@ -5,7 +5,7 @@ process
.on('unhandledRejection', console.error);
const Queue = require('bull')
, configs = require(__dirname+'/configs/main.json')
, configs = require(__dirname+'/configs/main.js')
, Mongo = require(__dirname+'/db/db.js');
(async () => {

Loading…
Cancel
Save