31 lines
1.3 KiB
TypeScript
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 }; |