add traefik service widget

pull/34/head
Ben Phelps 2 years ago
parent 82b0ef38fd
commit 2de82795c7

@ -10,7 +10,7 @@
- Status light + CPU, Memory & Network Reporting *(click on the status light)*
- Service Integration
- Currently supports Sonarr, Radarr, Ombi, Emby, Jellyfin, NZBGet, ruTorrent
- Portainer, Speedtest Tracker, PiHole
- Portainer, Traefik, Speedtest Tracker, PiHole
* Homepage Widgets
- System Stats (Disk, CPU, Memory)
- Weather (via weatherapi.com)

@ -9,6 +9,7 @@ import Pihole from "./widgets/service/pihole";
import Rutorrent from "./widgets/service/rutorrent";
import Jellyfin from "./widgets/service/jellyfin";
import Speedtest from "./widgets/service/speedtest";
import Traefik from "./widgets/service/traefik";
const widgetMappings = {
docker: Docker,
@ -22,6 +23,7 @@ const widgetMappings = {
pihole: Pihole,
rutorrent: Rutorrent,
speedtest: Speedtest,
traefik: Traefik,
};
export default function Widget({ service }) {

@ -0,0 +1,38 @@
import useSWR from "swr";
import Widget from "../widget";
import Block from "../block";
export default function Traefik({ service }) {
const config = service.widget;
function buildApiUrl(endpoint) {
const { url } = config;
const fullUrl = `${url}/api/${endpoint}`;
return `/api/proxy?url=${encodeURIComponent(fullUrl)}`;
}
const { data: traefikData, error: traefikError } = useSWR(buildApiUrl("overview"));
if (traefikError) {
return <Widget error="Traefik API Error" />;
}
if (!traefikData) {
return (
<Widget>
<Block label="Routers" />
<Block label="Services" />
<Block label="Middleware" />
</Widget>
);
}
return (
<Widget>
<Block label="Routers" value={traefikData.http.routers.total} />
<Block label="Services" value={traefikData.http.services.total} />
<Block label="Middleware" value={traefikData.http.middlewares.total} />
</Widget>
);
}
Loading…
Cancel
Save