mirror of
https://github.com/khairul169/home-lab.git
synced 2025-04-28 08:39:34 +07:00
34 lines
813 B
TypeScript
34 lines
813 B
TypeScript
import { WebSocketServer } from "ws";
|
|
import { verifyToken } from "./lib/jwt";
|
|
import { createTerminalSession } from "./lib/terminal";
|
|
import { createVNCSession } from "./lib/vnc";
|
|
|
|
const createWsServer = (server: any) => {
|
|
const wss = new WebSocketServer({ server: server as never });
|
|
|
|
wss.on("connection", async (ws, req) => {
|
|
const url = new URL(req.url || "", `http://${req.headers.host}`);
|
|
const token = url.searchParams.get("token");
|
|
|
|
try {
|
|
await verifyToken(token || "");
|
|
} catch (err) {
|
|
// console.log(err);
|
|
ws.close();
|
|
return;
|
|
}
|
|
|
|
if (url.pathname === "/terminal") {
|
|
createTerminalSession(ws);
|
|
}
|
|
|
|
if (url.pathname === "/vnc") {
|
|
createVNCSession(ws);
|
|
}
|
|
|
|
ws.on("error", console.error);
|
|
});
|
|
};
|
|
|
|
export default createWsServer;
|