neutral-old/routes/filemanager.js
2023-02-27 17:23:25 +01:00

106 lines
2.7 KiB
JavaScript

var express = require('express');
var router = express.Router();
var ntr = require("../neutral-functions.js")
var fs = require("fs")
var path = require("path")
var mime = require('mime-types')
/* GET home page. */
router.get('/', function(req, res, next) {
var check = ntr.checkToken(req, res)
if(check.name != false) {
res.redirect(302, "/")
} else {
res.render('login', {error: ""});
}
});
router.post("/", function(req, res, next) {
var check = ntr.checkToken(req, res)
if(check.name == false) {
res.send({"result":"failed", "content":"ERROR_TOKEN_NOT_VALID"})
} else {
if(check.permLevel >= 3) {
const bod = req.body
if(bod.request == "add") {
res.send({"result":"failed", "content":"ERROR_NOT_MAKE"})
} else if(bod.request == "get") {
var files = new Array()
const directory = req.body.value
fs.readdir(directory.replace("/", path.sep.replace("\\", path.sep)), (err, data) => {
if(err) {
res.send({"result":"success", "content": "ERROR_NOT_EXIST"})
} else {
try {
for(var file of data) {
const stat = fs.statSync(directory.replace("/", path.sep.replace("\\", path.sep)) + path.sep + file)
files.push({"name":file, "type":mime.lookup(file), "size":stat.size, "lastedition":stat.mtimeMs, "directory":stat.isDirectory()})
}
res.send({"result":"success", "content": files})
} catch(err) {
res.send({"result":"success", "content": "ERROR_NOT_PERMITTED"})
}
}
})
} else if(bod.request == "del") {
res.send({"result":"failed", "content":"ERROR_NOT_MAKE"})
} else if(bod.request == "rename") {
res.send({"result":"failed", "content":"ERROR_NOT_MAKE"})
} else {
res.send({"result":"failed", "content":"ERROR_REQUEST_MISSING_FIELDS", "additional": "REQUEST_MISSING"})
}
} else {
res.send({"result":"failed", "content":"ERROR_USER_PERMISSION_TOO_LOW"})
}
}
})
module.exports = router;