mirror of
https://github.com/DI0IK/homepage-plus.git
synced 2025-07-08 22:48:46 +00:00
rewrite minecraft server status widget to directly ping server
This commit is contained in:
parent
f418ee6327
commit
ad66637ff1
5 changed files with 54 additions and 17 deletions
27
src/utils/proxy/handlers/minecraft.js
Normal file
27
src/utils/proxy/handlers/minecraft.js
Normal file
|
@ -0,0 +1,27 @@
|
|||
import { pingWithPromise } from "minecraft-ping-js";
|
||||
|
||||
import createLogger from "utils/logger";
|
||||
import getServiceWidget from "utils/config/service-helpers";
|
||||
|
||||
const proxyName = "minecraftProxyHandler";
|
||||
const logger = createLogger(proxyName);
|
||||
|
||||
export default async function minecraftProxyHandler(req, res) {
|
||||
const { group, service } = req.query;
|
||||
const serviceWidget = await getServiceWidget(group, service);
|
||||
try {
|
||||
const pingResponse = await pingWithPromise(serviceWidget.domain, serviceWidget.port || 25565);
|
||||
res.status(200).send({
|
||||
version: pingResponse.version.name,
|
||||
online: true,
|
||||
players: pingResponse.players
|
||||
});
|
||||
} catch (e) {
|
||||
logger.warn(e)
|
||||
res.status(500).send({
|
||||
version: undefined,
|
||||
online: false,
|
||||
players: undefined
|
||||
});
|
||||
}
|
||||
}
|
|
@ -25,22 +25,15 @@ export default function Component({ service }) {
|
|||
const statusIndicator = serverData.online ?
|
||||
<span className="text-green-500">{t("minecraft.up")}</span>:
|
||||
<span className="text-red-500">{t("minecraft.down")}</span>;
|
||||
const players = serverData.players ? `${serverData.players.online} / ${serverData.players.max}` : "-";
|
||||
const version = serverData.version || "-";
|
||||
|
||||
if(serverData.players){
|
||||
return (
|
||||
<Container service={service}>
|
||||
<Block label="minecraft.status" value={statusIndicator} />
|
||||
<Block label="minecraft.players" value={`${serverData.players.online} / ${serverData.players.max}`} />
|
||||
<Block label="minecraft.version" value={serverData.version} />
|
||||
</Container>
|
||||
);
|
||||
}
|
||||
return (
|
||||
<Container service={service}>
|
||||
<Container service={service}>
|
||||
<Block label="minecraft.status" value={statusIndicator} />
|
||||
<Block label="minecraft.players" value="-" />
|
||||
<Block label="minecraft.version" value="-" />
|
||||
</Container>
|
||||
<Block label="minecraft.players" value={players} />
|
||||
<Block label="minecraft.version" value={version} />
|
||||
</Container>
|
||||
);
|
||||
}
|
||||
|
|
@ -1,12 +1,11 @@
|
|||
import genericProxyHandler from "utils/proxy/handlers/generic";
|
||||
import minecraftProxyHandler from "utils/proxy/handlers/minecraft";
|
||||
import { asJson } from "utils/proxy/api-helpers";
|
||||
|
||||
const widget = {
|
||||
api: "{url}/{endpoint}/{domain}",
|
||||
proxyHandler: genericProxyHandler,
|
||||
proxyHandler: minecraftProxyHandler,
|
||||
mappings: {
|
||||
status: {
|
||||
endpoint: "2",
|
||||
endpoint: "_",
|
||||
map: (data) => {
|
||||
const jsonData = asJson(data);
|
||||
return {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue