mirror of https://gitgud.io/fatchan/jschan.git
parent
9d83260d22
commit
5172ffc251
6 changed files with 15 additions and 51 deletions
@ -1,11 +1,12 @@ |
||||
{ |
||||
"dbURL": "mongodb://username:password@localhost:27017", |
||||
"dbURL": "mongodb://username:password@host:port", |
||||
"port": 7000, |
||||
"sessionSecret": "CHANGE ME", |
||||
"sessionSecret": "long random string", |
||||
"tripcodeSecret": "long random string", |
||||
"cacheTemplates": true, |
||||
"refererRegex": "^https?:\\/\\/(?:www\\.)?DOMAIN\\.TLD\\/", |
||||
"refererRegex": "^https?:\\/\\/(?:www\\.)?domain\\.com\\/", |
||||
"openGraph": { |
||||
"siteName": "CHANGE ME", |
||||
"url": "https://DOMAIN.TLD" |
||||
"siteName": "site name", |
||||
"url": "https://domain.com" |
||||
} |
||||
} |
||||
|
@ -1,20 +0,0 @@ |
||||
'use strict'; |
||||
|
||||
const Mongo = require(__dirname+'/db.js') |
||||
, db = Mongo.client.db('jschan').collection('tripcodes'); |
||||
|
||||
module.exports = { |
||||
|
||||
findOne: (password) => { |
||||
return db.findOne({ '_id': password }); |
||||
}, |
||||
|
||||
insertOne: (password, trip) => { |
||||
return db.insertOne({ '_id': password, 'code': trip }); |
||||
}, |
||||
|
||||
deleteAll: () => { |
||||
return db.deleteMany({}); |
||||
}, |
||||
|
||||
} |
@ -1,13 +1,13 @@ |
||||
'use strict'; |
||||
|
||||
const configs = require(__dirname+'/../configs/main.json') |
||||
, outputFile = require('fs-extra').outputFile |
||||
const { cacheTemplates, openGraph }= require(__dirname+'/../configs/main.json') |
||||
, { outputFile } = require('fs-extra') |
||||
, pug = require('pug') |
||||
, path = require('path') |
||||
, uploadDirectory = require(__dirname+'/uploadDirectory.js') |
||||
, templateDirectory = path.join(__dirname+'/../views/pages/'); |
||||
|
||||
module.exports = async (htmlName, templateName, options) => { |
||||
const html = pug.renderFile(`${templateDirectory}${templateName}`, { ...options, renderStart: Date.now(), cache: configs.cacheTemplates, openGraph: configs.openGraph }); |
||||
const html = pug.renderFile(`${templateDirectory}${templateName}`, { ...options, renderStart: Date.now(), cache: cacheTemplates, openGraph: openGraph }); |
||||
return outputFile(`${uploadDirectory}html/${htmlName}`, html); |
||||
}; |
||||
|
@ -1,23 +1,12 @@ |
||||
'use strict'; |
||||
|
||||
const Tripcodes = require(__dirname+'/../db/trips.js') |
||||
, util = require('util') |
||||
, crypto = require('crypto') |
||||
, randomBytes = util.promisify(crypto.randomBytes); |
||||
const { tripcodeSecret } = require(__dirname+'/../configs/main.json') |
||||
, { createHash } = require('crypto') |
||||
|
||||
module.exports = async (password) => { |
||||
|
||||
//return existing trip if exists
|
||||
let existing = await Tripcodes.findOne(password); |
||||
if (existing) { |
||||
return existing.code; |
||||
} |
||||
|
||||
//fix, not sure how secure
|
||||
const salt = (await randomBytes(128)).toString('hex'); |
||||
const fullTripCodeHash = crypto.createHash('sha256').update(password + salt).digest('base64'); |
||||
const trip = fullTripCodeHash.substring(fullTripCodeHash.length-10); |
||||
await Tripcodes.insertOne(password, trip); |
||||
return trip; |
||||
const tripcodeHash = createHash('sha256').update(password + tripcodeSecret).digest('base64'); |
||||
const tripcode = tripcodeHash.substring(tripcodeHash.length-10); |
||||
return tripcode; |
||||
|
||||
} |
||||
|
Loading…
Reference in new issue