Apis for listing user files, log rotate fix

This commit is contained in:
mrfry 2021-03-31 10:44:47 +02:00
parent c64c189ce3
commit 406caabefd
3 changed files with 69 additions and 11 deletions

View file

@ -1,7 +1,11 @@
import fs from 'fs'
import logger from '../../../utils/logger'
import utils from '../../../utils/utils'
import { Request, SubmoduleData } from '../../../types/basicTypes'
const usersFileName = '.users.json'
function setup(data: SubmoduleData): void {
const { app, /* userDB, url, */ publicdirs /* moduleSpecificData */ } = data
@ -9,16 +13,64 @@ function setup(data: SubmoduleData): void {
const userFilesDir = publicDir + 'userFiles'
app.get('/listUserFiles', (req: Request, res) => {
app.get('/listUserDir', (req: Request, res) => {
logger.LogReq(req)
if (!utils.FileExists(userFilesDir)) {
utils.CreatePath(userFilesDir, true)
}
const subdir: any = req.query.subdir
res.json({
files: utils.ReadDir(userFilesDir),
})
if (subdir) {
const safeSubdir = subdir.replace(/\./g, '').replace(/\/+/g, '')
const dir = userFilesDir + '/' + safeSubdir
const usersFile = dir + '/' + usersFileName
if (!utils.FileExists(usersFile)) {
utils.WriteFile('{}', usersFile)
}
const users = utils.ReadJSON(usersFile)
if (!utils.FileExists(dir)) {
res.json({
success: false,
msg: `Path '${safeSubdir}' does not exists`,
})
return
}
res.json({
files: utils.ReadDir(dir).reduce((acc, file) => {
const stat = fs.lstatSync(dir + '/' + file)
acc.push({
name: file,
path: dir.replace(publicDir, '') + '/' + file,
size: stat.size,
uploadDate: stat.mtime.getTime(),
user: users[file],
})
return acc
}, []),
})
} else {
if (!utils.FileExists(userFilesDir)) {
utils.CreatePath(userFilesDir, true)
}
res.json({
dirs: utils.ReadDir(userFilesDir).reduce((acc, file) => {
const stat = fs.lstatSync(userFilesDir + '/' + file)
if (!stat.isDirectory()) {
return acc
}
acc.push({
name: file,
date: stat.mtime.getTime(),
})
return acc
}, []),
})
}
})
}

View file

@ -281,8 +281,8 @@ function rotateLog() {
utils.CopyFile(vlogFile, logger.vlogDir + fname)
}
utils.WriteFile(fname, logger.logDir + fname)
utils.WriteFile(fname, logger.vlogDir + fname)
utils.WriteFile(fname, logFile)
utils.WriteFile(fname, vlogFile)
}
function LogTimerAction() {

View file

@ -70,8 +70,14 @@ function CopyFile(from: string, to: string): void {
fs.copyFileSync(from, to)
}
function ReadDir(path: string): Array<string> {
return fs.readdirSync(path)
function ReadDir(path: string, listHidden?: boolean): Array<string> {
if (listHidden) {
return fs.readdirSync(path)
} else {
return fs.readdirSync(path).filter((file) => {
return !file.startsWith('.')
})
}
}
function ReadJSON(name: string): any {