47 lines
1.2 KiB
JavaScript
47 lines
1.2 KiB
JavaScript
|
import { Server as Skio } from "socket.io";
|
||
|
import { VERB, WARN, ERR } from "../util/logging.js";
|
||
|
import liveLogging from "../k8s/live-logging.js";
|
||
|
import rconInterface from "./rcon.js";
|
||
|
|
||
|
const namespace = process.env.MCL_SERVER_NAMESPACE;
|
||
|
|
||
|
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 liveLogging(socket, namespace);
|
||
|
await rconInterface(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;
|