Andrii Dokhniak 18541a6647 Switch to httptoolkit
Summary: switch to httptoolkit

Reviewers: kuba-orlik

Reviewed By: kuba-orlik

Differential Revision: https://hub.sealcode.org/D1578
2025-04-07 21:19:15 +02:00

52 lines
1.3 KiB
JavaScript

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