diff --git a/.dockerignore b/.dockerignore index 9c16887bd..fedba8895 100644 --- a/.dockerignore +++ b/.dockerignore @@ -2,6 +2,8 @@ /dist /node_modules /data +/test +/kubernetes /.do **/.dockerignore **/.git diff --git a/dockerfile b/dockerfile index a10006369..891b03d5b 100644 --- a/dockerfile +++ b/dockerfile @@ -5,25 +5,26 @@ WORKDIR /app # split the sqlite install here, so that it can caches the arm prebuilt # do not modify it, since we don't want to re-compile the arm prebuilt again RUN apt update && \ - apt --yes install python3 python3-pip python3-dev git g++ make && \ - ln -s /usr/bin/python3 /usr/bin/python && \ - npm install mapbox/node-sqlite3#593c9d --build-from-source + apt --yes install python3 python3-pip python3-dev git g++ make && \ + ln -s /usr/bin/python3 /usr/bin/python && \ + npm install mapbox/node-sqlite3#593c9d --build-from-source COPY . . -RUN npm install --legacy-peer-deps && npm run build && npm prune --production +RUN npm install --legacy-peer-deps && \ + npm run build && \ + npm prune --production && \ + chmod +x /app/extra/entrypoint.sh + FROM node:14-bullseye-slim AS release WORKDIR /app -# Install Apprise, -# add sqlite3 cli for debugging in the future -# iputils-ping for ping +# Install Apprise, add sqlite3 cli for debugging in the future, iputils-ping for ping, util-linux for setpriv RUN apt update && \ - apt --yes install python3 python3-pip python3-cryptography python3-six python3-yaml python3-click python3-markdown python3-requests python3-requests-oauthlib \ - sqlite3 \ - iputils-ping && \ - pip3 --no-cache-dir install apprise && \ - rm -rf /var/lib/apt/lists/* + apt --yes install python3 python3-pip python3-cryptography python3-six python3-yaml python3-click python3-markdown python3-requests python3-requests-oauthlib \ + sqlite3 iputils-ping util-linux && \ + pip3 --no-cache-dir install apprise && \ + rm -rf /var/lib/apt/lists/* # Copy app files from build layer COPY --from=build /app /app @@ -31,6 +32,7 @@ COPY --from=build /app /app EXPOSE 3001 VOLUME ["/app/data"] HEALTHCHECK --interval=60s --timeout=30s --start-period=180s --retries=5 CMD node extra/healthcheck.js +ENTRYPOINT ["extra/entrypoint.sh"] CMD ["node", "server/server.js"] FROM release AS nightly diff --git a/dockerfile-alpine b/dockerfile-alpine index a9e85c37d..5e34d84a8 100644 --- a/dockerfile-alpine +++ b/dockerfile-alpine @@ -4,22 +4,25 @@ WORKDIR /app # split the sqlite install here, so that it can caches the arm prebuilt RUN apk add --no-cache --virtual .build-deps make g++ python3 python3-dev git && \ - ln -s /usr/bin/python3 /usr/bin/python && \ - npm install mapbox/node-sqlite3#593c9d && \ - apk del .build-deps && \ - rm -f /usr/bin/python + ln -s /usr/bin/python3 /usr/bin/python && \ + npm install mapbox/node-sqlite3#593c9d && \ + apk del .build-deps && \ + rm -f /usr/bin/python COPY . . -RUN npm install --legacy-peer-deps && npm run build && npm prune --production +RUN npm install --legacy-peer-deps && \ + npm run build && \ + npm prune --production && \ + chmod +x /app/extra/entrypoint.sh FROM node:14-alpine3.12 AS release WORKDIR /app -# Install apprise -RUN apk add --no-cache python3 py3-cryptography py3-pip py3-six py3-yaml py3-click py3-markdown py3-requests py3-requests-oauthlib && \ - pip3 --no-cache-dir install apprise && \ - rm -rf /root/.cache +# Install apprise, iputils for non-root ping, setpriv +RUN apk add --no-cache iputils setpriv python3 py3-cryptography py3-pip py3-six py3-yaml py3-click py3-markdown py3-requests py3-requests-oauthlib && \ + pip3 --no-cache-dir install apprise && \ + rm -rf /root/.cache # Copy app files from build layer COPY --from=build /app /app @@ -27,6 +30,7 @@ COPY --from=build /app /app EXPOSE 3001 VOLUME ["/app/data"] HEALTHCHECK --interval=60s --timeout=30s --start-period=180s --retries=5 CMD node extra/healthcheck.js +ENTRYPOINT ["extra/entrypoint.sh"] CMD ["node", "server/server.js"] FROM release AS nightly diff --git a/extra/entrypoint.sh b/extra/entrypoint.sh new file mode 100644 index 000000000..0f1d4e2f7 --- /dev/null +++ b/extra/entrypoint.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env sh + +# set -e Exit the script if an error happens +set -e +PUID=${PUID=1000} +PGID=${PGID=1000} + +files_ownership () { + # -h Changes the ownership of an encountered symbolic link and not that of the file or directory pointed to by the symbolic link. + # -R Recursively descends the specified directories + # -c Like verbose but report only when a change is made + chown -hRc "$PUID":"$PGID" /app/data +} + +echo "==> Performing startup jobs and maintenance tasks" +files_ownership + +echo "==> Starting application with user $PUID group $PGID" + +# --clear-groups Clear supplementary groups. +exec setpriv --reuid "$PUID" --regid "$PGID" --clear-groups "$@" diff --git a/package.json b/package.json index d768063a0..0f7a71575 100644 --- a/package.json +++ b/package.json @@ -34,6 +34,7 @@ "test-install-script-alpine3": "npm run compile-install-script && docker build --progress plain -f test/test_install_script/alpine3.dockerfile .", "test-install-script-ubuntu": "npm run compile-install-script && docker build --progress plain -f test/test_install_script/ubuntu.dockerfile .", "test-install-script-ubuntu1604": "npm run compile-install-script && docker build --progress plain -f test/test_install_script/ubuntu1604.dockerfile .", + "test-nodejs16": "docker build --progress plain -f test/ubuntu-nodejs16.dockerfile .", "simple-dns-server": "node extra/simple-dns-server.js", "update-language-files_old": "cd extra/update-language-files && node index.js %npm_config_base_lang% && eslint ../../src/languages/**.js --fix", "update-language-files": "cd extra/update-language-files && node index.js && eslint ../../src/languages/**.js --fix" diff --git a/src/components/TagsManager.vue b/src/components/TagsManager.vue index 82025031c..7fc78a340 100644 --- a/src/components/TagsManager.vue +++ b/src/components/TagsManager.vue @@ -55,7 +55,7 @@
diff --git a/src/languages/da-DK.js b/src/languages/da-DK.js index 86e1c0c9d..eaba6e2cb 100644 --- a/src/languages/da-DK.js +++ b/src/languages/da-DK.js @@ -36,7 +36,6 @@ export default { hour: "Timer", "-hour": "-Timer", checkEverySecond: "Tjek hvert {0} sekund", - "Avg.": "Gns.", Response: "Respons", Ping: "Ping", "Monitor Type": "Overvåger Type", @@ -143,4 +142,31 @@ export default { Token: "Token", "Show URI": "Show URI", "Clear all statistics": "Clear all Statistics", + retryCheckEverySecond: "Retry every {0} seconds.", + importHandleDescription: "Choose 'Skip existing' if you want to skip every monitor or notification with the same name. 'Overwrite' will delete every existing monitor and notification.", + confirmImportMsg: "Are you sure to import the backup? Please make sure you've selected the right import option.", + "Heartbeat Retry Interval": "Heartbeat Retry Interval", + "Import Backup": "Import Backup", + "Export Backup": "Export Backup", + "Skip existing": "Skip existing", + Overwrite: "Overwrite", + Options: "Options", + "Keep both": "Keep both", + Tags: "Tags", + "Add New below or Select...": "Add New below or Select...", + "Tag with this name already exist.": "Tag with this name already exist.", + "Tag with this value already exist.": "Tag with this value already exist.", + color: "color", + "value (optional)": "value (optional)", + Gray: "Gray", + Red: "Red", + Orange: "Orange", + Green: "Green", + Blue: "Blue", + Indigo: "Indigo", + Purple: "Purple", + Pink: "Pink", + "Search...": "Search...", + "Avg. Ping": "Avg. Ping", + "Avg. Response": "Avg. Response", } diff --git a/src/languages/de-DE.js b/src/languages/de-DE.js index b5b0bc3bd..8f8792853 100644 --- a/src/languages/de-DE.js +++ b/src/languages/de-DE.js @@ -36,7 +36,6 @@ export default { hour: "Stunde", "-hour": "-Stunden", checkEverySecond: "Überprüfe alle {0} Sekunden", - "Avg.": "Durchschn.", Response: "Antwortzeit", Ping: "Ping", "Monitor Type": "Monitor Typ", @@ -167,4 +166,6 @@ export default { retryCheckEverySecond: "Versuche alle {0} Sekunden", "Import Backup": "Import Backup", "Export Backup": "Export Backup", + "Avg. Ping": "Avg. Ping", + "Avg. Response": "Avg. Response", } diff --git a/src/languages/en.js b/src/languages/en.js index bb0f50b9b..37704225a 100644 --- a/src/languages/en.js +++ b/src/languages/en.js @@ -2,7 +2,6 @@ export default { languageName: "English", checkEverySecond: "Check every {0} seconds.", retryCheckEverySecond: "Retry every {0} seconds.", - "Avg.": "Avg.", retriesDescription: "Maximum retries before the service is marked as down and a notification is sent", ignoreTLSError: "Ignore TLS/SSL error for HTTPS websites", upsideDownModeDescription: "Flip the status upside down. If the service is reachable, it is DOWN.", @@ -167,6 +166,8 @@ export default { Purple: "Purple", Pink: "Pink", "Search...": "Search...", + "Avg. Ping": "Avg. Ping", + "Avg. Response": "Avg. Response", "telegram": "Telegram", "webhook": "Webhook", "smtp": "Email (SMTP)", diff --git a/src/languages/es-ES.js b/src/languages/es-ES.js index cf6951a44..cb8733792 100644 --- a/src/languages/es-ES.js +++ b/src/languages/es-ES.js @@ -1,7 +1,6 @@ export default { languageName: "Español", checkEverySecond: "Comprobar cada {0} segundos.", - "Avg.": "Media.", retriesDescription: "Número máximo de intentos antes de que el servicio se marque como CAÍDO y una notificación sea enviada.", ignoreTLSError: "Ignorar error TLS/SSL para sitios web HTTPS", upsideDownModeDescription: "Invertir el estado. Si el servicio es alcanzable, está CAÍDO.", @@ -32,7 +31,7 @@ export default { Up: "Funcional", Down: "Caído", Pending: "Pendiente", - Unknown: "Desconociso", + Unknown: "Desconocido", Pause: "Pausa", Name: "Nombre", Status: "Estado", @@ -143,4 +142,31 @@ export default { Token: "Token", "Show URI": "Show URI", "Clear all statistics": "Clear all Statistics", + retryCheckEverySecond: "Retry every {0} seconds.", + importHandleDescription: "Choose 'Skip existing' if you want to skip every monitor or notification with the same name. 'Overwrite' will delete every existing monitor and notification.", + confirmImportMsg: "Are you sure to import the backup? Please make sure you've selected the right import option.", + "Heartbeat Retry Interval": "Heartbeat Retry Interval", + "Import Backup": "Import Backup", + "Export Backup": "Export Backup", + "Skip existing": "Skip existing", + Overwrite: "Overwrite", + Options: "Options", + "Keep both": "Keep both", + Tags: "Tags", + "Add New below or Select...": "Add New below or Select...", + "Tag with this name already exist.": "Tag with this name already exist.", + "Tag with this value already exist.": "Tag with this value already exist.", + color: "color", + "value (optional)": "value (optional)", + Gray: "Gray", + Red: "Red", + Orange: "Orange", + Green: "Green", + Blue: "Blue", + Indigo: "Indigo", + Purple: "Purple", + Pink: "Pink", + "Search...": "Search...", + "Avg. Ping": "Avg. Ping", + "Avg. Response": "Avg. Response", } diff --git a/src/languages/et-EE.js b/src/languages/et-EE.js index 14bedd178..991a6a35e 100644 --- a/src/languages/et-EE.js +++ b/src/languages/et-EE.js @@ -1,7 +1,6 @@ export default { languageName: "eesti", checkEverySecond: "Kontrolli {0} sekundilise vahega.", - "Avg.": "≈", retriesDescription: "Mitu korda tuleb kontrollida, mille järel märkida 'maas' ja saata välja teavitus.", ignoreTLSError: "Eira TLS/SSL viga HTTPS veebisaitidel.", upsideDownModeDescription: "Käitle teenuse saadavust rikkena, teenuse kättesaamatust töötavaks.", @@ -143,4 +142,31 @@ export default { Token: "Token", "Show URI": "Show URI", "Clear all statistics": "Clear all Statistics", + retryCheckEverySecond: "Retry every {0} seconds.", + importHandleDescription: "Choose 'Skip existing' if you want to skip every monitor or notification with the same name. 'Overwrite' will delete every existing monitor and notification.", + confirmImportMsg: "Are you sure to import the backup? Please make sure you've selected the right import option.", + "Heartbeat Retry Interval": "Heartbeat Retry Interval", + "Import Backup": "Import Backup", + "Export Backup": "Export Backup", + "Skip existing": "Skip existing", + Overwrite: "Overwrite", + Options: "Options", + "Keep both": "Keep both", + Tags: "Tags", + "Add New below or Select...": "Add New below or Select...", + "Tag with this name already exist.": "Tag with this name already exist.", + "Tag with this value already exist.": "Tag with this value already exist.", + color: "color", + "value (optional)": "value (optional)", + Gray: "Gray", + Red: "Red", + Orange: "Orange", + Green: "Green", + Blue: "Blue", + Indigo: "Indigo", + Purple: "Purple", + Pink: "Pink", + "Search...": "Search...", + "Avg. Ping": "Avg. Ping", + "Avg. Response": "Avg. Response", } diff --git a/src/languages/fr-FR.js b/src/languages/fr-FR.js index ab03f68c7..0050c5c02 100644 --- a/src/languages/fr-FR.js +++ b/src/languages/fr-FR.js @@ -36,7 +36,6 @@ export default { hour: "Heure", "-hour": "Heures", checkEverySecond: "Vérifier toutes les {0} secondes", - "Avg.": "Moyen", Response: "Temps de réponse", Ping: "Ping", "Monitor Type": "Type de Sonde", @@ -143,4 +142,31 @@ export default { Token: "Token", "Show URI": "Show URI", "Clear all statistics": "Clear all Statistics", + retryCheckEverySecond: "Retry every {0} seconds.", + importHandleDescription: "Choose 'Skip existing' if you want to skip every monitor or notification with the same name. 'Overwrite' will delete every existing monitor and notification.", + confirmImportMsg: "Are you sure to import the backup? Please make sure you've selected the right import option.", + "Heartbeat Retry Interval": "Heartbeat Retry Interval", + "Import Backup": "Import Backup", + "Export Backup": "Export Backup", + "Skip existing": "Skip existing", + Overwrite: "Overwrite", + Options: "Options", + "Keep both": "Keep both", + Tags: "Tags", + "Add New below or Select...": "Add New below or Select...", + "Tag with this name already exist.": "Tag with this name already exist.", + "Tag with this value already exist.": "Tag with this value already exist.", + color: "color", + "value (optional)": "value (optional)", + Gray: "Gray", + Red: "Red", + Orange: "Orange", + Green: "Green", + Blue: "Blue", + Indigo: "Indigo", + Purple: "Purple", + Pink: "Pink", + "Search...": "Search...", + "Avg. Ping": "Avg. Ping", + "Avg. Response": "Avg. Response", } diff --git a/src/languages/it-IT.js b/src/languages/it-IT.js index bbd2d3ad1..09d0bece6 100644 --- a/src/languages/it-IT.js +++ b/src/languages/it-IT.js @@ -1,7 +1,7 @@ export default { languageName: "Italiano (Italian)", checkEverySecond: "controlla ogni {0} secondi", - "Avg.": "Media", + retryCheckEverySecond: "Riprova ogni {0} secondi.", retriesDescription: "Tentativi da fare prima che il servizio venga marcato come \"giù\" e che una notifica venga inviata.", ignoreTLSError: "Ignora gli errori TLS/SSL per i siti in HTTPS.", upsideDownModeDescription: "Capovolgi lo stato. Se il servizio è raggiungibile viene marcato come \"GIÙ\".", @@ -20,6 +20,8 @@ export default { clearEventsMsg: "Si è certi di voler eliminare tutti gli eventi per questo servizio?", clearHeartbeatsMsg: "Si è certi di voler eliminare tutti gli intervalli di controllo per questo servizio?", confirmClearStatisticsMsg: "Si è certi di voler eliminare TUTTE le statistiche?", + importHandleDescription: "Selezionare 'Ignora gli esistenti' si vuole ignorare l'importazione dei monitoraggi o delle notifiche con lo stesso nome. 'Sovrascrivi' eliminerà ogni monitoraggio e notifica esistente.", + confirmImportMsg: "Si è certi di voler importare il backup? Essere certi di aver selezionato l'opzione corretta di importazione.", twoFAVerifyLabel: "Scrivi il token per verificare che l'autenticazione a due fattori funzioni", tokenValidSettingsMsg: "Il token è valido! È ora possibile salvare le impostazioni.", confirmEnableTwoFAMsg: "Si è certi di voler abilitare l'autenticazione a due fattori?", @@ -68,6 +70,7 @@ export default { Port: "Porta", "Heartbeat Interval": "Intervallo di controllo", Retries: "Tentativi", + "Heartbeat Retry Interval": "Intervallo tra un tentativo di controllo e l'altro", Advanced: "Avanzate", "Upside Down Mode": "Modalità capovolta", "Max. Redirects": "Redirezionamenti massimi", @@ -115,6 +118,8 @@ export default { "Last Result": "Ultimo risultato", "Create your admin account": "Crea l'account amministratore", "Repeat Password": "Ripeti Password", + "Import Backup": "Importa Backup", + "Export Backup": "Esporta Backup", Export: "Esporta", Import: "Importa", respTime: "Tempo di Risposta (ms)", @@ -126,12 +131,16 @@ export default { Events: "Eventi", Heartbeats: "Controlli", "Auto Get": "Auto Get", - "Also apply to existing monitors": "Also apply to existing monitors", backupDescription: "È possibile fare il backup di tutti i monitoraggi e di tutte le notifiche in un file JSON.", backupDescription2: "P.S.: lo storico e i dati relativi agli eventi non saranno inclusi.", backupDescription3: "Dati sensibili come i token di autenticazione saranno inclusi nel backup, tenere quindi in un luogo sicuro.", alertNoFile: "Selezionare il file da importare.", alertWrongFileType: "Selezionare un file JSON.", + "Clear all statistics": "Pulisci tutte le statistiche", + "Skip existing": "Ignora gli esistenti", + Overwrite: "Sovrascrivi", + Options: "Opzioni", + "Keep both": "Mantieni entrambi", "Verify Token": "Verifica Token", "Setup 2FA": "Imposta l'autenticazione a due fattori", "Enable 2FA": "Abilita l'autenticazione a due fattori", @@ -142,7 +151,6 @@ export default { Inactive: "Disattivata", Token: "Token", "Show URI": "Mostra URI", - "Clear all statistics": "Pulisci tutte le statistiche", Tags: "Etichette", "Add New below or Select...": "Aggiungine una oppure scegli...", "Tag with this name already exist.": "Un'etichetta con questo nome già esiste.", @@ -158,4 +166,6 @@ export default { Purple: "Viola", Pink: "Rosa", "Search...": "Cerca...", + "Avg. Ping": "Avg. Ping", + "Avg. Response": "Avg. Response", } diff --git a/src/languages/ja.js b/src/languages/ja.js index 358df33c5..44f96ee44 100644 --- a/src/languages/ja.js +++ b/src/languages/ja.js @@ -1,7 +1,6 @@ export default { languageName: "日本語", checkEverySecond: "{0}秒ごとにチェックします。", - "Avg.": "平均", retriesDescription: "サービスがダウンとしてマークされ、通知が送信されるまでの最大リトライ数", ignoreTLSError: "HTTPS ウェブサイトの TLS/SSL エラーを無視する", upsideDownModeDescription: "ステータスの扱いを逆にします。サービスに到達可能な場合は、DOWNとなる。", @@ -143,4 +142,31 @@ export default { Token: "Token", "Show URI": "Show URI", "Clear all statistics": "Clear all Statistics", + retryCheckEverySecond: "Retry every {0} seconds.", + importHandleDescription: "Choose 'Skip existing' if you want to skip every monitor or notification with the same name. 'Overwrite' will delete every existing monitor and notification.", + confirmImportMsg: "Are you sure to import the backup? Please make sure you've selected the right import option.", + "Heartbeat Retry Interval": "Heartbeat Retry Interval", + "Import Backup": "Import Backup", + "Export Backup": "Export Backup", + "Skip existing": "Skip existing", + Overwrite: "Overwrite", + Options: "Options", + "Keep both": "Keep both", + Tags: "Tags", + "Add New below or Select...": "Add New below or Select...", + "Tag with this name already exist.": "Tag with this name already exist.", + "Tag with this value already exist.": "Tag with this value already exist.", + color: "color", + "value (optional)": "value (optional)", + Gray: "Gray", + Red: "Red", + Orange: "Orange", + Green: "Green", + Blue: "Blue", + Indigo: "Indigo", + Purple: "Purple", + Pink: "Pink", + "Search...": "Search...", + "Avg. Ping": "Avg. Ping", + "Avg. Response": "Avg. Response", } diff --git a/src/languages/ko-KR.js b/src/languages/ko-KR.js index 349c3ae77..70948a31d 100644 --- a/src/languages/ko-KR.js +++ b/src/languages/ko-KR.js @@ -1,7 +1,6 @@ export default { languageName: "한국어", checkEverySecond: "{0} 초마다 체크해요.", - "Avg.": "평균", retriesDescription: "서비스가 중단된 후 알림을 보내기 전 최대 재시도 횟수", ignoreTLSError: "HTTPS 웹사이트에서 TLS/SSL 에러 무시하기", upsideDownModeDescription: "서버 상태를 반대로 표시해요. 서버가 작동하면 오프라인으로 표시할 거에요.", @@ -143,4 +142,31 @@ export default { Token: "Token", "Show URI": "Show URI", "Clear all statistics": "Clear all Statistics", + retryCheckEverySecond: "Retry every {0} seconds.", + importHandleDescription: "Choose 'Skip existing' if you want to skip every monitor or notification with the same name. 'Overwrite' will delete every existing monitor and notification.", + confirmImportMsg: "Are you sure to import the backup? Please make sure you've selected the right import option.", + "Heartbeat Retry Interval": "Heartbeat Retry Interval", + "Import Backup": "Import Backup", + "Export Backup": "Export Backup", + "Skip existing": "Skip existing", + Overwrite: "Overwrite", + Options: "Options", + "Keep both": "Keep both", + Tags: "Tags", + "Add New below or Select...": "Add New below or Select...", + "Tag with this name already exist.": "Tag with this name already exist.", + "Tag with this value already exist.": "Tag with this value already exist.", + color: "color", + "value (optional)": "value (optional)", + Gray: "Gray", + Red: "Red", + Orange: "Orange", + Green: "Green", + Blue: "Blue", + Indigo: "Indigo", + Purple: "Purple", + Pink: "Pink", + "Search...": "Search...", + "Avg. Ping": "Avg. Ping", + "Avg. Response": "Avg. Response", } diff --git a/src/languages/nl-NL.js b/src/languages/nl-NL.js index 546e6dbd4..7ec386d01 100644 --- a/src/languages/nl-NL.js +++ b/src/languages/nl-NL.js @@ -1,7 +1,6 @@ export default { languageName: "Nederlands", checkEverySecond: "Controleer elke {0} seconden.", - "Avg.": "Gem.", retriesDescription: "Maximum aantal nieuwe pogingen voordat de service wordt gemarkeerd als niet beschikbaar en er een melding wordt verzonden", ignoreTLSError: "Negeer TLS/SSL-fout voor HTTPS-websites", upsideDownModeDescription: "Draai de status om. Als de service bereikbaar is, is deze OFFLINE.", @@ -143,4 +142,31 @@ export default { Token: "Token", "Show URI": "Toon URI", "Clear all statistics": "Wis alle statistieken", + retryCheckEverySecond: "Retry every {0} seconds.", + importHandleDescription: "Choose 'Skip existing' if you want to skip every monitor or notification with the same name. 'Overwrite' will delete every existing monitor and notification.", + confirmImportMsg: "Are you sure to import the backup? Please make sure you've selected the right import option.", + "Heartbeat Retry Interval": "Heartbeat Retry Interval", + "Import Backup": "Import Backup", + "Export Backup": "Export Backup", + "Skip existing": "Skip existing", + Overwrite: "Overwrite", + Options: "Options", + "Keep both": "Keep both", + Tags: "Tags", + "Add New below or Select...": "Add New below or Select...", + "Tag with this name already exist.": "Tag with this name already exist.", + "Tag with this value already exist.": "Tag with this value already exist.", + color: "color", + "value (optional)": "value (optional)", + Gray: "Gray", + Red: "Red", + Orange: "Orange", + Green: "Green", + Blue: "Blue", + Indigo: "Indigo", + Purple: "Purple", + Pink: "Pink", + "Search...": "Search...", + "Avg. Ping": "Avg. Ping", + "Avg. Response": "Avg. Response", } diff --git a/src/languages/pl.js b/src/languages/pl.js index e6936a1c7..2b34492e6 100644 --- a/src/languages/pl.js +++ b/src/languages/pl.js @@ -1,7 +1,6 @@ export default { languageName: "Polski", checkEverySecond: "Sprawdzaj co {0} sekund.", - "Avg.": "Średnia", retriesDescription: "Maksymalna liczba powtórzeń, zanim usługa zostanie oznaczona jako wyłączona i zostanie wysłane powiadomienie", ignoreTLSError: "Ignoruj błąd TLS/SSL dla stron HTTPS", upsideDownModeDescription: "Odwróć status do góry nogami. Jeśli usługa jest osiągalna, to jest oznaczona jako niedostępna.", @@ -110,37 +109,64 @@ export default { respTime: "Czas odp. (ms)", notAvailableShort: "N/A", Create: "Stwórz", - clearEventsMsg: "Jesteś pewien, że chcesz usunąć wszystkie monity dla tej strony?", - clearHeartbeatsMsg: "Are you sure want to delete all heartbeats for this monitor?", + clearEventsMsg: "Jesteś pewien, że chcesz usunąć wszystkie monitory dla tej strony?", + clearHeartbeatsMsg: "Jesteś pewien, że chcesz usunąć wszystkie bicia serca dla tego monitora?", confirmClearStatisticsMsg: "Jesteś pewien, że chcesz usunąć WSZYSTKIE statystyki?", "Clear Data": "Usuń dane", Events: "Wydarzenia", - Heartbeats: "Heartbeats", - "Auto Get": "Auto Get", + Heartbeats: "Bicia serca", + "Auto Get": "Pobierz automatycznie", enableDefaultNotificationDescription: "Dla każdego nowego monitora to powiadomienie będzie domyślnie włączone. Nadal możesz wyłączyć powiadomienia osobno dla każdego monitora.", "Default enabled": "Domyślnie włączone", - "Also apply to existing monitors": "Również zastosuj do obecnych monitów", - Export: "Eksport", - Import: "Import", - backupDescription: "Możesz wykonać kopię zapasową wszystkich monitorów i wszystkich powiadomień w pliku JSON.", + "Also apply to existing monitors": "Również zastosuj do obecnych monitorów", + Export: "Eksportuj", + Import: "Importuj", + backupDescription: "Możesz wykonać kopię zapasową wszystkich monitorów i wszystkich powiadomień do pliku JSON.", backupDescription2: "PS: Historia i dane zdarzeń nie są uwzględniane.", backupDescription3: "Poufne dane, takie jak tokeny powiadomień, są zawarte w pliku eksportu, prosimy o ostrożne przechowywanie.", alertNoFile: "Proszę wybrać plik do importu.", alertWrongFileType: "Proszę wybrać plik JSON.", - twoFAVerifyLabel: "Proszę podaj swój token 2FA, aby sprawdzić go", + twoFAVerifyLabel: "Proszę podaj swój token 2FA, aby sprawdzić czy 2FA działa", tokenValidSettingsMsg: "Token jest poprawny! Możesz teraz zapisać ustawienia 2FA.", - confirmEnableTwoFAMsg: "Jesteś prwien że chcesz włączyć 2FA?", - confirmDisableTwoFAMsg: "Jesteś prwien że chcesz wyłączyć 2FA?", - "Apply on all existing monitors": "Zastosuj do wszystki obecnych monitów", - "Verify Token": "Weryfikuj Token", - "Setup 2FA": "Ustaw 2FA", + confirmEnableTwoFAMsg: "Jesteś pewien że chcesz włączyć 2FA?", + confirmDisableTwoFAMsg: "Jesteś pewien że chcesz wyłączyć 2FA?", + "Apply on all existing monitors": "Zastosuj do wszystki obecnych monitorów", + "Verify Token": "Weryfikuj token", + "Setup 2FA": "Konfiguracja 2FA", "Enable 2FA": "Włącz 2FA", "Disable 2FA": "Wyłącz 2FA", "2FA Settings": "Ustawienia 2FA", - "Two Factor Authentication": "Podwójna weryfikacja", + "Two Factor Authentication": "Uwierzytelnienie dwuskładnikowe", Active: "Włączone", Inactive: "Wyłączone", Token: "Token", "Show URI": "Pokaż URI", "Clear all statistics": "Wyczyść wszystkie statystyki", + retryCheckEverySecond: "Ponawiaj co {0} sekund.", + importHandleDescription: "Wybierz 'Pomiń istniejące', jeśli chcesz pominąć każdy monitor lub powiadomienie o tej samej nazwie. 'Nadpisz' spowoduje usunięcie każdego istniejącego monitora i powiadomienia.", + confirmImportMsg: "Czy na pewno chcesz zaimportować kopię zapasową? Upewnij się, że wybrałeś właściwą opcję importu.", + "Heartbeat Retry Interval": "Częstotliwość ponawiania bicia serca", + "Import Backup": "Importuj kopię zapasową", + "Export Backup": "Eksportuj kopię zapasową", + "Skip existing": "Pomiń istniejące", + Overwrite: "Nadpisz", + Options: "Opcje", + "Keep both": "Zachowaj oba", + Tags: "Tagi", + "Add New below or Select...": "Dodaj nowy poniżej lub wybierz...", + "Tag with this name already exist.": "Tag o tej nazwie już istnieje.", + "Tag with this value already exist.": "Tag o tej wartości już istnieje.", + color: "kolor", + "value (optional)": "wartość (opcjonalnie)", + Gray: "Szary", + Red: "Czerwony", + Orange: "Pomarańczowy", + Green: "Zielony", + Blue: "Niebieski", + Indigo: "Indygo", + Purple: "Fioletowy", + Pink: "Różowy", + "Search...": "Szukaj...", + "Avg. Ping": "Średni ping", + "Avg. Response": "Średnia odpowiedź", } diff --git a/src/languages/ru-RU.js b/src/languages/ru-RU.js index b25b5b122..956235de4 100644 --- a/src/languages/ru-RU.js +++ b/src/languages/ru-RU.js @@ -1,7 +1,6 @@ export default { languageName: "Русский", checkEverySecond: "Проверять каждые {0} секунд.", - "Avg.": "Средн.", retriesDescription: "Максимальное количество попыток перед пометкой сервиса как недоступного и отправкой уведомления", ignoreTLSError: "Игнорировать ошибку TLS/SSL для HTTPS сайтов", upsideDownModeDescription: "Реверс статуса сервиса. Если сервис доступен, то он помечается как НЕДОСТУПНЫЙ.", @@ -107,40 +106,67 @@ export default { "Last Result": "Последний результат", "Create your admin account": "Создайте аккаунт администратора", "Repeat Password": "Повторите пароль", - respTime: "Resp. Time (ms)", - notAvailableShort: "N/A", - Create: "Create", - clearEventsMsg: "Are you sure want to delete all events for this monitor?", - clearHeartbeatsMsg: "Are you sure want to delete all heartbeats for this monitor?", - confirmClearStatisticsMsg: "Are you sure want to delete ALL statistics?", - "Clear Data": "Clear Data", - Events: "Events", - Heartbeats: "Heartbeats", - "Auto Get": "Auto Get", - enableDefaultNotificationDescription: "For every new monitor this notification will be enabled by default. You can still disable the notification separately for each monitor.", - "Default enabled": "Default enabled", - "Also apply to existing monitors": "Also apply to existing monitors", - Export: "Export", - Import: "Import", - backupDescription: "You can backup all monitors and all notifications into a JSON file.", - backupDescription2: "PS: History and event data is not included.", - backupDescription3: "Sensitive data such as notification tokens is included in the export file, please keep it carefully.", - alertNoFile: "Please select a file to import.", - alertWrongFileType: "Please select a JSON file.", - twoFAVerifyLabel: "Please type in your token to verify that 2FA is working", - tokenValidSettingsMsg: "Token is valid! You can now save the 2FA settings.", - confirmEnableTwoFAMsg: "Are you sure you want to enable 2FA?", - confirmDisableTwoFAMsg: "Are you sure you want to disable 2FA?", - "Apply on all existing monitors": "Apply on all existing monitors", - "Verify Token": "Verify Token", - "Setup 2FA": "Setup 2FA", - "Enable 2FA": "Enable 2FA", - "Disable 2FA": "Disable 2FA", - "2FA Settings": "2FA Settings", - "Two Factor Authentication": "Two Factor Authentication", - Active: "Active", - Inactive: "Inactive", - Token: "Token", - "Show URI": "Show URI", - "Clear all statistics": "Clear all Statistics", + respTime: "Время ответа (мс)", + notAvailableShort: "Н/Д", + Create: "Создать", + clearEventsMsg: "Вы действительно хотите удалить всю статистику событий данного монитора?", + clearHeartbeatsMsg: "Вы действительно хотите удалить всю статистику опросов данного монитора?", + confirmClearStatisticsMsg: "Вы действительно хотите удалить ВСЮ статистику?", + "Clear Data": "Очистить статистику", + Events: "События", + Heartbeats: "Опросы", + "Auto Get": "Авто-получение", + enableDefaultNotificationDescription: "Для каждого нового монитора это уведомление будет включено по умолчанию. Вы всё ещё можете отключить уведомления в каждом мониторе отдельно.", + "Default enabled": "Использовать по умолчанию", + "Also apply to existing monitors": "Применить к существующим мониторам", + Export: "Экспорт", + Import: "Импорт", + backupDescription: "Вы можете сохранить резервную копию всех мониторов и уведомлений в виде JSON-файла", + backupDescription2: "P.S.: История и события сохранены не будут.", + backupDescription3: "Важные данные, такие как токены уведомлений, добавляются при экспорте, поэтому храните файлы в безопасном месте.", + alertNoFile: "Выберите файл для импорта.", + alertWrongFileType: "Выберите JSON-файл.", + twoFAVerifyLabel: "Пожалуйста, введите свой токен, чтобы проверить работу 2FA", + tokenValidSettingsMsg: "Токен действителен! Теперь вы можете сохранить настройки 2FA.", + confirmEnableTwoFAMsg: "Вы действительно хотите включить 2FA?", + confirmDisableTwoFAMsg: "Вы действительно хотите выключить 2FA?", + "Apply on all existing monitors": "Применить ко всем существующим мониторам", + "Verify Token": "Проверить токен", + "Setup 2FA": "Настройка 2FA", + "Enable 2FA": "Включить 2FA", + "Disable 2FA": "Выключить 2FA", + "2FA Settings": "Настройки 2FA", + "Two Factor Authentication": "Двухфакторная аутентификация", + Active: "Активно", + Inactive: "Неактивно", + Token: "Токен", + "Show URI": "Показать URI", + "Clear all statistics": "Очистить всю статистику", + retryCheckEverySecond: "Повторять каждые {0} секунд.", + importHandleDescription: "Выберите 'Пропустить существующие' если вы хотите пропустить каждый монитор или уведомление с таким же именем. 'Перезаписать' удалит каждый существующий монитор или уведомление.", + confirmImportMsg: "Вы действительно хотите восстановить резервную копию? Убедитесь, что вы выбрали подходящий вариант импорта.", + "Heartbeat Retry Interval": "Интервал повтора опроса", + "Import Backup": "Импорт резервной копии", + "Export Backup": "Экспорт резервной копии", + "Skip existing": "Пропустить существующие", + Overwrite: "Перезаписать", + Options: "Опции", + "Keep both": "Оставить оба", + Tags: "Теги", + "Add New below or Select...": "Добавить новое ниже или выбрать...", + "Tag with this name already exist.": "Такой тег уже существует.", + "Tag with this value already exist.": "Тег с таким значением уже существует.", + color: "цвет", + "value (optional)": "значение (опционально)", + Gray: "Серый", + Red: "Красный", + Orange: "Оранжевый", + Green: "Зелёный", + Blue: "Синий", + Indigo: "Индиго", + Purple: "Пурпурный", + Pink: "Розовый", + "Search...": "Поиск...", + "Avg. Ping": "Avg. Ping", + "Avg. Response": "Avg. Response", } diff --git a/src/languages/sr-latn.js b/src/languages/sr-latn.js index 38a6fe736..2ebeb32fd 100644 --- a/src/languages/sr-latn.js +++ b/src/languages/sr-latn.js @@ -1,7 +1,6 @@ export default { languageName: "Srpski", checkEverySecond: "Proveri svakih {0} sekundi.", - "Avg.": "Prosečni", retriesDescription: "Maksimum pokušaja pre nego što se servis obeleži kao neaktivan i pošalje se obaveštenje.", ignoreTLSError: "Ignoriši TLS/SSL greške za HTTPS veb stranice.", upsideDownModeDescription: "Obrnite status. Ako je servis dostupan, onda je obeležen kao neaktivan.", @@ -143,4 +142,31 @@ export default { Token: "Token", "Show URI": "Show URI", "Clear all statistics": "Clear all Statistics", + retryCheckEverySecond: "Retry every {0} seconds.", + importHandleDescription: "Choose 'Skip existing' if you want to skip every monitor or notification with the same name. 'Overwrite' will delete every existing monitor and notification.", + confirmImportMsg: "Are you sure to import the backup? Please make sure you've selected the right import option.", + "Heartbeat Retry Interval": "Heartbeat Retry Interval", + "Import Backup": "Import Backup", + "Export Backup": "Export Backup", + "Skip existing": "Skip existing", + Overwrite: "Overwrite", + Options: "Options", + "Keep both": "Keep both", + Tags: "Tags", + "Add New below or Select...": "Add New below or Select...", + "Tag with this name already exist.": "Tag with this name already exist.", + "Tag with this value already exist.": "Tag with this value already exist.", + color: "color", + "value (optional)": "value (optional)", + Gray: "Gray", + Red: "Red", + Orange: "Orange", + Green: "Green", + Blue: "Blue", + Indigo: "Indigo", + Purple: "Purple", + Pink: "Pink", + "Search...": "Search...", + "Avg. Ping": "Avg. Ping", + "Avg. Response": "Avg. Response", } diff --git a/src/languages/sr.js b/src/languages/sr.js index c163dcb64..b5cf1cb87 100644 --- a/src/languages/sr.js +++ b/src/languages/sr.js @@ -1,7 +1,6 @@ export default { languageName: "Српски", checkEverySecond: "Провери сваких {0} секунди.", - "Avg.": "Просечни", retriesDescription: "Максимум покушаја пре него што се сервис обележи као неактиван и пошаље се обавештење.", ignoreTLSError: "Игнориши TLS/SSL грешке за HTTPS веб странице.", upsideDownModeDescription: "Обрните статус. Ако је сервис доступан, онда је обележен као неактиван.", @@ -143,4 +142,31 @@ export default { Token: "Token", "Show URI": "Show URI", "Clear all statistics": "Clear all Statistics", + retryCheckEverySecond: "Retry every {0} seconds.", + importHandleDescription: "Choose 'Skip existing' if you want to skip every monitor or notification with the same name. 'Overwrite' will delete every existing monitor and notification.", + confirmImportMsg: "Are you sure to import the backup? Please make sure you've selected the right import option.", + "Heartbeat Retry Interval": "Heartbeat Retry Interval", + "Import Backup": "Import Backup", + "Export Backup": "Export Backup", + "Skip existing": "Skip existing", + Overwrite: "Overwrite", + Options: "Options", + "Keep both": "Keep both", + Tags: "Tags", + "Add New below or Select...": "Add New below or Select...", + "Tag with this name already exist.": "Tag with this name already exist.", + "Tag with this value already exist.": "Tag with this value already exist.", + color: "color", + "value (optional)": "value (optional)", + Gray: "Gray", + Red: "Red", + Orange: "Orange", + Green: "Green", + Blue: "Blue", + Indigo: "Indigo", + Purple: "Purple", + Pink: "Pink", + "Search...": "Search...", + "Avg. Ping": "Avg. Ping", + "Avg. Response": "Avg. Response", } diff --git a/src/languages/sv-SE.js b/src/languages/sv-SE.js index 559dbb824..f4c42627e 100644 --- a/src/languages/sv-SE.js +++ b/src/languages/sv-SE.js @@ -1,7 +1,6 @@ export default { languageName: "Svenska", checkEverySecond: "Uppdatera var {0} sekund.", - "Avg.": "Genomsnittligt", retriesDescription: "Max antal försök innan tjänsten markeras som nere och en notis skickas", ignoreTLSError: "Ignorera TLS/SSL-fel för webbsidor med HTTPS", upsideDownModeDescription: "Vänd upp och ner på statusen. Om tjänsten är nåbar visas den som NERE.", @@ -143,4 +142,31 @@ export default { Token: "Token", "Show URI": "Show URI", "Clear all statistics": "Clear all Statistics", + retryCheckEverySecond: "Retry every {0} seconds.", + importHandleDescription: "Choose 'Skip existing' if you want to skip every monitor or notification with the same name. 'Overwrite' will delete every existing monitor and notification.", + confirmImportMsg: "Are you sure to import the backup? Please make sure you've selected the right import option.", + "Heartbeat Retry Interval": "Heartbeat Retry Interval", + "Import Backup": "Import Backup", + "Export Backup": "Export Backup", + "Skip existing": "Skip existing", + Overwrite: "Overwrite", + Options: "Options", + "Keep both": "Keep both", + Tags: "Tags", + "Add New below or Select...": "Add New below or Select...", + "Tag with this name already exist.": "Tag with this name already exist.", + "Tag with this value already exist.": "Tag with this value already exist.", + color: "color", + "value (optional)": "value (optional)", + Gray: "Gray", + Red: "Red", + Orange: "Orange", + Green: "Green", + Blue: "Blue", + Indigo: "Indigo", + Purple: "Purple", + Pink: "Pink", + "Search...": "Search...", + "Avg. Ping": "Avg. Ping", + "Avg. Response": "Avg. Response", } diff --git a/src/languages/tr-TR.js b/src/languages/tr-TR.js index b62e289fc..c521680c9 100644 --- a/src/languages/tr-TR.js +++ b/src/languages/tr-TR.js @@ -1,7 +1,6 @@ export default { languageName: "Türkçe", checkEverySecond: "{0} Saniyede bir kontrol et.", - "Avg.": "Ortalama", retriesDescription: "Servisin kapalı olarak işaretlenmeden ve bir bildirim gönderilmeden önce maksimum yeniden deneme sayısı", ignoreTLSError: "HTTPS web siteleri için TLS/SSL hatasını yoksay", upsideDownModeDescription: "Servisin durumunu tersine çevirir. Servis çalışıyorsa kapalı olarak işaretler.", @@ -117,4 +116,56 @@ export default { Events: "Olaylar", Heartbeats: "Sağlık Durumları", "Auto Get": "Otomatik Al", + retryCheckEverySecond: "Retry every {0} seconds.", + enableDefaultNotificationDescription: "For every new monitor this notification will be enabled by default. You can still disable the notification separately for each monitor.", + importHandleDescription: "Choose 'Skip existing' if you want to skip every monitor or notification with the same name. 'Overwrite' will delete every existing monitor and notification.", + confirmImportMsg: "Are you sure to import the backup? Please make sure you've selected the right import option.", + twoFAVerifyLabel: "Please type in your token to verify that 2FA is working", + tokenValidSettingsMsg: "Token is valid! You can now save the 2FA settings.", + confirmEnableTwoFAMsg: "Are you sure you want to enable 2FA?", + confirmDisableTwoFAMsg: "Are you sure you want to disable 2FA?", + "Heartbeat Retry Interval": "Heartbeat Retry Interval", + "Import Backup": "Import Backup", + "Export Backup": "Export Backup", + Export: "Export", + Import: "Import", + "Default enabled": "Default enabled", + "Apply on all existing monitors": "Apply on all existing monitors", + backupDescription: "You can backup all monitors and all notifications into a JSON file.", + backupDescription2: "PS: History and event data is not included.", + backupDescription3: "Sensitive data such as notification tokens is included in the export file, please keep it carefully.", + alertNoFile: "Please select a file to import.", + alertWrongFileType: "Please select a JSON file.", + "Clear all statistics": "Clear all Statistics", + "Skip existing": "Skip existing", + Overwrite: "Overwrite", + Options: "Options", + "Keep both": "Keep both", + "Verify Token": "Verify Token", + "Setup 2FA": "Setup 2FA", + "Enable 2FA": "Enable 2FA", + "Disable 2FA": "Disable 2FA", + "2FA Settings": "2FA Settings", + "Two Factor Authentication": "Two Factor Authentication", + Active: "Active", + Inactive: "Inactive", + Token: "Token", + "Show URI": "Show URI", + Tags: "Tags", + "Add New below or Select...": "Add New below or Select...", + "Tag with this name already exist.": "Tag with this name already exist.", + "Tag with this value already exist.": "Tag with this value already exist.", + color: "color", + "value (optional)": "value (optional)", + Gray: "Gray", + Red: "Red", + Orange: "Orange", + Green: "Green", + Blue: "Blue", + Indigo: "Indigo", + Purple: "Purple", + Pink: "Pink", + "Search...": "Search...", + "Avg. Ping": "Avg. Ping", + "Avg. Response": "Avg. Response", } diff --git a/src/languages/zh-CN.js b/src/languages/zh-CN.js index c09a824da..c2b3dcc59 100644 --- a/src/languages/zh-CN.js +++ b/src/languages/zh-CN.js @@ -1,7 +1,6 @@ export default { languageName: "简体中文", checkEverySecond: "检测频率 {0} 秒", - "Avg.": "平均", retriesDescription: "最大重试失败次数", ignoreTLSError: "忽略HTTPS站点的证书错误", upsideDownModeDescription: "反向状态监控(状态码范围外为有效状态,反之为无效)", @@ -143,4 +142,31 @@ export default { Token: "Token", "Show URI": "Show URI", "Clear all statistics": "Clear all Statistics", + retryCheckEverySecond: "Retry every {0} seconds.", + importHandleDescription: "Choose 'Skip existing' if you want to skip every monitor or notification with the same name. 'Overwrite' will delete every existing monitor and notification.", + confirmImportMsg: "Are you sure to import the backup? Please make sure you've selected the right import option.", + "Heartbeat Retry Interval": "Heartbeat Retry Interval", + "Import Backup": "Import Backup", + "Export Backup": "Export Backup", + "Skip existing": "Skip existing", + Overwrite: "Overwrite", + Options: "Options", + "Keep both": "Keep both", + Tags: "Tags", + "Add New below or Select...": "Add New below or Select...", + "Tag with this name already exist.": "Tag with this name already exist.", + "Tag with this value already exist.": "Tag with this value already exist.", + color: "color", + "value (optional)": "value (optional)", + Gray: "Gray", + Red: "Red", + Orange: "Orange", + Green: "Green", + Blue: "Blue", + Indigo: "Indigo", + Purple: "Purple", + Pink: "Pink", + "Search...": "Search...", + "Avg. Ping": "Avg. Ping", + "Avg. Response": "Avg. Response", } diff --git a/src/languages/zh-HK.js b/src/languages/zh-HK.js index 1a4ae5a6c..1e1e0c7dc 100644 --- a/src/languages/zh-HK.js +++ b/src/languages/zh-HK.js @@ -36,7 +36,6 @@ export default { hour: "小時", "-hour": "小時", checkEverySecond: "每 {0} 秒檢查一次", - "Avg.": "平均", Response: "反應時間", Ping: "反應時間", "Monitor Type": "監測器類型", @@ -143,4 +142,31 @@ export default { Token: "Token", "Show URI": "顯示 URI", "Clear all statistics": "清除所有歷史記錄", + retryCheckEverySecond: "Retry every {0} seconds.", + importHandleDescription: "Choose 'Skip existing' if you want to skip every monitor or notification with the same name. 'Overwrite' will delete every existing monitor and notification.", + confirmImportMsg: "Are you sure to import the backup? Please make sure you've selected the right import option.", + "Heartbeat Retry Interval": "Heartbeat Retry Interval", + "Import Backup": "Import Backup", + "Export Backup": "Export Backup", + "Skip existing": "Skip existing", + Overwrite: "Overwrite", + Options: "Options", + "Keep both": "Keep both", + Tags: "Tags", + "Add New below or Select...": "Add New below or Select...", + "Tag with this name already exist.": "Tag with this name already exist.", + "Tag with this value already exist.": "Tag with this value already exist.", + color: "color", + "value (optional)": "value (optional)", + Gray: "Gray", + Red: "Red", + Orange: "Orange", + Green: "Green", + Blue: "Blue", + Indigo: "Indigo", + Purple: "Purple", + Pink: "Pink", + "Search...": "Search...", + "Avg. Ping": "Avg. Ping", + "Avg. Response": "Avg. Response", } diff --git a/src/pages/Details.vue b/src/pages/Details.vue index c992d240b..c93e47d0b 100644 --- a/src/pages/Details.vue +++ b/src/pages/Details.vue @@ -49,7 +49,7 @@
-

{{ pingTitle }}

+

{{ pingTitle() }}

({{ $t("Current") }})

@@ -58,7 +58,7 @@
-

{{ $t("Avg.") }} {{ pingTitle }}

+

{{ pingTitle(true) }}

(24{{ $t("-hour") }})

@@ -240,14 +240,6 @@ export default { } }, computed: { - - pingTitle() { - if (this.monitor.type === "http") { - return this.$t("Response"); - } - return this.$t("Ping"); - }, - monitor() { let id = this.$route.params.id return this.$root.monitorList[id]; @@ -378,6 +370,19 @@ export default { } }) }, + + pingTitle(average = false) { + let translationPrefix = "" + if (average) { + translationPrefix = "Avg. " + } + + if (this.monitor.type === "http") { + return this.$t(translationPrefix + "Response"); + } + + return this.$t(translationPrefix + "Ping"); + }, }, } diff --git a/src/pages/EditMonitor.vue b/src/pages/EditMonitor.vue index 2b80880c0..6d8e58200 100644 --- a/src/pages/EditMonitor.vue +++ b/src/pages/EditMonitor.vue @@ -50,7 +50,7 @@
- +
@@ -235,6 +235,9 @@ export default { // Source: https://digitalfortress.tech/tips/top-15-commonly-used-regex/ // eslint-disable-next-line ipRegexPattern: "((^\s*((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))\s*$)|(^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$))", + // Source: https://stackoverflow.com/questions/106179/regular-expression-to-match-dns-hostname-or-ip-address + // eslint-disable-next-line + hostnameRegexPattern: "^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$" } }, diff --git a/src/pages/Settings.vue b/src/pages/Settings.vue index 0d8862292..6ba047cdd 100644 --- a/src/pages/Settings.vue +++ b/src/pages/Settings.vue @@ -289,6 +289,12 @@

Utilizzare con attenzione.

+ +