From 539e0f005a026e44bd35653f716323e3e738aa0f Mon Sep 17 00:00:00 2001 From: 3vilson Date: Sun, 18 Sep 2022 16:34:50 +0000 Subject: [PATCH 01/56] Translated using Weblate (German) Currently translated at 96.2% (104 of 108 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/ --- public/locales/de/common.json | 84 +++++++++++++++++------------------ 1 file changed, 42 insertions(+), 42 deletions(-) diff --git a/public/locales/de/common.json b/public/locales/de/common.json index 08ddddd7..f5b99bc9 100644 --- a/public/locales/de/common.json +++ b/public/locales/de/common.json @@ -48,9 +48,9 @@ "movies": "Filme" }, "readarr": { - "wanted": "Wanted", - "queued": "Queued", - "books": "Books" + "wanted": "Gesucht", + "queued": "In Warteschlange", + "books": "Bücher" }, "ombi": { "pending": "Ausstehend", @@ -79,8 +79,8 @@ }, "traefik": { "routers": "Router", - "services": "Services", - "middleware": "Middleware" + "services": "Dienste", + "middleware": "Zwischenanwendung" }, "npm": { "enabled": "Aktiviert", @@ -94,67 +94,67 @@ "wait": "Bitte warten" }, "overseerr": { - "pending": "Pending", - "approved": "Approved", - "available": "Available" + "pending": "Ausstehend", + "approved": "Genehmigt", + "available": "Verfügbar" }, "sabnzbd": { - "rate": "Rate", - "queue": "Queue", - "timeleft": "Time Left" + "rate": "Geschwindigkeit", + "queue": "Warteschlange", + "timeleft": "Verbleibende Zeit" }, "nzbget": { - "rate": "Rate", - "remaining": "Remaining", - "downloaded": "Downloaded" + "rate": "Geschwindigkeit", + "remaining": "Verbleibend", + "downloaded": "Heruntergeladen" }, "coinmarketcap": { - "configure": "Configure one or more crypto currencies to track", - "1hour": "1 Hour", - "1day": "1 Day", - "7days": "7 Days", - "30days": "30 Days" + "configure": "Konfiguriere eine oder mehrere Kryptowährungen zur Verfolgung", + "1hour": "1 Stunde", + "1day": "1 Tag", + "7days": "7 Tage", + "30days": "30 Tage" }, "gotify": { - "apps": "Applications", - "clients": "Clients", - "messages": "Messages" + "apps": "Programme", + "clients": "Benutzer", + "messages": "Nachrichten" }, "prowlarr": { - "enableIndexers": "Indexers", - "numberOfGrabs": "Grabs", - "numberOfQueries": "Queries", - "numberOfFailGrabs": "Fail Grabs", - "numberOfFailQueries": "Fail Queries" + "enableIndexers": "Indexer", + "numberOfGrabs": "Abrufungen", + "numberOfQueries": "Anfragen", + "numberOfFailGrabs": "Fehlgeschlagene Abrufungen", + "numberOfFailQueries": "Fehlgeschlagene Anfragen" }, "transmission": { - "download": "Download", - "upload": "Upload", + "download": "Herunterladen", + "upload": "Hochladen", "leech": "Leech", "seed": "Seed" }, "jackett": { - "configured": "Configured", - "errored": "Errored" + "configured": "Konfiguriert", + "errored": "Fehlerhaft" }, "bazarr": { - "missingEpisodes": "Missing Episodes", - "missingMovies": "Missing Movies" + "missingEpisodes": "Fehlende Episoden", + "missingMovies": "Fehlende Filme" }, "lidarr": { - "wanted": "Wanted", - "queued": "Queued", - "albums": "Albums" + "wanted": "Gesucht", + "queued": "In Warteschlange", + "albums": "Alben" }, "adguard": { - "queries": "Queries", - "blocked": "Blocked", - "filtered": "Filtered", - "latency": "Latency" + "queries": "Anfragen", + "blocked": "Blockiert", + "filtered": "Gefiltert", + "latency": "Latenz" }, "qbittorrent": { - "download": "Download", - "upload": "Upload", + "download": "Herunterladen", + "upload": "Hochladen", "leech": "Leech", "seed": "Seed" } From 586ded6b3f618e8a6262885cc2a23a46543551fc Mon Sep 17 00:00:00 2001 From: Pablo Garcia de los Salmones Valencia Date: Tue, 20 Sep 2022 03:41:10 +0200 Subject: [PATCH 02/56] Add Mastodon widget --- public/locales/en/common.json | 5 +++ src/components/services/widget.jsx | 2 + .../services/widgets/service/mastodon.jsx | 37 +++++++++++++++++++ src/pages/api/services/proxy.js | 1 + src/utils/api-helpers.js | 1 + 5 files changed, 46 insertions(+) create mode 100644 src/components/services/widgets/service/mastodon.jsx diff --git a/public/locales/en/common.json b/public/locales/en/common.json index 26f2e432..1347c1af 100644 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -168,5 +168,10 @@ "jackett": { "configured": "Configured", "errored": "Errored" + }, + "mastodon": { + "user_count": "Users", + "status_count": "Posts", + "domain_count": "Domains" } } diff --git a/src/components/services/widget.jsx b/src/components/services/widget.jsx index 01dec306..5e07618b 100644 --- a/src/components/services/widget.jsx +++ b/src/components/services/widget.jsx @@ -27,6 +27,7 @@ import Gotify from "./widgets/service/gotify"; import Prowlarr from "./widgets/service/prowlarr"; import Jackett from "./widgets/service/jackett"; import AdGuard from "./widgets/service/adguard"; +import Mastodon from "./widgets/service/mastodon"; const widgetMappings = { docker: Docker, @@ -56,6 +57,7 @@ const widgetMappings = { prowlarr: Prowlarr, jackett: Jackett, adguard: AdGuard, + mastodon: Mastodon, }; export default function Widget({ service }) { diff --git a/src/components/services/widgets/service/mastodon.jsx b/src/components/services/widgets/service/mastodon.jsx new file mode 100644 index 00000000..9d2ded4a --- /dev/null +++ b/src/components/services/widgets/service/mastodon.jsx @@ -0,0 +1,37 @@ +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 Mastodon({ service }) { + const { t } = useTranslation(); + + const config = service.widget; + + const { data: statsData, error: statsError } = useSWR(formatApiUrl(config, `instance`)); + + if (statsError) { + return ; + } + + if (!statsData) { + return ( + + + + + + ); + } + + return ( + + + + + + ); +} diff --git a/src/pages/api/services/proxy.js b/src/pages/api/services/proxy.js index f0a7eed5..65dbe88b 100644 --- a/src/pages/api/services/proxy.js +++ b/src/pages/api/services/proxy.js @@ -81,6 +81,7 @@ const serviceProxyHandlers = { sabnzbd: genericProxyHandler, jackett: genericProxyHandler, adguard: genericProxyHandler, + mastodon: genericProxyHandler, // uses X-API-Key (or similar) header auth gotify: credentialedProxyHandler, portainer: credentialedProxyHandler, diff --git a/src/utils/api-helpers.js b/src/utils/api-helpers.js index be24f8a2..a8112efb 100644 --- a/src/utils/api-helpers.js +++ b/src/utils/api-helpers.js @@ -24,6 +24,7 @@ const formats = { prowlarr: `{url}/api/v1/{endpoint}`, jackett: `{url}/api/v2.0/{endpoint}?apikey={key}&configured=true`, adguard: `{url}/control/{endpoint}`, + mastodon: `{url}/api/v1/{endpoint}`, }; export function formatApiCall(api, args) { From f7000a280e6fc7a7012bb2a48adeec8ba533255c Mon Sep 17 00:00:00 2001 From: Pablo Garcia de los Salmones Valencia Date: Tue, 20 Sep 2022 04:41:56 +0200 Subject: [PATCH 03/56] Add Syncthing Relay Server widget --- public/locales/en/common.json | 5 +++ src/components/services/widget.jsx | 2 + .../services/widgets/service/strelaysrv.jsx | 38 +++++++++++++++++++ src/pages/api/services/proxy.js | 1 + src/utils/api-helpers.js | 1 + 5 files changed, 47 insertions(+) create mode 100644 src/components/services/widgets/service/strelaysrv.jsx diff --git a/public/locales/en/common.json b/public/locales/en/common.json index 26f2e432..23e6dad8 100644 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -168,5 +168,10 @@ "jackett": { "configured": "Configured", "errored": "Errored" + }, + "strelaysrv": { + "numActiveSessions": "Sessions", + "numConnections": "Connections", + "dataRelayed": "Data Relayed" } } diff --git a/src/components/services/widget.jsx b/src/components/services/widget.jsx index 01dec306..c3fb1630 100644 --- a/src/components/services/widget.jsx +++ b/src/components/services/widget.jsx @@ -27,6 +27,7 @@ import Gotify from "./widgets/service/gotify"; import Prowlarr from "./widgets/service/prowlarr"; import Jackett from "./widgets/service/jackett"; import AdGuard from "./widgets/service/adguard"; +import StRelaySrv from "./widgets/service/strelaysrv"; const widgetMappings = { docker: Docker, @@ -56,6 +57,7 @@ const widgetMappings = { prowlarr: Prowlarr, jackett: Jackett, adguard: AdGuard, + strelaysrv: StRelaySrv, }; export default function Widget({ service }) { diff --git a/src/components/services/widgets/service/strelaysrv.jsx b/src/components/services/widgets/service/strelaysrv.jsx new file mode 100644 index 00000000..8491d7e9 --- /dev/null +++ b/src/components/services/widgets/service/strelaysrv.jsx @@ -0,0 +1,38 @@ +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 StRelaySrv({ service }) { + const { t } = useTranslation(); + + const config = service.widget; + + const { data: statsData, error: statsError } = useSWR(formatApiUrl(config, `status`)); + + if (statsError) { + return ; + } + + if (!statsData) { + return ( + + + + + + ); + } + + return ( + + + + + + + ); +} diff --git a/src/pages/api/services/proxy.js b/src/pages/api/services/proxy.js index f0a7eed5..fa8b7ab3 100644 --- a/src/pages/api/services/proxy.js +++ b/src/pages/api/services/proxy.js @@ -81,6 +81,7 @@ const serviceProxyHandlers = { sabnzbd: genericProxyHandler, jackett: genericProxyHandler, adguard: genericProxyHandler, + strelaysrv: genericProxyHandler, // uses X-API-Key (or similar) header auth gotify: credentialedProxyHandler, portainer: credentialedProxyHandler, diff --git a/src/utils/api-helpers.js b/src/utils/api-helpers.js index be24f8a2..46490781 100644 --- a/src/utils/api-helpers.js +++ b/src/utils/api-helpers.js @@ -24,6 +24,7 @@ const formats = { prowlarr: `{url}/api/v1/{endpoint}`, jackett: `{url}/api/v2.0/{endpoint}?apikey={key}&configured=true`, adguard: `{url}/control/{endpoint}`, + strelaysrv: `{url}/{endpoint}`, }; export function formatApiCall(api, args) { From f281d86e8afe51c744daff00e657e6a6f5a76c7e Mon Sep 17 00:00:00 2001 From: Pablo Garcia de los Salmones Valencia Date: Tue, 20 Sep 2022 05:29:24 +0200 Subject: [PATCH 04/56] Fixed missing text --- public/locales/en/common.json | 3 ++- src/components/services/widgets/service/strelaysrv.jsx | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/public/locales/en/common.json b/public/locales/en/common.json index 23e6dad8..82600d7c 100644 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -172,6 +172,7 @@ "strelaysrv": { "numActiveSessions": "Sessions", "numConnections": "Connections", - "dataRelayed": "Data Relayed" + "dataRelayed": "Data Relayed", + "transferRate": "Transfer Rate" } } diff --git a/src/components/services/widgets/service/strelaysrv.jsx b/src/components/services/widgets/service/strelaysrv.jsx index 8491d7e9..aaf75daa 100644 --- a/src/components/services/widgets/service/strelaysrv.jsx +++ b/src/components/services/widgets/service/strelaysrv.jsx @@ -31,8 +31,8 @@ export default function StRelaySrv({ service }) { - - + + ); } From 077d21eb7e58f63be4e8316b43fc48e9d985c76f Mon Sep 17 00:00:00 2001 From: Pablo Garcia de los Salmones Valencia Date: Wed, 21 Sep 2022 02:15:05 +0200 Subject: [PATCH 05/56] Updated stat literals to single words --- public/locales/en/common.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/public/locales/en/common.json b/public/locales/en/common.json index 82600d7c..cb9c20c5 100644 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -172,7 +172,7 @@ "strelaysrv": { "numActiveSessions": "Sessions", "numConnections": "Connections", - "dataRelayed": "Data Relayed", - "transferRate": "Transfer Rate" + "dataRelayed": "Relayed", + "transferRate": "Rate" } } From 280bb5fc817e1bc69486c427a69c00eb43ec3f6f Mon Sep 17 00:00:00 2001 From: Jason Fischer Date: Tue, 20 Sep 2022 20:16:04 -0700 Subject: [PATCH 06/56] Add Winston for log handling - write log data to 'homepage.log' --- .gitignore | 4 + package.json | 3 +- pnpm-lock.yaml | 141 +++++++++++++++++++++++++++++++- src/pages/api/services/proxy.js | 30 ++++--- src/utils/logger.js | 76 +++++++++++++++++ src/utils/proxies/generic.js | 8 +- 6 files changed, 248 insertions(+), 14 deletions(-) create mode 100644 src/utils/logger.js diff --git a/.gitignore b/.gitignore index 32e06969..7ab221f9 100644 --- a/.gitignore +++ b/.gitignore @@ -19,6 +19,10 @@ .DS_Store *.pem +# log files +error.log +homepage.log + # debug npm-debug.log* yarn-debug.log* diff --git a/package.json b/package.json index dd9f7f87..bfc67e6f 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,8 @@ "rutorrent-promise": "^2.0.0", "shvl": "^3.0.0", "swr": "^1.3.0", - "tough-cookie": "^4.1.2" + "tough-cookie": "^4.1.2", + "winston": "^3.8.2" }, "devDependencies": { "autoprefixer": "^10.4.9", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 19309218..9d0f65b0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -38,6 +38,7 @@ specifiers: tailwindcss: ^3.1.8 tough-cookie: ^4.1.2 typescript: ^4.8.3 + winston: ^3.8.2 dependencies: '@headlessui/react': 1.7.0_biqbaboplfbrettd7655fr4n2y @@ -63,6 +64,7 @@ dependencies: shvl: 3.0.0 swr: 1.3.0_react@18.2.0 tough-cookie: 4.1.2 + winston: 3.8.2 devDependencies: autoprefixer: 10.4.9_postcss@8.4.16 @@ -100,6 +102,19 @@ packages: resolution: {integrity: sha512-wMue2Sy4GAVTk6Ic4tJVcnfdau+gx2EnG7S+uAEe+TWJFqE4YoWN4/H8MSLj4eYJKxGg26lZwboEniNiNwZQ6Q==} dev: false + /@colors/colors/1.5.0: + resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} + engines: {node: '>=0.1.90'} + dev: false + + /@dabh/diagnostics/2.0.3: + resolution: {integrity: sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==} + dependencies: + colorspace: 1.1.4 + enabled: 2.0.0 + kuler: 2.0.0 + dev: false + /@eslint/eslintrc/1.3.2: resolution: {integrity: sha512-AXYd23w1S/bv3fTs3Lz0vjiYemS08jWkI3hYyS9I1ry+0f+Yjs1wm+sU0BS8qDOPrBIkp4qHYC16I8uVtpLajQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -500,6 +515,10 @@ packages: resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==} dev: true + /async/3.2.4: + resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==} + dev: false + /asynckit/0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} dev: false @@ -646,6 +665,12 @@ packages: resolution: {integrity: sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==} dev: false + /color-convert/1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + dependencies: + color-name: 1.1.3 + dev: false + /color-convert/2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} @@ -653,9 +678,34 @@ packages: color-name: 1.1.4 dev: true + /color-name/1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + dev: false + /color-name/1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + /color-string/1.9.1: + resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + dependencies: + color-name: 1.1.4 + simple-swizzle: 0.2.2 + dev: false + + /color/3.2.1: + resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==} + dependencies: + color-convert: 1.9.3 + color-string: 1.9.1 + dev: false + + /colorspace/1.1.4: + resolution: {integrity: sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==} + dependencies: + color: 3.2.1 + text-hex: 1.0.0 + dev: false + /combined-stream/1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} @@ -837,6 +887,10 @@ packages: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} dev: true + /enabled/2.0.0: + resolution: {integrity: sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==} + dev: false + /end-of-stream/1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} dependencies: @@ -1323,6 +1377,10 @@ packages: dependencies: reusify: 1.0.4 + /fecha/4.2.3: + resolution: {integrity: sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==} + dev: false + /file-entry-cache/6.0.1: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} @@ -1356,6 +1414,10 @@ packages: resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} dev: true + /fn.name/1.1.0: + resolution: {integrity: sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==} + dev: false + /follow-redirects/1.15.2: resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} engines: {node: '>=4.0'} @@ -1602,6 +1664,10 @@ packages: side-channel: 1.0.4 dev: true + /is-arrayish/0.3.2: + resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} + dev: false + /is-bigint/1.0.4: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} dependencies: @@ -1679,6 +1745,11 @@ packages: call-bind: 1.0.2 dev: true + /is-stream/2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + dev: false + /is-string/1.0.7: resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} engines: {node: '>= 0.4'} @@ -1743,6 +1814,10 @@ packages: object.assign: 4.1.4 dev: true + /kuler/2.0.0: + resolution: {integrity: sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==} + dev: false + /language-subtag-registry/0.3.22: resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} dev: true @@ -1776,6 +1851,16 @@ packages: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} dev: true + /logform/2.4.2: + resolution: {integrity: sha512-W4c9himeAwXEdZ05dQNerhFz2XG80P9Oj0loPUMV23VC2it0orMHQhJm4hdnnor3rd1HsGf6a2lPwBM1zeXHGw==} + dependencies: + '@colors/colors': 1.5.0 + fecha: 4.2.3 + ms: 2.1.3 + safe-stable-stringify: 2.4.0 + triple-beam: 1.3.0 + dev: false + /loose-envify/1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true @@ -1843,7 +1928,6 @@ packages: /ms/2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - dev: true /nan/2.16.0: resolution: {integrity: sha512-UdAqHyFngu7TfQKsCBgAA6pWDkT8MAO7d0jyOecVhN5354xbLqdn8mV9Tat9gepAupm0bt2DbeaSC8vS52MuFA==} @@ -2000,6 +2084,12 @@ packages: dependencies: wrappy: 1.0.2 + /one-time/1.0.0: + resolution: {integrity: sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==} + dependencies: + fn.name: 1.1.0 + dev: false + /optionator/0.9.1: resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} engines: {node: '>= 0.8.0'} @@ -2347,6 +2437,11 @@ packages: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} dev: false + /safe-stable-stringify/2.4.0: + resolution: {integrity: sha512-eehKHKpab6E741ud7ZIMcXhKcP6TSIezPkNZhy5U8xC6+VvrRdUA2tMgxGxaGl4cz7c2Ew5+mg5+wNB16KQqrA==} + engines: {node: '>=10'} + dev: false + /safer-buffer/2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} dev: false @@ -2398,6 +2493,12 @@ packages: object-inspect: 1.12.2 dev: true + /simple-swizzle/0.2.2: + resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} + dependencies: + is-arrayish: 0.3.2 + dev: false + /slash/3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} @@ -2423,6 +2524,10 @@ packages: nan: 2.16.0 dev: false + /stack-trace/0.0.10: + resolution: {integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==} + dev: false + /statuses/2.0.1: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} @@ -2567,6 +2672,10 @@ packages: readable-stream: 3.6.0 dev: false + /text-hex/1.0.0: + resolution: {integrity: sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==} + dev: false + /text-table/0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true @@ -2596,6 +2705,10 @@ packages: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} dev: false + /triple-beam/1.3.0: + resolution: {integrity: sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==} + dev: false + /tsconfig-paths/3.14.1: resolution: {integrity: sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==} dependencies: @@ -2733,6 +2846,32 @@ packages: isexe: 2.0.0 dev: true + /winston-transport/4.5.0: + resolution: {integrity: sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q==} + engines: {node: '>= 6.4.0'} + dependencies: + logform: 2.4.2 + readable-stream: 3.6.0 + triple-beam: 1.3.0 + dev: false + + /winston/3.8.2: + resolution: {integrity: sha512-MsE1gRx1m5jdTTO9Ld/vND4krP2To+lgDoMEHGGa4HIlAUyXJtfc7CxQcGXVyz2IBpw5hbFkj2b/AtUdQwyRew==} + engines: {node: '>= 12.0.0'} + dependencies: + '@colors/colors': 1.5.0 + '@dabh/diagnostics': 2.0.3 + async: 3.2.4 + is-stream: 2.0.1 + logform: 2.4.2 + one-time: 1.0.0 + readable-stream: 3.6.0 + safe-stable-stringify: 2.4.0 + stack-trace: 0.0.10 + triple-beam: 1.3.0 + winston-transport: 4.5.0 + dev: false + /word-wrap/1.2.3: resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} engines: {node: '>=0.10.0'} diff --git a/src/pages/api/services/proxy.js b/src/pages/api/services/proxy.js index f0a7eed5..0264a778 100644 --- a/src/pages/api/services/proxy.js +++ b/src/pages/api/services/proxy.js @@ -1,3 +1,4 @@ +import logger from "utils/logger"; import genericProxyHandler from "utils/proxies/generic"; import credentialedProxyHandler from "utils/proxies/credentialed"; import rutorrentProxyHandler from "utils/proxies/rutorrent"; @@ -98,20 +99,27 @@ const serviceProxyHandlers = { }; export default async function handler(req, res) { - const { type } = req.query; + try { + const { type } = req.query; - const serviceProxyHandler = serviceProxyHandlers[type]; + const serviceProxyHandler = serviceProxyHandlers[type]; - if (serviceProxyHandler) { - if (serviceProxyHandler instanceof Function) { - return serviceProxyHandler(req, res); + if (serviceProxyHandler) { + if (serviceProxyHandler instanceof Function) { + return serviceProxyHandler(req, res); + } + + const { proxy, maps } = serviceProxyHandler; + if (proxy) { + return proxy(req, res, maps); + } } - const { proxy, maps } = serviceProxyHandler; - if (proxy) { - return proxy(req, res, maps); - } + logger.debug("Unknown proxy service type: %s", type); + return res.status(403).json({ error: "Unkown proxy service type" }); + } + catch (ex) { + logger.error(ex); + return res.status(500).send({ error: "Unexpected error" }); } - - return res.status(403).json({ error: "Unkown proxy service type" }); } diff --git a/src/utils/logger.js b/src/utils/logger.js new file mode 100644 index 00000000..2c2fea66 --- /dev/null +++ b/src/utils/logger.js @@ -0,0 +1,76 @@ +import winston from "winston"; + +function messageFormatter(logInfo) { + if (logInfo.stack) { + return `[${logInfo.timestamp}] ${logInfo.level}: ${logInfo.stack}`; + } + return `[${logInfo.timestamp}] ${logInfo.level}: ${logInfo.message}`; +}; + +const consoleFormat = winston.format.combine( + winston.format.errors({ stack: true }), + winston.format.splat(), + winston.format.timestamp(), + winston.format.colorize(), + winston.format.printf(messageFormatter) +); + +const fileFormat = winston.format.combine( + winston.format.errors({ stack: true }), + winston.format.splat(), + winston.format.timestamp(), + winston.format.printf(messageFormatter) +); + +const logger = winston.createLogger({ + level: process.env.LOG_LEVEL || 'info', + transports: [ + new winston.transports.Console({ + format: consoleFormat, + handleExceptions: true, + handleRejections: true + }), + + new winston.transports.File({ + format: fileFormat, + filename: 'homepage.log', + handleExceptions: true, + handleRejections: true + }), + ] +}); + +function debug(message, ...args) { + logger.debug(message, ...args); +} + +function verbose(message, ...args) { + logger.verbose(message, ...args); +} + +function info(message, ...args) { + logger.info(message, ...args); +} + +function warn(message, ...args) { + logger.warn(message, ...args); +} + +function error(message, ...args) { + logger.error(message, ...args); +} + +function crit(message, ...args) { + logger.crit(message, ...args); +} + +const thisModule = { + debug, + verbose, + info, + warn, + error, + crit +}; + +export default thisModule; \ No newline at end of file diff --git a/src/utils/proxies/generic.js b/src/utils/proxies/generic.js index 41c013db..06c6bbf4 100644 --- a/src/utils/proxies/generic.js +++ b/src/utils/proxies/generic.js @@ -1,6 +1,7 @@ import getServiceWidget from "utils/service-helpers"; import { formatApiCall } from "utils/api-helpers"; import { httpProxy } from "utils/http"; +import logger from "utils/logger"; export default async function genericProxyHandler(req, res, maps) { const { group, service, endpoint } = req.query; @@ -24,7 +25,7 @@ export default async function genericProxyHandler(req, res, maps) { }); let resultData = data; - if (maps?.[endpoint]) { + if ((status === 200) && (maps?.[endpoint])) { resultData = maps[endpoint](data); } @@ -34,9 +35,14 @@ export default async function genericProxyHandler(req, res, maps) { return res.status(status).end(); } + if (status >= 400) { + logger.debug("HTTP Error %d calling %s//%s%s...", status, url.protocol, url.hostname, url.pathname); + } + return res.status(status).send(resultData); } } + logger.debug("Invalid or missing proxy service type '%s' in group '%s'", service, group); return res.status(400).json({ error: "Invalid proxy service type" }); } From e4e5ad7eba531fed307f73fca67599444c153ebf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Manuel=20Benn=C3=A0ssar=20Carretero?= Date: Tue, 20 Sep 2022 11:48:23 +0000 Subject: [PATCH 07/56] Translated using Weblate (Catalan) Currently translated at 100.0% (108 of 108 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/ --- public/locales/ca/common.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/public/locales/ca/common.json b/public/locales/ca/common.json index a0763633..695192be 100644 --- a/public/locales/ca/common.json +++ b/public/locales/ca/common.json @@ -155,7 +155,7 @@ "qbittorrent": { "download": "Descàrrega", "upload": "Càrrega", - "leech": "Leech", - "seed": "Seed" + "leech": "Companys", + "seed": "Llavors" } } From b46cb0a1f70b4c5c0d5ac82f089f0af2040c6b00 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 21 Sep 2022 05:39:25 +0000 Subject: [PATCH 08/56] Translated using Weblate (German) Currently translated at 93.6% (104 of 111 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/ --- public/locales/de/common.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/public/locales/de/common.json b/public/locales/de/common.json index f5b99bc9..b3c18080 100644 --- a/public/locales/de/common.json +++ b/public/locales/de/common.json @@ -157,5 +157,10 @@ "upload": "Hochladen", "leech": "Leech", "seed": "Seed" + }, + "mastodon": { + "user_count": "Users", + "status_count": "Posts", + "domain_count": "Domains" } } From f43ce0db44ab8e8fd996a899754b0cba3c2db782 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 21 Sep 2022 05:39:26 +0000 Subject: [PATCH 09/56] Translated using Weblate (Spanish) Currently translated at 97.2% (108 of 111 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/ --- public/locales/es/common.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/public/locales/es/common.json b/public/locales/es/common.json index d5d32ce0..3c3e8409 100644 --- a/public/locales/es/common.json +++ b/public/locales/es/common.json @@ -157,5 +157,10 @@ "upload": "Subida", "leech": "Compañeros", "seed": "Semillas" + }, + "mastodon": { + "user_count": "Users", + "status_count": "Posts", + "domain_count": "Domains" } } From 52eaddae37bcbe452b492eb209ba3f2c14d69b28 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 21 Sep 2022 05:39:26 +0000 Subject: [PATCH 10/56] Translated using Weblate (French) Currently translated at 97.2% (108 of 111 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/ --- public/locales/fr/common.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/public/locales/fr/common.json b/public/locales/fr/common.json index 14544d2d..39ce2988 100644 --- a/public/locales/fr/common.json +++ b/public/locales/fr/common.json @@ -168,5 +168,10 @@ "upload": "Envoi", "leech": "Leech", "seed": "Seed" + }, + "mastodon": { + "user_count": "Users", + "status_count": "Posts", + "domain_count": "Domains" } } From 42baa4b188180a335cf69655242adb073c4c7262 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 21 Sep 2022 05:39:26 +0000 Subject: [PATCH 11/56] Translated using Weblate (Portuguese) Currently translated at 79.2% (88 of 111 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/ --- public/locales/pt/common.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/public/locales/pt/common.json b/public/locales/pt/common.json index 6394df8d..2ba75ec1 100644 --- a/public/locales/pt/common.json +++ b/public/locales/pt/common.json @@ -168,5 +168,10 @@ "upload": "Upload", "leech": "Leech", "seed": "Seed" + }, + "mastodon": { + "user_count": "Users", + "status_count": "Posts", + "domain_count": "Domains" } } From 6174f53f37fd71ad9b0c9d4b6772a50ea2790bf3 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 21 Sep 2022 05:39:26 +0000 Subject: [PATCH 12/56] Translated using Weblate (Russian) Currently translated at 20.7% (23 of 111 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/ --- public/locales/ru/common.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/public/locales/ru/common.json b/public/locales/ru/common.json index 73da2e36..f63496bd 100644 --- a/public/locales/ru/common.json +++ b/public/locales/ru/common.json @@ -157,5 +157,10 @@ "upload": "Upload", "leech": "Leech", "seed": "Seed" + }, + "mastodon": { + "user_count": "Users", + "status_count": "Posts", + "domain_count": "Domains" } } From e4825531c42e093b2c9f50ef84b272f4799c6039 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 21 Sep 2022 05:39:26 +0000 Subject: [PATCH 13/56] Translated using Weblate (Chinese (Simplified)) Currently translated at 97.2% (108 of 111 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/ --- public/locales/zh-CN/common.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/public/locales/zh-CN/common.json b/public/locales/zh-CN/common.json index f8d9f802..6f941905 100644 --- a/public/locales/zh-CN/common.json +++ b/public/locales/zh-CN/common.json @@ -157,5 +157,10 @@ "upload": "上传", "leech": "吸血", "seed": "做种" + }, + "mastodon": { + "user_count": "Users", + "status_count": "Posts", + "domain_count": "Domains" } } From 8f21d1ae31f3d926386c7cd723086fe2464aed40 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 21 Sep 2022 05:39:27 +0000 Subject: [PATCH 14/56] Translated using Weblate (Italian) Currently translated at 69.3% (77 of 111 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/ --- public/locales/it/common.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/public/locales/it/common.json b/public/locales/it/common.json index 2e07b8f9..09241cef 100644 --- a/public/locales/it/common.json +++ b/public/locales/it/common.json @@ -157,5 +157,10 @@ "leech": "Leech", "upload": "Upload", "seed": "Seed" + }, + "mastodon": { + "user_count": "Users", + "status_count": "Posts", + "domain_count": "Domains" } } From 6beefbf39a76adbbd9109ebb557fa229331eba8e Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 21 Sep 2022 05:39:25 +0000 Subject: [PATCH 15/56] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegian?= =?UTF-8?q?=20Bokm=C3=A5l)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 71.1% (79 of 111 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/ --- public/locales/nb-NO/common.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/public/locales/nb-NO/common.json b/public/locales/nb-NO/common.json index 93bd9c1c..1ee92bf4 100644 --- a/public/locales/nb-NO/common.json +++ b/public/locales/nb-NO/common.json @@ -157,5 +157,10 @@ "upload": "Upload", "leech": "Leech", "seed": "Seed" + }, + "mastodon": { + "user_count": "Users", + "status_count": "Posts", + "domain_count": "Domains" } } From 50954cf3d40309da7f02c925afdcb68f17c71193 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 21 Sep 2022 05:39:27 +0000 Subject: [PATCH 16/56] Translated using Weblate (Vietnamese) Currently translated at 39.6% (44 of 111 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/ --- public/locales/vi/common.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/public/locales/vi/common.json b/public/locales/vi/common.json index e72c01a6..2fdbd010 100644 --- a/public/locales/vi/common.json +++ b/public/locales/vi/common.json @@ -157,5 +157,10 @@ "upload": "Upload", "leech": "Leech", "seed": "Seed" + }, + "mastodon": { + "user_count": "Users", + "status_count": "Posts", + "domain_count": "Domains" } } From 45a1a9ed5adbc8258b7fec77ad44358475535a8a Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 21 Sep 2022 05:39:27 +0000 Subject: [PATCH 17/56] Translated using Weblate (Dutch) Currently translated at 56.7% (63 of 111 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/ --- public/locales/nl/common.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/public/locales/nl/common.json b/public/locales/nl/common.json index d439e2a7..f52a07ab 100644 --- a/public/locales/nl/common.json +++ b/public/locales/nl/common.json @@ -157,5 +157,10 @@ "upload": "Upload", "leech": "Leech", "seed": "Seed" + }, + "mastodon": { + "user_count": "Users", + "status_count": "Posts", + "domain_count": "Domains" } } From d56d9f7a50d8646f69ed79ddfea36edb9494988b Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 21 Sep 2022 05:39:27 +0000 Subject: [PATCH 18/56] Translated using Weblate (Chinese (Traditional)) Currently translated at 8.1% (9 of 111 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/ --- public/locales/zh-Hant/common.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/public/locales/zh-Hant/common.json b/public/locales/zh-Hant/common.json index 6dd8c9b2..46cbefcb 100644 --- a/public/locales/zh-Hant/common.json +++ b/public/locales/zh-Hant/common.json @@ -157,5 +157,10 @@ "upload": "Upload", "leech": "Leech", "seed": "Seed" + }, + "mastodon": { + "user_count": "Users", + "status_count": "Posts", + "domain_count": "Domains" } } From af79061a45effe4bbbc8e7b570114ddd0078863e Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 21 Sep 2022 05:39:24 +0000 Subject: [PATCH 19/56] Translated using Weblate (Catalan) Currently translated at 97.2% (108 of 111 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/ --- public/locales/ca/common.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/public/locales/ca/common.json b/public/locales/ca/common.json index 695192be..115722ad 100644 --- a/public/locales/ca/common.json +++ b/public/locales/ca/common.json @@ -157,5 +157,10 @@ "upload": "Càrrega", "leech": "Companys", "seed": "Llavors" + }, + "mastodon": { + "user_count": "Users", + "status_count": "Posts", + "domain_count": "Domains" } } From 19522b871245d667a88ea9f350ad7f29f259fe8f Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 21 Sep 2022 05:39:24 +0000 Subject: [PATCH 20/56] Translated using Weblate (Polish) Currently translated at 88.2% (98 of 111 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/ --- public/locales/pl/common.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/public/locales/pl/common.json b/public/locales/pl/common.json index 16e53894..d23b4be0 100644 --- a/public/locales/pl/common.json +++ b/public/locales/pl/common.json @@ -157,5 +157,10 @@ "upload": "Upload", "leech": "Leech", "seed": "Seed" + }, + "mastodon": { + "user_count": "Users", + "status_count": "Posts", + "domain_count": "Domains" } } From 7a1013176885322c834f4070327b397c0db4914e Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 21 Sep 2022 05:39:24 +0000 Subject: [PATCH 21/56] Translated using Weblate (Swedish) Currently translated at 86.4% (96 of 111 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sv/ --- public/locales/sv/common.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/public/locales/sv/common.json b/public/locales/sv/common.json index 4e52f59d..da0e60d4 100644 --- a/public/locales/sv/common.json +++ b/public/locales/sv/common.json @@ -157,5 +157,10 @@ "upload": "Upload", "leech": "Leech", "seed": "Seed" + }, + "mastodon": { + "user_count": "Users", + "status_count": "Posts", + "domain_count": "Domains" } } From ed0bf027fc71256ce26fabb87878e795e919d63d Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 21 Sep 2022 05:39:25 +0000 Subject: [PATCH 22/56] Translated using Weblate (Croatian) Currently translated at 8.1% (9 of 111 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/ --- public/locales/hr/common.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/public/locales/hr/common.json b/public/locales/hr/common.json index a2d66c81..9cbeaee2 100644 --- a/public/locales/hr/common.json +++ b/public/locales/hr/common.json @@ -157,5 +157,10 @@ "upload": "Upload", "leech": "Leech", "seed": "Seed" + }, + "mastodon": { + "user_count": "Users", + "status_count": "Posts", + "domain_count": "Domains" } } From 3e731298a5b73f9f020ce6cdd9f1224bba3cd537 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 21 Sep 2022 05:39:25 +0000 Subject: [PATCH 23/56] Translated using Weblate (Hungarian) Currently translated at 97.2% (108 of 111 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/ --- public/locales/hu/common.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/public/locales/hu/common.json b/public/locales/hu/common.json index a3a3abb4..3cbc7b5a 100644 --- a/public/locales/hu/common.json +++ b/public/locales/hu/common.json @@ -157,5 +157,10 @@ "jackett": { "configured": "Beállított", "errored": "Hibás" + }, + "mastodon": { + "user_count": "Users", + "status_count": "Posts", + "domain_count": "Domains" } } From 75244cc40e4825cdd94e49407aa2dd9b419815e9 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 21 Sep 2022 05:39:25 +0000 Subject: [PATCH 24/56] Translated using Weblate (Hebrew) Currently translated at 90.9% (101 of 111 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/he/ --- public/locales/he/common.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/public/locales/he/common.json b/public/locales/he/common.json index fcd4e2cb..0db4b03a 100644 --- a/public/locales/he/common.json +++ b/public/locales/he/common.json @@ -157,5 +157,10 @@ "jackett": { "configured": "מוגדר", "errored": "שגיאה" + }, + "mastodon": { + "user_count": "Users", + "status_count": "Posts", + "domain_count": "Domains" } } From 20ac15b18c0c2674cf37a8e79f09159af5ba59a8 Mon Sep 17 00:00:00 2001 From: Ben Phelps Date: Wed, 21 Sep 2022 08:40:19 +0300 Subject: [PATCH 25/56] allow setting a global link target --- src/components/bookmarks/group.jsx | 13 ++++--------- src/components/bookmarks/item.jsx | 11 ++++++----- src/components/bookmarks/list.jsx | 4 ++-- src/components/services/group.jsx | 4 ++-- src/components/services/item.jsx | 6 +++--- src/components/services/list.jsx | 4 ++-- src/pages/index.jsx | 9 +++++++-- 7 files changed, 26 insertions(+), 25 deletions(-) diff --git a/src/components/bookmarks/group.jsx b/src/components/bookmarks/group.jsx index bf61bcd9..c4a56dec 100644 --- a/src/components/bookmarks/group.jsx +++ b/src/components/bookmarks/group.jsx @@ -1,15 +1,10 @@ import List from "components/bookmarks/list"; -export default function BookmarksGroup({ group }) { +export default function BookmarksGroup({ group, target }) { return ( -
-

- {group.name} -

- +
+

{group.name}

+
); } diff --git a/src/components/bookmarks/item.jsx b/src/components/bookmarks/item.jsx index 5f4e5389..345ef288 100644 --- a/src/components/bookmarks/item.jsx +++ b/src/components/bookmarks/item.jsx @@ -1,11 +1,12 @@ -export default function Item({ bookmark }) { +export default function Item({ bookmark, target = "_blank" }) { const { hostname } = new URL(bookmark.href); return (
  • -
  • - + ); } diff --git a/src/components/bookmarks/list.jsx b/src/components/bookmarks/list.jsx index 3b3774c9..06001c23 100644 --- a/src/components/bookmarks/list.jsx +++ b/src/components/bookmarks/list.jsx @@ -1,10 +1,10 @@ import Item from "components/bookmarks/item"; -export default function List({ bookmarks }) { +export default function List({ bookmarks, target }) { return (
      {bookmarks.map((bookmark) => ( - + ))}
    ); diff --git a/src/components/services/group.jsx b/src/components/services/group.jsx index daae1909..222e908c 100644 --- a/src/components/services/group.jsx +++ b/src/components/services/group.jsx @@ -2,7 +2,7 @@ import classNames from "classnames"; import List from "components/services/list"; -export default function ServicesGroup({ services, layout }) { +export default function ServicesGroup({ services, target, layout }) { return (

    {services.name}

    - +
    ); } diff --git a/src/components/services/item.jsx b/src/components/services/item.jsx index df570fca..4a06b114 100644 --- a/src/components/services/item.jsx +++ b/src/components/services/item.jsx @@ -21,7 +21,7 @@ function resolveIcon(icon) { return `https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/png/${icon}.png`; } -export default function Item({ service }) { +export default function Item({ service, target = "_blank" }) { const hasLink = service.href && service.href !== "#"; return ( @@ -37,7 +37,7 @@ export default function Item({ service }) { (hasLink ? ( @@ -52,7 +52,7 @@ export default function Item({ service }) { {hasLink ? ( diff --git a/src/components/services/list.jsx b/src/components/services/list.jsx index 80b45592..9093ba0a 100644 --- a/src/components/services/list.jsx +++ b/src/components/services/list.jsx @@ -14,7 +14,7 @@ const columnMap = [ "grid-cols-1 md:grid-cols-2 lg:grid-cols-8", ]; -export default function List({ services, layout }) { +export default function List({ services, target, layout }) { return (
      {services.map((service) => ( - + ))}
    ); diff --git a/src/pages/index.jsx b/src/pages/index.jsx index 1b20a020..7f170a6f 100644 --- a/src/pages/index.jsx +++ b/src/pages/index.jsx @@ -133,7 +133,12 @@ function Home({ settings }) { {services && (
    {services.map((group) => ( - + ))}
    )} @@ -141,7 +146,7 @@ function Home({ settings }) { {bookmarks && (
    {bookmarks.map((group) => ( - + ))}
    )} From 244a76de0bfab95ae32795dc19af0890955c16f3 Mon Sep 17 00:00:00 2001 From: Ben Phelps Date: Wed, 21 Sep 2022 08:58:24 +0300 Subject: [PATCH 26/56] fix bookmark styling --- src/components/bookmarks/item.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/bookmarks/item.jsx b/src/components/bookmarks/item.jsx index 345ef288..d618911d 100644 --- a/src/components/bookmarks/item.jsx +++ b/src/components/bookmarks/item.jsx @@ -7,7 +7,7 @@ export default function Item({ bookmark, target = "_blank" }) { href={bookmark.href} title={bookmark.name} target={target} - className="w-full text-left mb-3 cursor-pointer rounded-md font-medium text-theme-700 hover:text-theme-700 dark:text-theme-200 dark:hover:text-theme-300 shadow-md shadow-black/10 dark:shadow-black/20 bg-white/50 hover:bg-theme-300/10 dark:bg-white/10 dark:hover:bg-white/20" + className="block w-full text-left mb-3 cursor-pointer rounded-md font-medium text-theme-700 hover:text-theme-700 dark:text-theme-200 dark:hover:text-theme-300 shadow-md shadow-black/10 dark:shadow-black/20 bg-white/50 hover:bg-theme-300/10 dark:bg-white/10 dark:hover:bg-white/20" >
    From a677fbefbfe842c9fbdbb36a8b63330083c72e26 Mon Sep 17 00:00:00 2001 From: Ben Phelps Date: Wed, 21 Sep 2022 09:00:57 +0300 Subject: [PATCH 27/56] add global settings context will be useful going forward, and simplify widget props being passed around all over the place --- src/components/bookmarks/group.jsx | 4 ++-- src/components/bookmarks/item.jsx | 9 +++++++-- src/components/bookmarks/list.jsx | 4 ++-- src/components/services/group.jsx | 4 ++-- src/components/services/item.jsx | 10 +++++++--- src/components/services/list.jsx | 4 ++-- src/pages/_app.jsx | 5 ++++- src/pages/index.jsx | 30 ++++++++++++++++-------------- src/utils/settings-context.jsx | 15 +++++++++++++++ 9 files changed, 57 insertions(+), 28 deletions(-) create mode 100644 src/utils/settings-context.jsx diff --git a/src/components/bookmarks/group.jsx b/src/components/bookmarks/group.jsx index c4a56dec..af510081 100644 --- a/src/components/bookmarks/group.jsx +++ b/src/components/bookmarks/group.jsx @@ -1,10 +1,10 @@ import List from "components/bookmarks/list"; -export default function BookmarksGroup({ group, target }) { +export default function BookmarksGroup({ group }) { return (

    {group.name}

    - +
    ); } diff --git a/src/components/bookmarks/item.jsx b/src/components/bookmarks/item.jsx index d618911d..c3c5b452 100644 --- a/src/components/bookmarks/item.jsx +++ b/src/components/bookmarks/item.jsx @@ -1,12 +1,17 @@ -export default function Item({ bookmark, target = "_blank" }) { +import { useContext } from "react"; + +import { SettingsContext } from "utils/settings-context"; + +export default function Item({ bookmark }) { const { hostname } = new URL(bookmark.href); + const { settings } = useContext(SettingsContext); return (
  • diff --git a/src/components/bookmarks/list.jsx b/src/components/bookmarks/list.jsx index 06001c23..3b3774c9 100644 --- a/src/components/bookmarks/list.jsx +++ b/src/components/bookmarks/list.jsx @@ -1,10 +1,10 @@ import Item from "components/bookmarks/item"; -export default function List({ bookmarks, target }) { +export default function List({ bookmarks }) { return (
      {bookmarks.map((bookmark) => ( - + ))}
    ); diff --git a/src/components/services/group.jsx b/src/components/services/group.jsx index 222e908c..daae1909 100644 --- a/src/components/services/group.jsx +++ b/src/components/services/group.jsx @@ -2,7 +2,7 @@ import classNames from "classnames"; import List from "components/services/list"; -export default function ServicesGroup({ services, target, layout }) { +export default function ServicesGroup({ services, layout }) { return (

    {services.name}

    - +
    ); } diff --git a/src/components/services/item.jsx b/src/components/services/item.jsx index 4a06b114..82f3741c 100644 --- a/src/components/services/item.jsx +++ b/src/components/services/item.jsx @@ -1,10 +1,13 @@ import Image from "next/future/image"; +import { useContext } from "react"; import { Disclosure } from "@headlessui/react"; import Status from "./status"; import Widget from "./widget"; import Docker from "./widgets/service/docker"; +import { SettingsContext } from "utils/settings-context"; + function resolveIcon(icon) { if (icon.startsWith("http")) { return `/api/proxy?url=${encodeURIComponent(icon)}`; @@ -21,8 +24,9 @@ function resolveIcon(icon) { return `https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/png/${icon}.png`; } -export default function Item({ service, target = "_blank" }) { +export default function Item({ service }) { const hasLink = service.href && service.href !== "#"; + const { settings } = useContext(SettingsContext); return (
  • @@ -37,7 +41,7 @@ export default function Item({ service, target = "_blank" }) { (hasLink ? ( @@ -52,7 +56,7 @@ export default function Item({ service, target = "_blank" }) { {hasLink ? ( diff --git a/src/components/services/list.jsx b/src/components/services/list.jsx index 9093ba0a..80b45592 100644 --- a/src/components/services/list.jsx +++ b/src/components/services/list.jsx @@ -14,7 +14,7 @@ const columnMap = [ "grid-cols-1 md:grid-cols-2 lg:grid-cols-8", ]; -export default function List({ services, target, layout }) { +export default function List({ services, layout }) { return (
      {services.map((service) => ( - + ))}
    ); diff --git a/src/pages/_app.jsx b/src/pages/_app.jsx index 32c9c23f..cb9dd1a6 100644 --- a/src/pages/_app.jsx +++ b/src/pages/_app.jsx @@ -8,6 +8,7 @@ import "styles/theme.css"; import "utils/i18n"; import { ColorProvider } from "utils/color-context"; import { ThemeProvider } from "utils/theme-context"; +import { SettingsProvider } from "utils/settings-context"; function MyApp({ Component, pageProps }) { return ( @@ -18,7 +19,9 @@ function MyApp({ Component, pageProps }) { > - + + + diff --git a/src/pages/index.jsx b/src/pages/index.jsx index 7f170a6f..207b2e6a 100644 --- a/src/pages/index.jsx +++ b/src/pages/index.jsx @@ -13,6 +13,7 @@ import Revalidate from "components/revalidate"; import { getSettings } from "utils/config"; import { ColorContext } from "utils/color-context"; import { ThemeContext } from "utils/theme-context"; +import { SettingsContext } from "utils/settings-context"; const ThemeToggle = dynamic(() => import("components/theme-toggle"), { ssr: false, @@ -26,22 +27,23 @@ const rightAlignedWidgets = ["weatherapi", "openweathermap", "weather", "search" export function getStaticProps() { try { - const settings = getSettings(); + const { providers, ...settings } = getSettings(); + return { props: { - settings, + initialSettings: settings, }, }; } catch (e) { return { props: { - settings: {}, + initialSettings: {}, }, }; } } -export default function Index({ settings }) { +export default function Index({ initialSettings }) { const { data: errorsData } = useSWR("/api/validate"); if (errorsData && errorsData.length > 0) { @@ -68,20 +70,25 @@ export default function Index({ settings }) { ); } - return ; + return ; } -function Home({ settings }) { +function Home({ initialSettings }) { const { i18n } = useTranslation(); const { theme, setTheme } = useContext(ThemeContext); const { color, setColor } = useContext(ColorContext); + const { settings, setSettings } = useContext(SettingsContext); + + if (initialSettings) { + setSettings(initialSettings); + } const { data: services } = useSWR("/api/services"); const { data: bookmarks } = useSWR("/api/bookmarks"); const { data: widgets } = useSWR("/api/widgets"); const wrappedStyle = {}; - if (settings.background) { + if (settings && settings.background) { wrappedStyle.backgroundImage = `url(${settings.background})`; wrappedStyle.backgroundSize = "cover"; wrappedStyle.opacity = settings.backgroundOpacity ?? 1; @@ -133,12 +140,7 @@ function Home({ settings }) { {services && (
    {services.map((group) => ( - + ))}
    )} @@ -146,7 +148,7 @@ function Home({ settings }) { {bookmarks && (
    {bookmarks.map((group) => ( - + ))}
    )} diff --git a/src/utils/settings-context.jsx b/src/utils/settings-context.jsx new file mode 100644 index 00000000..d6993b14 --- /dev/null +++ b/src/utils/settings-context.jsx @@ -0,0 +1,15 @@ +import { createContext, useState, useMemo } from "react"; + +export const SettingsContext = createContext(); + +export function SettingsProvider({ initialSettings, children }) { + const [settings, setSettings] = useState({}); + + if (initialSettings) { + setSettings(initialSettings); + } + + const value = useMemo(() => ({ settings, setSettings }), [settings]); + + return {children}; +} From 077bc356b85db4e3d2cfef1c777e3155d4abcb85 Mon Sep 17 00:00:00 2001 From: Nonoss117 Date: Wed, 21 Sep 2022 05:45:43 +0000 Subject: [PATCH 28/56] Translated using Weblate (French) Currently translated at 100.0% (111 of 111 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/ --- public/locales/fr/common.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/public/locales/fr/common.json b/public/locales/fr/common.json index 39ce2988..8ec61419 100644 --- a/public/locales/fr/common.json +++ b/public/locales/fr/common.json @@ -170,8 +170,8 @@ "seed": "Seed" }, "mastodon": { - "user_count": "Users", - "status_count": "Posts", - "domain_count": "Domains" + "user_count": "Utilisateurs", + "status_count": "Messages", + "domain_count": "Domaines" } } From 4757e25fdc608c300577927bafa873aa539ebdca Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 21 Sep 2022 06:06:35 +0000 Subject: [PATCH 29/56] Translated using Weblate (German) Currently translated at 90.4% (104 of 115 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/ --- public/locales/de/common.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/public/locales/de/common.json b/public/locales/de/common.json index b3c18080..cff97b11 100644 --- a/public/locales/de/common.json +++ b/public/locales/de/common.json @@ -162,5 +162,11 @@ "user_count": "Users", "status_count": "Posts", "domain_count": "Domains" + }, + "strelaysrv": { + "numActiveSessions": "Sessions", + "numConnections": "Connections", + "dataRelayed": "Relayed", + "transferRate": "Rate" } } From c562035776df587fd8390fd4c460ff97594486af Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 21 Sep 2022 06:06:35 +0000 Subject: [PATCH 30/56] Translated using Weblate (Spanish) Currently translated at 93.9% (108 of 115 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/ --- public/locales/es/common.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/public/locales/es/common.json b/public/locales/es/common.json index 3c3e8409..1c38305c 100644 --- a/public/locales/es/common.json +++ b/public/locales/es/common.json @@ -162,5 +162,11 @@ "user_count": "Users", "status_count": "Posts", "domain_count": "Domains" + }, + "strelaysrv": { + "numActiveSessions": "Sessions", + "numConnections": "Connections", + "dataRelayed": "Relayed", + "transferRate": "Rate" } } From 6add7c3d822b1bc785372d724a08acd8b19e0cfd Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 21 Sep 2022 06:06:36 +0000 Subject: [PATCH 31/56] Translated using Weblate (French) Currently translated at 96.5% (111 of 115 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/ --- public/locales/fr/common.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/public/locales/fr/common.json b/public/locales/fr/common.json index 8ec61419..03d9c169 100644 --- a/public/locales/fr/common.json +++ b/public/locales/fr/common.json @@ -173,5 +173,11 @@ "user_count": "Utilisateurs", "status_count": "Messages", "domain_count": "Domaines" + }, + "strelaysrv": { + "numActiveSessions": "Sessions", + "numConnections": "Connections", + "dataRelayed": "Relayed", + "transferRate": "Rate" } } From c89ed904cc059ca630c4b76bc6fb770d22616217 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 21 Sep 2022 06:06:36 +0000 Subject: [PATCH 32/56] Translated using Weblate (Portuguese) Currently translated at 76.5% (88 of 115 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/ --- public/locales/pt/common.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/public/locales/pt/common.json b/public/locales/pt/common.json index 2ba75ec1..415eca6d 100644 --- a/public/locales/pt/common.json +++ b/public/locales/pt/common.json @@ -173,5 +173,11 @@ "user_count": "Users", "status_count": "Posts", "domain_count": "Domains" + }, + "strelaysrv": { + "numActiveSessions": "Sessions", + "numConnections": "Connections", + "dataRelayed": "Relayed", + "transferRate": "Rate" } } From 177acf86d7fa92b9376cf12ff09123c1cbf518d3 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 21 Sep 2022 06:06:36 +0000 Subject: [PATCH 33/56] Translated using Weblate (Russian) Currently translated at 20.0% (23 of 115 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/ --- public/locales/ru/common.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/public/locales/ru/common.json b/public/locales/ru/common.json index f63496bd..6cb0da89 100644 --- a/public/locales/ru/common.json +++ b/public/locales/ru/common.json @@ -162,5 +162,11 @@ "user_count": "Users", "status_count": "Posts", "domain_count": "Domains" + }, + "strelaysrv": { + "numConnections": "Connections", + "dataRelayed": "Relayed", + "transferRate": "Rate", + "numActiveSessions": "Sessions" } } From 6bfa49689e6c46ccb3ece033f0c3e97ef8d55bd5 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 21 Sep 2022 06:06:36 +0000 Subject: [PATCH 34/56] Translated using Weblate (Chinese (Simplified)) Currently translated at 93.9% (108 of 115 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/ --- public/locales/zh-CN/common.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/public/locales/zh-CN/common.json b/public/locales/zh-CN/common.json index 6f941905..966755d7 100644 --- a/public/locales/zh-CN/common.json +++ b/public/locales/zh-CN/common.json @@ -162,5 +162,11 @@ "user_count": "Users", "status_count": "Posts", "domain_count": "Domains" + }, + "strelaysrv": { + "numActiveSessions": "Sessions", + "dataRelayed": "Relayed", + "numConnections": "Connections", + "transferRate": "Rate" } } From ec230ba24904f0adae09bf0f992e4e2381f58cc7 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 21 Sep 2022 06:06:37 +0000 Subject: [PATCH 35/56] Translated using Weblate (Italian) Currently translated at 66.9% (77 of 115 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/ --- public/locales/it/common.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/public/locales/it/common.json b/public/locales/it/common.json index 09241cef..2547fb34 100644 --- a/public/locales/it/common.json +++ b/public/locales/it/common.json @@ -162,5 +162,11 @@ "user_count": "Users", "status_count": "Posts", "domain_count": "Domains" + }, + "strelaysrv": { + "numActiveSessions": "Sessions", + "numConnections": "Connections", + "dataRelayed": "Relayed", + "transferRate": "Rate" } } From f9ce9b771602ea864071ca891e24f18e4c0e1f15 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 21 Sep 2022 06:06:35 +0000 Subject: [PATCH 36/56] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegian?= =?UTF-8?q?=20Bokm=C3=A5l)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 68.6% (79 of 115 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/ --- public/locales/nb-NO/common.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/public/locales/nb-NO/common.json b/public/locales/nb-NO/common.json index 1ee92bf4..9d4924a7 100644 --- a/public/locales/nb-NO/common.json +++ b/public/locales/nb-NO/common.json @@ -162,5 +162,11 @@ "user_count": "Users", "status_count": "Posts", "domain_count": "Domains" + }, + "strelaysrv": { + "numActiveSessions": "Sessions", + "numConnections": "Connections", + "dataRelayed": "Relayed", + "transferRate": "Rate" } } From 897c71f36e90dc73cacb2e79ede0609b42503d66 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 21 Sep 2022 06:06:37 +0000 Subject: [PATCH 37/56] Translated using Weblate (Vietnamese) Currently translated at 38.2% (44 of 115 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/ --- public/locales/vi/common.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/public/locales/vi/common.json b/public/locales/vi/common.json index 2fdbd010..13dc48a8 100644 --- a/public/locales/vi/common.json +++ b/public/locales/vi/common.json @@ -162,5 +162,11 @@ "user_count": "Users", "status_count": "Posts", "domain_count": "Domains" + }, + "strelaysrv": { + "numActiveSessions": "Sessions", + "numConnections": "Connections", + "dataRelayed": "Relayed", + "transferRate": "Rate" } } From 4186bbb3c37a1f6b996b11f41f17c12aa570c21f Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 21 Sep 2022 06:06:37 +0000 Subject: [PATCH 38/56] Translated using Weblate (Dutch) Currently translated at 54.7% (63 of 115 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/ --- public/locales/nl/common.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/public/locales/nl/common.json b/public/locales/nl/common.json index f52a07ab..c4eb9435 100644 --- a/public/locales/nl/common.json +++ b/public/locales/nl/common.json @@ -162,5 +162,11 @@ "user_count": "Users", "status_count": "Posts", "domain_count": "Domains" + }, + "strelaysrv": { + "numActiveSessions": "Sessions", + "numConnections": "Connections", + "dataRelayed": "Relayed", + "transferRate": "Rate" } } From 1d38fd8deafc90481b19d19399efd79c7600449b Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 21 Sep 2022 06:06:38 +0000 Subject: [PATCH 39/56] Translated using Weblate (Chinese (Traditional)) Currently translated at 7.8% (9 of 115 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/ --- public/locales/zh-Hant/common.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/public/locales/zh-Hant/common.json b/public/locales/zh-Hant/common.json index 46cbefcb..691d139c 100644 --- a/public/locales/zh-Hant/common.json +++ b/public/locales/zh-Hant/common.json @@ -162,5 +162,11 @@ "user_count": "Users", "status_count": "Posts", "domain_count": "Domains" + }, + "strelaysrv": { + "numActiveSessions": "Sessions", + "numConnections": "Connections", + "dataRelayed": "Relayed", + "transferRate": "Rate" } } From 8687fe6b2618bc9a640ec795daae38b1f524cc84 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 21 Sep 2022 06:06:34 +0000 Subject: [PATCH 40/56] Translated using Weblate (Catalan) Currently translated at 93.9% (108 of 115 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/ --- public/locales/ca/common.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/public/locales/ca/common.json b/public/locales/ca/common.json index 115722ad..d55d0f61 100644 --- a/public/locales/ca/common.json +++ b/public/locales/ca/common.json @@ -162,5 +162,11 @@ "user_count": "Users", "status_count": "Posts", "domain_count": "Domains" + }, + "strelaysrv": { + "numActiveSessions": "Sessions", + "numConnections": "Connections", + "dataRelayed": "Relayed", + "transferRate": "Rate" } } From 9131a8f118c138d106166b5207470db1be60ccee Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 21 Sep 2022 06:06:35 +0000 Subject: [PATCH 41/56] Translated using Weblate (Polish) Currently translated at 85.2% (98 of 115 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/ --- public/locales/pl/common.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/public/locales/pl/common.json b/public/locales/pl/common.json index d23b4be0..9e51e98f 100644 --- a/public/locales/pl/common.json +++ b/public/locales/pl/common.json @@ -162,5 +162,11 @@ "user_count": "Users", "status_count": "Posts", "domain_count": "Domains" + }, + "strelaysrv": { + "numActiveSessions": "Sessions", + "numConnections": "Connections", + "dataRelayed": "Relayed", + "transferRate": "Rate" } } From a5b7c8439df8458ef79a3a1d28cd8d924780d96b Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 21 Sep 2022 06:06:33 +0000 Subject: [PATCH 42/56] Translated using Weblate (Swedish) Currently translated at 83.4% (96 of 115 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sv/ --- public/locales/sv/common.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/public/locales/sv/common.json b/public/locales/sv/common.json index da0e60d4..c87992dd 100644 --- a/public/locales/sv/common.json +++ b/public/locales/sv/common.json @@ -162,5 +162,11 @@ "user_count": "Users", "status_count": "Posts", "domain_count": "Domains" + }, + "strelaysrv": { + "numActiveSessions": "Sessions", + "numConnections": "Connections", + "dataRelayed": "Relayed", + "transferRate": "Rate" } } From 9e8942398c3078d19da59d4e5ff7255b59756004 Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 21 Sep 2022 06:06:34 +0000 Subject: [PATCH 43/56] Translated using Weblate (Croatian) Currently translated at 7.8% (9 of 115 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/ --- public/locales/hr/common.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/public/locales/hr/common.json b/public/locales/hr/common.json index 9cbeaee2..d1c69cdf 100644 --- a/public/locales/hr/common.json +++ b/public/locales/hr/common.json @@ -162,5 +162,11 @@ "user_count": "Users", "status_count": "Posts", "domain_count": "Domains" + }, + "strelaysrv": { + "numActiveSessions": "Sessions", + "numConnections": "Connections", + "dataRelayed": "Relayed", + "transferRate": "Rate" } } From 5d1041d5643e1a016afed8348e62524975ec600f Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 21 Sep 2022 06:06:34 +0000 Subject: [PATCH 44/56] Translated using Weblate (Hungarian) Currently translated at 93.9% (108 of 115 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/ --- public/locales/hu/common.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/public/locales/hu/common.json b/public/locales/hu/common.json index 3cbc7b5a..e73ca38f 100644 --- a/public/locales/hu/common.json +++ b/public/locales/hu/common.json @@ -162,5 +162,11 @@ "user_count": "Users", "status_count": "Posts", "domain_count": "Domains" + }, + "strelaysrv": { + "numActiveSessions": "Sessions", + "numConnections": "Connections", + "dataRelayed": "Relayed", + "transferRate": "Rate" } } From 1c405ff4ec92a4792d4405a6eea6b8502ff9141b Mon Sep 17 00:00:00 2001 From: Anonymous Date: Wed, 21 Sep 2022 06:06:34 +0000 Subject: [PATCH 45/56] Translated using Weblate (Hebrew) Currently translated at 87.8% (101 of 115 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/he/ --- public/locales/he/common.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/public/locales/he/common.json b/public/locales/he/common.json index 0db4b03a..48a1acd5 100644 --- a/public/locales/he/common.json +++ b/public/locales/he/common.json @@ -162,5 +162,11 @@ "user_count": "Users", "status_count": "Posts", "domain_count": "Domains" + }, + "strelaysrv": { + "numActiveSessions": "Sessions", + "numConnections": "Connections", + "dataRelayed": "Relayed", + "transferRate": "Rate" } } From 3ff756e0571480950b47a3f3b6d2894991ec9f7d Mon Sep 17 00:00:00 2001 From: Ben Phelps Date: Wed, 21 Sep 2022 10:09:24 +0300 Subject: [PATCH 46/56] update readme --- README.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index ed7c5e6f..38660392 100644 --- a/README.md +++ b/README.md @@ -18,9 +18,9 @@ - Service Integration - Sonarr, Radarr, Readarr, Prowlarr, Bazarr, Lidarr, Emby, Jellyfin, Tautulli (Plex) - Ombi, Overseerr, Jellyseerr, Jackett, NZBGet, SABnzbd, ruTorrent, Transmission, qBittorrent - - Portainer, Traefik, Speedtest Tracker, PiHole, AdGuard Home, Nginx Proxy Manager, Gotify + - Portainer, Traefik, Speedtest Tracker, PiHole, AdGuard Home, Nginx Proxy Manager, Gotify, Syncthing Relay Server - Information Providers - - Coin Market Cap + - Coin Market Cap, Mastodon - Information & Utility Widgets - System Stats (Disk, CPU, Memory) - Weather via WeatherAPI.com or OpenWeatherMap @@ -123,9 +123,10 @@ Huge thanks to the all the contributors who have helped make this project what i - [andrii-kryvoviaz](https://github.com/benphelps/homepage/commits?author=andrii-kryvoviaz) - Background opacity option - [boerniee](https://github.com/benphelps/homepage/commits?author=boerniee) - German Translation - [comradekingu](https://github.com/benphelps/homepage/commits?author=comradekingu) - Norwegian Bokmål Translation -- [Daniel Varga] - German & Hungarian Translation +- Daniel Varga - German & Hungarian Translation - [deffcolony](https://github.com/benphelps/homepage/commits?author=deffcolony) - Dutch Translation - [desolaris](https://github.com/benphelps/homepage/commits?author=desolaris) - Russian Translation +- [DevPGSV](https://github.com/benphelps/homepage/commits?author=DevPGSV) - Syncthing Relay Server & Mastodon widgets - [ilusi0n](https://github.com/benphelps/homepage/commits?author=ilusi0n) - Jellyseerr Integration - [ItsJustMeChris](https://github.com/benphelps/homepage/commits?author=ItsJustMeChris) - Coin Market Cap Widget - [jackblk](https://github.com/benphelps/homepage/commits?author=jackblk) - Vietnamese Translation From c5828978b2edfb727073556da23846128f5eada4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Manuel=20Benn=C3=A0ssar=20Carretero?= Date: Wed, 21 Sep 2022 07:14:24 +0000 Subject: [PATCH 47/56] Translated using Weblate (Spanish) Currently translated at 100.0% (115 of 115 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/ --- public/locales/es/common.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/public/locales/es/common.json b/public/locales/es/common.json index 1c38305c..47ffd142 100644 --- a/public/locales/es/common.json +++ b/public/locales/es/common.json @@ -159,14 +159,14 @@ "seed": "Semillas" }, "mastodon": { - "user_count": "Users", - "status_count": "Posts", - "domain_count": "Domains" + "user_count": "Usuarios", + "status_count": "Publicaciones", + "domain_count": "Dominios" }, "strelaysrv": { - "numActiveSessions": "Sessions", - "numConnections": "Connections", - "dataRelayed": "Relayed", - "transferRate": "Rate" + "numActiveSessions": "Sesiones", + "numConnections": "Conexiones", + "dataRelayed": "Transmitido", + "transferRate": "Velocidad" } } From 0115b594d64952e2da57e466c29241cd4bcf4aa4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Manuel=20Benn=C3=A0ssar=20Carretero?= Date: Wed, 21 Sep 2022 07:10:03 +0000 Subject: [PATCH 48/56] Translated using Weblate (Catalan) Currently translated at 100.0% (115 of 115 strings) Translation: Homepage/Homepage Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/ --- public/locales/ca/common.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/public/locales/ca/common.json b/public/locales/ca/common.json index d55d0f61..e9ba3641 100644 --- a/public/locales/ca/common.json +++ b/public/locales/ca/common.json @@ -159,14 +159,14 @@ "seed": "Llavors" }, "mastodon": { - "user_count": "Users", - "status_count": "Posts", - "domain_count": "Domains" + "user_count": "Usuaris", + "status_count": "Publicacions", + "domain_count": "Dominis" }, "strelaysrv": { "numActiveSessions": "Sessions", - "numConnections": "Connections", - "dataRelayed": "Relayed", - "transferRate": "Rate" + "numConnections": "Connexions", + "dataRelayed": "Transmès", + "transferRate": "Velocitat" } } From 2fc1dda122d831435042168951be6409fe9f924a Mon Sep 17 00:00:00 2001 From: Ben Phelps Date: Wed, 21 Sep 2022 16:11:48 +0300 Subject: [PATCH 49/56] add tailwind-scollbars --- package.json | 1 + pnpm-lock.yaml | 11 +++++++++++ tailwind.config.js | 25 ++++++++++++++----------- 3 files changed, 26 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index bfc67e6f..cf9c4131 100644 --- a/package.json +++ b/package.json @@ -32,6 +32,7 @@ "rutorrent-promise": "^2.0.0", "shvl": "^3.0.0", "swr": "^1.3.0", + "tailwind-scrollbar": "^2.0.1", "tough-cookie": "^4.1.2", "winston": "^3.8.2" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9d0f65b0..e2625a90 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -35,6 +35,7 @@ specifiers: rutorrent-promise: ^2.0.0 shvl: ^3.0.0 swr: ^1.3.0 + tailwind-scrollbar: ^2.0.1 tailwindcss: ^3.1.8 tough-cookie: ^4.1.2 typescript: ^4.8.3 @@ -63,6 +64,7 @@ dependencies: rutorrent-promise: 2.0.0 shvl: 3.0.0 swr: 1.3.0_react@18.2.0 + tailwind-scrollbar: 2.0.1_tailwindcss@3.1.8 tough-cookie: 4.1.2 winston: 3.8.2 @@ -2620,6 +2622,15 @@ packages: react: 18.2.0 dev: false + /tailwind-scrollbar/2.0.1_tailwindcss@3.1.8: + resolution: {integrity: sha512-OcR7qHBbux4k+k6bWqnEQFYFooLK/F4dhkBz6nvswIoaA9ancZ5h20e0tyV7ifSWLDCUBtpG+1NHRA8HMRH/wg==} + engines: {node: '>=12.13.0'} + peerDependencies: + tailwindcss: 3.x + dependencies: + tailwindcss: 3.1.8_postcss@8.4.16 + dev: false + /tailwindcss/3.1.8_postcss@8.4.16: resolution: {integrity: sha512-YSneUCZSFDYMwk+TGq8qYFdCA3yfBRdBlS7txSq0LUmzyeqRe3a8fBQzbz9M3WS/iFT4BNf/nmw9mEzrnSaC0g==} engines: {node: '>=12.13.0'} diff --git a/tailwind.config.js b/tailwind.config.js index 973cfa77..d9b2ea0e 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -1,4 +1,7 @@ /** @type {import('tailwindcss').Config} */ +const tailwindForms = require("@tailwindcss/forms"); +const tailwindScrollbars = require("tailwind-scrollbar"); + module.exports = { darkMode: "class", content: ["./src/pages/**/*.{js,ts,jsx,tsx}", "./src/components/**/*.{js,ts,jsx,tsx}"], @@ -6,19 +9,19 @@ module.exports = { extend: { colors: { theme: { - ["50"]: "rgb(var(--color-50) / )", - ["100"]: "rgb(var(--color-100) / )", - ["200"]: "rgb(var(--color-200) / )", - ["300"]: "rgb(var(--color-300) / )", - ["400"]: "rgb(var(--color-400) / )", - ["500"]: "rgb(var(--color-500) / )", - ["600"]: "rgb(var(--color-600) / )", - ["700"]: "rgb(var(--color-700) / )", - ["800"]: "rgb(var(--color-800) / )", - ["900"]: "rgb(var(--color-900) / )", + 50: "rgb(var(--color-50) / )", + 100: "rgb(var(--color-100) / )", + 200: "rgb(var(--color-200) / )", + 300: "rgb(var(--color-300) / )", + 400: "rgb(var(--color-400) / )", + 500: "rgb(var(--color-500) / )", + 600: "rgb(var(--color-600) / )", + 700: "rgb(var(--color-700) / )", + 800: "rgb(var(--color-800) / )", + 900: "rgb(var(--color-900) / )", }, }, }, }, - plugins: [require("@tailwindcss/forms")], + plugins: [tailwindForms, tailwindScrollbars], }; From 666e2a42cffef16bd9ea80ebfb63310e9f406c5b Mon Sep 17 00:00:00 2001 From: Ben Phelps Date: Wed, 21 Sep 2022 17:39:46 +0300 Subject: [PATCH 50/56] fix context state race --- src/pages/index.jsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pages/index.jsx b/src/pages/index.jsx index 207b2e6a..db2bba85 100644 --- a/src/pages/index.jsx +++ b/src/pages/index.jsx @@ -79,9 +79,9 @@ function Home({ initialSettings }) { const { color, setColor } = useContext(ColorContext); const { settings, setSettings } = useContext(SettingsContext); - if (initialSettings) { + useEffect(() => { setSettings(initialSettings); - } + }, [initialSettings, setSettings]); const { data: services } = useSWR("/api/services"); const { data: bookmarks } = useSWR("/api/bookmarks"); From 5776544c2053f96bb526de98987726aa10395e36 Mon Sep 17 00:00:00 2001 From: Jason Fischer Date: Wed, 21 Sep 2022 08:32:37 -0700 Subject: [PATCH 51/56] Write homepage.log into config folder This will make it easier for people to find their log file(s) --- src/utils/logger.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/utils/logger.js b/src/utils/logger.js index 2c2fea66..a4d0f1fe 100644 --- a/src/utils/logger.js +++ b/src/utils/logger.js @@ -1,5 +1,9 @@ +import { join } from "path"; + import winston from "winston"; +const configPath = join(process.cwd(), "config"); + function messageFormatter(logInfo) { if (logInfo.stack) { return `[${logInfo.timestamp}] ${logInfo.level}: ${logInfo.stack}`; @@ -33,7 +37,7 @@ const logger = winston.createLogger({ new winston.transports.File({ format: fileFormat, - filename: 'homepage.log', + filename: `${configPath}/logs/homepage.log`, handleExceptions: true, handleRejections: true }), From 0e5477eecf5ea0e9bbbe8c1b9db371c0b42cd137 Mon Sep 17 00:00:00 2001 From: Ben Phelps Date: Wed, 21 Sep 2022 22:26:58 +0300 Subject: [PATCH 52/56] experiment with lazily loaded widgets --- src/components/services/widget.jsx | 59 +++++++++++++++--------------- 1 file changed, 30 insertions(+), 29 deletions(-) diff --git a/src/components/services/widget.jsx b/src/components/services/widget.jsx index e9bb394d..965dd6ec 100644 --- a/src/components/services/widget.jsx +++ b/src/components/services/widget.jsx @@ -1,34 +1,35 @@ import { useTranslation } from "react-i18next"; +import dynamic from "next/dynamic"; -import Sonarr from "./widgets/service/sonarr"; -import Radarr from "./widgets/service/radarr"; -import Lidarr from "./widgets/service/lidarr"; -import Readarr from "./widgets/service/readarr"; -import Bazarr from "./widgets/service/bazarr"; -import Ombi from "./widgets/service/ombi"; -import Portainer from "./widgets/service/portainer"; -import Emby from "./widgets/service/emby"; -import Nzbget from "./widgets/service/nzbget"; -import SABnzbd from "./widgets/service/sabnzbd"; -import Transmission from "./widgets/service/transmission"; -import QBittorrent from "./widgets/service/qbittorrent"; -import Docker from "./widgets/service/docker"; -import Pihole from "./widgets/service/pihole"; -import Rutorrent from "./widgets/service/rutorrent"; -import Jellyfin from "./widgets/service/jellyfin"; -import Speedtest from "./widgets/service/speedtest"; -import Traefik from "./widgets/service/traefik"; -import Jellyseerr from "./widgets/service/jellyseerr"; -import Overseerr from "./widgets/service/overseerr"; -import Npm from "./widgets/service/npm"; -import Tautulli from "./widgets/service/tautulli"; -import CoinMarketCap from "./widgets/service/coinmarketcap"; -import Gotify from "./widgets/service/gotify"; -import Prowlarr from "./widgets/service/prowlarr"; -import Jackett from "./widgets/service/jackett"; -import AdGuard from "./widgets/service/adguard"; -import StRelaySrv from "./widgets/service/strelaysrv"; -import Mastodon from "./widgets/service/mastodon"; +const Sonarr = dynamic(() => import("./widgets/service/sonarr")); +const Radarr = dynamic(() => import("./widgets/service/radarr")); +const Lidarr = dynamic(() => import("./widgets/service/lidarr")); +const Readarr = dynamic(() => import("./widgets/service/readarr")); +const Bazarr = dynamic(() => import("./widgets/service/bazarr")); +const Ombi = dynamic(() => import("./widgets/service/ombi")); +const Portainer = dynamic(() => import("./widgets/service/portainer")); +const Emby = dynamic(() => import("./widgets/service/emby")); +const Nzbget = dynamic(() => import("./widgets/service/nzbget")); +const SABnzbd = dynamic(() => import("./widgets/service/sabnzbd")); +const Transmission = dynamic(() => import("./widgets/service/transmission")); +const QBittorrent = dynamic(() => import("./widgets/service/qbittorrent")); +const Docker = dynamic(() => import("./widgets/service/docker")); +const Pihole = dynamic(() => import("./widgets/service/pihole")); +const Rutorrent = dynamic(() => import("./widgets/service/rutorrent")); +const Jellyfin = dynamic(() => import("./widgets/service/jellyfin")); +const Speedtest = dynamic(() => import("./widgets/service/speedtest")); +const Traefik = dynamic(() => import("./widgets/service/traefik")); +const Jellyseerr = dynamic(() => import("./widgets/service/jellyseerr")); +const Overseerr = dynamic(() => import("./widgets/service/overseerr")); +const Npm = dynamic(() => import("./widgets/service/npm")); +const Tautulli = dynamic(() => import("./widgets/service/tautulli")); +const CoinMarketCap = dynamic(() => import("./widgets/service/coinmarketcap")); +const Gotify = dynamic(() => import("./widgets/service/gotify")); +const Prowlarr = dynamic(() => import("./widgets/service/prowlarr")); +const Jackett = dynamic(() => import("./widgets/service/jackett")); +const AdGuard = dynamic(() => import("./widgets/service/adguard")); +const StRelaySrv = dynamic(() => import("./widgets/service/strelaysrv")); +const Mastodon = dynamic(() => import("./widgets/service/mastodon")); const widgetMappings = { docker: Docker, From 559af0cd56d93a29e342cb3524ad4451c4c2ee5e Mon Sep 17 00:00:00 2001 From: Ben Phelps Date: Wed, 21 Sep 2022 22:53:19 +0300 Subject: [PATCH 53/56] Update README.md --- README.md | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 38660392..d7f7f08a 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,15 @@ ![Homepage Preview](/images/preview.png) -[![Docker](https://github.com/benphelps/homepage/actions/workflows/docker-publish.yml/badge.svg)](https://github.com/benphelps/homepage/actions/workflows/docker-publish.yml) -[![Weblate](https://hosted.weblate.org/widgets/homepage/-/homepage/svg-badge.svg)](https://hosted.weblate.org/engage/homepage/) +

    + + Linkedin - phelpsben +

    + +

    +Docker +Weblate +

    + ## Features From 32cb11301464ab4debdd7a31ca13ddc19bb5f6a3 Mon Sep 17 00:00:00 2001 From: Ben Phelps Date: Thu, 22 Sep 2022 02:57:58 +0300 Subject: [PATCH 54/56] Create FUNDING.yml --- .github/FUNDING.yml | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .github/FUNDING.yml diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 00000000..0986a38b --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,2 @@ +github: benphelps +ko_fi: benphelps From 1a5e2f3cda1e12e85efe7923860163d2be896f32 Mon Sep 17 00:00:00 2001 From: Ben Phelps Date: Thu, 22 Sep 2022 03:00:39 +0300 Subject: [PATCH 55/56] Update FUNDING.yml --- .github/FUNDING.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index 0986a38b..1f0fcb35 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1,2 +1,3 @@ github: benphelps ko_fi: benphelps +custom: ["https://paypal.me/phelpsben", PayPal] From 0e1e2bde22f457799a980edf3741a16c00d2e04b Mon Sep 17 00:00:00 2001 From: Ben Phelps Date: Thu, 22 Sep 2022 03:01:00 +0300 Subject: [PATCH 56/56] Update FUNDING.yml --- .github/FUNDING.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index 1f0fcb35..3e283d69 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1,3 +1,3 @@ github: benphelps ko_fi: benphelps -custom: ["https://paypal.me/phelpsben", PayPal] +custom: ["https://paypal.me/phelpsben"]