diff --git a/public/locales/en/common.json b/public/locales/en/common.json
index 21f90d89..6091c0b1 100644
--- a/public/locales/en/common.json
+++ b/public/locales/en/common.json
@@ -675,9 +675,13 @@
"canceled": "Canceled",
"inProgress": "In Progress"
},
- "csgo": {
+ "gamedig": {
+ "name": "Name",
"map": "Map",
+ "currentPlayers": "Current players",
"players": "Players",
+ "maxPlayers": "Max players",
+ "bots": "Bots",
"ping": "Ping"
}
}
diff --git a/public/locales/fr/common.json b/public/locales/fr/common.json
index 56c84876..9bf6d6ef 100644
--- a/public/locales/fr/common.json
+++ b/public/locales/fr/common.json
@@ -666,9 +666,13 @@
"canceled": "Annulé",
"inProgress": "En cours"
},
- "csgo": {
+ "gamedig": {
+ "name": "Nom",
"map": "Carte",
+ "currentPlayers": "Joueurs actuels",
"players": "Joueurs",
+ "maxPlayers": "Joueurs max",
+ "bots": "Bots",
"ping": "Ping"
}
}
diff --git a/src/widgets/components.js b/src/widgets/components.js
index 2147c26f..4b7ef50c 100644
--- a/src/widgets/components.js
+++ b/src/widgets/components.js
@@ -12,7 +12,6 @@ const components = {
channelsdvrserver: dynamic(() => import("./channelsdvrserver/component")),
cloudflared: dynamic(() => import("./cloudflared/component")),
coinmarketcap: dynamic(() => import("./coinmarketcap/component")),
- csgo: dynamic(() => import("./csgo/component")),
deluge: dynamic(() => import("./deluge/component")),
diskstation: dynamic(() => import("./diskstation/component")),
downloadstation: dynamic(() => import("./downloadstation/component")),
@@ -23,6 +22,7 @@ const components = {
fileflows: dynamic(() => import("./fileflows/component")),
flood: dynamic(() => import("./flood/component")),
freshrss: dynamic(() => import("./freshrss/component")),
+ gamedig: dynamic(() => import("./gamedig/component")),
ghostfolio: dynamic(() => import("./ghostfolio/component")),
gluetun: dynamic(() => import("./gluetun/component")),
gotify: dynamic(() => import("./gotify/component")),
diff --git a/src/widgets/csgo/component.jsx b/src/widgets/csgo/component.jsx
deleted file mode 100644
index 9909795b..00000000
--- a/src/widgets/csgo/component.jsx
+++ /dev/null
@@ -1,37 +0,0 @@
-import { useTranslation } from "next-i18next";
-
-import Container from "components/services/widget/container";
-import Block from "components/services/widget/block";
-import useWidgetAPI from "utils/proxy/use-widget-api";
-
-export default function Component({ service }) {
- const { widget } = service;
- const { data: serverData, error: serverError } = useWidgetAPI(widget, "status");
- const { t } = useTranslation();
-
- if(serverError){
- return ;
- }
-
- if (!serverData) {
- return (
-
-
-
-
-
- );
- }
-
- const map = serverData.online ? serverData.map : "-";
- const players = serverData.online ? `${serverData.players} / ${serverData.maxplayers}` : "-";
- const ping = serverData.online ? `${serverData.ping}` : 0;
-
- return (
-
-
-
-
-
- );
-}
diff --git a/src/widgets/csgo/widget.js b/src/widgets/csgo/widget.js
deleted file mode 100644
index a465d5a6..00000000
--- a/src/widgets/csgo/widget.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import csgoProxyHandler from "./proxy";
-
-const widget = {
- proxyHandler: csgoProxyHandler
-}
-
-export default widget;
diff --git a/src/widgets/gamedig/component.jsx b/src/widgets/gamedig/component.jsx
new file mode 100644
index 00000000..796f7772
--- /dev/null
+++ b/src/widgets/gamedig/component.jsx
@@ -0,0 +1,49 @@
+import { useTranslation } from "next-i18next";
+
+import Container from "components/services/widget/container";
+import Block from "components/services/widget/block";
+import useWidgetAPI from "utils/proxy/use-widget-api";
+
+export default function Component({ service }) {
+ const { widget } = service;
+ const { data: serverData, error: serverError } = useWidgetAPI(widget, "status");
+ const { t } = useTranslation();
+
+ if(serverError){
+ return ;
+ }
+
+ if (!serverData) {
+ return (
+
+
+
+
+
+
+
+
+
+ );
+ }
+
+ const name = serverData.online ? serverData.name : "-";
+ const map = serverData.online ? serverData.map : "-";
+ const currentPlayers = serverData.online ? `${serverData.players} / ${serverData.maxplayers}` : "-";
+ const players = serverData.online ? `${serverData.players}` : "-";
+ const maxPlayers = serverData.online ? `${serverData.maxplayers}` : "-";
+ const bots = serverData.online ? `${serverData.bots}` : "-";
+ const ping = serverData.online ? `${serverData.ping}` : 0;
+
+ return (
+
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/src/widgets/csgo/proxy.js b/src/widgets/gamedig/proxy.js
similarity index 79%
rename from src/widgets/csgo/proxy.js
rename to src/widgets/gamedig/proxy.js
index 81b3dd81..f0b2e1d9 100644
--- a/src/widgets/csgo/proxy.js
+++ b/src/widgets/gamedig/proxy.js
@@ -1,20 +1,20 @@
import createLogger from "utils/logger";
import getServiceWidget from "utils/config/service-helpers";
-const proxyName = "csgoProxyHandler";
+const proxyName = "gamedigProxyHandler";
const logger = createLogger(proxyName);
const gamedig = require("gamedig");
-export default async function csgoProxyHandler(req, res) {
+export default async function gamedigProxyHandler(req, res) {
const { group, service } = req.query;
const serviceWidget = await getServiceWidget(group, service);
const url = new URL(serviceWidget.url);
try {
const serverData = await gamedig.query({
- type: "csgo",
+ type: serviceWidget.serverType,
host: url.hostname,
- port: url.port || 27015,
+ port: url.port,
givenPortOnly: true,
});
@@ -24,6 +24,7 @@ export default async function csgoProxyHandler(req, res) {
map: serverData.map,
players: serverData.players.length,
maxplayers: serverData.maxplayers,
+ bots: serverData.bots.length,
ping: serverData.ping,
});
} catch (e) {
diff --git a/src/widgets/gamedig/widget.js b/src/widgets/gamedig/widget.js
new file mode 100644
index 00000000..c84e95bb
--- /dev/null
+++ b/src/widgets/gamedig/widget.js
@@ -0,0 +1,7 @@
+import gamedigProxyHandler from "./proxy";
+
+const widget = {
+ proxyHandler: gamedigProxyHandler
+}
+
+export default widget;
diff --git a/src/widgets/widgets.js b/src/widgets/widgets.js
index dd23d59b..6ae47efd 100644
--- a/src/widgets/widgets.js
+++ b/src/widgets/widgets.js
@@ -9,7 +9,6 @@ import changedetectionio from "./changedetectionio/widget";
import channelsdvrserver from "./channelsdvrserver/widget";
import cloudflared from "./cloudflared/widget";
import coinmarketcap from "./coinmarketcap/widget";
-import csgo from "./csgo/widget";
import deluge from "./deluge/widget";
import diskstation from "./diskstation/widget";
import downloadstation from "./downloadstation/widget";
@@ -18,6 +17,7 @@ import evcc from "./evcc/widget";
import fileflows from "./fileflows/widget";
import flood from "./flood/widget";
import freshrss from "./freshrss/widget";
+import gamedig from "./gamedig/widget";
import ghostfolio from "./ghostfolio/widget";
import gluetun from "./gluetun/widget";
import gotify from "./gotify/widget";
@@ -100,7 +100,6 @@ const widgets = {
channelsdvrserver,
cloudflared,
coinmarketcap,
- csgo,
deluge,
diskstation,
downloadstation,
@@ -109,6 +108,7 @@ const widgets = {
fileflows,
flood,
freshrss,
+ gamedig,
ghostfolio,
gluetun,
gotify,