const express = require("express"); const { WebSocketServer } = require("ws"); const cookieParser = require("cookie-parser"); const db = require("./config/DatabaseConfig.js"); const app = express(); const path = require("path"); const http = require("http"); var https = require("https"); const socketIO = require("socket.io"); const server = http.createServer(app); const io = socketIO(server); const { stat } = require("fs"); const cors = require("cors"); const fs = require("fs"); const util = require("util"); const WebSocket = require("ws"); const fetch_user = require("./helpers/SessionIdhelper.js"); const { userOnline } = require("./sockets/TeamConnectionStatus.js"); const notification = require("./sockets/Notification.js"); const round = require("./sockets/RoundStartEnd.js"); const { scheduleRound1Start, scheduleRound1End, } = require("./timers/RoundOneTimer.js"); const { scheduleRound2Start, scheduleRound2End, } = require("./timers/RoundTwoTimer.js"); const { scheduleRound3Start, scheduleRound3End, } = require("./timers/RoundThreeTimer.js"); const { scheduleRound4Start, scheduleRound4End, } = require("./timers/RoundFourTimer.js"); // const logFile = fs.createWriteStream(path.join(__dirname, '/logs/logs.txt'), { flags: 'a' }); // const originalConsoleLog = console.log; // console.log = function (...args) { // const timestamp = new Date().toISOString(); // const message = args.map(arg => util.format(arg)).join(' '); // const logMessage = `${timestamp} - ${message}`; // logFile.write(logMessage + '\n'); // process.stdout.write(logMessage + '\n'); // originalConsoleLog.apply(console, args); // }; const corsOptions = { origin: [ "http://localhost:3000", "http://127.0.0.1:3000", "http://192.168.1.6:3000", // your origins here ], credentials: true, exposedHeaders: ["set-cookie"], }; app.use(cookieParser()); app.use(cors(corsOptions)); app.use(express.urlencoded({ extended: true })); app.use(express.json()); app.use(express.static(path.join(__dirname, "/logs"))); app.get("/", (req, res) => { res.send("Server is Up and Running"); console.log("Somebody accessed the server broo"); }); app.use(express.static(path.join(__dirname, "/static"))); app.set("socketio", io); io.sockets.setMaxListeners(500); start_routes(); admin_routes(); start_timers(); server.listen(process.env.PORT, "0.0.0.0", () => { console.log("Server running"); const currentDate = new Date(); console.log(currentDate); }); function start_routes() { app.use("/register", require("./routers/UserRegisterRouter.js")); app.use("/login", require("./routers/UserLoginRouter.js")); app.use("/question", require("./routers/QuestionRouter.js")); app.use("/round", require("./routers/RoundsRouter.js")); app.use("/model", require("./routers/ModelRouter.js")); app.use("/verify", require("./routers/VerifyRouter.js")); } function admin_routes() { app.use("/qsns", require("./Admin/Routers/QsEnterRouter.js")); app.use("/rounds", require("./Admin/Routers/RoundEnterRouter.js")); app.use("/room", require("./Admin/Routers/RoomEnterRouter.js")); } async function start_timers() { const { scheduleCollaborativeRound, } = require("./timers/RoundThreeCollaborator.js"); const Round = require("./models/RoundsModel.js"); let Round1 = await Round.findOne({ Round: 1 }); let Round2 = await Round.findOne({ Round: 2 }); let Round3 = await Round.findOne({ Round: 3 }); let Round4 = await Round.findOne({ Round: 4 }); let Round1STime = Round1.StartTime; let Round2STime = Round2.StartTime; let Round3STime = Round3.StartTime; let Round4STime = Round4.StartTime; let Round1ETime = Round1.EndTime; let Round2ETime = Round2.EndTime; let Round3ETime = Round3.EndTime; let Round4ETime = Round4.EndTime; let date = new Date(); //scheduleCollaborativeRound(date) scheduleRound1Start(Round1STime); scheduleRound2Start(Round2STime); scheduleRound3Start(Round3STime); scheduleRound4Start(Round4STime); scheduleRound1End(Round1ETime); scheduleRound2End(Round2ETime); scheduleRound3End(Round3ETime); scheduleRound4End(Round4ETime); } app.use((req, res, next) => { res.status(404).sendFile(path.join(__dirname, "static/html/404.html")); }); notification.initialize(io); round.initialize(io); io.on("connection", async (socket) => { const cookies = socket.request.headers.cookie; let user = await fetch_user(cookies); if (!user) { return; } if (socket.rooms.length !== 2) socket.join(user.TeamID.toString()); io.to(user.TeamID.toString()).emit( "notofication", "user is online " + user.Name ); });