mirror of
https://gitlab.com/MrFry/mrfrys-node-server
synced 2025-04-01 20:24:18 +02:00
Apis for listing user files, log rotate fix
This commit is contained in:
parent
c64c189ce3
commit
406caabefd
3 changed files with 69 additions and 11 deletions
|
@ -1,7 +1,11 @@
|
||||||
|
import fs from 'fs'
|
||||||
|
|
||||||
import logger from '../../../utils/logger'
|
import logger from '../../../utils/logger'
|
||||||
import utils from '../../../utils/utils'
|
import utils from '../../../utils/utils'
|
||||||
import { Request, SubmoduleData } from '../../../types/basicTypes'
|
import { Request, SubmoduleData } from '../../../types/basicTypes'
|
||||||
|
|
||||||
|
const usersFileName = '.users.json'
|
||||||
|
|
||||||
function setup(data: SubmoduleData): void {
|
function setup(data: SubmoduleData): void {
|
||||||
const { app, /* userDB, url, */ publicdirs /* moduleSpecificData */ } = data
|
const { app, /* userDB, url, */ publicdirs /* moduleSpecificData */ } = data
|
||||||
|
|
||||||
|
@ -9,16 +13,64 @@ function setup(data: SubmoduleData): void {
|
||||||
|
|
||||||
const userFilesDir = publicDir + 'userFiles'
|
const userFilesDir = publicDir + 'userFiles'
|
||||||
|
|
||||||
app.get('/listUserFiles', (req: Request, res) => {
|
app.get('/listUserDir', (req: Request, res) => {
|
||||||
logger.LogReq(req)
|
logger.LogReq(req)
|
||||||
|
|
||||||
if (!utils.FileExists(userFilesDir)) {
|
const subdir: any = req.query.subdir
|
||||||
utils.CreatePath(userFilesDir, true)
|
|
||||||
}
|
|
||||||
|
|
||||||
res.json({
|
if (subdir) {
|
||||||
files: utils.ReadDir(userFilesDir),
|
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
|
||||||
|
}, []),
|
||||||
|
})
|
||||||
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -281,8 +281,8 @@ function rotateLog() {
|
||||||
utils.CopyFile(vlogFile, logger.vlogDir + fname)
|
utils.CopyFile(vlogFile, logger.vlogDir + fname)
|
||||||
}
|
}
|
||||||
|
|
||||||
utils.WriteFile(fname, logger.logDir + fname)
|
utils.WriteFile(fname, logFile)
|
||||||
utils.WriteFile(fname, logger.vlogDir + fname)
|
utils.WriteFile(fname, vlogFile)
|
||||||
}
|
}
|
||||||
|
|
||||||
function LogTimerAction() {
|
function LogTimerAction() {
|
||||||
|
|
|
@ -70,8 +70,14 @@ function CopyFile(from: string, to: string): void {
|
||||||
fs.copyFileSync(from, to)
|
fs.copyFileSync(from, to)
|
||||||
}
|
}
|
||||||
|
|
||||||
function ReadDir(path: string): Array<string> {
|
function ReadDir(path: string, listHidden?: boolean): Array<string> {
|
||||||
return fs.readdirSync(path)
|
if (listHidden) {
|
||||||
|
return fs.readdirSync(path)
|
||||||
|
} else {
|
||||||
|
return fs.readdirSync(path).filter((file) => {
|
||||||
|
return !file.startsWith('.')
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function ReadJSON(name: string): any {
|
function ReadJSON(name: string): any {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue