Enhancement: support breaking changes in wg-easy v15 (#5343)

This commit is contained in:
shamoon 2025-05-31 22:08:49 -07:00 committed by GitHub
parent 35be5559b3
commit 524cb7695c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 21 additions and 3 deletions

View File

@ -11,10 +11,17 @@ Note: by default `["connected", "enabled", "total"]` are displayed.
To detect if a device is connected the time since the last handshake is queried. `threshold` is the time to wait in minutes since the last handshake to consider a device connected. Default is 2 minutes. To detect if a device is connected the time since the last handshake is queried. `threshold` is the time to wait in minutes since the last handshake to consider a device connected. Default is 2 minutes.
| Wg-Easy API Version | Homepage Widget Version |
| ------------------- | ----------------------- |
| < v15 | 1 (default) |
| >= v15 | 2 |
```yaml ```yaml
widget: widget:
type: wgeasy type: wgeasy
url: http://wg.easy.or.ip url: http://wg.easy.or.ip
version: 2 # optional, default is 1
username: yourwgusername # required for v15 and above
password: yourwgeasypassword password: yourwgeasypassword
threshold: 2 # optional threshold: 2 # optional
``` ```

View File

@ -497,7 +497,9 @@ export function cleanServiceGroups(groups) {
if (snapshotHost) widget.snapshotHost = snapshotHost; if (snapshotHost) widget.snapshotHost = snapshotHost;
if (snapshotPath) widget.snapshotPath = snapshotPath; if (snapshotPath) widget.snapshotPath = snapshotPath;
} }
if (["beszel", "glances", "immich", "komga", "mealie", "pfsense", "pihole", "speedtest"].includes(type)) { if (
["beszel", "glances", "immich", "komga", "mealie", "pfsense", "pihole", "speedtest", "wgeasy"].includes(type)
) {
if (version) widget.version = parseInt(version, 10); if (version) widget.version = parseInt(version, 10);
} }
if (type === "glances") { if (type === "glances") {

View File

@ -101,7 +101,11 @@ export default async function credentialedProxyHandler(req, res, map) {
headers.Cookie = `authenticated=${widget.key}`; headers.Cookie = `authenticated=${widget.key}`;
} }
} else if (widget.type === "wgeasy") { } else if (widget.type === "wgeasy") {
headers.Authorization = widget.password; if (widget.username && widget.password) {
headers.Authorization = `Basic ${Buffer.from(`${widget.username}:${widget.password}`).toString("base64")}`;
} else {
headers.Authorization = widget.password;
}
} else if (widget.type === "gitlab") { } else if (widget.type === "gitlab") {
headers["PRIVATE-TOKEN"] = widget.key; headers["PRIVATE-TOKEN"] = widget.key;
} else if (widget.type === "speedtest") { } else if (widget.type === "speedtest") {

View File

@ -6,7 +6,9 @@ import useWidgetAPI from "utils/proxy/use-widget-api";
export default function Component({ service }) { export default function Component({ service }) {
const { widget } = service; const { widget } = service;
const { data: infoData, error: infoError } = useWidgetAPI(widget, "client"); const endpoint = widget.version === 2 ? "clientv2" : "client";
const { data: infoData, error: infoError } = useWidgetAPI(widget, endpoint);
if (!widget.fields) { if (!widget.fields) {
widget.fields = ["connected", "enabled", "total"]; widget.fields = ["connected", "enabled", "total"];

View File

@ -8,6 +8,9 @@ const widget = {
client: { client: {
endpoint: "wireguard/client", endpoint: "wireguard/client",
}, },
clientv2: {
endpoint: "client",
},
}, },
}; };