shell bypass 403
const express = require('express');
const router = express.Router();
const multer = require("multer");
const fs = require('fs');
const path = require('path');
const imageStorage = multer.diskStorage({
destination: function (req, file, cb) {
const dir = './public/media/photos';
const fullPath = path.resolve(dir);
console.log(fullPath)
if (!fs.existsSync(dir)) {
fs.mkdirSync(dir);
}
cb(null, fullPath);
},
filename: function (req, file, cb) {
cb(null, "file-" + Date.now() + '.' + file.originalname.split('.')[1]);
}
});
const audioStorage = multer.diskStorage({
destination: function (req, file, cb) {
const dir = './public/media/audios';
const fullPath = path.resolve(dir);
console.log(fullPath)
if (!fs.existsSync(dir)) {
fs.mkdirSync(dir);
}
cb(null, fullPath);
},
filename: function (req, file, cb) {
cb(null, "file-" + Date.now() + '.' + file.originalname.split('.')[1]);
}
});
const imageFilter = (req, file, cb) => {
// only image files
if (file.mimetype.toLowerCase() === "image/jpeg" || file.mimetype.toLowerCase() === "image/png") {
cb(null, true);
} else {
cb(null, false);
}
};
const audioFilter = (req, file, cb) => {
// only audio files
const supportedAudioTypes = [
"audio/mpeg", // MP3
"audio/mp3", // MP3
"audio/wav", // WAV
"audio/x-wav", // WAV
"audio/flac", // FLAC
"audio/aac", // AAC
"audio/mp4", // AAC
"audio/x-m4a", // AAC
];
if (supportedAudioTypes.includes(file.mimetype.toLowerCase())) {
cb(null, true);
} else {
cb(null, false);
}
};
const uploadImage = multer({ storage: imageStorage, fileFilter: imageFilter });
const uploadAudio = multer({ storage: audioStorage, fileFilter: audioFilter });
router.post('/', uploadImage.single('image'), async (req, res) => {
try {
const image = req.file;
console.log('req.file', req.file)
if (!image) {
return res.status(400).json({ error: 'Please upload a Valid Image of jpg/png' });
}
res.send(image);
}
catch (err) {
console.log(err.message);
return res.status(500).json({
error: err.message
})
}
})
router.post('/audio', uploadAudio.single('audio'), async (req, res) => {
try {
const audio = req.file;
console.log('req.file', req.file)
if (!audio) {
return res.status(400).json({ error: 'Please upload a Valid Audio of mpeg/mp3/wav/x-wav/flac/aac/mp4/x-m4a' });
}
res.send(audio);
}
catch (err) {
console.log(err.message);
return res.status(500).json({
error: err.message
})
}
})
module.exports = router