Spaces:
Running
Running
| 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 | |
| ); | |
| }); | |