bingle-arbiter/src/index.js

39 lines
1.5 KiB
JavaScript

require("dotenv").config()
const express = require("express")
const app = express()
const logger = require("./lib/logger.js")
if (process.platform == "linux") logger.warn("Game hosting might not be fully compatible with Linux")
app.use(({ query }, response, next) => {
if (!query.key) return response.status(400).json({ error: "Missing key in query" })
if (query.key !== process.env.ARBITER_KEY) return response.status(403).json({ error: "Incorrect key in query" })
next()
})
app.use("/game/start", require("./routes/game/start.js"))
app.use("/game/stop", require("./routes/game/stop.js"))
app.use("/game/running", require("./routes/game/running.js"))
app.use("/game/renew", require("./routes/game/renew.js"))
app.use("/game/status", require("./routes/game/status.js"))
app.use("/game/execute", require("./routes/game/execute.js"))
app.use("/render/asset", require("./routes/render/asset.js"))
app.use("/render/game", require("./routes/render/game.js"))
app.use("/render/texture", require("./routes/render/texture.js"))
app.use("/render/user", require("./routes/render/user.js"))
app.use("/render/texture", require("./routes/render/texture.js"))
app.use("*", require("./routes/index.js"))
process.on("uncaughtException", (err) => logger.error(err.message))
global.games = new Map()
setInterval(() => {
global.games.forEach(async (value, key) => {
if (!(await value.Running())) value.Stop()
})
}, 15000)
app.listen(process.env.PORT, () => logger.boot(`Listening on http://127.0.0.1:${process.env.PORT}/`))