const cmn = require("../$common.js"); const fs = require("fs"); const bodyParser = require("body-parser"); let moddir = null; module.exports = function(app, io, _moddir) { moddir = _moddir; let config, accounts; try { accounts = require("./accounts.json"); } catch (e) { console.error(e); return false; } app.post("/up_log/log", bodyParser.json(), cmn.authgen(accounts), (req, res) => { if (typeof req.body.machine != "string") { return res.sendStatus(400); } const machine = req.body.machine.replace(/[^a-zA-Z0-9._-]/g, ""); fs.appendFileSync(moddir + "/log.txt", new Date().toISOString() + " machine=" + machine + "\n"); res.status(200).end(); }); app.get("/up_log/log/:count", cmn.authgen(), (req, res) => { const reqln = +req.params.count; if (reqln < 0 || reqln % 1 != 0 || isNaN(reqln)) { res.sendStatus(400); return; } fs.readFile(moddir + "/log.txt", (err, data) => { if (err) { res.sendStatus(500); return; } let i = data.length - 1 - (data[data.length-1] == 10); let nln = 0; while (true) { if (data[i] == 10) { nln++; if (nln >= reqln) { i++; break; } } i--; if (i <= 0) { nln++; break; } } res.send(data.slice(i)); }); }); app.get("/up_log", cmn.authgen(), (req, res) => { res.sendFile(moddir + "/index.html"); }); };