const fs = require("node:fs") const path = require("node:path") const http = require("node:http") const logger = require("./modules/logger") const config = require("./config.json") const express = require("express") const app = express() const dbController = require("./controllers/db") const server = http.createServer(app) const io = require("socket.io")(server) app.use(express.json()) app.use(express.urlencoded({ extended: true })) app.set("view engine", "ejs") app.set("views", path.join(__dirname, "static", "views")) dbController.initDB() const routes = fs.readdirSync(path.join(__dirname, "routes"), { recursive: true }) for (let route of routes) { if (route.endsWith(".js")) { if (route.endsWith("index.js")) { route = "/" + route.replace("index.js", "/").replace(/\\/g, "/").replace(/\/\//g, "") } else { route = "/" + route.replace(".js", "").replace(/\\/g, "/") } const routeHandler = require(`./routes/${route}`) app.use(route, routeHandler) logger.log(`Route ${route.cyan.bold} registered`) } } io.on("connection", (socket) => { socket.on("force-update", () => { const token = socket.handshake.auth.token if (dbController.isTokenValid(token)) { io.to("/game/updates").emit("confirmed") } else { socket.disconnect() } }) }) server.listen(config.web.port, () => { logger.log(`Server listening at port : ${config.web.port}`) })