|
|
|
@ -26,23 +26,18 @@ const uuidv4 = require('uuid/v4') |
|
|
|
|
, imageIdentify = require(__dirname+'/../../helpers/files/image-identify.js') |
|
|
|
|
, videoThumbnail = require(__dirname+'/../../helpers/files/video-thumbnail.js') |
|
|
|
|
, videoIdentify = require(__dirname+'/../../helpers/files/video-identify.js') |
|
|
|
|
, formatSize = require(__dirname+'/../../helpers/files/format-size.js') |
|
|
|
|
, deletePostFiles = require(__dirname+'/../../helpers/files/deletepostfiles.js'); |
|
|
|
|
, formatSize = require(__dirname+'/../../helpers/files/format-size.js'); |
|
|
|
|
|
|
|
|
|
module.exports = async (req, res, next, numFiles) => { |
|
|
|
|
|
|
|
|
|
// check if this is responding to an existing thread
|
|
|
|
|
let redirect = `/${req.params.board}` |
|
|
|
|
let salt = ''; |
|
|
|
|
let thread; |
|
|
|
|
let salt = null; |
|
|
|
|
let thread = null; |
|
|
|
|
const hasPerms = permsCheck(req, res); |
|
|
|
|
const forceAnon = res.locals.board.settings.forceAnon; |
|
|
|
|
if (req.body.thread) { |
|
|
|
|
try { |
|
|
|
|
thread = await Posts.getPost(req.params.board, req.body.thread, true); |
|
|
|
|
} catch (err) { |
|
|
|
|
return next(err); |
|
|
|
|
} |
|
|
|
|
if (!thread || thread.thread != null) { |
|
|
|
|
return res.status(400).render('message', { |
|
|
|
|
'title': 'Bad request', |
|
|
|
@ -85,9 +80,7 @@ module.exports = async (req, res, next, numFiles) => { |
|
|
|
|
const file = req.files.file[i]; |
|
|
|
|
const uuid = uuidv4(); |
|
|
|
|
const filename = uuid + path.extname(file.name); |
|
|
|
|
|
|
|
|
|
// try to save, thumbnail and get metadata
|
|
|
|
|
try { |
|
|
|
|
file.filename = filename; //for error to delete failed files
|
|
|
|
|
|
|
|
|
|
//upload file
|
|
|
|
|
await fileUpload(req, res, file, filename, 'img'); |
|
|
|
@ -100,7 +93,7 @@ module.exports = async (req, res, next, numFiles) => { |
|
|
|
|
size: file.size, |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
//handle video vs image ffmpeg vs graphicsmagick
|
|
|
|
|
//handle video/image ffmpeg or graphicsmagick
|
|
|
|
|
const mainType = file.mimetype.split('/')[0]; |
|
|
|
|
switch (mainType) { |
|
|
|
|
case 'image': |
|
|
|
@ -124,8 +117,6 @@ module.exports = async (req, res, next, numFiles) => { |
|
|
|
|
return next(err); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//make thumbnail
|
|
|
|
|
|
|
|
|
|
//handle gifs with multiple geometry and size
|
|
|
|
|
if (Array.isArray(processedFile.geometry)) { |
|
|
|
|
processedFile.geometry = processedFile.geometry[0]; |
|
|
|
@ -137,14 +128,6 @@ module.exports = async (req, res, next, numFiles) => { |
|
|
|
|
processedFile.geometryString = processedFile.geometryString[0]; |
|
|
|
|
} |
|
|
|
|
files.push(processedFile); |
|
|
|
|
|
|
|
|
|
} catch (err) { |
|
|
|
|
if (files.length > 0) { |
|
|
|
|
const fileNames = files.map(file => file.filenname); |
|
|
|
|
await deletePostFiles(fileNames); |
|
|
|
|
} |
|
|
|
|
return next(err); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -165,7 +148,6 @@ module.exports = async (req, res, next, numFiles) => { |
|
|
|
|
let subject = hasPerms || !forceAnon || !req.body.thread ? req.body.subject : null; |
|
|
|
|
//forceanon only allow sage email
|
|
|
|
|
let email = hasPerms || !forceAnon || req.body.email === 'sage' ? req.body.email : null; |
|
|
|
|
|
|
|
|
|
let name = res.locals.board.settings.defaultName; |
|
|
|
|
let tripcode = null; |
|
|
|
|
let capcode = null; |
|
|
|
@ -231,15 +213,10 @@ module.exports = async (req, res, next, numFiles) => { |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
let postId; |
|
|
|
|
try { |
|
|
|
|
postId = await Posts.insertOne(req.params.board, data, thread); |
|
|
|
|
if (!data.thread) { //if we just added a new thread, prune anyold ones
|
|
|
|
|
const postId = await Posts.insertOne(req.params.board, data, thread); |
|
|
|
|
if (!data.thread) { //if we just added a new thread, prune any old ones
|
|
|
|
|
await Posts.pruneOldThreads(req.params.board, res.locals.board.settings.threadLimit); |
|
|
|
|
} |
|
|
|
|
} catch (err) { |
|
|
|
|
return next(err); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
const successRedirect = `/${req.params.board}/thread/${req.body.thread || postId}#${postId}`; |
|
|
|
|
|
|
|
|
|