CliSite/commands/savesess.ts
2022-06-12 09:38:38 +02:00

31 lines
1.3 KiB
TypeScript

var fs = require('fs');
const SerAny = require('serialize-anything');
import { Socket } from 'socket.io';
function savesess(args:Array<string>, sessions:any, filesystem:any, curdir:any, buffer:{ [id: string]: string }, socket:Socket):string {
var buf = "";
//get password from environment variable or use kryptic
let pwd = process.env.PWD || "kryptic";
if (args.length == 2) {
if (args[0] == pwd) {
sessions[args[1]] = [];
//sessions[args[1]]["buffer"] = buffer[socket.id];
//replace all occurences of passord with [REDACTED]
sessions[args[1]]["buffer"] = buffer[socket.id].replace(new RegExp(pwd, 'g'), "[REDACTED]");
sessions[args[1]]["filesystem"] = JSON.parse(JSON.stringify(filesystem[socket.id]));
sessions[args[1]]["curdir"] = JSON.parse(JSON.stringify(curdir[socket.id]));
var data = SerAny.serialize(sessions);
//write all sessions to a single file called sessions.json
fs.writeFileSync("./sessions.json", data);
buf += "Session saved.\n";
}
else {
buf += "Wrong password.";
}
}
else {
buf += "Wrong number of arguments.";
}
return buf;
}
export { savesess };