minecluster/lib/server/sockets.js
dunemask 4f19cf19d9 [FEATURE] Basic System with file manager (#4)
Co-authored-by: dunemask <dunemask@gmail.com>
Co-authored-by: Dunemask <dunemask@gmail.com>
Reviewed-on: https://gitea.dunemask.dev/elysium/minecluster/pulls/4
2023-12-20 03:20:04 +00:00

46 lines
1.2 KiB
JavaScript

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;