From 4017997448ff736337e47e49290c8b9f05bad037 Mon Sep 17 00:00:00 2001 From: gallegonovato Date: Sat, 24 Dec 2022 12:52:49 +0000 Subject: [PATCH 1/5] Translated using Weblate (Spanish) Currently translated at 100.0% (281 of 281 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/ --- public/locales/es/common.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/public/locales/es/common.json b/public/locales/es/common.json index c2727026..539e173c 100644 --- a/public/locales/es/common.json +++ b/public/locales/es/common.json @@ -382,15 +382,15 @@ "connectedSwitches": "Interruptores conectados" }, "downloadstation": { - "download": "Download", - "upload": "Upload", - "leech": "Leech", - "seed": "Seed" + "download": "Descargar", + "upload": "Subir", + "leech": "Sanguijuela", + "seed": "Semilla" }, "mikrotik": { - "cpuLoad": "CPU Load", - "memoryUsed": "Memory Used", - "uptime": "Uptime", - "numberOfLeases": "Leases" + "cpuLoad": "Carga de la CPU", + "memoryUsed": "Memoria utilizada", + "uptime": "Tiempo en funcionamiento", + "numberOfLeases": "Alquileres" } } From 6f34aaefa4f94c475ebe03284c197a946648b6a1 Mon Sep 17 00:00:00 2001 From: Nonoss117 Date: Fri, 23 Dec 2022 18:53:54 +0000 Subject: [PATCH 2/5] Translated using Weblate (French) Currently translated at 100.0% (281 of 281 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/ --- public/locales/fr/common.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/public/locales/fr/common.json b/public/locales/fr/common.json index 4b78d108..e34fd67b 100644 --- a/public/locales/fr/common.json +++ b/public/locales/fr/common.json @@ -382,15 +382,15 @@ "connectedSwitches": "Switches connectés" }, "downloadstation": { - "download": "Download", - "upload": "Upload", + "download": "Récep.", + "upload": "Envoi", "leech": "Leech", "seed": "Seed" }, "mikrotik": { - "cpuLoad": "CPU Load", - "memoryUsed": "Memory Used", - "uptime": "Uptime", - "numberOfLeases": "Leases" + "cpuLoad": "Charge CPU", + "memoryUsed": "Mém. Utilisée", + "uptime": "Disponibilité", + "numberOfLeases": "Baux" } } From 8bdd03a63280f72a31da0a8e2b9e94826fce58ae Mon Sep 17 00:00:00 2001 From: Paolo Casellati Date: Sat, 24 Dec 2022 16:10:45 +0000 Subject: [PATCH 3/5] Translated using Weblate (Italian) Currently translated at 99.6% (280 of 281 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/ --- public/locales/it/common.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/public/locales/it/common.json b/public/locales/it/common.json index 3f531e4a..6bf614b1 100644 --- a/public/locales/it/common.json +++ b/public/locales/it/common.json @@ -375,11 +375,11 @@ "bibitrate": "{{value, rate(bits: true; binary: true)}}" }, "omada": { - "connectedAp": "Connected APs", - "activeUser": "Active devices", - "alerts": "Alerts", - "connectedGateway": "Connected gateways", - "connectedSwitches": "Connected switches" + "connectedAp": "AP Connessi", + "activeUser": "Dispositivi attivi", + "alerts": "Allarmi", + "connectedGateway": "Gateway connessi", + "connectedSwitches": "Switch connessi" }, "downloadstation": { "download": "Download", @@ -388,9 +388,9 @@ "seed": "Seed" }, "mikrotik": { - "cpuLoad": "CPU Load", - "memoryUsed": "Memory Used", - "uptime": "Uptime", + "cpuLoad": "Carico della CPU", + "memoryUsed": "Memoria Utilizzata", + "uptime": "Tempo di attività", "numberOfLeases": "Leases" } } From 977c65f911e3fcf2203f3953eb569389ea129456 Mon Sep 17 00:00:00 2001 From: retmas-gh Date: Fri, 23 Dec 2022 21:08:41 +0000 Subject: [PATCH 4/5] Translated using Weblate (Polish) Currently translated at 97.8% (275 of 281 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/ --- public/locales/pl/common.json | 38 +++++++++++++++++------------------ 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/public/locales/pl/common.json b/public/locales/pl/common.json index d51e5a1c..209db63a 100644 --- a/public/locales/pl/common.json +++ b/public/locales/pl/common.json @@ -357,40 +357,40 @@ "seed": "Seed" }, "tdarr": { - "queue": "Queue", - "processed": "Processed", - "errored": "Errored", - "saved": "Saved" + "queue": "Kolejka", + "processed": "Przetworzone", + "errored": "Błędne", + "saved": "Zapisane" }, "miniflux": { - "read": "Read", - "unread": "Unread" + "read": "Przeczytane", + "unread": "Nieprzeczytane" }, "nextdns": { - "wait": "Please Wait", - "no_devices": "No Device Data Received" + "wait": "Proszę czekać", + "no_devices": "Nie otrzymano danych urządzenia" }, "common": { "bibyterate": "{{value, rate(bits: false; binary: true)}}", "bibitrate": "{{value, rate(bits: true; binary: true)}}" }, "omada": { - "connectedSwitches": "Connected switches", - "connectedAp": "Connected APs", - "activeUser": "Active devices", - "alerts": "Alerts", - "connectedGateway": "Connected gateways" + "connectedSwitches": "Połączone przełączniki", + "connectedAp": "Połączone punkty dostępowe", + "activeUser": "Aktywne urządzenia", + "alerts": "Alarmy", + "connectedGateway": "Połączone bramy" }, "downloadstation": { - "download": "Download", - "upload": "Upload", + "download": "Pobieranie", + "upload": "Wysyłanie", "leech": "Leech", "seed": "Seed" }, "mikrotik": { - "cpuLoad": "CPU Load", - "memoryUsed": "Memory Used", - "uptime": "Uptime", - "numberOfLeases": "Leases" + "cpuLoad": "Obciążenie procesora", + "memoryUsed": "Zuyżyta pamięć", + "uptime": "Czas działania", + "numberOfLeases": "Dzierżawy" } } From f4ceb74f72635798f233a41290172a133f5bfa70 Mon Sep 17 00:00:00 2001 From: Benoit SERRA Date: Sun, 25 Dec 2022 20:15:18 +0100 Subject: [PATCH 5/5] Opnsense widget (#2) * OPNSense widget : initial version, memory usage is inaccurate. * OPNSense widget : code cleanup in widget.js. Firewall is no longer displayed, so it did not need to be queried. --- public/locales/en/common.json | 7 ++++ src/widgets/components.js | 1 + src/widgets/opnsense/component.jsx | 53 ++++++++++++++++++++++++++++++ src/widgets/opnsense/widget.js | 18 ++++++++++ src/widgets/widgets.js | 2 ++ 5 files changed, 81 insertions(+) create mode 100644 src/widgets/opnsense/component.jsx create mode 100644 src/widgets/opnsense/widget.js diff --git a/public/locales/en/common.json b/public/locales/en/common.json index a1f9df9c..62c1724d 100644 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -401,5 +401,12 @@ "memoryUsed": "Memory Used", "uptime": "Uptime", "numberOfLeases": "Leases" + }, + "opnsense": { + "cpu": "CPU Load", + "memory": "Memory Used", + "uptime": "Uptime", + "wanUpload": "WAN Upload", + "wanDownload": "WAN Download" } } diff --git a/src/widgets/components.js b/src/widgets/components.js index a2a26332..4d8a3454 100644 --- a/src/widgets/components.js +++ b/src/widgets/components.js @@ -29,6 +29,7 @@ const components = { nzbget: dynamic(() => import("./nzbget/component")), omada: dynamic(() => import("./omada/component")), ombi: dynamic(() => import("./ombi/component")), + opnsense: dynamic(() => import("./opnsense/component")), overseerr: dynamic(() => import("./overseerr/component")), paperlessngx: dynamic(() => import("./paperlessngx/component")), pihole: dynamic(() => import("./pihole/component")), diff --git a/src/widgets/opnsense/component.jsx b/src/widgets/opnsense/component.jsx new file mode 100644 index 00000000..1757d68f --- /dev/null +++ b/src/widgets/opnsense/component.jsx @@ -0,0 +1,53 @@ +import { useTranslation } from "next-i18next"; + +import Container from "components/services/widget/container"; +import Block from "components/services/widget/block"; +import useWidgetAPI from "utils/proxy/use-widget-api"; + +export default function Component({ service }) { + const { t } = useTranslation(); + + const { widget } = service; + + const { data: activityData, error: activityError } = useWidgetAPI(widget, "activity"); + const { data: interfaceData, error: interfaceError } = useWidgetAPI(widget, "interface"); + + if (activityError || interfaceError) { + const finalError = activityError ?? interfaceError; + return ; + } + + if (!activityData || !interfaceData) { + return ( + + + + + + + + ); + } + + const cpuInfos = activityData.headers[2].split(" "); + const cpu = parseFloat(cpuInfos[2]) + parseFloat(cpuInfos[5]) + parseFloat(cpuInfos[8]) + parseFloat(cpuInfos[11]); + const uptimeInfos = activityData.headers[0].match(/.* up ([0-9+:]*) .*/); + const uptime = uptimeInfos[1]; + const memoryInfos = activityData.headers[3].split(" "); + const totalMemory = parseFloat(memoryInfos[1]) + parseFloat(memoryInfos[3]) + parseFloat(memoryInfos[5]) + parseFloat(memoryInfos[7]) + parseFloat(memoryInfos[9])/1024 + parseFloat(memoryInfos[11]); + const memory = ( 1 - parseFloat(memoryInfos[11]) / totalMemory) * 100; + + const wanUpload = interfaceData.interfaces.wan['bytes transmitted']; + const wanDownload = interfaceData.interfaces.wan['bytes received']; + + return ( + + + + + + + + + ); +} diff --git a/src/widgets/opnsense/widget.js b/src/widgets/opnsense/widget.js new file mode 100644 index 00000000..56ad0733 --- /dev/null +++ b/src/widgets/opnsense/widget.js @@ -0,0 +1,18 @@ + +import genericProxyHandler from "utils/proxy/handlers/generic"; + +const widget = { + api: "{url}/api/{endpoint}", + proxyHandler: genericProxyHandler, + + mappings: { + activity: { + endpoint: "diagnostics/activity/getActivity", + }, + interface: { + endpoint: "diagnostics/traffic/interface", + } + }, +}; + +export default widget; diff --git a/src/widgets/widgets.js b/src/widgets/widgets.js index 523ba9c2..b4a90378 100644 --- a/src/widgets/widgets.js +++ b/src/widgets/widgets.js @@ -24,6 +24,7 @@ import npm from "./npm/widget"; import nzbget from "./nzbget/widget"; import omada from "./omada/widget"; import ombi from "./ombi/widget"; +import opnsense from "./opnsense/widget"; import overseerr from "./overseerr/widget"; import paperlessngx from "./paperlessngx/widget"; import pihole from "./pihole/widget"; @@ -79,6 +80,7 @@ const widgets = { nzbget, omada, ombi, + opnsense, overseerr, paperlessngx, pihole,