import { WebSocketServer } from "ws"; import child_process from "child_process"; import fs from "fs"; async function spawnPromise(program, args) { return new Promise((resolve, reject) => { const process = child_process.spawn(program, args); process.on("close", (_) => { resolve(); }); }); } const wss = new WebSocketServer({ port: 3000 }); //maybe check output of child processes and send errors in some way wss.on("connection", (ws) => { ws.on("message", async (dataBuf) => { let data = dataBuf.toString(); if (data === "screenshot") { await spawnPromise("bash", ["/conf/screenshot.sh"]); ws.send(fs.readFileSync("/screenshot.png")); } else if (data.includes("touch")) { const dataSplit = data.split(" "); await spawnPromise("bash", [ "/conf/touch.sh", dataSplit[1], dataSplit[2], ]); } else if (data === "back") { await spawnPromise("bash", ["/conf/back.sh"]); } else if (data === "home") { await spawnPromise("bash", ["/conf/home.sh"]); } else if (data === "install") { await spawnPromise("bash", ["/conf/install.sh"]); } else if (data.includes("drag")) { const dataSplit = data.split(" "); await spawnPromise("bash", [ "/conf/drag.sh", dataSplit[1], dataSplit[2], dataSplit[3], dataSplit[4], ]); } }); ws.on("close", (_) => { ws.close(); }); });