2025-04-29 18:06:04 +02:00

47 lines
1.5 KiB
JavaScript

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}`)
})