Fixhancement: add an option to fritzbox widget to display IPv6 (#4778)

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
pull/4782/head
Oleh Astappiev 6 days ago committed by GitHub
parent bcdd4a149b
commit cf90312089
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -13,7 +13,7 @@ Home Network > Network > Network Settings > Access Settings in the Home Network
Credentials are not needed and, as such, you may want to consider using `http` instead of `https` as those requests are significantly faster. Credentials are not needed and, as such, you may want to consider using `http` instead of `https` as those requests are significantly faster.
Allowed fields (limited to a max of 4): `["connectionStatus", "uptime", "maxDown", "maxUp", "down", "up", "received", "sent", "externalIPAddress"]`. Allowed fields (limited to a max of 4): `["connectionStatus", "uptime", "maxDown", "maxUp", "down", "up", "received", "sent", "externalIPAddress", "externalIPv6Address", "externalIPv6Prefix"]`.
```yaml ```yaml
widget: widget:

@ -148,7 +148,9 @@
"up": "Up", "up": "Up",
"received": "Received", "received": "Received",
"sent": "Sent", "sent": "Sent",
"externalIPAddress": "Ext. IP" "externalIPAddress": "Ext. IP",
"externalIPv6Address": "Ext. IPv6",
"externalIPv6Prefix": "Ext. IPv6-Prefix"
}, },
"caddy": { "caddy": {
"upstreams": "Upstreams", "upstreams": "Upstreams",

@ -37,6 +37,8 @@ export default function Component({ service }) {
<Block label="fritzbox.received" /> <Block label="fritzbox.received" />
<Block label="fritzbox.sent" /> <Block label="fritzbox.sent" />
<Block label="fritzbox.externalIPAddress" /> <Block label="fritzbox.externalIPAddress" />
<Block label="fritzbox.externalIPv6Address" />
<Block label="fritzbox.externalIPv6Prefix" />
</Container> </Container>
); );
} }
@ -52,6 +54,8 @@ export default function Component({ service }) {
<Block label="fritzbox.received" value={t("common.bytes", { value: fritzboxData.received })} /> <Block label="fritzbox.received" value={t("common.bytes", { value: fritzboxData.received })} />
<Block label="fritzbox.sent" value={t("common.bytes", { value: fritzboxData.sent })} /> <Block label="fritzbox.sent" value={t("common.bytes", { value: fritzboxData.sent })} />
<Block label="fritzbox.externalIPAddress" value={fritzboxData.externalIPAddress} /> <Block label="fritzbox.externalIPAddress" value={fritzboxData.externalIPAddress} />
<Block label="fritzbox.externalIPv6Address" value={fritzboxData.externalIPv6Address} />
<Block label="fritzbox.externalIPv6Prefix" value={fritzboxData.externalIPv6Prefix} />
</Container> </Container>
); );
} }

@ -70,14 +70,21 @@ export default async function fritzboxProxyHandler(req, res) {
const requestLinkProperties = ["maxDown", "maxUp"].some((field) => serviceWidget.fields.includes(field)); const requestLinkProperties = ["maxDown", "maxUp"].some((field) => serviceWidget.fields.includes(field));
const requestAddonInfos = ["down", "up", "received", "sent"].some((field) => serviceWidget.fields.includes(field)); const requestAddonInfos = ["down", "up", "received", "sent"].some((field) => serviceWidget.fields.includes(field));
const requestExternalIPAddress = ["externalIPAddress"].some((field) => serviceWidget.fields.includes(field)); const requestExternalIPAddress = ["externalIPAddress"].some((field) => serviceWidget.fields.includes(field));
const requestExternalIPv6Address = ["externalIPv6Address"].some((field) => serviceWidget.fields.includes(field));
const requestExternalIPv6Prefix = ["externalIPv6Prefix"].some((field) => serviceWidget.fields.includes(field));
await Promise.all([ await Promise.all([
// as per http://fritz.box:49000/igddesc.xml specifications (fritz.box is a hostname of your router)
requestStatusInfo ? requestEndpoint(apiBaseUrl, "WANIPConnection", "GetStatusInfo") : null, requestStatusInfo ? requestEndpoint(apiBaseUrl, "WANIPConnection", "GetStatusInfo") : null,
requestLinkProperties ? requestEndpoint(apiBaseUrl, "WANCommonInterfaceConfig", "GetCommonLinkProperties") : null, requestLinkProperties ? requestEndpoint(apiBaseUrl, "WANCommonInterfaceConfig", "GetCommonLinkProperties") : null,
requestAddonInfos ? requestEndpoint(apiBaseUrl, "WANCommonInterfaceConfig", "GetAddonInfos") : null, requestAddonInfos ? requestEndpoint(apiBaseUrl, "WANCommonInterfaceConfig", "GetAddonInfos") : null,
requestExternalIPAddress ? requestEndpoint(apiBaseUrl, "WANIPConnection", "GetExternalIPAddress") : null, requestExternalIPAddress ? requestEndpoint(apiBaseUrl, "WANIPConnection", "GetExternalIPAddress") : null,
requestExternalIPv6Address
? requestEndpoint(apiBaseUrl, "WANIPConnection", "X_AVM_DE_GetExternalIPv6Address")
: null,
requestExternalIPv6Prefix ? requestEndpoint(apiBaseUrl, "WANIPConnection", "X_AVM_DE_GetIPv6Prefix") : null,
]) ])
.then(([statusInfo, linkProperties, addonInfos, externalIPAddress]) => { .then(([statusInfo, linkProperties, addonInfos, externalIPAddress, externalIPv6Address, externalIPv6Prefix]) => {
res.status(200).json({ res.status(200).json({
connectionStatus: statusInfo?.NewConnectionStatus || "Unconfigured", connectionStatus: statusInfo?.NewConnectionStatus || "Unconfigured",
uptime: statusInfo?.NewUptime || 0, uptime: statusInfo?.NewUptime || 0,
@ -88,6 +95,8 @@ export default async function fritzboxProxyHandler(req, res) {
received: addonInfos?.NewX_AVM_DE_TotalBytesReceived64 || 0, received: addonInfos?.NewX_AVM_DE_TotalBytesReceived64 || 0,
sent: addonInfos?.NewX_AVM_DE_TotalBytesSent64 || 0, sent: addonInfos?.NewX_AVM_DE_TotalBytesSent64 || 0,
externalIPAddress: externalIPAddress?.NewExternalIPAddress || null, externalIPAddress: externalIPAddress?.NewExternalIPAddress || null,
externalIPv6Address: externalIPv6Address?.NewExternalIPv6Address || null,
externalIPv6Prefix: externalIPv6Prefix?.NewIPv6Prefix || null,
}); });
}) })
.catch((error) => { .catch((error) => {

Loading…
Cancel
Save