do some things
This commit is contained in:
parent
67c1e35608
commit
204d55d514
20
commands/append.js
Normal file
20
commands/append.js
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
"use strict";
|
||||||
|
exports.__esModule = true;
|
||||||
|
exports.append = void 0;
|
||||||
|
function append(args, curdir) {
|
||||||
|
var buf = "";
|
||||||
|
if (args.length == 0) {
|
||||||
|
buf += "append: missing operand\n";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (curdir[args[0]] == undefined) {
|
||||||
|
curdir[args[0]] = "";
|
||||||
|
}
|
||||||
|
for (var i = 1; i < args.length; i++) {
|
||||||
|
curdir[args[0]] += args[i] + "\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
exports.append = append;
|
||||||
|
//# sourceMappingURL=append.js.map
|
1
commands/append.js.map
Normal file
1
commands/append.js.map
Normal file
@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"append.js","sourceRoot":"","sources":["append.ts"],"names":[],"mappings":";;;AAAA,SAAS,MAAM,CAAC,IAAkB,EAAE,MAAU;IAC1C,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;QAClB,GAAG,IAAI,2BAA2B,CAAC;KACtC;SACI;QACD,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE;YAC9B,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;SACxB;QACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAClC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;SACrC;KACJ;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AACQ,wBAAM"}
|
@ -0,0 +1,16 @@
|
|||||||
|
function append(args:Array<string>, curdir:any):string {
|
||||||
|
var buf = "";
|
||||||
|
if (args.length == 0) {
|
||||||
|
buf += "append: missing operand\n";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (curdir[args[0]] == undefined) {
|
||||||
|
curdir[args[0]] = "";
|
||||||
|
}
|
||||||
|
for (let i = 1; i < args.length; i++) {
|
||||||
|
curdir[args[0]] += args[i] + "\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
export { append };
|
24
commands/cat.js
Normal file
24
commands/cat.js
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
"use strict";
|
||||||
|
exports.__esModule = true;
|
||||||
|
exports.cat = void 0;
|
||||||
|
function cat(args, curdir) {
|
||||||
|
var buf = "";
|
||||||
|
if (args.length == 0) {
|
||||||
|
buf += "cat: missing operand\n";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
var file = args[0];
|
||||||
|
if (curdir[file] == undefined) {
|
||||||
|
buf += "cat: " + file + ": No such file or directory\n";
|
||||||
|
}
|
||||||
|
else if (typeof curdir[file] == "string") {
|
||||||
|
buf += curdir[file] + "\n";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
buf += "cat: " + file + ": Is not a file\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
exports.cat = cat;
|
||||||
|
//# sourceMappingURL=cat.js.map
|
1
commands/cat.js.map
Normal file
1
commands/cat.js.map
Normal file
@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"cat.js","sourceRoot":"","sources":["cat.ts"],"names":[],"mappings":";;;AACA,SAAS,GAAG,CAAC,IAAkB,EAAE,MAAU;IACvC,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;QAClB,GAAG,IAAI,wBAAwB,CAAC;KACnC;SACI;QACD,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACnB,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,SAAS,EAAE;YAC3B,GAAG,IAAI,OAAO,GAAG,IAAI,GAAG,+BAA+B,CAAC;SAC3D;aAEI,IAAG,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE;YACrC,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;SAC9B;aACG;YACA,GAAG,IAAI,OAAO,GAAG,IAAI,GAAG,mBAAmB,CAAC;SAC/C;KACJ;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AACQ,kBAAG"}
|
@ -0,0 +1,22 @@
|
|||||||
|
import { Socket } from 'socket.io';
|
||||||
|
function cat(args:Array<string>, curdir:any):string {
|
||||||
|
var buf = "";
|
||||||
|
if (args.length == 0) {
|
||||||
|
buf += "cat: missing operand\n";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
let file = args[0];
|
||||||
|
if (curdir[file] == undefined) {
|
||||||
|
buf += "cat: " + file + ": No such file or directory\n";
|
||||||
|
}
|
||||||
|
//check if type string
|
||||||
|
else if(typeof curdir[file] == "string") {
|
||||||
|
buf += curdir[file] + "\n";
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
buf += "cat: " + file + ": Is not a file\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
export { cat };
|
46
commands/cd.js
Normal file
46
commands/cd.js
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
"use strict";
|
||||||
|
exports.__esModule = true;
|
||||||
|
exports.cd = void 0;
|
||||||
|
function cd(args, curdir, socket, filesystem, curdirx) {
|
||||||
|
var buf = "";
|
||||||
|
if (args.length == 0) {
|
||||||
|
buf += "Please specify a directory.\n";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (args[0] == "..") {
|
||||||
|
if (curdirx[socket.id].length > 0) {
|
||||||
|
var sync = "filesystem[socket.id]";
|
||||||
|
for (var i = 0; i < curdirx[socket.id].length; i++) {
|
||||||
|
sync += "['" + curdirx[socket.id][i] + "']";
|
||||||
|
}
|
||||||
|
sync += " = curdir[socket.id];";
|
||||||
|
console.log(sync);
|
||||||
|
eval(sync);
|
||||||
|
curdirx[socket.id].pop();
|
||||||
|
var cmdexec = "curdir[socket.id] = filesystem[socket.id]";
|
||||||
|
for (var i = 0; i < curdirx[socket.id].length; i++) {
|
||||||
|
cmdexec += "[(curdirx[socket.id][" + i + "])]";
|
||||||
|
}
|
||||||
|
eval(cmdexec);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (curdir[socket.id][args[0]] != undefined) {
|
||||||
|
if (typeof curdir[socket.id][args[0]] == "object") {
|
||||||
|
curdir[socket.id] = curdir[socket.id][args[0]];
|
||||||
|
buf += "Changed directory to " + args[0] + "\n";
|
||||||
|
curdirx[socket.id].push(args[0]);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
buf += "cd: " + args[0] + ": Is not a directory\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
buf += "Directory " + args[0] + " does not exist.\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
exports.cd = cd;
|
||||||
|
//# sourceMappingURL=cd.js.map
|
1
commands/cd.js.map
Normal file
1
commands/cd.js.map
Normal file
@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"cd.js","sourceRoot":"","sources":["cd.ts"],"names":[],"mappings":";;;AAEA,SAAS,EAAE,CAAC,IAAkB,EAAE,MAAU,EAAE,MAAa,EAAE,UAAc,EAAE,OAAqB;IAC5F,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;QAClB,GAAG,IAAI,+BAA+B,CAAC;KAE1C;SACI;QACD,IAAG,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE;YAIhB,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;gBAE/B,IAAI,IAAI,GAAG,uBAAuB,CAAC;gBACnC,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAC/C,IAAI,IAAI,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;iBAC/C;gBACD,IAAI,IAAI,uBAAuB,CAAC;gBAChC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAClB,IAAI,CAAC,IAAI,CAAC,CAAC;gBACX,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;gBAGzB,IAAI,OAAO,GAAG,2CAA2C,CAAC;gBAE1D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAChD,OAAO,IAAI,uBAAuB,GAAG,CAAC,GAAG,KAAK,CAAC;iBAClD;gBACD,IAAI,CAAC,OAAO,CAAC,CAAC;aACjB;SACJ;aACI;YACD,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE;gBAEzC,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,EAAE;oBAC/C,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC/C,GAAG,IAAI,uBAAuB,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;oBAChD,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;iBACpC;qBACG;oBACA,GAAG,IAAI,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,wBAAwB,CAAC;iBACtD;aAEJ;iBACI;gBACD,GAAG,IAAI,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,oBAAoB,CAAC;aAExD;SACJ;KACJ;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AACQ,gBAAE"}
|
@ -0,0 +1,55 @@
|
|||||||
|
import { Socket } from 'socket.io';
|
||||||
|
|
||||||
|
function cd(args:Array<string>, curdir:any, socket:Socket, filesystem:any, curdirx:Array<string>):string {
|
||||||
|
var buf = "";
|
||||||
|
if (args.length == 0) {
|
||||||
|
buf += "Please specify a directory.\n";
|
||||||
|
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if(args[0] == "..") {
|
||||||
|
//go up one directory
|
||||||
|
//recursively scan filesystem until we find curdir and then set curdir to its parent
|
||||||
|
//check curdirx is not empty
|
||||||
|
if (curdirx[socket.id].length > 0) {
|
||||||
|
//pop off last element
|
||||||
|
var sync = "filesystem[socket.id]";
|
||||||
|
for(let i = 0; i < curdirx[socket.id].length; i++) {
|
||||||
|
sync += "['" + curdirx[socket.id][i] + "']";
|
||||||
|
}
|
||||||
|
sync += " = curdir[socket.id];";
|
||||||
|
console.log(sync);
|
||||||
|
eval(sync);
|
||||||
|
curdirx[socket.id].pop();
|
||||||
|
//curdir = filesystem[socket.id][(curdirx[socket.id][0])][(curdirx[socket.id][1])].......;
|
||||||
|
//i know i shouldnt use eval but I don't know any other way to do this
|
||||||
|
var cmdexec = "curdir[socket.id] = filesystem[socket.id]";
|
||||||
|
//syncing = write curdir to a path in the filesystem
|
||||||
|
for (let i = 0; i < curdirx[socket.id].length; i++) {
|
||||||
|
cmdexec += "[(curdirx[socket.id][" + i + "])]";
|
||||||
|
}
|
||||||
|
eval(cmdexec);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (curdir[socket.id][args[0]] != undefined) {
|
||||||
|
//check if type dict
|
||||||
|
if (typeof curdir[socket.id][args[0]] == "object") {
|
||||||
|
curdir[socket.id] = curdir[socket.id][args[0]];
|
||||||
|
buf += "Changed directory to " + args[0] + "\n";
|
||||||
|
curdirx[socket.id].push(args[0]);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
buf += "cd: " + args[0] + ": Is not a directory\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
buf += "Directory " + args[0] + " does not exist.\n";
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
export { cd };
|
9
commands/clear.js
Normal file
9
commands/clear.js
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
"use strict";
|
||||||
|
exports.__esModule = true;
|
||||||
|
exports.clear = void 0;
|
||||||
|
function clear(buffer) {
|
||||||
|
buffer = "";
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
exports.clear = clear;
|
||||||
|
//# sourceMappingURL=clear.js.map
|
1
commands/clear.js.map
Normal file
1
commands/clear.js.map
Normal file
@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"clear.js","sourceRoot":"","sources":["clear.ts"],"names":[],"mappings":";;;AAAA,SAAS,KAAK,CAAC,MAAa;IACxB,MAAM,GAAG,EAAE,CAAC;IACZ,OAAO,EAAE,CAAC;AACd,CAAC;AACQ,sBAAK"}
|
@ -0,0 +1,5 @@
|
|||||||
|
function clear(buffer:string):string {
|
||||||
|
buffer = "";
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
export { clear };
|
@ -1,367 +1,99 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
exports.__esModule = true;
|
exports.__esModule = true;
|
||||||
exports.resolveCommand = void 0;
|
exports.resolveCommand = void 0;
|
||||||
var SerAny = require('serialize-anything');
|
var append_1 = require("./append");
|
||||||
var fs = require('fs');
|
var cat_1 = require("./cat");
|
||||||
|
var cd_1 = require("./cd");
|
||||||
|
var clear_1 = require("./clear");
|
||||||
|
var cp_1 = require("./cp");
|
||||||
|
var echo_1 = require("./echo");
|
||||||
|
var exec_1 = require("./exec");
|
||||||
|
var help_1 = require("./help");
|
||||||
|
var loadsess_1 = require("./loadsess");
|
||||||
|
var ls_1 = require("./ls");
|
||||||
|
var man_1 = require("./man");
|
||||||
|
var mkdir_1 = require("./mkdir");
|
||||||
|
var mv_1 = require("./mv");
|
||||||
|
var overwrite_1 = require("./overwrite");
|
||||||
|
var pwd_1 = require("./pwd");
|
||||||
|
var rm_1 = require("./rm");
|
||||||
|
var rmdir_1 = require("./rmdir");
|
||||||
|
var savesess_1 = require("./savesess");
|
||||||
|
var screenshot_1 = require("./screenshot");
|
||||||
|
var spam_1 = require("./spam");
|
||||||
|
var touch_1 = require("./touch");
|
||||||
|
var wee_1 = require("./wee");
|
||||||
|
var woo_1 = require("./woo");
|
||||||
function resolveCommand(commandname, socket, args, buffer, sessions, filesystem, curdir, curdirx) {
|
function resolveCommand(commandname, socket, args, buffer, sessions, filesystem, curdir, curdirx) {
|
||||||
switch (commandname) {
|
switch (commandname) {
|
||||||
case "help":
|
case "help":
|
||||||
buffer[socket.id] += "Available commands:\n";
|
buffer[socket.id] += (0, help_1.help)();
|
||||||
buffer[socket.id] += "help - shows this help\n";
|
|
||||||
buffer[socket.id] += "clear - clears the console\n";
|
|
||||||
buffer[socket.id] += "exit - exits the console\n";
|
|
||||||
buffer[socket.id] += "ls - lists the files in the current directory\n";
|
|
||||||
buffer[socket.id] += "cd - changes the current directory\n";
|
|
||||||
buffer[socket.id] += "echo - prints the arguments\n";
|
|
||||||
buffer[socket.id] += "mkdir - creates a new directory\n";
|
|
||||||
buffer[socket.id] += "cat - prints the contents of a file\n";
|
|
||||||
buffer[socket.id] += "touch - creates a new file\n";
|
|
||||||
buffer[socket.id] += "rm - removes a file\n";
|
|
||||||
buffer[socket.id] += "mv - moves a file\n";
|
|
||||||
buffer[socket.id] += "cp - copies a file\n";
|
|
||||||
buffer[socket.id] += "rmdir - removes a directory\n";
|
|
||||||
buffer[socket.id] += "pwd - prints the current directory\n";
|
|
||||||
buffer[socket.id] += "exec - executes a file\n";
|
|
||||||
buffer[socket.id] += "spam - spams the console\n";
|
|
||||||
buffer[socket.id] += "overwrite - overwrites the file with data\n";
|
|
||||||
buffer[socket.id] += "append - appends the arguments to a file\n";
|
|
||||||
buffer[socket.id] += "screenshot - takes a screenshot\n";
|
|
||||||
buffer[socket.id] += "man - display longer help\n";
|
|
||||||
buffer[socket.id] += "tree - display directory tree";
|
|
||||||
break;
|
break;
|
||||||
case "man":
|
case "man":
|
||||||
if (args.length == 0) {
|
buffer[socket.id] += (0, man_1.man)(args);
|
||||||
buffer[socket.id] += "Missing arguments";
|
|
||||||
}
|
|
||||||
switch (args[0]) {
|
|
||||||
case "help":
|
|
||||||
buffer[socket.id] += "Prints the list of available commands\n";
|
|
||||||
break;
|
|
||||||
case "clear":
|
|
||||||
buffer[socket.id] += "Clears the console\n";
|
|
||||||
break;
|
|
||||||
case "exit":
|
|
||||||
buffer[socket.id] += "Exits the console\n";
|
|
||||||
break;
|
|
||||||
case "ls":
|
|
||||||
buffer[socket.id] += "Lists the files in the current directory, also displays if file or directory\n";
|
|
||||||
break;
|
|
||||||
case "cd":
|
|
||||||
buffer[socket.id] += "Changes the current directory\n";
|
|
||||||
break;
|
|
||||||
case "echo":
|
|
||||||
buffer[socket.id] += "Prints the arguments to the console\n";
|
|
||||||
break;
|
|
||||||
case "mkdir":
|
|
||||||
buffer[socket.id] += "Creates a new directory in the current directory\n";
|
|
||||||
break;
|
|
||||||
case "cat":
|
|
||||||
buffer[socket.id] += "Prints the contents of a file out to the console\n";
|
|
||||||
break;
|
|
||||||
case "touch":
|
|
||||||
buffer[socket.id] += "Creates a new file in the current directory\n";
|
|
||||||
break;
|
|
||||||
case "rm":
|
|
||||||
buffer[socket.id] += "Removes a file from the current directory\n";
|
|
||||||
break;
|
|
||||||
case "mv":
|
|
||||||
buffer[socket.id] += "Moves a file from one directory to another\n";
|
|
||||||
break;
|
|
||||||
case "cp":
|
|
||||||
buffer[socket.id] += "Copies a file from one directory to another\n";
|
|
||||||
break;
|
|
||||||
case "rmdir":
|
|
||||||
buffer[socket.id] += "Removes a directory from the current directory\n";
|
|
||||||
break;
|
|
||||||
case "pwd":
|
|
||||||
buffer[socket.id] += "Prints the current directory out to the console\n";
|
|
||||||
break;
|
|
||||||
case "exec":
|
|
||||||
buffer[socket.id] += "Executes a file in the console, you can \'t use \"exit\" and \"exec\" commands\n";
|
|
||||||
break;
|
|
||||||
case "spam":
|
|
||||||
buffer[socket.id] += "Spams the console with a message\n";
|
|
||||||
break;
|
|
||||||
case "overwrite":
|
|
||||||
buffer[socket.id] += "Overwrites a file with from arguments\n";
|
|
||||||
break;
|
|
||||||
case "append":
|
|
||||||
buffer[socket.id] += "Appends the arguments to a file\n";
|
|
||||||
break;
|
break;
|
||||||
case "screenshot":
|
case "screenshot":
|
||||||
buffer[socket.id] += "Takes a screenshot of the console and saves it to a file\n";
|
buffer[socket.id] += (0, screenshot_1.screenshot)(args, curdir, buffer, socket);
|
||||||
break;
|
break;
|
||||||
case "man":
|
case "append":
|
||||||
buffer[socket.id] += "This manual databank\n";
|
buffer[socket.id] += (0, append_1.append)(args, curdir[socket.id]);
|
||||||
break;
|
break;
|
||||||
default:
|
case "overwrite":
|
||||||
buffer[socket.id] += "No such command\n";
|
buffer[socket.id] += (0, overwrite_1.overwrite)(args, curdir[socket.id]);
|
||||||
}
|
break;
|
||||||
|
case "rm":
|
||||||
|
buffer[socket.id] += (0, rm_1.rm)(args, curdir, socket);
|
||||||
|
break;
|
||||||
|
case "mv":
|
||||||
|
buffer[socket.id] += (0, mv_1.mv)(args, curdir[socket.id]);
|
||||||
|
break;
|
||||||
|
case "cp":
|
||||||
|
buffer[socket.id] += (0, cp_1.cp)(args, curdir[socket.id]);
|
||||||
|
break;
|
||||||
|
case "mkdir":
|
||||||
|
buffer[socket.id] += (0, mkdir_1.mkdir)(args, curdir[socket.id]);
|
||||||
|
break;
|
||||||
|
case "rmdir":
|
||||||
|
buffer[socket.id] += (0, rmdir_1.rmdir)(args, curdir, socket);
|
||||||
|
break;
|
||||||
|
case "touch":
|
||||||
|
buffer[socket.id] += (0, touch_1.touch)(args, curdir, socket);
|
||||||
|
break;
|
||||||
|
case "cat":
|
||||||
|
buffer[socket.id] += (0, cat_1.cat)(args, curdir[socket.id]);
|
||||||
|
break;
|
||||||
|
case "exec":
|
||||||
|
buffer[socket.id] += (0, exec_1.exec)(args, curdir, socket, buffer, sessions, filesystem, curdirx);
|
||||||
|
break;
|
||||||
|
case "ls":
|
||||||
|
buffer[socket.id] += (0, ls_1.ls)(curdir[socket.id]);
|
||||||
|
break;
|
||||||
|
case "cd":
|
||||||
|
buffer[socket.id] += (0, cd_1.cd)(args, curdir, socket, filesystem, curdirx);
|
||||||
|
break;
|
||||||
|
case "pwd":
|
||||||
|
buffer[socket.id] += (0, pwd_1.pwd)(curdirx[socket.id]);
|
||||||
|
break;
|
||||||
|
case "echo":
|
||||||
|
buffer[socket.id] += (0, echo_1.echo)(args);
|
||||||
|
break;
|
||||||
|
case "clear":
|
||||||
|
buffer[socket.id] += (0, clear_1.clear)(buffer[socket.id]);
|
||||||
break;
|
break;
|
||||||
case "savesess":
|
case "savesess":
|
||||||
if (args.length == 2) {
|
buffer[socket.id] += (0, savesess_1.savesess)(args, sessions, filesystem, curdir, buffer, socket);
|
||||||
if (args[0] == "kryptic") {
|
|
||||||
sessions[args[1]] = [];
|
|
||||||
sessions[args[1]]["buffer"] = buffer[socket.id].slice();
|
|
||||||
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);
|
|
||||||
fs.writeFileSync("./sessions.json", data);
|
|
||||||
buffer[socket.id] += "Session saved.\n";
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
buffer[socket.id] += "Invalid command.";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
buffer[socket.id] += "Invalid command.";
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case "loadsess":
|
case "loadsess":
|
||||||
if (args.length == 1) {
|
buffer[socket.id] += (0, loadsess_1.loadsess)(args, sessions, filesystem[socket.id], curdir[socket.id], buffer[socket.id]);
|
||||||
sessions = SerAny.deserialize(fs.readFileSync("./sessions.json"));
|
|
||||||
if (sessions[args[0]] != undefined) {
|
|
||||||
filesystem[socket.id] = sessions[args[0]]["filesystem"];
|
|
||||||
curdir[socket.id] = sessions[args[0]]["curdir"];
|
|
||||||
buffer[socket.id] = sessions[args[0]]["buffer"];
|
|
||||||
buffer[socket.id] += "Session loaded.\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case "wee":
|
case "wee":
|
||||||
buffer[socket.id] += "woo\n";
|
buffer[socket.id] += (0, wee_1.wee)();
|
||||||
break;
|
break;
|
||||||
case "woo":
|
case "woo":
|
||||||
buffer[socket.id] += "wee\n";
|
buffer[socket.id] += (0, woo_1.woo)();
|
||||||
break;
|
|
||||||
case "screenshot":
|
|
||||||
curdir[socket.id][args[0]] = buffer[socket.id];
|
|
||||||
buffer[socket.id] += "Screenshot saved to " + args[0] + "\n";
|
|
||||||
break;
|
|
||||||
case "append":
|
|
||||||
if (args.length == 0) {
|
|
||||||
buffer[socket.id] += "append: missing operand\n";
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if (curdir[socket.id][args[0]] == undefined) {
|
|
||||||
curdir[socket.id][args[0]] = "";
|
|
||||||
}
|
|
||||||
for (var i = 1; i < args.length; i++) {
|
|
||||||
curdir[socket.id][args[0]] += args[i] + "\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "rm":
|
|
||||||
if (curdir[socket.id][args[0]] != undefined) {
|
|
||||||
if (typeof curdir[socket.id][args[0]] == "string") {
|
|
||||||
delete curdir[socket.id][args[0]];
|
|
||||||
buffer[socket.id] += "File " + args[0] + " removed\n";
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
buffer[socket.id] += "Error: " + args[0] + " is not a file\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
buffer[socket.id] += "Error: " + args[0] + " does not exist\n";
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "mv":
|
|
||||||
if (curdir[socket.id][args[0]] != undefined) {
|
|
||||||
if (typeof curdir[socket.id][args[0]] == "string") {
|
|
||||||
curdir[socket.id][args[1]] = curdir[socket.id][args[0]];
|
|
||||||
delete curdir[socket.id][args[0]];
|
|
||||||
buffer[socket.id] += "File " + args[0] + " moved to " + args[1] + "\n";
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
buffer[socket.id] += "Error: " + args[0] + " is not a file\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
buffer[socket.id] += "Error: " + args[0] + " does not exist\n";
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "cp":
|
|
||||||
if (curdir[socket.id][args[0]] != undefined) {
|
|
||||||
if (typeof curdir[socket.id][args[0]] == "string") {
|
|
||||||
curdir[socket.id][args[1]] = curdir[socket.id][args[0]].slice(0);
|
|
||||||
buffer[socket.id] += "File " + args[0] + " copied to " + args[1] + "\n";
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
buffer[socket.id] += "Error: " + args[0] + " is not a file\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
buffer[socket.id] += "Error: " + args[0] + " does not exist\n";
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "rmdir":
|
|
||||||
if (curdir[socket.id][args[0]] != undefined) {
|
|
||||||
if (typeof curdir[socket.id][args[0]] == "object") {
|
|
||||||
delete curdir[socket.id][args[0]];
|
|
||||||
buffer[socket.id] += "Directory " + args[0] + " removed\n";
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
buffer[socket.id] += "Error: " + args[0] + " is not a directory\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
buffer[socket.id] += "Error: " + args[0] + " does not exist\n";
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case "spam":
|
case "spam":
|
||||||
for (var i = 0; i < parseInt(args[0]); i++) {
|
buffer[socket.id] += (0, spam_1.spam)(args);
|
||||||
buffer[socket.id] += args.slice(1).join(" ") + "\n";
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "touch":
|
|
||||||
if (args.length == 0) {
|
|
||||||
buffer[socket.id] += "touch: missing operand\n";
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
curdir[socket.id][args[0]] = "";
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "overwrite":
|
|
||||||
if (args.length == 0) {
|
|
||||||
buffer[socket.id] += "overwrite: missing operand\n";
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
curdir[socket.id][args[0]] = "";
|
|
||||||
for (var i = 1; i < args.length; i++) {
|
|
||||||
curdir[socket.id][args[0]] += args[i] + " ";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "cat":
|
|
||||||
if (args.length == 0) {
|
|
||||||
buffer[socket.id] += "cat: missing operand\n";
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
var file = args[0];
|
|
||||||
if (curdir[socket.id][file] == undefined) {
|
|
||||||
buffer[socket.id] += "cat: " + file + ": No such file or directory\n";
|
|
||||||
}
|
|
||||||
else if (typeof curdir[socket.id][file] == "string") {
|
|
||||||
buffer[socket.id] += curdir[socket.id][file] + "\n";
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
buffer[socket.id] += "cat: " + file + ": Is not a file\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "echo":
|
|
||||||
buffer[socket.id] += args.join(' ');
|
|
||||||
buffer[socket.id] += "\n";
|
|
||||||
break;
|
|
||||||
case "clear":
|
|
||||||
buffer[socket.id] = "";
|
|
||||||
break;
|
|
||||||
case "exit":
|
|
||||||
buffer[socket.id] = "";
|
|
||||||
buffer[socket.id] += "Bye!\n";
|
|
||||||
socket.disconnect();
|
|
||||||
break;
|
|
||||||
case "exec":
|
|
||||||
if (args.length == 0) {
|
|
||||||
buffer[socket.id] += "exec: missing operand\n";
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
var file = args[0];
|
|
||||||
if (curdir[socket.id][file] == undefined) {
|
|
||||||
buffer[socket.id] += "exec: " + file + ": No such file or directory\n";
|
|
||||||
}
|
|
||||||
else if (typeof curdir[socket.id][file] == "string") {
|
|
||||||
var commands = curdir[socket.id][file].split("\n");
|
|
||||||
for (var i = 0; i < commands.length; i++) {
|
|
||||||
var exploded = commands[i].split(" ");
|
|
||||||
var commandx = exploded[0];
|
|
||||||
var bannedcommands = ["exec", "exit"];
|
|
||||||
if (!bannedcommands.includes(commandx)) {
|
|
||||||
var argsx = exploded.slice(1);
|
|
||||||
resolveCommand(commandx, socket, argsx, buffer, sessions, filesystem, curdir, curdirx);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
buffer[socket.id] += "Error: " + commandx + " is a restricted command\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
buffer[socket.id] += "exec: " + file + ": Is not a file\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "ls":
|
|
||||||
buffer[socket.id] += "Files in the current directory:\n";
|
|
||||||
for (var key in curdir[socket.id]) {
|
|
||||||
if (typeof curdir[socket.id][key] == "string") {
|
|
||||||
buffer[socket.id] += key + " (file)\n";
|
|
||||||
}
|
|
||||||
else if (typeof curdir[socket.id][key] == "object") {
|
|
||||||
buffer[socket.id] += key + " (directory)\n";
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
buffer[socket.id] += key + " (unknown)\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "cd":
|
|
||||||
if (args.length == 0) {
|
|
||||||
buffer[socket.id] += "Please specify a directory.\n";
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if (args[0] == "..") {
|
|
||||||
if (curdirx[socket.id].length > 0) {
|
|
||||||
var sync = "filesystem[socket.id]";
|
|
||||||
for (var i = 0; i < curdirx[socket.id].length; i++) {
|
|
||||||
sync += "['" + curdirx[socket.id][i] + "']";
|
|
||||||
}
|
|
||||||
sync += " = curdir[socket.id];";
|
|
||||||
console.log(sync);
|
|
||||||
eval(sync);
|
|
||||||
curdirx[socket.id].pop();
|
|
||||||
var cmdexec = "curdir[socket.id] = filesystem[socket.id]";
|
|
||||||
for (var i = 0; i < curdirx[socket.id].length; i++) {
|
|
||||||
cmdexec += "[(curdirx[socket.id][" + i + "])]";
|
|
||||||
}
|
|
||||||
eval(cmdexec);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if (curdir[socket.id][args[0]] != undefined) {
|
|
||||||
if (typeof curdir[socket.id][args[0]] == "object") {
|
|
||||||
curdir[socket.id] = curdir[socket.id][args[0]];
|
|
||||||
buffer[socket.id] += "Changed directory to " + args[0] + "\n";
|
|
||||||
curdirx[socket.id].push(args[0]);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
buffer[socket.id] += "cd: " + args[0] + ": Is not a directory\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
buffer[socket.id] += "Directory " + args[0] + " does not exist.\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "pwd":
|
|
||||||
var curdirasstring = curdirx[socket.id].join("/");
|
|
||||||
buffer[socket.id] += "Current directory: " + curdirasstring + "\n";
|
|
||||||
break;
|
|
||||||
case "mkdir":
|
|
||||||
if (args.length == 0) {
|
|
||||||
buffer[socket.id] += "Please specify a directory.\n";
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if (curdir[socket.id][args[0]]) {
|
|
||||||
buffer[socket.id] += "Directory " + args[0] + " already exists.\n";
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
curdir[socket.id][args[0]] = {};
|
|
||||||
buffer[socket.id] += "Created directory " + args[0] + "\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
buffer[socket.id] += "Invalid command.\n";
|
buffer[socket.id] += "Invalid command.\n";
|
||||||
|
File diff suppressed because one or more lines are too long
@ -1,397 +1,97 @@
|
|||||||
import { Socket } from 'socket.io';
|
import { Socket } from 'socket.io';
|
||||||
const SerAny = require('serialize-anything');
|
import { append } from './append';
|
||||||
var fs = require('fs');
|
import { cat } from './cat';
|
||||||
|
import { cd } from './cd';
|
||||||
|
import { clear } from './clear';
|
||||||
|
import { cp } from './cp';
|
||||||
|
import { echo } from './echo';
|
||||||
|
import { exec } from './exec';
|
||||||
|
import { help } from './help';
|
||||||
|
import { loadsess } from './loadsess';
|
||||||
|
import { ls } from './ls';
|
||||||
|
import { man } from './man';
|
||||||
|
import { mkdir } from './mkdir';
|
||||||
|
import { mv } from './mv';
|
||||||
|
import { overwrite } from './overwrite';
|
||||||
|
import { pwd } from './pwd';
|
||||||
|
import { rm } from './rm';
|
||||||
|
import { rmdir } from './rmdir';
|
||||||
|
import { savesess } from './savesess';
|
||||||
|
import { screenshot } from './screenshot';
|
||||||
|
import { spam } from './spam';
|
||||||
|
import { touch } from './touch';
|
||||||
|
import { wee } from './wee';
|
||||||
|
import { woo } from './woo';
|
||||||
function resolveCommand(commandname:string, socket:Socket, args:string[], buffer:{ [id: string]: string }, sessions:any, filesystem:any, curdir:any, curdirx:any) {
|
function resolveCommand(commandname:string, socket:Socket, args:string[], buffer:{ [id: string]: string }, sessions:any, filesystem:any, curdir:any, curdirx:any) {
|
||||||
switch (commandname) {
|
switch (commandname) {
|
||||||
case "help":
|
case "help":
|
||||||
buffer[socket.id] += "Available commands:\n";
|
buffer[socket.id] += help();
|
||||||
buffer[socket.id] += "help - shows this help\n";
|
|
||||||
buffer[socket.id] += "clear - clears the console\n";
|
|
||||||
buffer[socket.id] += "exit - exits the console\n";
|
|
||||||
buffer[socket.id] += "ls - lists the files in the current directory\n";
|
|
||||||
buffer[socket.id] += "cd - changes the current directory\n";
|
|
||||||
buffer[socket.id] += "echo - prints the arguments\n";
|
|
||||||
buffer[socket.id] += "mkdir - creates a new directory\n";
|
|
||||||
buffer[socket.id] += "cat - prints the contents of a file\n";
|
|
||||||
buffer[socket.id] += "touch - creates a new file\n";
|
|
||||||
buffer[socket.id] += "rm - removes a file\n";
|
|
||||||
buffer[socket.id] += "mv - moves a file\n";
|
|
||||||
buffer[socket.id] += "cp - copies a file\n";
|
|
||||||
buffer[socket.id] += "rmdir - removes a directory\n";
|
|
||||||
buffer[socket.id] += "pwd - prints the current directory\n";
|
|
||||||
buffer[socket.id] += "exec - executes a file\n";
|
|
||||||
buffer[socket.id] += "spam - spams the console\n";
|
|
||||||
buffer[socket.id] += "overwrite - overwrites the file with data\n";
|
|
||||||
buffer[socket.id] += "append - appends the arguments to a file\n";
|
|
||||||
buffer[socket.id] += "screenshot - takes a screenshot\n";
|
|
||||||
buffer[socket.id] += "man - display longer help\n";
|
|
||||||
buffer[socket.id] += "tree - display directory tree";
|
|
||||||
break;
|
break;
|
||||||
case "man":
|
case "man":
|
||||||
if(args.length == 0){
|
buffer[socket.id] += man(args);
|
||||||
buffer[socket.id] += "Missing arguments"
|
break; //implement more commands
|
||||||
}
|
case "screenshot":
|
||||||
switch (args[0]){
|
buffer[socket.id] += screenshot(args, curdir, buffer, socket);
|
||||||
case "help":
|
|
||||||
buffer[socket.id] += "Prints the list of available commands\n";
|
|
||||||
break;
|
|
||||||
case "clear":
|
|
||||||
buffer[socket.id] += "Clears the console\n";
|
|
||||||
break;
|
|
||||||
case "exit":
|
|
||||||
buffer[socket.id] += "Exits the console\n";
|
|
||||||
break;
|
|
||||||
case "ls":
|
|
||||||
buffer[socket.id] += "Lists the files in the current directory, also displays if file or directory\n";
|
|
||||||
break;
|
|
||||||
case "cd":
|
|
||||||
buffer[socket.id] += "Changes the current directory\n";
|
|
||||||
break;
|
|
||||||
case "echo":
|
|
||||||
buffer[socket.id] += "Prints the arguments to the console\n";
|
|
||||||
break;
|
|
||||||
case "mkdir":
|
|
||||||
buffer[socket.id] += "Creates a new directory in the current directory\n";
|
|
||||||
break;
|
|
||||||
case "cat":
|
|
||||||
buffer[socket.id] += "Prints the contents of a file out to the console\n";
|
|
||||||
break;
|
|
||||||
case "touch":
|
|
||||||
buffer[socket.id] += "Creates a new file in the current directory\n";
|
|
||||||
break;
|
|
||||||
case "rm":
|
|
||||||
buffer[socket.id] += "Removes a file from the current directory\n";
|
|
||||||
break;
|
|
||||||
case "mv":
|
|
||||||
buffer[socket.id] += "Moves a file from one directory to another\n";
|
|
||||||
break;
|
|
||||||
case "cp":
|
|
||||||
buffer[socket.id] += "Copies a file from one directory to another\n";
|
|
||||||
break;
|
|
||||||
case "rmdir":
|
|
||||||
buffer[socket.id] += "Removes a directory from the current directory\n";
|
|
||||||
break;
|
|
||||||
case "pwd":
|
|
||||||
buffer[socket.id] += "Prints the current directory out to the console\n";
|
|
||||||
break;
|
|
||||||
case "exec":
|
|
||||||
buffer[socket.id] += "Executes a file in the console, you can \'t use \"exit\" and \"exec\" commands\n";
|
|
||||||
break;
|
|
||||||
case "spam":
|
|
||||||
buffer[socket.id] += "Spams the console with a message\n";
|
|
||||||
break;
|
|
||||||
case "overwrite":
|
|
||||||
buffer[socket.id] += "Overwrites a file with from arguments\n";
|
|
||||||
break;
|
break;
|
||||||
case "append":
|
case "append":
|
||||||
buffer[socket.id] += "Appends the arguments to a file\n";
|
buffer[socket.id] += append(args, curdir[socket.id]);
|
||||||
break;
|
break;
|
||||||
case "screenshot":
|
case "overwrite":
|
||||||
buffer[socket.id] += "Takes a screenshot of the console and saves it to a file\n";
|
buffer[socket.id] += overwrite(args, curdir[socket.id]);
|
||||||
break;
|
break;
|
||||||
case "man":
|
case "rm":
|
||||||
buffer[socket.id] += "This manual databank\n"
|
buffer[socket.id] += rm(args, curdir, socket);
|
||||||
break
|
break;
|
||||||
default:
|
case "mv":
|
||||||
buffer[socket.id] += "No such command\n"
|
buffer[socket.id] += mv(args, curdir[socket.id]);
|
||||||
}
|
break;
|
||||||
|
case "cp":
|
||||||
|
buffer[socket.id] += cp(args, curdir[socket.id]);
|
||||||
|
break;
|
||||||
|
case "mkdir":
|
||||||
|
buffer[socket.id] += mkdir(args, curdir[socket.id]);
|
||||||
|
break;
|
||||||
|
case "rmdir":
|
||||||
|
buffer[socket.id] += rmdir(args, curdir, socket);
|
||||||
|
break;
|
||||||
|
case "touch":
|
||||||
|
buffer[socket.id] += touch(args, curdir, socket);
|
||||||
|
break;
|
||||||
|
case "cat":
|
||||||
|
buffer[socket.id] += cat(args, curdir[socket.id]);
|
||||||
|
break;
|
||||||
|
case "exec":
|
||||||
|
buffer[socket.id] += exec(args, curdir, socket, buffer, sessions, filesystem, curdirx);
|
||||||
|
break;
|
||||||
|
case "ls":
|
||||||
|
buffer[socket.id] += ls(curdir[socket.id]);
|
||||||
|
break;
|
||||||
|
case "cd":
|
||||||
|
buffer[socket.id] += cd(args, curdir, socket, filesystem, curdirx);
|
||||||
|
break;
|
||||||
|
case "pwd":
|
||||||
|
buffer[socket.id] += pwd(curdirx[socket.id]);
|
||||||
|
break;
|
||||||
|
case "echo":
|
||||||
|
buffer[socket.id] += echo(args);
|
||||||
|
break;
|
||||||
|
case "clear":
|
||||||
|
buffer[socket.id] += clear(buffer[socket.id]);
|
||||||
break;
|
break;
|
||||||
case "savesess":
|
case "savesess":
|
||||||
if (args.length == 2) {
|
buffer[socket.id] += savesess(args, sessions, filesystem, curdir, buffer, socket);
|
||||||
if (args[0] == "kryptic") {
|
|
||||||
sessions[args[1]] = [];
|
|
||||||
sessions[args[1]]["buffer"] = buffer[socket.id].slice();
|
|
||||||
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);
|
|
||||||
|
|
||||||
buffer[socket.id] += "Session saved.\n";
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
buffer[socket.id] += "Invalid command.";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
buffer[socket.id] += "Invalid command.";
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case "loadsess":
|
case "loadsess":
|
||||||
if (args.length == 1) {
|
buffer[socket.id] += loadsess(args, sessions, filesystem[socket.id], curdir[socket.id], buffer[socket.id]);
|
||||||
sessions = SerAny.deserialize(fs.readFileSync("./sessions.json"));
|
|
||||||
if(sessions[args[0]] != undefined) {
|
|
||||||
filesystem[socket.id] = sessions[args[0]]["filesystem"];
|
|
||||||
curdir[socket.id] = sessions[args[0]]["curdir"];
|
|
||||||
buffer[socket.id] = sessions[args[0]]["buffer"];
|
|
||||||
buffer[socket.id] += "Session loaded.\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case "wee":
|
case "wee":
|
||||||
buffer[socket.id] += "woo\n";
|
buffer[socket.id] += wee();
|
||||||
break;
|
break;
|
||||||
case "woo":
|
case "woo":
|
||||||
buffer[socket.id] += "wee\n";
|
buffer[socket.id] += woo();
|
||||||
break;
|
|
||||||
//implement more commands
|
|
||||||
case "screenshot":
|
|
||||||
curdir[socket.id][args[0]] = buffer[socket.id];
|
|
||||||
buffer[socket.id] += "Screenshot saved to " + args[0] + "\n";
|
|
||||||
|
|
||||||
break;
|
|
||||||
case "append":
|
|
||||||
if (args.length == 0) {
|
|
||||||
buffer[socket.id] += "append: missing operand\n";
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if (curdir[socket.id][args[0]] == undefined) {
|
|
||||||
curdir[socket.id][args[0]] = "";
|
|
||||||
}
|
|
||||||
for (let i = 1; i < args.length; i++) {
|
|
||||||
curdir[socket.id][args[0]] += args[i] + "\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "rm":
|
|
||||||
if (curdir[socket.id][args[0]] != undefined) {
|
|
||||||
if (typeof curdir[socket.id][args[0]] == "string") {
|
|
||||||
delete curdir[socket.id][args[0]];
|
|
||||||
buffer[socket.id] += "File " + args[0] + " removed\n";
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
buffer[socket.id] += "Error: " + args[0] + " is not a file\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
buffer[socket.id] += "Error: " + args[0] + " does not exist\n";
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "mv":
|
|
||||||
if (curdir[socket.id][args[0]] != undefined) {
|
|
||||||
if (typeof curdir[socket.id][args[0]] == "string") {
|
|
||||||
curdir[socket.id][args[1]] = curdir[socket.id][args[0]];
|
|
||||||
delete curdir[socket.id][args[0]];
|
|
||||||
buffer[socket.id] += "File " + args[0] + " moved to " + args[1] + "\n";
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
buffer[socket.id] += "Error: " + args[0] + " is not a file\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
buffer[socket.id] += "Error: " + args[0] + " does not exist\n";
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "cp":
|
|
||||||
if (curdir[socket.id][args[0]] != undefined) {
|
|
||||||
if (typeof curdir[socket.id][args[0]] == "string") {
|
|
||||||
curdir[socket.id][args[1]] = curdir[socket.id][args[0]].slice(0);
|
|
||||||
buffer[socket.id] += "File " + args[0] + " copied to " + args[1] + "\n";
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
buffer[socket.id] += "Error: " + args[0] + " is not a file\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
buffer[socket.id] += "Error: " + args[0] + " does not exist\n";
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "rmdir":
|
|
||||||
if (curdir[socket.id][args[0]] != undefined) {
|
|
||||||
if (typeof curdir[socket.id][args[0]] == "object") {
|
|
||||||
delete curdir[socket.id][args[0]];
|
|
||||||
buffer[socket.id] += "Directory " + args[0] + " removed\n";
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
buffer[socket.id] += "Error: " + args[0] + " is not a directory\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
buffer[socket.id] += "Error: " + args[0] + " does not exist\n";
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case "spam":
|
case "spam":
|
||||||
//spam arguments times from first argument
|
buffer[socket.id] += spam(args);
|
||||||
for (let i = 0; i < parseInt(args[0]); i++) {
|
|
||||||
buffer[socket.id] += args.slice(1).join(" ") + "\n";
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "touch":
|
|
||||||
if (args.length == 0) {
|
|
||||||
buffer[socket.id] += "touch: missing operand\n";
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
curdir[socket.id][args[0]] = "";
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
case "overwrite":
|
|
||||||
if (args.length == 0) {
|
|
||||||
buffer[socket.id] += "overwrite: missing operand\n";
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
curdir[socket.id][args[0]] = "";
|
|
||||||
for (let i = 1; i < args.length; i++) {
|
|
||||||
curdir[socket.id][args[0]] += args[i] + " ";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "cat":
|
|
||||||
if (args.length == 0) {
|
|
||||||
buffer[socket.id] += "cat: missing operand\n";
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
let file = args[0];
|
|
||||||
if (curdir[socket.id][file] == undefined) {
|
|
||||||
buffer[socket.id] += "cat: " + file + ": No such file or directory\n";
|
|
||||||
}
|
|
||||||
//check if type string
|
|
||||||
else if(typeof curdir[socket.id][file] == "string") {
|
|
||||||
buffer[socket.id] += curdir[socket.id][file] + "\n";
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
buffer[socket.id] += "cat: " + file + ": Is not a file\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
case "echo":
|
|
||||||
buffer[socket.id] += args.join(' ');
|
|
||||||
buffer[socket.id] += "\n";
|
|
||||||
break;
|
|
||||||
case "clear":
|
|
||||||
buffer[socket.id] = "";
|
|
||||||
|
|
||||||
break;
|
|
||||||
case "exit":
|
|
||||||
buffer[socket.id] = "";
|
|
||||||
buffer[socket.id] += "Bye!\n";
|
|
||||||
|
|
||||||
socket.disconnect();
|
|
||||||
break;
|
|
||||||
case "exec":
|
|
||||||
if (args.length == 0) {
|
|
||||||
buffer[socket.id] += "exec: missing operand\n";
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
let file = args[0];
|
|
||||||
if (curdir[socket.id][file] == undefined) {
|
|
||||||
buffer[socket.id] += "exec: " + file + ": No such file or directory\n";
|
|
||||||
}
|
|
||||||
//check if type string
|
|
||||||
else if(typeof curdir[socket.id][file] == "string") {
|
|
||||||
//split string into array of commands
|
|
||||||
let commands = curdir[socket.id][file].split("\n");
|
|
||||||
for (let i = 0; i < commands.length; i++) {
|
|
||||||
let exploded = commands[i].split(" ");
|
|
||||||
let commandx = exploded[0];
|
|
||||||
let bannedcommands = ["exec", "exit"];
|
|
||||||
if (!bannedcommands.includes(commandx)) {
|
|
||||||
let argsx = exploded.slice(1);
|
|
||||||
resolveCommand(commandx, socket, argsx, buffer, sessions, filesystem, curdir, curdirx);
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
buffer[socket.id] += "Error: " + commandx + " is a restricted command\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
buffer[socket.id] += "exec: " + file + ": Is not a file\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "ls":
|
|
||||||
buffer[socket.id] += "Files in the current directory:\n";
|
|
||||||
//list only first level files
|
|
||||||
for (var key in curdir[socket.id]) {
|
|
||||||
//buffer[socket.id] += key + "\n";
|
|
||||||
//also print if it is a directory or file
|
|
||||||
if (typeof curdir[socket.id][key] == "string") {
|
|
||||||
buffer[socket.id] += key + " (file)\n";
|
|
||||||
}
|
|
||||||
else if (typeof curdir[socket.id][key] == "object") {
|
|
||||||
buffer[socket.id] += key + " (directory)\n";
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
buffer[socket.id] += key + " (unknown)\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
case "cd":
|
|
||||||
if (args.length == 0) {
|
|
||||||
buffer[socket.id] += "Please specify a directory.\n";
|
|
||||||
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if(args[0] == "..") {
|
|
||||||
//go up one directory
|
|
||||||
//recursively scan filesystem until we find curdir and then set curdir to its parent
|
|
||||||
//check curdirx is not empty
|
|
||||||
if (curdirx[socket.id].length > 0) {
|
|
||||||
//pop off last element
|
|
||||||
var sync = "filesystem[socket.id]";
|
|
||||||
for(let i = 0; i < curdirx[socket.id].length; i++) {
|
|
||||||
sync += "['" + curdirx[socket.id][i] + "']";
|
|
||||||
}
|
|
||||||
sync += " = curdir[socket.id];";
|
|
||||||
console.log(sync);
|
|
||||||
eval(sync);
|
|
||||||
curdirx[socket.id].pop();
|
|
||||||
//curdir = filesystem[socket.id][(curdirx[socket.id][0])][(curdirx[socket.id][1])].......;
|
|
||||||
//i know i shouldnt use eval but I don't know any other way to do this
|
|
||||||
var cmdexec = "curdir[socket.id] = filesystem[socket.id]";
|
|
||||||
//syncing = write curdir to a path in the filesystem
|
|
||||||
for (let i = 0; i < curdirx[socket.id].length; i++) {
|
|
||||||
cmdexec += "[(curdirx[socket.id][" + i + "])]";
|
|
||||||
}
|
|
||||||
eval(cmdexec);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if (curdir[socket.id][args[0]] != undefined) {
|
|
||||||
//check if type dict
|
|
||||||
if (typeof curdir[socket.id][args[0]] == "object") {
|
|
||||||
curdir[socket.id] = curdir[socket.id][args[0]];
|
|
||||||
buffer[socket.id] += "Changed directory to " + args[0] + "\n";
|
|
||||||
curdirx[socket.id].push(args[0]);
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
buffer[socket.id] += "cd: " + args[0] + ": Is not a directory\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
buffer[socket.id] += "Directory " + args[0] + " does not exist.\n";
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "pwd":
|
|
||||||
var curdirasstring = curdirx[socket.id].join("/");
|
|
||||||
buffer[socket.id] += "Current directory: " + curdirasstring + "\n";
|
|
||||||
|
|
||||||
break;
|
|
||||||
case "mkdir":
|
|
||||||
if (args.length == 0) {
|
|
||||||
buffer[socket.id] += "Please specify a directory.\n";
|
|
||||||
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if (curdir[socket.id][args[0]]) {
|
|
||||||
buffer[socket.id] += "Directory " + args[0] + " already exists.\n";
|
|
||||||
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
curdir[socket.id][args[0]] = {};
|
|
||||||
buffer[socket.id] += "Created directory " + args[0] + "\n";
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
//invalid command
|
//invalid command
|
||||||
default:
|
default:
|
||||||
|
26
commands/cp.js
Normal file
26
commands/cp.js
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
"use strict";
|
||||||
|
exports.__esModule = true;
|
||||||
|
exports.cp = void 0;
|
||||||
|
function cp(args, curdir) {
|
||||||
|
var buf = "";
|
||||||
|
if (args.length == 2) {
|
||||||
|
if (curdir[args[0]] != undefined) {
|
||||||
|
if (typeof curdir[args[0]] == "string") {
|
||||||
|
curdir[args[1]] = curdir[args[0]].slice(0);
|
||||||
|
buf += "File " + args[0] + " copied to " + args[1] + "\n";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
buf += "Error: " + args[0] + " is not a file\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
buf += "Error: " + args[0] + " does not exist\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
buf += "Wrong number of arguments.\n";
|
||||||
|
}
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
exports.cp = cp;
|
||||||
|
//# sourceMappingURL=cp.js.map
|
1
commands/cp.js.map
Normal file
1
commands/cp.js.map
Normal file
@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"cp.js","sourceRoot":"","sources":["cp.ts"],"names":[],"mappings":";;;AAAA,SAAS,EAAE,CAAC,IAAkB,EAAE,MAAU;IACtC,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAG,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;QACjB,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE;YAC9B,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,EAAE;gBACpC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC3C,GAAG,IAAI,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,aAAa,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;aAC7D;iBACI;gBACD,GAAG,IAAI,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC;aACnD;SACJ;aACI;YACD,GAAG,IAAI,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC;SACpD;KACJ;SACI;QACD,GAAG,IAAI,8BAA8B,CAAC;KACzC;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AACQ,gBAAE"}
|
@ -0,0 +1,22 @@
|
|||||||
|
function cp(args:Array<string>, curdir:any):string {
|
||||||
|
var buf = "";
|
||||||
|
if(args.length == 2) {
|
||||||
|
if (curdir[args[0]] != undefined) {
|
||||||
|
if (typeof curdir[args[0]] == "string") {
|
||||||
|
curdir[args[1]] = curdir[args[0]].slice(0);
|
||||||
|
buf += "File " + args[0] + " copied to " + args[1] + "\n";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
buf += "Error: " + args[0] + " is not a file\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
buf += "Error: " + args[0] + " does not exist\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
buf += "Wrong number of arguments.\n";
|
||||||
|
}
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
export { cp };
|
11
commands/echo.js
Normal file
11
commands/echo.js
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
"use strict";
|
||||||
|
exports.__esModule = true;
|
||||||
|
exports.echo = void 0;
|
||||||
|
function echo(args) {
|
||||||
|
var buf = "";
|
||||||
|
buf += args.join(' ');
|
||||||
|
buf += "\n";
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
exports.echo = echo;
|
||||||
|
//# sourceMappingURL=echo.js.map
|
1
commands/echo.js.map
Normal file
1
commands/echo.js.map
Normal file
@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"echo.js","sourceRoot":"","sources":["echo.ts"],"names":[],"mappings":";;;AAAA,SAAS,IAAI,CAAC,IAAmB;IAC7B,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtB,GAAG,IAAI,IAAI,CAAC;IACZ,OAAO,GAAG,CAAC;AACf,CAAC;AACQ,oBAAI"}
|
@ -0,0 +1,7 @@
|
|||||||
|
function echo(args: Array<string>): string {
|
||||||
|
var buf = "";
|
||||||
|
buf += args.join(' ');
|
||||||
|
buf += "\n";
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
export { echo };
|
37
commands/exec.js
Normal file
37
commands/exec.js
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
"use strict";
|
||||||
|
exports.__esModule = true;
|
||||||
|
exports.exec = void 0;
|
||||||
|
var commands_1 = require("./commands");
|
||||||
|
function exec(args, curdir, socket, buffer, sessions, filesystem, curdirx) {
|
||||||
|
var buf = "";
|
||||||
|
if (args.length == 0) {
|
||||||
|
buf += "exec: missing operand\n";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
var file = args[0];
|
||||||
|
if (curdir[socket.id][file] == undefined) {
|
||||||
|
buf += "exec: " + file + ": No such file or directory\n";
|
||||||
|
}
|
||||||
|
else if (typeof curdir[socket.id][file] == "string") {
|
||||||
|
var commands = curdir[socket.id][file].split("\n");
|
||||||
|
for (var i = 0; i < commands.length; i++) {
|
||||||
|
var exploded = commands[i].split(" ");
|
||||||
|
var commandx = exploded[0];
|
||||||
|
var bannedcommands = ["exec", "exit"];
|
||||||
|
if (!bannedcommands.includes(commandx)) {
|
||||||
|
var argsx = exploded.slice(1);
|
||||||
|
(0, commands_1.resolveCommand)(commandx, socket, argsx, buffer, sessions, filesystem, curdir, curdirx);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
buf += "Error: " + commandx + " is a restricted command\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
buf += "exec: " + file + ": Is not a file\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
exports.exec = exec;
|
||||||
|
//# sourceMappingURL=exec.js.map
|
1
commands/exec.js.map
Normal file
1
commands/exec.js.map
Normal file
@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"exec.js","sourceRoot":"","sources":["exec.ts"],"names":[],"mappings":";;;AAAA,uCAA0C;AAE1C,SAAS,IAAI,CAAC,IAAkB,EAAE,MAAU,EAAE,MAAa,EAAE,MAA+B,EAAE,QAAY,EAAE,UAAc,EAAE,OAAqB;IAC7I,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;QAClB,GAAG,IAAI,yBAAyB,CAAC;KACpC;SACI;QACD,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACnB,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,SAAS,EAAE;YACtC,GAAG,IAAI,QAAQ,GAAG,IAAI,GAAG,+BAA+B,CAAC;SAC5D;aAEI,IAAG,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE;YAEhD,IAAI,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACtC,IAAI,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACtC,IAAI,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAC3B,IAAI,cAAc,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBACtC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;oBACpC,IAAI,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBAC9B,IAAA,yBAAc,EAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;iBAC1F;qBACG;oBACA,GAAG,IAAI,SAAS,GAAG,QAAQ,GAAG,4BAA4B,CAAC;iBAC9D;aACJ;SACJ;aACG;YACA,GAAG,IAAI,QAAQ,GAAG,IAAI,GAAG,mBAAmB,CAAC;SAChD;KACJ;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AACO,oBAAI"}
|
@ -0,0 +1,36 @@
|
|||||||
|
import {resolveCommand} from "./commands";
|
||||||
|
import {Socket} from "socket.io";
|
||||||
|
function exec(args:Array<string>, curdir:any, socket:Socket, buffer:{ [id: string]: string }, sessions:any, filesystem:any, curdirx:Array<string>):string {
|
||||||
|
var buf = "";
|
||||||
|
if (args.length == 0) {
|
||||||
|
buf += "exec: missing operand\n";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
let file = args[0];
|
||||||
|
if (curdir[socket.id][file] == undefined) {
|
||||||
|
buf += "exec: " + file + ": No such file or directory\n";
|
||||||
|
}
|
||||||
|
//check if type string
|
||||||
|
else if(typeof curdir[socket.id][file] == "string") {
|
||||||
|
//split string into array of commands
|
||||||
|
let commands = curdir[socket.id][file].split("\n");
|
||||||
|
for (let i = 0; i < commands.length; i++) {
|
||||||
|
let exploded = commands[i].split(" ");
|
||||||
|
let commandx = exploded[0];
|
||||||
|
let bannedcommands = ["exec", "exit"];
|
||||||
|
if (!bannedcommands.includes(commandx)) {
|
||||||
|
let argsx = exploded.slice(1);
|
||||||
|
resolveCommand(commandx, socket, argsx, buffer, sessions, filesystem, curdir, curdirx);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
buf += "Error: " + commandx + " is a restricted command\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
buf += "exec: " + file + ": Is not a file\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
export {exec};
|
29
commands/help.js
Normal file
29
commands/help.js
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
"use strict";
|
||||||
|
exports.__esModule = true;
|
||||||
|
exports.help = void 0;
|
||||||
|
function help() {
|
||||||
|
var buf = "";
|
||||||
|
buf += "Available commands:\n";
|
||||||
|
buf += "help - shows this help\n";
|
||||||
|
buf += "clear - clears the console\n";
|
||||||
|
buf += "ls - lists the files in the current directory\n";
|
||||||
|
buf += "cd - changes the current directory\n";
|
||||||
|
buf += "echo - prints the arguments\n";
|
||||||
|
buf += "mkdir - creates a new directory\n";
|
||||||
|
buf += "cat - prints the contents of a file\n";
|
||||||
|
buf += "touch - creates a new file\n";
|
||||||
|
buf += "rm - removes a file\n";
|
||||||
|
buf += "mv - moves a file\n";
|
||||||
|
buf += "cp - copies a file\n";
|
||||||
|
buf += "rmdir - removes a directory\n";
|
||||||
|
buf += "pwd - prints the current directory\n";
|
||||||
|
buf += "exec - executes a file\n";
|
||||||
|
buf += "spam - spams the console\n";
|
||||||
|
buf += "overwrite - overwrites the file with data\n";
|
||||||
|
buf += "append - appends the arguments to a file\n";
|
||||||
|
buf += "screenshot - takes a screenshot\n";
|
||||||
|
buf += "man - display longer help\n";
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
exports.help = help;
|
||||||
|
//# sourceMappingURL=help.js.map
|
1
commands/help.js.map
Normal file
1
commands/help.js.map
Normal file
@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"help.js","sourceRoot":"","sources":["help.ts"],"names":[],"mappings":";;;AAAA,SAAS,IAAI;IACT,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,GAAG,IAAI,uBAAuB,CAAC;IAC/B,GAAG,IAAI,0BAA0B,CAAC;IAClC,GAAG,IAAI,8BAA8B,CAAC;IACtC,GAAG,IAAI,iDAAiD,CAAC;IACzD,GAAG,IAAI,sCAAsC,CAAC;IAC9C,GAAG,IAAI,+BAA+B,CAAC;IACvC,GAAG,IAAI,mCAAmC,CAAC;IAC3C,GAAG,IAAI,uCAAuC,CAAC;IAC/C,GAAG,IAAI,8BAA8B,CAAC;IACtC,GAAG,IAAI,uBAAuB,CAAC;IAC/B,GAAG,IAAI,qBAAqB,CAAC;IAC7B,GAAG,IAAI,sBAAsB,CAAC;IAC9B,GAAG,IAAI,+BAA+B,CAAC;IACvC,GAAG,IAAI,sCAAsC,CAAC;IAC9C,GAAG,IAAI,0BAA0B,CAAC;IAClC,GAAG,IAAI,4BAA4B,CAAC;IACpC,GAAG,IAAI,6CAA6C,CAAC;IACrD,GAAG,IAAI,4CAA4C,CAAC;IACpD,GAAG,IAAI,mCAAmC,CAAC;IAC3C,GAAG,IAAI,6BAA6B,CAAC;IACrC,OAAO,GAAG,CAAC;AACf,CAAC;AACO,oBAAI"}
|
@ -0,0 +1,25 @@
|
|||||||
|
function help(): string {
|
||||||
|
var buf = "";
|
||||||
|
buf += "Available commands:\n";
|
||||||
|
buf += "help - shows this help\n";
|
||||||
|
buf += "clear - clears the console\n";
|
||||||
|
buf += "ls - lists the files in the current directory\n";
|
||||||
|
buf += "cd - changes the current directory\n";
|
||||||
|
buf += "echo - prints the arguments\n";
|
||||||
|
buf += "mkdir - creates a new directory\n";
|
||||||
|
buf += "cat - prints the contents of a file\n";
|
||||||
|
buf += "touch - creates a new file\n";
|
||||||
|
buf += "rm - removes a file\n";
|
||||||
|
buf += "mv - moves a file\n";
|
||||||
|
buf += "cp - copies a file\n";
|
||||||
|
buf += "rmdir - removes a directory\n";
|
||||||
|
buf += "pwd - prints the current directory\n";
|
||||||
|
buf += "exec - executes a file\n";
|
||||||
|
buf += "spam - spams the console\n";
|
||||||
|
buf += "overwrite - overwrites the file with data\n";
|
||||||
|
buf += "append - appends the arguments to a file\n";
|
||||||
|
buf += "screenshot - takes a screenshot\n";
|
||||||
|
buf += "man - display longer help\n";
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
export {help};
|
23
commands/loadsess.js
Normal file
23
commands/loadsess.js
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
"use strict";
|
||||||
|
exports.__esModule = true;
|
||||||
|
exports.loadsess = void 0;
|
||||||
|
var fs = require('fs');
|
||||||
|
var SerAny = require('serialize-anything');
|
||||||
|
function loadsess(args, sessions, filesystem, curdir, buffer) {
|
||||||
|
var buf = "";
|
||||||
|
if (args.length == 1) {
|
||||||
|
sessions = SerAny.deserialize(fs.readFileSync("./sessions.json"));
|
||||||
|
if (sessions[args[0]] != undefined) {
|
||||||
|
filesystem = sessions[args[0]]["filesystem"];
|
||||||
|
curdir = sessions[args[0]]["curdir"];
|
||||||
|
buffer = sessions[args[0]]["buffer"];
|
||||||
|
buf += "Session loaded.\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
buf += "Wrong number of arguments.";
|
||||||
|
}
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
exports.loadsess = loadsess;
|
||||||
|
//# sourceMappingURL=loadsess.js.map
|
1
commands/loadsess.js.map
Normal file
1
commands/loadsess.js.map
Normal file
@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"loadsess.js","sourceRoot":"","sources":["loadsess.ts"],"names":[],"mappings":";;;AAAA,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AACvB,IAAM,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAE7C,SAAS,QAAQ,CAAC,IAAkB,EAAE,QAAY,EAAE,UAAc,EAAE,MAAU,EAAE,MAAa;IACzF,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;QAClB,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAClE,IAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE;YAC/B,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;YAC7C,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YACrC,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YACrC,GAAG,IAAI,mBAAmB,CAAC;SAC9B;KACJ;SACI;QACD,GAAG,IAAI,4BAA4B,CAAC;KACvC;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AACQ,4BAAQ"}
|
20
commands/loadsess.ts
Normal file
20
commands/loadsess.ts
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
var fs = require('fs');
|
||||||
|
const SerAny = require('serialize-anything');
|
||||||
|
import { Socket } from 'socket.io';
|
||||||
|
function loadsess(args:Array<string>, sessions:any, filesystem:any, curdir:any, buffer:string ):string {
|
||||||
|
var buf = "";
|
||||||
|
if (args.length == 1) {
|
||||||
|
sessions = SerAny.deserialize(fs.readFileSync("./sessions.json"));
|
||||||
|
if(sessions[args[0]] != undefined) {
|
||||||
|
filesystem = sessions[args[0]]["filesystem"];
|
||||||
|
curdir = sessions[args[0]]["curdir"];
|
||||||
|
buffer = sessions[args[0]]["buffer"];
|
||||||
|
buf += "Session loaded.\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
buf += "Wrong number of arguments.";
|
||||||
|
}
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
export { loadsess };
|
21
commands/ls.js
Normal file
21
commands/ls.js
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
"use strict";
|
||||||
|
exports.__esModule = true;
|
||||||
|
exports.ls = void 0;
|
||||||
|
function ls(curdir) {
|
||||||
|
var buf = "";
|
||||||
|
buf += "Files in the current directory:\n";
|
||||||
|
for (var key in curdir) {
|
||||||
|
if (typeof curdir[key] == "string") {
|
||||||
|
buf += key + " (file)\n";
|
||||||
|
}
|
||||||
|
else if (typeof curdir[key] == "object") {
|
||||||
|
buf += key + " (directory)\n";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
buf += key + " (unknown)\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
exports.ls = ls;
|
||||||
|
//# sourceMappingURL=ls.js.map
|
1
commands/ls.js.map
Normal file
1
commands/ls.js.map
Normal file
@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"ls.js","sourceRoot":"","sources":["ls.ts"],"names":[],"mappings":";;;AAAA,SAAS,EAAE,CAAC,MAAU;IAClB,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,GAAG,IAAI,mCAAmC,CAAC;IAE3C,KAAK,IAAI,GAAG,IAAI,MAAM,EAAE;QAGpB,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,QAAQ,EAAE;YAChC,GAAG,IAAI,GAAG,GAAG,WAAW,CAAC;SAC5B;aACI,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,QAAQ,EAAE;YACrC,GAAG,IAAI,GAAG,GAAG,gBAAgB,CAAC;SACjC;aACI;YACD,GAAG,IAAI,GAAG,GAAG,cAAc,CAAC;SAC/B;KACJ;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AACQ,gBAAE"}
|
@ -0,0 +1,20 @@
|
|||||||
|
function ls(curdir:any):string {
|
||||||
|
var buf = "";
|
||||||
|
buf += "Files in the current directory:\n";
|
||||||
|
//list only first level files
|
||||||
|
for (var key in curdir) {
|
||||||
|
//buf += key + "\n";
|
||||||
|
//also print if it is a directory or file
|
||||||
|
if (typeof curdir[key] == "string") {
|
||||||
|
buf += key + " (file)\n";
|
||||||
|
}
|
||||||
|
else if (typeof curdir[key] == "object") {
|
||||||
|
buf += key + " (directory)\n";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
buf += key + " (unknown)\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
export { ls };
|
73
commands/man.js
Normal file
73
commands/man.js
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
"use strict";
|
||||||
|
exports.__esModule = true;
|
||||||
|
exports.man = void 0;
|
||||||
|
function man(args) {
|
||||||
|
var buf = "";
|
||||||
|
if (args.length == 0) {
|
||||||
|
buf += "Missing arguments";
|
||||||
|
}
|
||||||
|
switch (args[0]) {
|
||||||
|
case "help":
|
||||||
|
buf += "\'help\' Prints the list of available commands\n";
|
||||||
|
break;
|
||||||
|
case "clear":
|
||||||
|
buf += "\'clear\' Clears the console\n";
|
||||||
|
break;
|
||||||
|
case "ls":
|
||||||
|
buf += "\'ls\' Lists the files in the current directory, also displays if file or directory\n";
|
||||||
|
break;
|
||||||
|
case "cd":
|
||||||
|
buf += "\'cd (dirname/..)\' Changes the current directory\n";
|
||||||
|
break;
|
||||||
|
case "echo":
|
||||||
|
buf += "\'echo (arg1) (arg2) .....\' Prints the arguments to the console\n";
|
||||||
|
break;
|
||||||
|
case "mkdir":
|
||||||
|
buf += "\'mkdir (dirname)\' Creates a new directory in the current directory\n";
|
||||||
|
break;
|
||||||
|
case "cat":
|
||||||
|
buf += "\'cat (filename)\' Prints the contents of a file out to the console\n";
|
||||||
|
break;
|
||||||
|
case "touch":
|
||||||
|
buf += "\'touch (filename)\' Creates a new file in the current directory\n";
|
||||||
|
break;
|
||||||
|
case "rm":
|
||||||
|
buf += "\'rm (filename)\' Removes a file from the current directory\n";
|
||||||
|
break;
|
||||||
|
case "mv":
|
||||||
|
buf += "\'mv (filename from) (filename to)\' Moves a file from one directory to another\n";
|
||||||
|
break;
|
||||||
|
case "cp":
|
||||||
|
buf += "\'cp (filename from) (filename to)\' Copies a file from one directory to another\n";
|
||||||
|
break;
|
||||||
|
case "rmdir":
|
||||||
|
buf += "\'rmdir (dirname)\' Removes a directory from the current directory\n";
|
||||||
|
break;
|
||||||
|
case "pwd":
|
||||||
|
buf += "\'pwd\' Prints the current directory out to the console\n";
|
||||||
|
break;
|
||||||
|
case "exec":
|
||||||
|
buf += "\'exec (filename)\' Executes a file in the console, you can \'t use \"exit\" and \"exec\" commands\n";
|
||||||
|
break;
|
||||||
|
case "spam":
|
||||||
|
buf += "\'spam (number) (arg1) (arg2) .......\' Spams the console with a message from arguments\n";
|
||||||
|
break;
|
||||||
|
case "overwrite":
|
||||||
|
buf += "\'overwrite (filename) (arg1) (arg2) .......\' Overwrites a file with from arguments\n";
|
||||||
|
break;
|
||||||
|
case "append":
|
||||||
|
buf += "\'append (filename) (arg1) (arg2) .......\' Appends the arguments to a file\n";
|
||||||
|
break;
|
||||||
|
case "screenshot":
|
||||||
|
buf += "\'screenshot (filename)\' Takes a screenshot of the console and saves it to a file\n";
|
||||||
|
break;
|
||||||
|
case "man":
|
||||||
|
buf += "\'screenshot (command)\' This manual databank\n";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
buf += "No such command\n";
|
||||||
|
}
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
exports.man = man;
|
||||||
|
//# sourceMappingURL=man.js.map
|
1
commands/man.js.map
Normal file
1
commands/man.js.map
Normal file
@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"man.js","sourceRoot":"","sources":["man.ts"],"names":[],"mappings":";;;AAAA,SAAS,GAAG,CAAC,IAAmB;IAC5B,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAG,IAAI,CAAC,MAAM,IAAI,CAAC,EAAC;QAChB,GAAG,IAAI,mBAAmB,CAAA;KAC7B;IACD,QAAQ,IAAI,CAAC,CAAC,CAAC,EAAC;QACZ,KAAK,MAAM;YACP,GAAG,IAAI,kDAAkD,CAAC;YAC1D,MAAM;QACV,KAAK,OAAO;YACR,GAAG,IAAI,gCAAgC,CAAC;YACxC,MAAM;QACV,KAAK,IAAI;YACL,GAAG,IAAI,uFAAuF,CAAC;YAC/F,MAAM;QACV,KAAK,IAAI;YACL,GAAG,IAAI,qDAAqD,CAAC;YAC7D,MAAM;QACV,KAAK,MAAM;YACP,GAAG,IAAI,oEAAoE,CAAC;YAC5E,MAAM;QACV,KAAK,OAAO;YACR,GAAG,IAAI,wEAAwE,CAAC;YAChF,MAAM;QACV,KAAK,KAAK;YACN,GAAG,IAAI,uEAAuE,CAAC;YAC/E,MAAM;QACV,KAAK,OAAO;YACR,GAAG,IAAI,oEAAoE,CAAC;YAC5E,MAAM;QACV,KAAK,IAAI;YACL,GAAG,IAAI,+DAA+D,CAAC;YACvE,MAAM;QACV,KAAK,IAAI;YACL,GAAG,IAAI,mFAAmF,CAAC;YAC3F,MAAM;QACV,KAAK,IAAI;YACL,GAAG,IAAI,oFAAoF,CAAC;YAC5F,MAAM;QACV,KAAK,OAAO;YACR,GAAG,IAAI,sEAAsE,CAAC;YAC9E,MAAM;QACV,KAAK,KAAK;YACN,GAAG,IAAI,2DAA2D,CAAC;YACnE,MAAM;QACV,KAAK,MAAM;YACP,GAAG,IAAI,sGAAsG,CAAC;YAC9G,MAAM;QACV,KAAK,MAAM;YACP,GAAG,IAAI,2FAA2F,CAAC;YACnG,MAAM;QACV,KAAK,WAAW;YACZ,GAAG,IAAI,wFAAwF,CAAC;YAChG,MAAM;QACV,KAAK,QAAQ;YACT,GAAG,IAAI,+EAA+E,CAAC;YACvF,MAAM;QACV,KAAK,YAAY;YACb,GAAG,IAAI,sFAAsF,CAAC;YAC9F,MAAM;QACV,KAAK,KAAK;YACN,GAAG,IAAI,iDAAiD,CAAA;YACxD,MAAK;QACT;YACI,GAAG,IAAI,mBAAmB,CAAA;KACjC;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AACO,kBAAG"}
|
@ -0,0 +1,69 @@
|
|||||||
|
function man(args: Array<string>):string{
|
||||||
|
var buf = "";
|
||||||
|
if(args.length == 0){
|
||||||
|
buf += "Missing arguments"
|
||||||
|
}
|
||||||
|
switch (args[0]){
|
||||||
|
case "help":
|
||||||
|
buf += "\'help\' Prints the list of available commands\n";
|
||||||
|
break;
|
||||||
|
case "clear":
|
||||||
|
buf += "\'clear\' Clears the console\n";
|
||||||
|
break;
|
||||||
|
case "ls":
|
||||||
|
buf += "\'ls\' Lists the files in the current directory, also displays if file or directory\n";
|
||||||
|
break;
|
||||||
|
case "cd":
|
||||||
|
buf += "\'cd (dirname/..)\' Changes the current directory\n";
|
||||||
|
break;
|
||||||
|
case "echo":
|
||||||
|
buf += "\'echo (arg1) (arg2) .....\' Prints the arguments to the console\n";
|
||||||
|
break;
|
||||||
|
case "mkdir":
|
||||||
|
buf += "\'mkdir (dirname)\' Creates a new directory in the current directory\n";
|
||||||
|
break;
|
||||||
|
case "cat":
|
||||||
|
buf += "\'cat (filename)\' Prints the contents of a file out to the console\n";
|
||||||
|
break;
|
||||||
|
case "touch":
|
||||||
|
buf += "\'touch (filename)\' Creates a new file in the current directory\n";
|
||||||
|
break;
|
||||||
|
case "rm":
|
||||||
|
buf += "\'rm (filename)\' Removes a file from the current directory\n";
|
||||||
|
break;
|
||||||
|
case "mv":
|
||||||
|
buf += "\'mv (filename from) (filename to)\' Moves a file from one directory to another\n";
|
||||||
|
break;
|
||||||
|
case "cp":
|
||||||
|
buf += "\'cp (filename from) (filename to)\' Copies a file from one directory to another\n";
|
||||||
|
break;
|
||||||
|
case "rmdir":
|
||||||
|
buf += "\'rmdir (dirname)\' Removes a directory from the current directory\n";
|
||||||
|
break;
|
||||||
|
case "pwd":
|
||||||
|
buf += "\'pwd\' Prints the current directory out to the console\n";
|
||||||
|
break;
|
||||||
|
case "exec":
|
||||||
|
buf += "\'exec (filename)\' Executes a file in the console, you can \'t use \"exit\" and \"exec\" commands\n";
|
||||||
|
break;
|
||||||
|
case "spam":
|
||||||
|
buf += "\'spam (number) (arg1) (arg2) .......\' Spams the console with a message from arguments\n";
|
||||||
|
break;
|
||||||
|
case "overwrite":
|
||||||
|
buf += "\'overwrite (filename) (arg1) (arg2) .......\' Overwrites a file with from arguments\n";
|
||||||
|
break;
|
||||||
|
case "append":
|
||||||
|
buf += "\'append (filename) (arg1) (arg2) .......\' Appends the arguments to a file\n";
|
||||||
|
break;
|
||||||
|
case "screenshot":
|
||||||
|
buf += "\'screenshot (filename)\' Takes a screenshot of the console and saves it to a file\n";
|
||||||
|
break;
|
||||||
|
case "man":
|
||||||
|
buf += "\'screenshot (command)\' This manual databank\n"
|
||||||
|
break
|
||||||
|
default:
|
||||||
|
buf += "No such command\n"
|
||||||
|
}
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
export {man};
|
21
commands/mkdir.js
Normal file
21
commands/mkdir.js
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
"use strict";
|
||||||
|
exports.__esModule = true;
|
||||||
|
exports.mkdir = void 0;
|
||||||
|
function mkdir(args, curdir) {
|
||||||
|
var buf = "";
|
||||||
|
if (args.length == 0) {
|
||||||
|
buf += "Please specify a directory.\n";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (curdir[args[0]]) {
|
||||||
|
buf += "Directory " + args[0] + " already exists.\n";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
curdir[args[0]] = {};
|
||||||
|
buf += "Created directory " + args[0] + "\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
exports.mkdir = mkdir;
|
||||||
|
//# sourceMappingURL=mkdir.js.map
|
1
commands/mkdir.js.map
Normal file
1
commands/mkdir.js.map
Normal file
@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"mkdir.js","sourceRoot":"","sources":["mkdir.ts"],"names":[],"mappings":";;;AAAA,SAAS,KAAK,CAAC,IAAkB,EAAE,MAAU;IACzC,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;QAClB,GAAG,IAAI,+BAA+B,CAAC;KAE1C;SACI;QACD,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;YACjB,GAAG,IAAI,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,oBAAoB,CAAC;SAExD;aACI;YACD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;YACrB,GAAG,IAAI,oBAAoB,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;SAEhD;KACJ;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AACQ,sBAAK"}
|
@ -0,0 +1,20 @@
|
|||||||
|
function mkdir(args:Array<string>, curdir:any):string {
|
||||||
|
var buf = "";
|
||||||
|
if (args.length == 0) {
|
||||||
|
buf += "Please specify a directory.\n";
|
||||||
|
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (curdir[args[0]]) {
|
||||||
|
buf += "Directory " + args[0] + " already exists.\n";
|
||||||
|
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
curdir[args[0]] = {};
|
||||||
|
buf += "Created directory " + args[0] + "\n";
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
export { mkdir };
|
27
commands/mv.js
Normal file
27
commands/mv.js
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
"use strict";
|
||||||
|
exports.__esModule = true;
|
||||||
|
exports.mv = void 0;
|
||||||
|
function mv(args, curdir) {
|
||||||
|
var buf = "";
|
||||||
|
if (args.length == 2) {
|
||||||
|
if (curdir[args[0]] != undefined) {
|
||||||
|
if (typeof curdir[args[0]] == "string") {
|
||||||
|
curdir[args[1]] = curdir[args[0]];
|
||||||
|
delete curdir[args[0]];
|
||||||
|
buf += "File " + args[0] + " moved to " + args[1] + "\n";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
buf += "Error: " + args[0] + " is not a file\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
buf += "Error: " + args[0] + " does not exist\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
buf += "Wrong number of arguments.\n";
|
||||||
|
}
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
exports.mv = mv;
|
||||||
|
//# sourceMappingURL=mv.js.map
|
1
commands/mv.js.map
Normal file
1
commands/mv.js.map
Normal file
@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"mv.js","sourceRoot":"","sources":["mv.ts"],"names":[],"mappings":";;;AAAA,SAAS,EAAE,CAAC,IAAkB,EAAE,MAAU;IACtC,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;QAClB,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE;YAC9B,IAAI,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,EAAE;gBACpC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBAClC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvB,GAAG,IAAI,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;aAC5D;iBACI;gBACD,GAAG,IAAI,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC;aACnD;SACJ;aACI;YACD,GAAG,IAAI,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC;SACpD;KACJ;SACI;QACD,GAAG,IAAI,8BAA8B,CAAC;KACzC;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AACQ,gBAAE"}
|
@ -0,0 +1,23 @@
|
|||||||
|
function mv(args:Array<string>, curdir:any){
|
||||||
|
var buf = "";
|
||||||
|
if (args.length == 2) {
|
||||||
|
if (curdir[args[0]] != undefined) {
|
||||||
|
if (typeof curdir[args[0]] == "string") {
|
||||||
|
curdir[args[1]] = curdir[args[0]];
|
||||||
|
delete curdir[args[0]];
|
||||||
|
buf += "File " + args[0] + " moved to " + args[1] + "\n";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
buf += "Error: " + args[0] + " is not a file\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
buf += "Error: " + args[0] + " does not exist\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
buf += "Wrong number of arguments.\n";
|
||||||
|
}
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
export { mv };
|
19
commands/overwrite.js
Normal file
19
commands/overwrite.js
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
"use strict";
|
||||||
|
exports.__esModule = true;
|
||||||
|
exports.overwrite = void 0;
|
||||||
|
function overwrite(args, curdir) {
|
||||||
|
var buf = "";
|
||||||
|
if (args.length == 0) {
|
||||||
|
buf += "overwrite: missing operand\n";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
curdir[args[0]] = "";
|
||||||
|
for (var i = 1; i < args.length; i++) {
|
||||||
|
curdir[args[0]] += args[i] + " ";
|
||||||
|
}
|
||||||
|
buf += "File " + args[0] + " overwritten\n";
|
||||||
|
}
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
exports.overwrite = overwrite;
|
||||||
|
//# sourceMappingURL=overwrite.js.map
|
1
commands/overwrite.js.map
Normal file
1
commands/overwrite.js.map
Normal file
@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"overwrite.js","sourceRoot":"","sources":["overwrite.ts"],"names":[],"mappings":";;;AAAA,SAAS,SAAS,CAAC,IAAkB,EAAE,MAAU;IAC7C,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;QAClB,GAAG,IAAI,8BAA8B,CAAC;KACzC;SACI;QACD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAClC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;SACpC;QACD,GAAG,IAAI,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC;KAC/C;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AACQ,8BAAS"}
|
@ -0,0 +1,15 @@
|
|||||||
|
function overwrite(args:Array<string>, curdir:any){
|
||||||
|
var buf = "";
|
||||||
|
if (args.length == 0) {
|
||||||
|
buf += "overwrite: missing operand\n";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
curdir[args[0]] = "";
|
||||||
|
for (let i = 1; i < args.length; i++) {
|
||||||
|
curdir[args[0]] += args[i] + " ";
|
||||||
|
}
|
||||||
|
buf += "File " + args[0] + " overwritten\n";
|
||||||
|
}
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
export { overwrite };
|
11
commands/pwd.js
Normal file
11
commands/pwd.js
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
"use strict";
|
||||||
|
exports.__esModule = true;
|
||||||
|
exports.pwd = void 0;
|
||||||
|
function pwd(curdirx) {
|
||||||
|
var buf = "";
|
||||||
|
var curdirasstring = curdirx.join("/");
|
||||||
|
buf += "Current directory: " + curdirasstring + "\n";
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
exports.pwd = pwd;
|
||||||
|
//# sourceMappingURL=pwd.js.map
|
1
commands/pwd.js.map
Normal file
1
commands/pwd.js.map
Normal file
@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"pwd.js","sourceRoot":"","sources":["pwd.ts"],"names":[],"mappings":";;;AAAA,SAAS,GAAG,CAAC,OAAqB;IAC9B,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvC,GAAG,IAAI,qBAAqB,GAAG,cAAc,GAAG,IAAI,CAAC;IACrD,OAAO,GAAG,CAAC;AACf,CAAC;AACQ,kBAAG"}
|
@ -0,0 +1,7 @@
|
|||||||
|
function pwd(curdirx:Array<string>):string {
|
||||||
|
var buf = "";
|
||||||
|
var curdirasstring = curdirx.join("/");
|
||||||
|
buf += "Current directory: " + curdirasstring + "\n";
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
export { pwd };
|
21
commands/rm.js
Normal file
21
commands/rm.js
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
"use strict";
|
||||||
|
exports.__esModule = true;
|
||||||
|
exports.rm = void 0;
|
||||||
|
function rm(args, curdir, socket) {
|
||||||
|
var buf = "";
|
||||||
|
if (curdir[socket.id][args[0]] != undefined) {
|
||||||
|
if (typeof curdir[socket.id][args[0]] == "string") {
|
||||||
|
delete curdir[socket.id][args[0]];
|
||||||
|
buf += "File " + args[0] + " removed\n";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
buf += "Error: " + args[0] + " is not a file\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
buf += "Error: " + args[0] + " does not exist\n";
|
||||||
|
}
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
exports.rm = rm;
|
||||||
|
//# sourceMappingURL=rm.js.map
|
1
commands/rm.js.map
Normal file
1
commands/rm.js.map
Normal file
@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"rm.js","sourceRoot":"","sources":["rm.ts"],"names":[],"mappings":";;;AACA,SAAS,EAAE,CAAC,IAAkB,EAAE,MAAU,EAAE,MAAa;IACrD,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE;QACzC,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,EAAE;YAC/C,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAClC,GAAG,IAAI,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC;SAC3C;aACI;YACD,GAAG,IAAI,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC;SACnD;KACJ;SACI;QACD,GAAG,IAAI,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC;KACpD;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AACQ,gBAAE"}
|
@ -0,0 +1,18 @@
|
|||||||
|
import { Socket } from "socket.io";
|
||||||
|
function rm(args:Array<string>, curdir:any, socket:Socket):string {
|
||||||
|
var buf = "";
|
||||||
|
if (curdir[socket.id][args[0]] != undefined) {
|
||||||
|
if (typeof curdir[socket.id][args[0]] == "string") {
|
||||||
|
delete curdir[socket.id][args[0]];
|
||||||
|
buf += "File " + args[0] + " removed\n";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
buf += "Error: " + args[0] + " is not a file\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
buf += "Error: " + args[0] + " does not exist\n";
|
||||||
|
}
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
export { rm };
|
21
commands/rmdir.js
Normal file
21
commands/rmdir.js
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
"use strict";
|
||||||
|
exports.__esModule = true;
|
||||||
|
exports.rmdir = void 0;
|
||||||
|
function rmdir(args, curdir, socket) {
|
||||||
|
var buf = "";
|
||||||
|
if (curdir[socket.id][args[0]] != undefined) {
|
||||||
|
if (typeof curdir[socket.id][args[0]] == "object") {
|
||||||
|
delete curdir[socket.id][args[0]];
|
||||||
|
buf += "Directory " + args[0] + " removed\n";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
buf += "Error: " + args[0] + " is not a directory\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
buf += "Error: " + args[0] + " does not exist\n";
|
||||||
|
}
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
exports.rmdir = rmdir;
|
||||||
|
//# sourceMappingURL=rmdir.js.map
|
1
commands/rmdir.js.map
Normal file
1
commands/rmdir.js.map
Normal file
@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"rmdir.js","sourceRoot":"","sources":["rmdir.ts"],"names":[],"mappings":";;;AACA,SAAS,KAAK,CAAC,IAAkB,EAAE,MAAU,EAAE,MAAa;IACxD,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE;QACzC,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,EAAE;YAC/C,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAClC,GAAG,IAAI,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC;SAChD;aACI;YACD,GAAG,IAAI,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,uBAAuB,CAAC;SACxD;KACJ;SACI;QACD,GAAG,IAAI,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC;KACpD;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AACQ,sBAAK"}
|
@ -0,0 +1,18 @@
|
|||||||
|
import {Socket} from "socket.io";
|
||||||
|
function rmdir(args:Array<string>, curdir:any, socket:Socket):string {
|
||||||
|
var buf = "";
|
||||||
|
if (curdir[socket.id][args[0]] != undefined) {
|
||||||
|
if (typeof curdir[socket.id][args[0]] == "object") {
|
||||||
|
delete curdir[socket.id][args[0]];
|
||||||
|
buf += "Directory " + args[0] + " removed\n";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
buf += "Error: " + args[0] + " is not a directory\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
buf += "Error: " + args[0] + " does not exist\n";
|
||||||
|
}
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
export { rmdir };
|
29
commands/savesess.js
Normal file
29
commands/savesess.js
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
"use strict";
|
||||||
|
exports.__esModule = true;
|
||||||
|
exports.savesess = void 0;
|
||||||
|
var fs = require('fs');
|
||||||
|
var SerAny = require('serialize-anything');
|
||||||
|
function savesess(args, sessions, filesystem, curdir, buffer, socket) {
|
||||||
|
var buf = "";
|
||||||
|
var pwd = process.env.PWD || "kryptic";
|
||||||
|
if (args.length == 2) {
|
||||||
|
if (args[0] == pwd) {
|
||||||
|
sessions[args[1]] = [];
|
||||||
|
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);
|
||||||
|
fs.writeFileSync("./sessions.json", data);
|
||||||
|
buf += "Session saved.\n";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
buf += "Wrong password.";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
buf += "Wrong number of arguments.";
|
||||||
|
}
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
exports.savesess = savesess;
|
||||||
|
//# sourceMappingURL=savesess.js.map
|
1
commands/savesess.js.map
Normal file
1
commands/savesess.js.map
Normal file
@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"savesess.js","sourceRoot":"","sources":["savesess.ts"],"names":[],"mappings":";;;AAAA,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AACvB,IAAM,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAE7C,SAAS,QAAQ,CAAC,IAAkB,EAAE,QAAY,EAAE,UAAc,EAAE,MAAU,EAAE,MAA+B,EAAE,MAAa;IAC1H,IAAI,GAAG,GAAG,EAAE,CAAC;IAEb,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,SAAS,CAAC;IACvC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;QAClB,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE;YAChB,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;YAGvB,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,YAAY,CAAC,CAAC;YAC5F,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACpF,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC5E,IAAI,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAEtC,EAAE,CAAC,aAAa,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;YAE1C,GAAG,IAAI,kBAAkB,CAAC;SAC7B;aACI;YACD,GAAG,IAAI,iBAAiB,CAAC;SAC5B;KACJ;SACI;QACD,GAAG,IAAI,4BAA4B,CAAC;KACvC;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AACQ,4BAAQ"}
|
31
commands/savesess.ts
Normal file
31
commands/savesess.ts
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
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 };
|
11
commands/screenshot.js
Normal file
11
commands/screenshot.js
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
"use strict";
|
||||||
|
exports.__esModule = true;
|
||||||
|
exports.screenshot = void 0;
|
||||||
|
function screenshot(args, curdir, buffer, socket) {
|
||||||
|
var buf = "";
|
||||||
|
curdir[socket.id][args[0]] = buffer[socket.id];
|
||||||
|
buf += "Screenshot saved to " + args[0] + "\n";
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
exports.screenshot = screenshot;
|
||||||
|
//# sourceMappingURL=screenshot.js.map
|
1
commands/screenshot.js.map
Normal file
1
commands/screenshot.js.map
Normal file
@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"screenshot.js","sourceRoot":"","sources":["screenshot.ts"],"names":[],"mappings":";;;AACA,SAAS,UAAU,CAAC,IAAkB,EAAE,MAAU,EAAE,MAA+B,EAAE,MAAa;IAC9F,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC/C,GAAG,IAAI,sBAAsB,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAC/C,OAAO,GAAG,CAAC;AACf,CAAC;AACQ,gCAAU"}
|
@ -0,0 +1,8 @@
|
|||||||
|
import {Socket} from 'socket.io';
|
||||||
|
function screenshot(args:Array<string>, curdir:any, buffer:{ [id: string]: string }, socket:Socket):string {
|
||||||
|
var buf = "";
|
||||||
|
curdir[socket.id][args[0]] = buffer[socket.id];
|
||||||
|
buf += "Screenshot saved to " + args[0] + "\n";
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
export { screenshot };
|
24
commands/spam.js
Normal file
24
commands/spam.js
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
"use strict";
|
||||||
|
exports.__esModule = true;
|
||||||
|
exports.spam = void 0;
|
||||||
|
function spam(args) {
|
||||||
|
var buf = "";
|
||||||
|
var numtimes = parseInt(args[0]);
|
||||||
|
if (isNaN(numtimes)) {
|
||||||
|
buf += "Error: " + args[0] + " is not a number\n";
|
||||||
|
}
|
||||||
|
else if (numtimes < 0) {
|
||||||
|
buf += "Error: " + args[0] + " is negative\n";
|
||||||
|
}
|
||||||
|
else if (numtimes > 100) {
|
||||||
|
buf += "Error: " + args[0] + " is too large\n";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
for (var i = 0; i < numtimes; i++) {
|
||||||
|
buf += args.slice(1).join(" ") + "\n";
|
||||||
|
}
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exports.spam = spam;
|
||||||
|
//# sourceMappingURL=spam.js.map
|
1
commands/spam.js.map
Normal file
1
commands/spam.js.map
Normal file
@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"spam.js","sourceRoot":"","sources":["spam.ts"],"names":[],"mappings":";;;AAAA,SAAS,IAAI,CAAC,IAAkB;IAC5B,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,IAAG,KAAK,CAAC,QAAQ,CAAC,EAAE;QAChB,GAAG,IAAI,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,oBAAoB,CAAC;KACrD;SACI,IAAI,QAAQ,GAAG,CAAC,EAAE;QACnB,GAAG,IAAI,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC;KACjD;SACI,IAAK,QAAQ,GAAG,GAAG,EAAE;QACtB,GAAG,IAAI,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC;KAClD;SACI;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;YAC/B,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;SACzC;QACD,OAAO,GAAG,CAAC;KACd;AACL,CAAC;AACQ,oBAAI"}
|
@ -0,0 +1,21 @@
|
|||||||
|
function spam(args:Array<string>):string {
|
||||||
|
var buf = "";
|
||||||
|
var numtimes = parseInt(args[0]);
|
||||||
|
if(isNaN(numtimes)) {
|
||||||
|
buf += "Error: " + args[0] + " is not a number\n";
|
||||||
|
}
|
||||||
|
else if (numtimes < 0) {
|
||||||
|
buf += "Error: " + args[0] + " is negative\n";
|
||||||
|
}
|
||||||
|
else if (numtimes > 100) {
|
||||||
|
buf += "Error: " + args[0] + " is too large\n";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
//spam arguments times from first argument
|
||||||
|
for (let i = 0; i < numtimes; i++) {
|
||||||
|
buf += args.slice(1).join(" ") + "\n";
|
||||||
|
}
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
export { spam };
|
16
commands/touch.js
Normal file
16
commands/touch.js
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
"use strict";
|
||||||
|
exports.__esModule = true;
|
||||||
|
exports.touch = void 0;
|
||||||
|
function touch(args, curdir, socket) {
|
||||||
|
var buf = "";
|
||||||
|
if (args.length == 0) {
|
||||||
|
buf += "touch: missing operand\n";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
curdir[socket.id][args[0]] = "";
|
||||||
|
buf += "File " + args[0] + " created\n";
|
||||||
|
}
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
exports.touch = touch;
|
||||||
|
//# sourceMappingURL=touch.js.map
|
1
commands/touch.js.map
Normal file
1
commands/touch.js.map
Normal file
@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"touch.js","sourceRoot":"","sources":["touch.ts"],"names":[],"mappings":";;;AACA,SAAS,KAAK,CAAC,IAAkB,EAAE,MAAU,EAAE,MAAa;IACxD,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;QAClB,GAAG,IAAI,0BAA0B,CAAC;KACrC;SACI;QACD,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QAChC,GAAG,IAAI,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC;KAC3C;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AACQ,sBAAK"}
|
@ -0,0 +1,13 @@
|
|||||||
|
import {Socket} from 'socket.io';
|
||||||
|
function touch(args:Array<string>, curdir:any, socket:Socket):string {
|
||||||
|
var buf = "";
|
||||||
|
if (args.length == 0) {
|
||||||
|
buf += "touch: missing operand\n";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
curdir[socket.id][args[0]] = "";
|
||||||
|
buf += "File " + args[0] + " created\n";
|
||||||
|
}
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
export { touch };
|
10
commands/wee.js
Normal file
10
commands/wee.js
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
"use strict";
|
||||||
|
exports.__esModule = true;
|
||||||
|
exports.wee = void 0;
|
||||||
|
function wee() {
|
||||||
|
var buf = "";
|
||||||
|
buf += "Woo!\n";
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
exports.wee = wee;
|
||||||
|
//# sourceMappingURL=wee.js.map
|
1
commands/wee.js.map
Normal file
1
commands/wee.js.map
Normal file
@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"wee.js","sourceRoot":"","sources":["wee.ts"],"names":[],"mappings":";;;AAAA,SAAS,GAAG;IACR,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,GAAG,IAAI,QAAQ,CAAC;IAChB,OAAO,GAAG,CAAC;AACf,CAAC;AACQ,kBAAG"}
|
6
commands/wee.ts
Normal file
6
commands/wee.ts
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
function wee(): string {
|
||||||
|
var buf = "";
|
||||||
|
buf += "Woo!\n";
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
export { wee };
|
10
commands/woo.js
Normal file
10
commands/woo.js
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
"use strict";
|
||||||
|
exports.__esModule = true;
|
||||||
|
exports.woo = void 0;
|
||||||
|
function woo() {
|
||||||
|
var buf = "";
|
||||||
|
buf += "Wee!\n";
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
exports.woo = woo;
|
||||||
|
//# sourceMappingURL=woo.js.map
|
1
commands/woo.js.map
Normal file
1
commands/woo.js.map
Normal file
@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"woo.js","sourceRoot":"","sources":["woo.ts"],"names":[],"mappings":";;;AAAA,SAAS,GAAG;IACR,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,GAAG,IAAI,QAAQ,CAAC;IAChB,OAAO,GAAG,CAAC;AACf,CAAC;AACQ,kBAAG"}
|
6
commands/woo.ts
Normal file
6
commands/woo.ts
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
function woo(): string {
|
||||||
|
var buf = "";
|
||||||
|
buf += "Wee!\n";
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
export { woo };
|
116
index.html
116
index.html
File diff suppressed because one or more lines are too long
11
index.js
11
index.js
@ -9,7 +9,16 @@ var Server = require("socket.io").Server;
|
|||||||
var io = new Server(server);
|
var io = new Server(server);
|
||||||
var commands_1 = require("./commands/commands");
|
var commands_1 = require("./commands/commands");
|
||||||
app.get('/', function (req, res) {
|
app.get('/', function (req, res) {
|
||||||
res.sendFile(__dirname + '/index.html');
|
res.sendFile(__dirname + '/website/index.html');
|
||||||
|
});
|
||||||
|
app.get("/script.js", function (req, res) {
|
||||||
|
res.sendFile(__dirname + '/website/script.js');
|
||||||
|
});
|
||||||
|
app.get("/style.css", function (req, res) {
|
||||||
|
res.sendFile(__dirname + '/website/style.css');
|
||||||
|
});
|
||||||
|
app.get("/jquery.js", function (req, res) {
|
||||||
|
res.sendFile(__dirname + '/website/jquery.js');
|
||||||
});
|
});
|
||||||
var buffer = {};
|
var buffer = {};
|
||||||
var filesystem = {};
|
var filesystem = {};
|
||||||
|
@ -1 +1 @@
|
|||||||
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"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"}
|
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"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"}
|
17
index.ts
17
index.ts
@ -12,8 +12,21 @@ const io = new Server(server);
|
|||||||
import { resolveCommand } from './commands/commands';
|
import { resolveCommand } from './commands/commands';
|
||||||
|
|
||||||
app.get('/', (req:Request, res:Response) => {
|
app.get('/', (req:Request, res:Response) => {
|
||||||
res.sendFile(__dirname + '/index.html');
|
res.sendFile(__dirname + '/website/index.html');
|
||||||
});
|
}
|
||||||
|
);
|
||||||
|
app.get("/script.js", (req:Request, res:Response) => {
|
||||||
|
res.sendFile(__dirname + '/website/script.js');
|
||||||
|
}
|
||||||
|
);
|
||||||
|
app.get("/style.css", (req:Request, res:Response) => {
|
||||||
|
res.sendFile(__dirname + '/website/style.css');
|
||||||
|
}
|
||||||
|
);
|
||||||
|
app.get("/jquery.js", (req:Request, res:Response) => {
|
||||||
|
res.sendFile(__dirname + '/website/jquery.js');
|
||||||
|
}
|
||||||
|
);
|
||||||
//initialize buffer
|
//initialize buffer
|
||||||
//var buffer = [];
|
//var buffer = [];
|
||||||
//add type for typescript
|
//add type for typescript
|
||||||
|
15
website/index.html
Normal file
15
website/index.html
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<script src="/socket.io/socket.io.js"></script>
|
||||||
|
<link rel="stylesheet" href="style.css">
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<script src="jquery.js"></script>
|
||||||
|
<script src="script.js" ></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="consolecont">
|
||||||
|
<textarea id="console" readonly></textarea>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
2
website/jquery.js
vendored
Normal file
2
website/jquery.js
vendored
Normal file
File diff suppressed because one or more lines are too long
75
website/script.js
Normal file
75
website/script.js
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
function addareacontent(content){
|
||||||
|
//this appends to the bottom of the console and scrolls to the bottom make sure we start typing at the bottom
|
||||||
|
var console = document.getElementById("console");
|
||||||
|
console.innerHTML = content;
|
||||||
|
console.scrollTop = console.scrollHeight;
|
||||||
|
}
|
||||||
|
function resizeit(){
|
||||||
|
$('#consolecont').css('height', $(window).height() - 10);
|
||||||
|
let height = ($(window).height() - $('#console').offset().top)*0.96;
|
||||||
|
$('#console').css('height', height);
|
||||||
|
$('#rows').val($(window).height() - $('#console').offset().top - 10);
|
||||||
|
}
|
||||||
|
$(document).ready(function(){
|
||||||
|
//fit console to screen
|
||||||
|
//$('#console').css('height', $(window).height() - $('#console').offset().top - 10);
|
||||||
|
//account for the input box
|
||||||
|
let host = 'ws://127.0.0.1:8480';
|
||||||
|
socket = io.connect(host);
|
||||||
|
resizeit();
|
||||||
|
//resize it on window resize
|
||||||
|
$(window).resize(function(){
|
||||||
|
resizeit();
|
||||||
|
});
|
||||||
|
//on key press on any part of html page
|
||||||
|
$("#console").keyup(function(e){
|
||||||
|
//if enter key is pressed
|
||||||
|
//get the input
|
||||||
|
e.preventDefault();
|
||||||
|
//resolve e.code to char
|
||||||
|
let key = e.which;
|
||||||
|
//send to server via socket if connected
|
||||||
|
if (key == 8){
|
||||||
|
socket.emit('keypress', key);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
$("#console").keypress(function(e){
|
||||||
|
//if enter key is pressed
|
||||||
|
//get the input
|
||||||
|
e.preventDefault();
|
||||||
|
//resolve e.code to char
|
||||||
|
let key = e.which;
|
||||||
|
//send to server via socket if connected
|
||||||
|
socket.emit('keypress', key);
|
||||||
|
});
|
||||||
|
//connect to the server
|
||||||
|
|
||||||
|
//on connect
|
||||||
|
socket.on('connect', function(){
|
||||||
|
addareacontent("Connected to server");
|
||||||
|
});
|
||||||
|
//on disconnect
|
||||||
|
socket.on('disconnect', function(){
|
||||||
|
addareacontent("Disconnected from server");
|
||||||
|
});
|
||||||
|
//on error
|
||||||
|
socket.on('error', function(err){
|
||||||
|
addareacontent("Error: " + err);
|
||||||
|
});
|
||||||
|
//on message
|
||||||
|
socket.on('buffer', function(msg){
|
||||||
|
addareacontent(msg);
|
||||||
|
});
|
||||||
|
|
||||||
|
})
|
||||||
|
function flash(){
|
||||||
|
//if u+2800 is present in the console then replace it with 2588
|
||||||
|
let console = document.getElementById("console");
|
||||||
|
if(console.innerHTML.indexOf("\u2800") > -1){
|
||||||
|
console.innerHTML = console.innerHTML.replace("\u2800", "\u2588");
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
console.innerHTML = console.innerHTML.replace("\u2588", "\u2800");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
setInterval(flash, 500);
|
23
website/style.css
Normal file
23
website/style.css
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
.error {
|
||||||
|
color: red;
|
||||||
|
}
|
||||||
|
#console {
|
||||||
|
background: #000;
|
||||||
|
width: 99%;
|
||||||
|
color: #0F0;
|
||||||
|
margin: 0;
|
||||||
|
border-color: #00AC00;
|
||||||
|
}
|
||||||
|
#consolecont{
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
body{
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
*{
|
||||||
|
background-color: #000;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user