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 };
|