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 5 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.
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
widget:

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

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

@ -70,14 +70,21 @@ export default async function fritzboxProxyHandler(req, res) {
const requestLinkProperties = ["maxDown", "maxUp"].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 requestExternalIPv6Address = ["externalIPv6Address"].some((field) => serviceWidget.fields.includes(field));
const requestExternalIPv6Prefix = ["externalIPv6Prefix"].some((field) => serviceWidget.fields.includes(field));
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,
requestLinkProperties ? requestEndpoint(apiBaseUrl, "WANCommonInterfaceConfig", "GetCommonLinkProperties") : null,
requestAddonInfos ? requestEndpoint(apiBaseUrl, "WANCommonInterfaceConfig", "GetAddonInfos") : 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({
connectionStatus: statusInfo?.NewConnectionStatus || "Unconfigured",
uptime: statusInfo?.NewUptime || 0,
@ -88,6 +95,8 @@ export default async function fritzboxProxyHandler(req, res) {
received: addonInfos?.NewX_AVM_DE_TotalBytesReceived64 || 0,
sent: addonInfos?.NewX_AVM_DE_TotalBytesSent64 || 0,
externalIPAddress: externalIPAddress?.NewExternalIPAddress || null,
externalIPv6Address: externalIPv6Address?.NewExternalIPv6Address || null,
externalIPv6Prefix: externalIPv6Prefix?.NewIPv6Prefix || null,
});
})
.catch((error) => {

Loading…
Cancel
Save