mirror of
https://github.com/gethomepage/homepage.git
synced 2025-12-07 09:35:54 -08:00
Compare commits
25 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
aab5b0247a | ||
|
|
d7e4b0bd17 | ||
|
|
3bacdadb80 | ||
|
|
1d75ee44ed | ||
|
|
230cc343af | ||
|
|
b318ee165c | ||
|
|
f677646365 | ||
|
|
8db7d820d7 | ||
|
|
adb0632566 | ||
|
|
4d5c8db333 | ||
|
|
01d6a3d5f8 | ||
|
|
fbeadbc32f | ||
|
|
1289be888f | ||
|
|
aa7e3a955c | ||
|
|
2823f3b921 | ||
|
|
ddb2a74540 | ||
|
|
37d8d7a2f8 | ||
|
|
578b715a1f | ||
|
|
f14a811ce9 | ||
|
|
06dd6d2213 | ||
|
|
72471c47f4 | ||
|
|
aec5f7173c | ||
|
|
f7b68789ac | ||
|
|
0672da621e | ||
|
|
a7f9b78533 |
@@ -134,16 +134,22 @@
|
|||||||
"numberOfFailQueries": "Consultes fallides"
|
"numberOfFailQueries": "Consultes fallides"
|
||||||
},
|
},
|
||||||
"jackett": {
|
"jackett": {
|
||||||
"configured": "Configured",
|
"configured": "Configurat",
|
||||||
"errored": "Errored"
|
"errored": "Amb errors"
|
||||||
},
|
},
|
||||||
"bazarr": {
|
"bazarr": {
|
||||||
"missingEpisodes": "Missing Episodes",
|
"missingEpisodes": "Episodis que falten",
|
||||||
"missingMovies": "Missing Movies"
|
"missingMovies": "Pel·lícules que falten"
|
||||||
},
|
},
|
||||||
"lidarr": {
|
"lidarr": {
|
||||||
"wanted": "Wanted",
|
"wanted": "Volgut",
|
||||||
"queued": "Queued",
|
"queued": "En cua",
|
||||||
"albums": "Albums"
|
"albums": "Àlbums"
|
||||||
|
},
|
||||||
|
"adguard": {
|
||||||
|
"queries": "Queries",
|
||||||
|
"blocked": "Blocked",
|
||||||
|
"filtered": "Filtered",
|
||||||
|
"latency": "Latency"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -145,5 +145,11 @@
|
|||||||
"wanted": "Wanted",
|
"wanted": "Wanted",
|
||||||
"queued": "Queued",
|
"queued": "Queued",
|
||||||
"albums": "Albums"
|
"albums": "Albums"
|
||||||
|
},
|
||||||
|
"adguard": {
|
||||||
|
"queries": "Queries",
|
||||||
|
"blocked": "Blocked",
|
||||||
|
"filtered": "Filtered",
|
||||||
|
"latency": "Latency"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -108,12 +108,18 @@
|
|||||||
"pending": "Pending",
|
"pending": "Pending",
|
||||||
"approved": "Approved",
|
"approved": "Approved",
|
||||||
"available": "Available"
|
"available": "Available"
|
||||||
},
|
},
|
||||||
"pihole": {
|
"pihole": {
|
||||||
"queries": "Queries",
|
"queries": "Queries",
|
||||||
"blocked": "Blocked",
|
"blocked": "Blocked",
|
||||||
"gravity": "Gravity"
|
"gravity": "Gravity"
|
||||||
},
|
},
|
||||||
|
"adguard": {
|
||||||
|
"queries": "Queries",
|
||||||
|
"blocked": "Blocked",
|
||||||
|
"filtered": "Filtered",
|
||||||
|
"latency": "Latency"
|
||||||
|
},
|
||||||
"speedtest": {
|
"speedtest": {
|
||||||
"upload": "Upload",
|
"upload": "Upload",
|
||||||
"download": "Download",
|
"download": "Download",
|
||||||
|
|||||||
@@ -14,10 +14,10 @@
|
|||||||
"load": "Carga"
|
"load": "Carga"
|
||||||
},
|
},
|
||||||
"docker": {
|
"docker": {
|
||||||
"rx": "RX",
|
"rx": "Recibido",
|
||||||
"tx": "TX",
|
"tx": "Transmitido",
|
||||||
"mem": "MEM",
|
"mem": "Memoria",
|
||||||
"cpu": "CPU",
|
"cpu": "Procesador",
|
||||||
"offline": "Desconectado"
|
"offline": "Desconectado"
|
||||||
},
|
},
|
||||||
"emby": {
|
"emby": {
|
||||||
@@ -34,22 +34,22 @@
|
|||||||
},
|
},
|
||||||
"rutorrent": {
|
"rutorrent": {
|
||||||
"active": "Activo",
|
"active": "Activo",
|
||||||
"upload": "Carga",
|
"upload": "Subida",
|
||||||
"download": "Descarga"
|
"download": "Descarga"
|
||||||
},
|
},
|
||||||
"sonarr": {
|
"sonarr": {
|
||||||
"wanted": "Querido",
|
"wanted": "Más deseado",
|
||||||
"queued": "En cola",
|
"queued": "En cola",
|
||||||
"series": "Series"
|
"series": "Series"
|
||||||
},
|
},
|
||||||
"radarr": {
|
"radarr": {
|
||||||
"wanted": "Querido",
|
"wanted": "Más deseado",
|
||||||
"queued": "En cola",
|
"queued": "En cola",
|
||||||
"movies": "Películas"
|
"movies": "Películas"
|
||||||
},
|
},
|
||||||
"readarr": {
|
"readarr": {
|
||||||
"wanted": "Más deseado",
|
"wanted": "Más deseado",
|
||||||
"queued": "Puesto en cola",
|
"queued": "En cola",
|
||||||
"books": "Libros"
|
"books": "Libros"
|
||||||
},
|
},
|
||||||
"ombi": {
|
"ombi": {
|
||||||
@@ -68,7 +68,7 @@
|
|||||||
"gravity": "Gravedad"
|
"gravity": "Gravedad"
|
||||||
},
|
},
|
||||||
"speedtest": {
|
"speedtest": {
|
||||||
"upload": "Subir",
|
"upload": "Subida",
|
||||||
"download": "Descarga",
|
"download": "Descarga",
|
||||||
"ping": "Ping"
|
"ping": "Ping"
|
||||||
},
|
},
|
||||||
@@ -100,7 +100,7 @@
|
|||||||
},
|
},
|
||||||
"sabnzbd": {
|
"sabnzbd": {
|
||||||
"rate": "Tasa",
|
"rate": "Tasa",
|
||||||
"queue": "Cola",
|
"queue": "En cola",
|
||||||
"timeleft": "Tiempo restante"
|
"timeleft": "Tiempo restante"
|
||||||
},
|
},
|
||||||
"nzbget": {
|
"nzbget": {
|
||||||
@@ -109,11 +109,11 @@
|
|||||||
"downloaded": "Descargado"
|
"downloaded": "Descargado"
|
||||||
},
|
},
|
||||||
"coinmarketcap": {
|
"coinmarketcap": {
|
||||||
"configure": "Configurar una o varias criptomonedas para su seguimiento",
|
"configure": "Configurar una o más criptomonedas para rastrear",
|
||||||
"1hour": "1 Hora",
|
"1hour": "1 Hora",
|
||||||
"1day": "1 Día",
|
"1day": "1 Día",
|
||||||
"7days": "7 Dias",
|
"7days": "7 Días",
|
||||||
"30days": "30 Dias"
|
"30days": "30 Días"
|
||||||
},
|
},
|
||||||
"gotify": {
|
"gotify": {
|
||||||
"apps": "Aplicaciones",
|
"apps": "Aplicaciones",
|
||||||
@@ -124,26 +124,32 @@
|
|||||||
"enableIndexers": "Indexadores",
|
"enableIndexers": "Indexadores",
|
||||||
"numberOfGrabs": "Capturas",
|
"numberOfGrabs": "Capturas",
|
||||||
"numberOfQueries": "Consultas",
|
"numberOfQueries": "Consultas",
|
||||||
"numberOfFailGrabs": "Capturas Fallidas",
|
"numberOfFailGrabs": "Capturas fallidas",
|
||||||
"numberOfFailQueries": "Consultas Fallidas"
|
"numberOfFailQueries": "Consultas fallidas"
|
||||||
},
|
},
|
||||||
"transmission": {
|
"transmission": {
|
||||||
"download": "Descarga",
|
"download": "Descarga",
|
||||||
"upload": "Carga",
|
"upload": "Subida",
|
||||||
"leech": "Compañeros",
|
"leech": "Compañeros",
|
||||||
"seed": "Semillas"
|
"seed": "Semillas"
|
||||||
},
|
},
|
||||||
"jackett": {
|
"jackett": {
|
||||||
"configured": "Configurado",
|
"configured": "Configurado",
|
||||||
"errored": "Errores"
|
"errored": "Con errores"
|
||||||
},
|
},
|
||||||
"bazarr": {
|
"bazarr": {
|
||||||
"missingEpisodes": "Episodios perdidos",
|
"missingEpisodes": "Episodios perdidos",
|
||||||
"missingMovies": "Películas perdidas"
|
"missingMovies": "Películas perdidas"
|
||||||
},
|
},
|
||||||
"lidarr": {
|
"lidarr": {
|
||||||
"queued": "Puesto en cola",
|
"queued": "En cola",
|
||||||
"wanted": "Más deseado",
|
"wanted": "Más deseado",
|
||||||
"albums": "Álbumes"
|
"albums": "Álbumes"
|
||||||
|
},
|
||||||
|
"adguard": {
|
||||||
|
"queries": "Queries",
|
||||||
|
"blocked": "Blocked",
|
||||||
|
"filtered": "Filtered",
|
||||||
|
"latency": "Latency"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -106,7 +106,7 @@
|
|||||||
},
|
},
|
||||||
"overseerr": {
|
"overseerr": {
|
||||||
"pending": "En attente",
|
"pending": "En attente",
|
||||||
"approved": "Validé",
|
"approved": "Demande",
|
||||||
"available": "Disponible"
|
"available": "Disponible"
|
||||||
},
|
},
|
||||||
"sabnzbd": {
|
"sabnzbd": {
|
||||||
@@ -156,5 +156,11 @@
|
|||||||
"wanted": "Demandé",
|
"wanted": "Demandé",
|
||||||
"queued": "En queue",
|
"queued": "En queue",
|
||||||
"albums": "Albums"
|
"albums": "Albums"
|
||||||
|
},
|
||||||
|
"adguard": {
|
||||||
|
"queries": "Queries",
|
||||||
|
"blocked": "Blocked",
|
||||||
|
"filtered": "Filtered",
|
||||||
|
"latency": "Latency"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -145,5 +145,11 @@
|
|||||||
"wanted": "Wanted",
|
"wanted": "Wanted",
|
||||||
"queued": "Queued",
|
"queued": "Queued",
|
||||||
"albums": "Albums"
|
"albums": "Albums"
|
||||||
|
},
|
||||||
|
"adguard": {
|
||||||
|
"queries": "Queries",
|
||||||
|
"blocked": "Blocked",
|
||||||
|
"filtered": "Filtered",
|
||||||
|
"latency": "Latency"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -145,5 +145,11 @@
|
|||||||
"wanted": "Wanted",
|
"wanted": "Wanted",
|
||||||
"queued": "Queued",
|
"queued": "Queued",
|
||||||
"albums": "Albums"
|
"albums": "Albums"
|
||||||
|
},
|
||||||
|
"adguard": {
|
||||||
|
"queries": "Queries",
|
||||||
|
"blocked": "Blocked",
|
||||||
|
"filtered": "Filtered",
|
||||||
|
"latency": "Latency"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -145,5 +145,11 @@
|
|||||||
"wanted": "Wanted",
|
"wanted": "Wanted",
|
||||||
"queued": "Queued",
|
"queued": "Queued",
|
||||||
"albums": "Albums"
|
"albums": "Albums"
|
||||||
|
},
|
||||||
|
"adguard": {
|
||||||
|
"queries": "Queries",
|
||||||
|
"blocked": "Blocked",
|
||||||
|
"filtered": "Filtered",
|
||||||
|
"latency": "Latency"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -145,5 +145,11 @@
|
|||||||
"jackett": {
|
"jackett": {
|
||||||
"configured": "Skonfigurowane",
|
"configured": "Skonfigurowane",
|
||||||
"errored": "Błędne"
|
"errored": "Błędne"
|
||||||
|
},
|
||||||
|
"adguard": {
|
||||||
|
"queries": "Queries",
|
||||||
|
"blocked": "Blocked",
|
||||||
|
"filtered": "Filtered",
|
||||||
|
"latency": "Latency"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -156,5 +156,11 @@
|
|||||||
"queued": "Queued",
|
"queued": "Queued",
|
||||||
"wanted": "Wanted",
|
"wanted": "Wanted",
|
||||||
"albums": "Albums"
|
"albums": "Albums"
|
||||||
|
},
|
||||||
|
"adguard": {
|
||||||
|
"queries": "Queries",
|
||||||
|
"blocked": "Blocked",
|
||||||
|
"filtered": "Filtered",
|
||||||
|
"latency": "Latency"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -145,5 +145,11 @@
|
|||||||
"wanted": "Wanted",
|
"wanted": "Wanted",
|
||||||
"queued": "Queued",
|
"queued": "Queued",
|
||||||
"albums": "Albums"
|
"albums": "Albums"
|
||||||
|
},
|
||||||
|
"adguard": {
|
||||||
|
"queries": "Queries",
|
||||||
|
"blocked": "Blocked",
|
||||||
|
"filtered": "Filtered",
|
||||||
|
"latency": "Latency"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
155
public/locales/sv/common.json
Normal file
155
public/locales/sv/common.json
Normal file
@@ -0,0 +1,155 @@
|
|||||||
|
{
|
||||||
|
"widget": {
|
||||||
|
"missing_type": "Saknar Widget-typ: {{type}}",
|
||||||
|
"api_error": "API-fel",
|
||||||
|
"status": "Status"
|
||||||
|
},
|
||||||
|
"weather": {
|
||||||
|
"current": "Nuvarande plats",
|
||||||
|
"allow": "Klicka för att tillåta",
|
||||||
|
"updating": "Uppdaterar",
|
||||||
|
"wait": "Vänligen vänta"
|
||||||
|
},
|
||||||
|
"resources": {
|
||||||
|
"load": "Laddar",
|
||||||
|
"total": "Total",
|
||||||
|
"free": "Ledigt",
|
||||||
|
"used": "Använt"
|
||||||
|
},
|
||||||
|
"docker": {
|
||||||
|
"rx": "RX",
|
||||||
|
"tx": "TX",
|
||||||
|
"mem": "MEM",
|
||||||
|
"cpu": "CPU",
|
||||||
|
"offline": "Offline"
|
||||||
|
},
|
||||||
|
"search": {
|
||||||
|
"placeholder": "Sök…"
|
||||||
|
},
|
||||||
|
"emby": {
|
||||||
|
"playing": "Spelar",
|
||||||
|
"transcoding": "Omkodning",
|
||||||
|
"bitrate": "Bitrate",
|
||||||
|
"no_active": "Inga aktiva strömmar"
|
||||||
|
},
|
||||||
|
"tautulli": {
|
||||||
|
"playing": "Spelar",
|
||||||
|
"transcoding": "Omkodning",
|
||||||
|
"bitrate": "Bitrate",
|
||||||
|
"no_active": "Inga aktiva strömmar"
|
||||||
|
},
|
||||||
|
"nzbget": {
|
||||||
|
"rate": "Hastighet",
|
||||||
|
"remaining": "Återstående",
|
||||||
|
"downloaded": "Nedladdat"
|
||||||
|
},
|
||||||
|
"sabnzbd": {
|
||||||
|
"rate": "Hastighet",
|
||||||
|
"queue": "Kö",
|
||||||
|
"timeleft": "Tid kvar"
|
||||||
|
},
|
||||||
|
"rutorrent": {
|
||||||
|
"active": "Aktiva",
|
||||||
|
"upload": "Uppladdning",
|
||||||
|
"download": "Nedladdning"
|
||||||
|
},
|
||||||
|
"transmission": {
|
||||||
|
"download": "Nedladdning",
|
||||||
|
"upload": "Uppladdning",
|
||||||
|
"leech": "Leech",
|
||||||
|
"seed": "Seed"
|
||||||
|
},
|
||||||
|
"sonarr": {
|
||||||
|
"wanted": "Eftersöker",
|
||||||
|
"queued": "I kö",
|
||||||
|
"series": "Serier"
|
||||||
|
},
|
||||||
|
"radarr": {
|
||||||
|
"wanted": "Eftersöker",
|
||||||
|
"queued": "I kö",
|
||||||
|
"movies": "Filmer"
|
||||||
|
},
|
||||||
|
"lidarr": {
|
||||||
|
"wanted": "Eftersöker",
|
||||||
|
"queued": "I kö",
|
||||||
|
"albums": "Album"
|
||||||
|
},
|
||||||
|
"readarr": {
|
||||||
|
"wanted": "Eftersökt",
|
||||||
|
"queued": "I kö",
|
||||||
|
"books": "Böcker"
|
||||||
|
},
|
||||||
|
"bazarr": {
|
||||||
|
"missingEpisodes": "Saknade program",
|
||||||
|
"missingMovies": "Saknade filmer"
|
||||||
|
},
|
||||||
|
"ombi": {
|
||||||
|
"pending": "Avvaktar",
|
||||||
|
"approved": "Godkända",
|
||||||
|
"available": "Tillgänglig"
|
||||||
|
},
|
||||||
|
"jellyseerr": {
|
||||||
|
"pending": "Avvaktar",
|
||||||
|
"approved": "Godkända",
|
||||||
|
"available": "Tillgänglig"
|
||||||
|
},
|
||||||
|
"overseerr": {
|
||||||
|
"pending": "Avvaktar",
|
||||||
|
"approved": "Godkända",
|
||||||
|
"available": "Tillgänglig"
|
||||||
|
},
|
||||||
|
"pihole": {
|
||||||
|
"blocked": "Blockerad",
|
||||||
|
"queries": "Förfrågningar",
|
||||||
|
"gravity": "Gravity"
|
||||||
|
},
|
||||||
|
"speedtest": {
|
||||||
|
"upload": "Uppladdning",
|
||||||
|
"download": "Nedladdning",
|
||||||
|
"ping": "Svarstid"
|
||||||
|
},
|
||||||
|
"portainer": {
|
||||||
|
"running": "Körs",
|
||||||
|
"stopped": "Stoppade",
|
||||||
|
"total": "Totalt"
|
||||||
|
},
|
||||||
|
"traefik": {
|
||||||
|
"routers": "Routers",
|
||||||
|
"services": "Tjänster",
|
||||||
|
"middleware": "Middleware"
|
||||||
|
},
|
||||||
|
"npm": {
|
||||||
|
"enabled": "Aktiverad",
|
||||||
|
"disabled": "Inaktiverad",
|
||||||
|
"total": "Totalt"
|
||||||
|
},
|
||||||
|
"coinmarketcap": {
|
||||||
|
"configure": "Konfigurera en eller flera kryptovalutor att följa",
|
||||||
|
"1hour": "1 timme",
|
||||||
|
"1day": "1 dag",
|
||||||
|
"7days": "7 dagar",
|
||||||
|
"30days": "30 dagar"
|
||||||
|
},
|
||||||
|
"gotify": {
|
||||||
|
"apps": "Program",
|
||||||
|
"clients": "Klienter",
|
||||||
|
"messages": "Meddelande"
|
||||||
|
},
|
||||||
|
"prowlarr": {
|
||||||
|
"enableIndexers": "Indexerare",
|
||||||
|
"numberOfGrabs": "Hämtningar",
|
||||||
|
"numberOfQueries": "Queries",
|
||||||
|
"numberOfFailGrabs": "Misslyckade hämtningar",
|
||||||
|
"numberOfFailQueries": "Fail Queries"
|
||||||
|
},
|
||||||
|
"jackett": {
|
||||||
|
"configured": "Konfigurerade",
|
||||||
|
"errored": "Felaktiga"
|
||||||
|
},
|
||||||
|
"adguard": {
|
||||||
|
"queries": "Queries",
|
||||||
|
"blocked": "Blocked",
|
||||||
|
"filtered": "Filtered",
|
||||||
|
"latency": "Latency"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -145,5 +145,11 @@
|
|||||||
"wanted": "Wanted",
|
"wanted": "Wanted",
|
||||||
"queued": "Queued",
|
"queued": "Queued",
|
||||||
"albums": "Albums"
|
"albums": "Albums"
|
||||||
|
},
|
||||||
|
"adguard": {
|
||||||
|
"queries": "Queries",
|
||||||
|
"blocked": "Blocked",
|
||||||
|
"filtered": "Filtered",
|
||||||
|
"latency": "Latency"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -145,5 +145,11 @@
|
|||||||
"wanted": "Wanted",
|
"wanted": "Wanted",
|
||||||
"queued": "Queued",
|
"queued": "Queued",
|
||||||
"albums": "Albums"
|
"albums": "Albums"
|
||||||
|
},
|
||||||
|
"adguard": {
|
||||||
|
"queries": "Queries",
|
||||||
|
"blocked": "Blocked",
|
||||||
|
"filtered": "Filtered",
|
||||||
|
"latency": "Latency"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -145,5 +145,11 @@
|
|||||||
"wanted": "Wanted",
|
"wanted": "Wanted",
|
||||||
"queued": "Queued",
|
"queued": "Queued",
|
||||||
"albums": "Albums"
|
"albums": "Albums"
|
||||||
|
},
|
||||||
|
"adguard": {
|
||||||
|
"queries": "Queries",
|
||||||
|
"blocked": "Blocked",
|
||||||
|
"filtered": "Filtered",
|
||||||
|
"latency": "Latency"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ import CoinMarketCap from "./widgets/service/coinmarketcap";
|
|||||||
import Gotify from "./widgets/service/gotify";
|
import Gotify from "./widgets/service/gotify";
|
||||||
import Prowlarr from "./widgets/service/prowlarr";
|
import Prowlarr from "./widgets/service/prowlarr";
|
||||||
import Jackett from "./widgets/service/jackett";
|
import Jackett from "./widgets/service/jackett";
|
||||||
|
import AdGuard from "./widgets/service/adguard";
|
||||||
|
|
||||||
const widgetMappings = {
|
const widgetMappings = {
|
||||||
docker: Docker,
|
docker: Docker,
|
||||||
@@ -52,6 +53,7 @@ const widgetMappings = {
|
|||||||
gotify: Gotify,
|
gotify: Gotify,
|
||||||
prowlarr: Prowlarr,
|
prowlarr: Prowlarr,
|
||||||
jackett: Jackett,
|
jackett: Jackett,
|
||||||
|
adguard: AdGuard,
|
||||||
};
|
};
|
||||||
|
|
||||||
export default function Widget({ service }) {
|
export default function Widget({ service }) {
|
||||||
|
|||||||
45
src/components/services/widgets/service/adguard.jsx
Normal file
45
src/components/services/widgets/service/adguard.jsx
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
import useSWR from "swr";
|
||||||
|
import { useTranslation } from "react-i18next";
|
||||||
|
|
||||||
|
import Widget from "../widget";
|
||||||
|
import Block from "../block";
|
||||||
|
|
||||||
|
import { formatApiUrl } from "utils/api-helpers";
|
||||||
|
|
||||||
|
export default function AdGuard({ service }) {
|
||||||
|
const { t } = useTranslation();
|
||||||
|
|
||||||
|
const config = service.widget;
|
||||||
|
|
||||||
|
const { data: adguardData, error: adguardError } = useSWR(formatApiUrl(config, "stats"));
|
||||||
|
|
||||||
|
if (adguardError) {
|
||||||
|
return <Widget error={t("widget.api_error")} />;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!adguardData) {
|
||||||
|
return (
|
||||||
|
<Widget>
|
||||||
|
<Block label={t("adguard.queries")} />
|
||||||
|
<Block label={t("adguard.blocked")} />
|
||||||
|
<Block label={t("adguard.filtered")} />
|
||||||
|
<Block label={t("adguard.latency")} />
|
||||||
|
</Widget>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
const filtered =
|
||||||
|
adguardData.num_replaced_safebrowsing + adguardData.num_replaced_safesearch + adguardData.num_replaced_parental;
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Widget>
|
||||||
|
<Block label={t("adguard.queries")} value={t("common.number", { value: adguardData.num_dns_queries })} />
|
||||||
|
<Block label={t("adguard.blocked")} value={t("common.number", { value: adguardData.num_blocked_filtering })} />
|
||||||
|
<Block label={t("adguard.filtered")} value={t("common.number", { value: filtered })} />
|
||||||
|
<Block
|
||||||
|
label={t("adguard.latency")}
|
||||||
|
value={t("common.ms", { value: adguardData.avg_processing_time * 1000, style: "unit", unit: "millisecond" })}
|
||||||
|
/>
|
||||||
|
</Widget>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -20,6 +20,7 @@ const serviceProxyHandlers = {
|
|||||||
traefik: genericProxyHandler,
|
traefik: genericProxyHandler,
|
||||||
sabnzbd: genericProxyHandler,
|
sabnzbd: genericProxyHandler,
|
||||||
jackett: genericProxyHandler,
|
jackett: genericProxyHandler,
|
||||||
|
adguard: genericProxyHandler,
|
||||||
// uses X-API-Key (or similar) header auth
|
// uses X-API-Key (or similar) header auth
|
||||||
gotify: credentialedProxyHandler,
|
gotify: credentialedProxyHandler,
|
||||||
portainer: credentialedProxyHandler,
|
portainer: credentialedProxyHandler,
|
||||||
|
|||||||
@@ -21,7 +21,8 @@ const formats = {
|
|||||||
coinmarketcap: `https://pro-api.coinmarketcap.com/{endpoint}`,
|
coinmarketcap: `https://pro-api.coinmarketcap.com/{endpoint}`,
|
||||||
gotify: `{url}/{endpoint}`,
|
gotify: `{url}/{endpoint}`,
|
||||||
prowlarr: `{url}/api/v1/{endpoint}`,
|
prowlarr: `{url}/api/v1/{endpoint}`,
|
||||||
jackett: `{url}/api/v2.0/{endpoint}?apikey={key}&configured=true`
|
jackett: `{url}/api/v2.0/{endpoint}?apikey={key}&configured=true`,
|
||||||
|
adguard: `{url}/control/{endpoint}`,
|
||||||
};
|
};
|
||||||
|
|
||||||
export function formatApiCall(api, args) {
|
export function formatApiCall(api, args) {
|
||||||
|
|||||||
@@ -10,8 +10,17 @@ export default async function genericProxyHandler(req, res) {
|
|||||||
|
|
||||||
if (widget) {
|
if (widget) {
|
||||||
const url = new URL(formatApiCall(widget.type, { endpoint, ...widget }));
|
const url = new URL(formatApiCall(widget.type, { endpoint, ...widget }));
|
||||||
|
|
||||||
|
let headers;
|
||||||
|
if (widget.username && widget.password) {
|
||||||
|
headers = {
|
||||||
|
Authorization: `Basic ${Buffer.from(`${widget.username}:${widget.password}`).toString("base64")}`,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
const [status, contentType, data] = await httpProxy(url, {
|
const [status, contentType, data] = await httpProxy(url, {
|
||||||
method: req.method,
|
method: req.method,
|
||||||
|
headers,
|
||||||
});
|
});
|
||||||
|
|
||||||
if (contentType) res.setHeader("Content-Type", contentType);
|
if (contentType) res.setHeader("Content-Type", contentType);
|
||||||
|
|||||||
Reference in New Issue
Block a user