Files
homepage/src/widgets/gamedig/proxy.js
shamoon 907abee1aa
Some checks are pending
Docker / Linting Checks (push) Waiting to run
Docker / Docker Build & Push (push) Blocked by required conditions
Enhancement: multiple widgets per service (#4338)
2024-11-27 02:33:40 -08:00

40 lines
1010 B
JavaScript

import { GameDig } from "gamedig";
import createLogger from "utils/logger";
import getServiceWidget from "utils/config/service-helpers";
const proxyName = "gamedigProxyHandler";
const logger = createLogger(proxyName);
export default async function gamedigProxyHandler(req, res) {
const { group, service, index } = req.query;
const serviceWidget = await getServiceWidget(group, service, index);
const url = new URL(serviceWidget.url);
try {
const serverData = await GameDig.query({
type: serviceWidget.serverType,
host: url.hostname,
port: url.port,
givenPortOnly: true,
checkOldIDs: true,
});
res.status(200).send({
online: true,
name: serverData.name,
map: serverData.map,
players: serverData.players.length,
maxplayers: serverData.maxplayers,
bots: serverData.bots.length,
ping: serverData.ping,
});
} catch (e) {
if (e) logger.error(e);
res.status(200).send({
online: false,
});
}
}