monitor/core/routes/fxserver/downloadLog.js
2025-04-16 22:30:27 +07:00

30 lines
1.1 KiB
JavaScript

const modulename = 'WebServer:FXServerDownloadLog';
import fs from 'node:fs';
import consoleFactory from '@lib/console';
const console = consoleFactory(modulename);
/**
* Returns the console log file
* @param {object} ctx
*/
export default async function FXServerDownloadLog(ctx) {
//Check permissions
if (!ctx.admin.testPermission('console.view', modulename)) {
return ctx.utils.render('main/message', {message: 'You don\'t have permission to download this log.'});
}
let readFile;
try {
//NOTE: why the fuck are errors from `createReadStream` not being caught? Well, using readFileSync for now...
// readFile = fs.createReadStream(txCore.logger.fxserver.activeFilePath);
readFile = fs.readFileSync(txCore.logger.fxserver.activeFilePath);
} catch (error) {
console.error(`Could not read log file ${txCore.logger.fxserver.activeFilePath}.`);
}
const now = (new Date() / 1000).toFixed();
ctx.attachment(`fxserver_${now}.log`);
ctx.body = readFile;
console.log(`[${ctx.admin.name}] Downloading console log file.`);
};