RaptusBackend / app.js
GitHub Actions
Initial commit
df72131
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
);
});