Merge branch 'develop' into task/responsive-ui
This commit is contained in:
commit
e709667482
2
.env
2
.env
@ -1,5 +1,5 @@
|
|||||||
# MongoDB connection for backend
|
# MongoDB connection for backend
|
||||||
CONNECTION_URI=mongodb://admin:adminpassword@mongo:27017/ludo?authSource=admin&replicaSet=rs0
|
CONNECTION_URI=mongodb://admin:adminpassword@192.168.0.197:27017/ludo?authSource=admin&replicaSet=rs0
|
||||||
|
|
||||||
# Backend port
|
# Backend port
|
||||||
PORT=18081
|
PORT=18081
|
||||||
|
|||||||
@ -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://mongo:27017/ludo?replicaSet=rs0
|
ENV CONNECTION_URI=mongodb://192.168.0.197:27017/ludo?replicaSet=rs0
|
||||||
|
|
||||||
EXPOSE 18081
|
EXPOSE 18081
|
||||||
|
|
||||||
|
|||||||
5
backend/.env
Normal file
5
backend/.env
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
PORT=8080
|
||||||
|
# MongoDB connection for backend
|
||||||
|
CONNECTION_URI=mongodb://admin:adminpassword@192.168.0.197:27017/ludo?authSource=admin&replicaSet=rs0
|
||||||
|
|
||||||
|
NODE_ENV="development"
|
||||||
@ -1,3 +0,0 @@
|
|||||||
PORT=8080
|
|
||||||
CONNECTION_URI=your_mongodb_connection_uri
|
|
||||||
NODE_ENV="development"
|
|
||||||
@ -1,6 +1,11 @@
|
|||||||
module.exports = async function (mongoose) {
|
module.exports = async function (mongoose) {
|
||||||
try {
|
try {
|
||||||
await mongoose.connect(process.env.CONNECTION_URI);
|
console.log('🔌 Attempting to connect with URI:', 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);
|
||||||
|
|||||||
@ -1,10 +1,41 @@
|
|||||||
const session = require('express-session');
|
const session = require('express-session');
|
||||||
const MongoDBStore = require('connect-mongodb-session')(session);
|
const MongoDBStore = require('connect-mongodb-session')(session);
|
||||||
|
|
||||||
const store = new MongoDBStore({
|
console.log('📋 Session.js - CONNECTION_URI:', process.env.CONNECTION_URI);
|
||||||
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,
|
||||||
|
|||||||
@ -3,11 +3,14 @@ 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();
|
require('dotenv').config({ path: path.join(__dirname, '.env') });
|
||||||
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());
|
||||||
|
|||||||
22
backend/test-connection-no-replica.js
Normal file
22
backend/test-connection-no-replica.js
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
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);
|
||||||
|
}
|
||||||
|
});
|
||||||
27
backend/test-connection.js
Normal file
27
backend/test-connection.js
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
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();
|
||||||
|
}
|
||||||
|
});
|
||||||
23
backend/test-mongo-debug.js
Normal file
23
backend/test-mongo-debug.js
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
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();
|
||||||
|
}
|
||||||
|
});
|
||||||
34
backend/test-network.js
Normal file
34
backend/test-network.js
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
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
1
package-lock.json
generated
@ -26,6 +26,7 @@
|
|||||||
"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"
|
||||||
|
|||||||
@ -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(`${window.location.protocol}//${window.location.host}`, { withCredentials: true });
|
const socket = io(`http://${window.location.hostname}:8080`, { 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,3 +72,5 @@ function App() {
|
|||||||
</SocketContext.Provider>
|
</SocketContext.Provider>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export default App;
|
||||||
|
|||||||
@ -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';
|
import App from './App.js';
|
||||||
|
|
||||||
const container = document.getElementById('root');
|
const container = document.getElementById('root');
|
||||||
const root = ReactDOM.createRoot(container);
|
const root = ReactDOM.createRoot(container);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user