diff --git a/sshChat.mjs b/sshChat.mjs index 1f8bc6c..d735776 100644 --- a/sshChat.mjs +++ b/sshChat.mjs @@ -17,6 +17,7 @@ goodbye(() => swarm.destroy()) // Keep track of all connections and USERNAMEs const conns = [] const names = {} +let USERPWD = "/" let DAPI_KEY = {} let USERNAME = "annon" + rand let LOGGEDIN = false @@ -35,45 +36,55 @@ async function getUSERNAME(key) { return requestUSERNAME.body.message.replace("Hello, ", "").replace("!", "") } -async function runCMD(key, cmd, pwd){ +async function runCMD(key, cmd, pwd) { let requestData = await unirest - .post('https://api.discord-linux.com/exec') - .headers({'Accept': 'application/json', 'Content-Type': 'application/json', - 'x-discord-linux-auth': key}) - .send({"cmd": cmd, "pwd": pwd}) + .post('https://api.discord-linux.com/exec') + .headers({ + 'Accept': 'application/json', 'Content-Type': 'application/json', + 'x-discord-linux-auth': key + }) + .send({ "cmd": cmd, "pwd": pwd }) return requestData.body.stdout } -async function startContainer(key){ +async function startContainer(key) { let startContainer = await unirest - .get('https://api.discord-linux.com/start') - .headers({'Accept': 'application/json', 'Content-Type': 'application/json', - 'x-discord-linux-auth': key}) + .get('https://api.discord-linux.com/start') + .headers({ + 'Accept': 'application/json', 'Content-Type': 'application/json', + 'x-discord-linux-auth': key + }) return startContainer.body.completed } -async function stopContainer(key){ +async function stopContainer(key) { let stopContainer = await unirest - .get('https://api.discord-linux.com/stop') - .headers({'Accept': 'application/json', 'Content-Type': 'application/json', - 'x-discord-linux-auth': key}) + .get('https://api.discord-linux.com/stop') + .headers({ + 'Accept': 'application/json', 'Content-Type': 'application/json', + 'x-discord-linux-auth': key + }) return stopContainer.body.completed } -async function restartContainer(key){ +async function restartContainer(key) { let restartContainer = await unirest - .get('https://api.discord-linux.com/restart') - .headers({'Accept': 'application/json', 'Content-Type': 'application/json', - 'x-discord-linux-auth': key}) + .get('https://api.discord-linux.com/restart') + .headers({ + 'Accept': 'application/json', 'Content-Type': 'application/json', + 'x-discord-linux-auth': key + }) return restartContainer.body.completed } -async function getStats(key){ +async function getStats(key) { let getStats = await unirest - .get('https://api.discord-linux.com/restart') - .headers({'Accept': 'application/json', 'Content-Type': 'application/json', - 'x-discord-linux-auth': key}) + .get('https://api.discord-linux.com/restart') + .headers({ + 'Accept': 'application/json', 'Content-Type': 'application/json', + 'x-discord-linux-auth': key + }) console.log(getStats.body) return getStats.body.data } @@ -112,69 +123,83 @@ rl.on('line', input => { conn.write(`${USERNAME} has logged in!`) } clearCursor() - console.log(`Weclcome ${USERNAME} you are now logged in!`) - return LOGGEDIN = true + console.log(`Welcome ${USERNAME} you are now logged in!`) + return LOGGEDIN = true }); } + const changeDir = input.startsWith(">cd") || input.startsWith("> cd") + if (changeDir) { + const commandArgs = input.replace("> cd ", "").replace(">cd", "").replace(" ", "") + if (commandArgs.startsWith("/")) { + USERPWD = commandArgs; + console.log("Directory Changed to: " + USERPWD) + } else { + USERPWD = USERPWD + "/" + commandArgs; + console.log("Directory Changed to: " + USERPWD) + } + + } + + const execute = input.startsWith(">") if (execute) { let inputdata = input.split(2) - const cmdToRun = inputdata.join(" ").replace("> ", "").replace(">","") + const cmdToRun = inputdata.join(" ").replace("> ", "").replace(">", "") + if (cmdToRun.includes("cd")) return runCMD(DAPI_KEY.key, cmdToRun, "/").then((data) => { console.log(data) for (const conn of conns) { conn.write(`${USERNAME} ran ${cmdToRun}: \n` + data) } - }) -} + }) + } + + const start = input.match(/^\/start (\S+)$/) + if (start) { + const cmdToRun = start[1] + startContainer(DAPI_KEY.key).then((data) => { + for (const conn of conns) { + console.log(data) + conn.write(`${USERNAME} ran start: \n` + data) + } + }) + } -const start = input.match(/^\/start (\S+)$/) -if (start) { - const cmdToRun = start[1] - startContainer(DAPI_KEY.key).then((data) => { - for (const conn of conns) { - console.log(data) - conn.write(`${USERNAME} ran start: \n` + data) - } -}) -} + const stop = input.match(/^\/stop (\S+)$/) + if (stop) { + const cmdToRun = stop[1] + stopContainer(DAPI_KEY.key).then((data) => { + for (const conn of conns) { + console.log(data) + conn.write(`${USERNAME} ran stop: \n` + data) + } + }) + } + + const restart = input.match(/^\/restart (\S+)$/) + if (restart) { + const restart = restart[1] + restartContainer(DAPI_KEY.key).then((data) => { + for (const conn of conns) { + console.log(data) + conn.write(`${USERNAME} ran restart: \n` + data) + } + }) + } -const stop = input.match(/^\/stop (\S+)$/) -if (stop) { - const cmdToRun = stop[1] - stopContainer(DAPI_KEY.key).then((data) => { - for (const conn of conns) { - console.log(data) - conn.write(`${USERNAME} ran stop: \n` + data) - } -}) -} - -const restart = input.match(/^\/restart (\S+)$/) -if (restart) { - const restart = restart[1] - restartContainer(DAPI_KEY.key).then((data) => { - for (const conn of conns) { - console.log(data) - conn.write(`${USERNAME} ran restart: \n` + data) - } -}) -} - - -const stats = input.match(/^\/stats (\S+)$/) -if (stats) { - const stats = stats[1] - getStats(DAPI_KEY.key).then((data) => { - for (const conn of conns) { - console.log(data) - conn.write(`${USERNAME} ran stats: \n` + data) - } -}) -} + const stats = input.match(/^\/stats (\S+)$/) + if (stats) { + const stats = stats[1] + getStats(DAPI_KEY.key).then((data) => { + for (const conn of conns) { + console.log(data) + conn.write(`${USERNAME} ran stats: \n` + data) + } + }) + } else { // if (!LOGGEDIN) return console.log("Please login using /login [API KEY]")