mirror of
https://github.com/kaythomas0/noisedash.git
synced 2025-11-16 04:58:02 +00:00
Delete uploaded sample if something goes wrong, add sample size limit
This commit is contained in:
@@ -3,6 +3,7 @@
|
|||||||
"listeningPort": 1432,
|
"listeningPort": 1432,
|
||||||
"sessionFileStorePath": "sessions",
|
"sessionFileStorePath": "sessions",
|
||||||
"sampleUploadPath": "samples",
|
"sampleUploadPath": "samples",
|
||||||
|
"maxSampleSize": 10737418240, // In bytes, 10GB by default
|
||||||
"sessionSecret": "cats",
|
"sessionSecret": "cats",
|
||||||
"logFile": "log/noisedash.log",
|
"logFile": "log/noisedash.log",
|
||||||
"tls": false,
|
"tls": false,
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
const express = require('express')
|
const express = require('express')
|
||||||
const config = require('config')
|
const config = require('config')
|
||||||
const multer = require('multer')
|
const multer = require('multer')
|
||||||
|
const fs = require('fs')
|
||||||
|
const path = require('path')
|
||||||
const storage = multer.diskStorage({
|
const storage = multer.diskStorage({
|
||||||
destination: config.get('Server.sampleUploadPath'),
|
destination: config.get('Server.sampleUploadPath'),
|
||||||
filename: (req, file, cb) => {
|
filename: (req, file, cb) => {
|
||||||
@@ -13,7 +15,10 @@ const storage = multer.diskStorage({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
const upload = multer({ storage: storage })
|
const upload = multer({
|
||||||
|
storage: storage,
|
||||||
|
limits: { fileSize: config.get('Server.maxSampleSize') }
|
||||||
|
})
|
||||||
const db = require('../db')
|
const db = require('../db')
|
||||||
const router = express.Router()
|
const router = express.Router()
|
||||||
const logger = require('../logger')
|
const logger = require('../logger')
|
||||||
@@ -27,33 +32,44 @@ router.post('/samples', upload.single('sample'), (req, res, next) => {
|
|||||||
db.get('SELECT can_upload FROM users WHERE id = ?', [req.user.id], (err, row) => {
|
db.get('SELECT can_upload FROM users WHERE id = ?', [req.user.id], (err, row) => {
|
||||||
if (err) {
|
if (err) {
|
||||||
logger.error(err)
|
logger.error(err)
|
||||||
|
deleteSample(req.user.id + '_' + req.body.name)
|
||||||
return res.sendStatus(500)
|
return res.sendStatus(500)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (row.can_upload === 0) {
|
if (row.can_upload === 0) {
|
||||||
|
deleteSample(req.user.id + '_' + req.body.name)
|
||||||
return res.sendStatus(401)
|
return res.sendStatus(401)
|
||||||
}
|
}
|
||||||
})
|
|
||||||
|
|
||||||
db.run('INSERT INTO samples (name, user) VALUES (?, ?)', [
|
db.run('INSERT INTO samples (name, user) VALUES (?, ?)', [
|
||||||
req.body.name,
|
req.body.name,
|
||||||
req.user.id
|
req.user.id
|
||||||
],
|
],
|
||||||
(err) => {
|
(err) => {
|
||||||
if (err) {
|
if (err) {
|
||||||
logger.error(err)
|
logger.error(err)
|
||||||
if (err.code === 'SQLITE_CONSTRAINT') {
|
deleteSample(req.user.id + '_' + req.body.name)
|
||||||
return res.sendStatus(409)
|
if (err.code === 'SQLITE_CONSTRAINT') {
|
||||||
|
return res.sendStatus(409)
|
||||||
|
} else {
|
||||||
|
return res.sendStatus(500)
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
return res.sendStatus(500)
|
return res.sendStatus(200)
|
||||||
}
|
}
|
||||||
} else {
|
})
|
||||||
return res.sendStatus(200)
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
function deleteSample (fileName) {
|
||||||
|
fs.unlink(path.join(__dirname, '../../', config.get('Server.sampleUploadPath'), fileName), (err) => {
|
||||||
|
if (err) {
|
||||||
|
logger.error(err)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
router.get('/samples', (req, res) => {
|
router.get('/samples', (req, res) => {
|
||||||
if (!req.user) {
|
if (!req.user) {
|
||||||
return res.sendStatus(401)
|
return res.sendStatus(401)
|
||||||
|
|||||||
Reference in New Issue
Block a user