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