Compare commits

..

No commits in common. "e709667482d0d5d2bae6b0b1a897253770247544" and "c41b9cb76ae4ecac26ba4b73ea392f3c074772a9" have entirely different histories.

14 changed files with 12 additions and 162 deletions

2
.env
View File

@ -1,5 +1,5 @@
# MongoDB connection for backend # MongoDB connection for backend
CONNECTION_URI=mongodb://admin:adminpassword@192.168.0.197:27017/ludo?authSource=admin&replicaSet=rs0 CONNECTION_URI=mongodb://admin:adminpassword@mongo:27017/ludo?authSource=admin&replicaSet=rs0
# Backend port # Backend port
PORT=18081 PORT=18081

View File

@ -103,7 +103,7 @@ RUN chmod +x wait-for-mongo.sh
# Default fallback values (can be overridden by Compose) # Default fallback values (can be overridden by Compose)
ENV NODE_ENV=production ENV NODE_ENV=production
ENV PORT=8080 ENV PORT=8080
ENV CONNECTION_URI=mongodb://192.168.0.197:27017/ludo?replicaSet=rs0 ENV CONNECTION_URI=mongodb://mongo:27017/ludo?replicaSet=rs0
EXPOSE 18081 EXPOSE 18081

View File

@ -1,5 +0,0 @@
PORT=8080
# MongoDB connection for backend
CONNECTION_URI=mongodb://admin:adminpassword@192.168.0.197:27017/ludo?authSource=admin&replicaSet=rs0
NODE_ENV="development"

3
backend/.env.example Normal file
View File

@ -0,0 +1,3 @@
PORT=8080
CONNECTION_URI=your_mongodb_connection_uri
NODE_ENV="development"

View File

