mirror of
				https://github.com/karl0ss/homepage.git
				synced 2025-11-04 00:10:57 +00:00 
			
		
		
		
	Fixhancement: add an option to fritzbox widget to display IPv6 (#4778)
Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
This commit is contained in:
		
							parent
							
								
									bcdd4a149b
								
							
						
					
					
						commit
						cf90312089
					
				@ -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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user