From 615c8d4ceb2a05e9b927189f925aef1ef1f86f19 Mon Sep 17 00:00:00 2001 From: Karmaa Date: Wed, 12 Mar 2025 18:59:03 -0500 Subject: [PATCH] Changes to connection system to support docker --- docker/nginx.conf | 15 ++++++++++++--- src/Terminal.jsx | 6 +++--- src/User.jsx | 6 +++--- src/backend/database.cjs | 9 ++++++--- src/backend/ssh.cjs | 1 + 5 files changed, 25 insertions(+), 12 deletions(-) diff --git a/docker/nginx.conf b/docker/nginx.conf index 163d0660..734a045f 100644 --- a/docker/nginx.conf +++ b/docker/nginx.conf @@ -24,19 +24,28 @@ http { proxy_pass http://127.0.0.1:8081; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection 'upgrade'; + proxy_set_header Connection "Upgrade"; # Fix this line to properly upgrade WebSockets proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; + + # Pass real IPs for logging and security + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; } - # Proxy database requests location /database.io/ { proxy_pass http://127.0.0.1:8082; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection 'upgrade'; + proxy_set_header Connection "Upgrade"; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; + + # Allow WebSockets to function properly + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; } # Error pages diff --git a/src/Terminal.jsx b/src/Terminal.jsx index f583fb61..2c3a1ae8 100644 --- a/src/Terminal.jsx +++ b/src/Terminal.jsx @@ -63,10 +63,10 @@ export const NewTerminal = forwardRef(({ hostConfig, isVisible }, ref) => { const socket = io( window.location.hostname === "localhost" - ? "http://localhost:8081" - : "/", + ? "http://localhost:8081/ssh.io" + : "/ssh.io", { - path: "/ssh.io/", + path: "/ssh.io/socket.io", transports: ["websocket", "polling"], } ); diff --git a/src/User.jsx b/src/User.jsx index 61361864..8c763dd4 100644 --- a/src/User.jsx +++ b/src/User.jsx @@ -7,10 +7,10 @@ let socket; if (!socket) { socket = io( window.location.hostname === "localhost" - ? "http://localhost:8082" - : "/", + ? "http://localhost:8082/database.io" + : "/database.io", { - path: "/database.io", + path: "/database.io/socket.io", transports: ["websocket", "polling"], } ); diff --git a/src/backend/database.cjs b/src/backend/database.cjs index 287535ad..5d272319 100644 --- a/src/backend/database.cjs +++ b/src/backend/database.cjs @@ -6,6 +6,7 @@ require('dotenv').config(); const server = http.createServer(); const io = socketIo(server, { + path: "/database.io/socket.io", cors: { origin: "*", methods: ["GET", "POST"], @@ -14,6 +15,8 @@ const io = socketIo(server, { allowEIO3: true }); +const dbNamespace = io.of("/database.io"); + async function connectToMongoDB() { try { const mongoUrl = process.env.MONGO_URL || 'mongodb://mongodb:27017/termix'; @@ -103,15 +106,15 @@ async function deleteUser(userId) { await User.deleteOne({ _id: userId }); return { success: true }; } else { - return { error: 'User not found'}; + return { error: 'User not found' }; } } catch (err) { return { error: 'Error removing user: ' + err.message }; } } -io.on("connection", (socket) => { - console.log("New socket connection established"); +dbNamespace.on("connection", (socket) => { + console.log("New socket connection established on"); socket.on("createUser", async (data) => { const { username, password } = data; diff --git a/src/backend/ssh.cjs b/src/backend/ssh.cjs index 49fef97c..cf2b9e29 100644 --- a/src/backend/ssh.cjs +++ b/src/backend/ssh.cjs @@ -4,6 +4,7 @@ const SSHClient = require("ssh2").Client; const server = http.createServer(); const io = socketIo(server, { + path: "/ssh.io/socket.io", cors: { origin: "*", methods: ["GET", "POST"],