import { Server as Skio } from "socket.io"; import { VERB, WARN, ERR } from "../util/logging.js"; import { webConsoleLogs, webConsoleRcon, } from "../controllers/sub-controllers/console-controller.js"; async function rconSend(socket, m) { if (!socket.rconClient) return WARN("RCON", "Message sent before RCON connected!"); try { const r = await socket.rconClient.send(m); socket.emit("push", `[RCON]: ${r}`); } catch (error) { WARN("RCON", error); } } const socketConnect = async (io, socket) => { VERB("WS", "Websocket connecting"); socket.mcs = { serverName: socket.handshake.query.serverName }; try { await webConsoleLogs(socket); await webConsoleRcon(socket); socket.on("msg", (m) => rconSend(socket, m)); } catch (err) { ERR("SOCKETS", err); socket.send("push", err); socket.disconnect(); } }; const socketAuth = (socket, next) => { const { token } = socket.handshake.auth; // next(new Error("Bad Token")); next(); }; const applySockets = (server) => { const io = new Skio(server); io.on("connection", (socket) => socketConnect(io, socket)); VERB("WS", "Configured Websockets"); return io; }; export default applySockets;