@ -1,11 +1,6 @@
module.exports = async function (mongoose) { module.exports = async function (mongoose) {
try { try {
console.log('🔌 Attempting to connect with URI:', process.env.CONNECTION_URI); await mongoose.connect(process.env.CONNECTION_URI);
await mongoose.connect(process.env.CONNECTION_URI, {
useNewUrlParser: true,
useUnifiedTopology: true,
directConnection: true,
});
console.log('✅ MongoDB connected'); console.log('✅ MongoDB connected');
} catch (err) { } catch (err) {
console.error('❌ MongoDB connection error:', err); console.error('❌ MongoDB connection error:', err);

View File

@ -1,41 +1,10 @@
const session = require('express-session'); const session = require('express-session');
const MongoDBStore = require('connect-mongodb-session')(session); const MongoDBStore = require('connect-mongodb-session')(session);
console.log('📋 Session.js - CONNECTION_URI:', process.env.CONNECTION_URI); const store = new MongoDBStore({
uri: process.env.CONNECTION_URI,
// Parse the connection URI to extract connection options
const uriString = process.env.CONNECTION_URI;
const uriUrl = new URL(uriString);
// Extract individual components
const baseUri = `${uriUrl.protocol}//${uriUrl.username}:${uriUrl.password}@${uriUrl.hostname}:${uriUrl.port}${uriUrl.pathname}`;
const replicaSet = uriUrl.searchParams.get('replicaSet');
const authSource = uriUrl.searchParams.get('authSource');
console.log('📋 Base URI:', baseUri);
console.log('📋 ReplicaSet:', replicaSet);
console.log('📋 AuthSource:', authSource);
// Build connection options with directConnection to bypass replica set discovery
const connectionOptions = {
useNewUrlParser: true,
useUnifiedTopology: true,
directConnection: true, // Force direct connection to specified server
};
if (authSource) {
connectionOptions.authSource = authSource;
}
const storeOptions = {
uri: baseUri,
collection: 'sessions', collection: 'sessions',
connectionOptions: connectionOptions, });
};
console.log('📋 Store options:', JSON.stringify(storeOptions, null, 2));
const store = new MongoDBStore(storeOptions);
const sessionMiddleware = session({ const sessionMiddleware = session({
store: store, store: store,
credentials: true, credentials: true,

View File

@ -3,14 +3,11 @@ const cors = require('cors');
const path = require('path'); const path = require('path');
const cookieParser = require('cookie-parser'); const cookieParser = require('cookie-parser');
const mongoose = require('mongoose'); const mongoose = require('mongoose');
require('dotenv').config({ path: path.join(__dirname, '.env') }); require('dotenv').config();
const { sessionMiddleware } = require('./config/session'); const { sessionMiddleware } = require('./config/session');
const PORT = process.env.PORT || 5000; const PORT = process.env.PORT || 5000;
console.log('🔍 Environment loaded from:', path.join(__dirname, '.env'));
console.log('📍 Connection URI:', process.env.CONNECTION_URI);
const app = express(); const app = express();
app.use(cookieParser()); app.use(cookieParser());

View File

@ -1,22 +0,0 @@
const mongodb = require('mongodb');
require('dotenv').config({ path: require('path').join(__dirname, '.env') });
// Try without replicaSet
const uri = 'mongodb://admin:adminpassword@192.168.0.197:27017/ludo?authSource=admin';
console.log('Testing without replicaSet:', uri);
mongodb.MongoClient.connect(uri, {
useNewUrlParser: true,
useUnifiedTopology: true,
authSource: 'admin',
serverSelectionTimeoutMS: 5000,
}, (err, client) => {
if (err) {
console.error('❌ Connection error:', err.message);
process.exit(1);
} else {
console.log('✅ Connected successfully!');
client.close();
process.exit(0);
}
});

View File

@ -1,27 +0,0 @@
const mongodb = require('mongodb');
require('dotenv').config({ path: require('path').join(__dirname, '.env') });
const uri = process.env.CONNECTION_URI;
console.log('Testing with URI:', uri);
const uriUrl = new URL(uri);
console.log('URL components:');
console.log(' hostname:', uriUrl.hostname);
console.log(' port:', uriUrl.port);
console.log(' pathname:', uriUrl.pathname);
console.log(' searchParams:', Object.fromEntries(uriUrl.searchParams));
// Try to connect directly
mongodb.MongoClient.connect(uri, {
useNewUrlParser: true,
useUnifiedTopology: true,
replicaSet: 'rs0',
authSource: 'admin'
}, (err, client) => {
if (err) {
console.error('Connection error:', err.message);
} else {
console.log('✅ Connected successfully!');
client.close();
}
});

View File

@ -1,23 +0,0 @@
process.env.DEBUG = 'mongodb:*';
const mongodb = require('mongodb');
const uri = 'mongodb://admin:adminpassword@192.168.0.197:27017/ludo?authSource=admin';
console.log('Connecting to:', uri);
const client = new mongodb.MongoClient(uri, {
useNewUrlParser: true,
useUnifiedTopology: true,
authSource: 'admin',
serverSelectionTimeoutMS: 3000,
loggerLevel: 'debug',
});
client.connect((err) => {
if (err) {
console.error('❌ Connection error:', err);
} else {
console.log('✅ Connected!');
client.close();
}
});

View File

@ -1,34 +0,0 @@
const mongodb = require('mongodb');
const net = require('net');
const dns = require('dns').promises;
async function test() {
// Test DNS resolution
console.log('Testing DNS resolution...');
try {
const res = await dns.resolve4('192.168.0.197');
console.log('DNS resolve4(192.168.0.197):', res);
} catch (e) {
console.log('DNS error:', e.message);
}
try {
const res = await dns.resolve4('mongo');
console.log('DNS resolve4(mongo):', res);
} catch (e) {
console.log('DNS mongo error:', e.message);
}
// Test direct socket connection
console.log('\nTesting direct TCP connection...');
const socket = net.createConnection(27017, '192.168.0.197');
socket.on('connect', () => {
console.log('✅ TCP connection successful to 192.168.0.197:27017');
socket.destroy();
});
socket.on('error', (err) => {
console.log('❌ TCP connection error:', err.message);
});
}
test();

1
package-lock.json generated
View File

@ -26,7 +26,6 @@
"web-vitals": "^3.5.0" "web-vitals": "^3.5.0"
}, },
"devDependencies": { "devDependencies": {
"@babel/plugin-transform-private-property-in-object": "^7.16.7",
"@testing-library/jest-dom": "^6.1.5", "@testing-library/jest-dom": "^6.1.5",
"@testing-library/react": "^14.1.2", "@testing-library/react": "^14.1.2",
"cypress": "^13.6.1" "cypress": "^13.6.1"

View File

@ -13,7 +13,7 @@ function App() {
const [playerSocket, setPlayerSocket] = useState(); const [playerSocket, setPlayerSocket] = useState();
const [redirect, setRedirect] = useState(); const [redirect, setRedirect] = useState();
useEffect(() => { useEffect(() => {
const socket = io(`http://${window.location.hostname}:8080`, { withCredentials: true }); const socket = io(`${window.location.protocol}//${window.location.host}`, { withCredentials: true });
socket.on('player:data', data => { socket.on('player:data', data => {
data = JSON.parse(data); data = JSON.parse(data);
setPlayerData(data); setPlayerData(data);
@ -72,5 +72,3 @@ function App() {
</SocketContext.Provider> </SocketContext.Provider>
); );
} }
export default App;

View File

@ -1,7 +1,7 @@
import React from 'react'; import React from 'react';
import ReactDOM from 'react-dom/client'; import ReactDOM from 'react-dom/client';
import './index.css'; import './index.css';
import App from './App.js'; import App from './App';
const container = document.getElementById('root'); const container = document.getElementById('root');
const root = ReactDOM.createRoot(container); const root = ReactDOM.createRoot(container);