47 lines
1.5 KiB
JavaScript
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}`)
|
|
}) |