diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index 6e53fa086..d55fbd4fc 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1,6 +1,6 @@ # These are supported funding model platforms -#github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] +github: louislam # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] #patreon: # Replace with a single Patreon username open_collective: uptime-kuma # Replace with a single Open Collective username #ko_fi: # Replace with a single Ko-fi username diff --git a/.github/workflows/auto-test.yml b/.github/workflows/auto-test.yml index 1d4452ad2..c59a61b91 100644 --- a/.github/workflows/auto-test.yml +++ b/.github/workflows/auto-test.yml @@ -27,7 +27,7 @@ jobs: with: node-version: ${{ matrix.node-version }} cache: 'npm' - - run: npm ci + - run: npm run install-legacy - run: npm run build - run: npm test env: diff --git a/README.md b/README.md index be5494b5f..75ee8b237 100644 --- a/README.md +++ b/README.md @@ -92,7 +92,7 @@ Light Mode: Status Page: - + Settings Page: diff --git a/server/model/monitor.js b/server/model/monitor.js index 0e2d84ede..9089b8306 100644 --- a/server/model/monitor.js +++ b/server/model/monitor.js @@ -12,6 +12,7 @@ const { R } = require("redbean-node"); const { BeanModel } = require("redbean-node/dist/bean-model"); const { Notification } = require("../notification"); const version = require("../../package.json").version; +const apicache = require("../modules/apicache"); /** * status: @@ -333,6 +334,9 @@ class Monitor extends BeanModel { console.log(e); } } + + // Clear Status Page Cache + apicache.clear(); } } else { diff --git a/server/server.js b/server/server.js index ed6fa6df7..390c94095 100644 --- a/server/server.js +++ b/server/server.js @@ -1041,6 +1041,10 @@ exports.entryPage = "dashboard"; notificationIDList: {}, }; + if (monitorListData[i].pushToken) { + monitor.pushToken = monitorListData[i].pushToken; + } + let bean = R.dispense("monitor"); let notificationIDList = monitor.notificationIDList; diff --git a/src/assets/app.scss b/src/assets/app.scss index 3072e37c4..2cbec5c01 100644 --- a/src/assets/app.scss +++ b/src/assets/app.scss @@ -3,7 +3,7 @@ @import "node_modules/bootstrap/scss/bootstrap"; #app { - font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, segoe ui, Roboto, helvetica neue, Arial, noto sans, sans-serif, apple color emoji, segoe ui emoji, segoe ui symbol, noto color emoji; + font-family: BlinkMacSystemFont, segoe ui, Roboto, helvetica neue, Arial, noto sans, sans-serif, apple color emoji, segoe ui emoji, segoe ui symbol, noto color emoji; } h1 { diff --git a/src/languages/bg-BG.js b/src/languages/bg-BG.js index bcf1b573b..48d3f2381 100644 --- a/src/languages/bg-BG.js +++ b/src/languages/bg-BG.js @@ -1,7 +1,7 @@ export default { languageName: "Български", - checkEverySecond: "Ще се извършва на всеки {0} секунди.", - retryCheckEverySecond: "Повторен опит на всеки {0} секунди.", + checkEverySecond: "Ще се извършва на всеки {0} секунди", + retryCheckEverySecond: "Ще се извършва на всеки {0} секунди", retriesDescription: "Максимакен брой опити преди услугата да бъде маркирана като недостъпна и да бъде изпратено известие", ignoreTLSError: "Игнорирай TLS/SSL грешки за HTTPS уебсайтове", upsideDownModeDescription: "Обърни статуса от достъпен на недостъпен. Ако услугата е достъпна се вижда НЕДОСТЪПНА.", @@ -28,7 +28,7 @@ export default { confirmDisableTwoFAMsg: "Сигурни ли сте, че желаете да изключите 2FA?", Settings: "Настройки", Dashboard: "Табло", - "New Update": "Нова актуализация", + "New Update": "Налична е актуализация", Language: "Език", Appearance: "Изглед", Theme: "Тема", @@ -57,7 +57,7 @@ export default { "Cert Exp.": "Вал. сертификат", days: "дни", day: "ден", - "-day": "-денa", + "-day": "-дни", hour: "час", "-hour": "-часa", Response: "Отговор", diff --git a/src/languages/de-DE.js b/src/languages/de-DE.js index 20beb626e..bf2dff8c6 100644 --- a/src/languages/de-DE.js +++ b/src/languages/de-DE.js @@ -2,7 +2,7 @@ export default { languageName: "Deutsch (Deutschland)", Settings: "Einstellungen", Dashboard: "Dashboard", - "New Update": "Update Verfügbar", + "New Update": "Update verfügbar", Language: "Sprache", Appearance: "Erscheinung", Theme: "Thema", @@ -50,7 +50,7 @@ export default { Advanced: "Erweitert", ignoreTLSError: "Ignoriere TLS/SSL Fehler von Webseiten", "Upside Down Mode": "Umgedrehter Modus", - upsideDownModeDescription: "Drehe den Modus um, ist der Dienst erreichbar, wird er als Inaktiv angezeigt.", + upsideDownModeDescription: "Drehe den Modus um, ist der Dienst erreichbar, wird er als inaktiv angezeigt.", "Max. Redirects": "Max. Weiterleitungen", maxRedirectDescription: "Maximale Anzahl von Weiterleitungen, denen gefolgt werden soll. Setzte auf 0, um Weiterleitungen zu deaktivieren.", "Accepted Status Codes": "Erlaubte HTTP-Statuscodes", @@ -71,7 +71,7 @@ export default { "Allow indexing": "Indizierung zulassen", "Discourage search engines from indexing site": "Halte Suchmaschinen von der Indexierung der Seite ab", "Change Password": "Passwort ändern", - "Current Password": "Dezeitiges Passwort", + "Current Password": "Derzeitiges Passwort", "New Password": "Neues Passwort", "Repeat New Password": "Wiederhole neues Passwort", passwordNotMatchMsg: "Passwörter stimmen nicht überein. ", @@ -91,24 +91,24 @@ export default { Login: "Einloggen", "No Monitors, please": "Keine Monitore, bitte", "add one": "hinzufügen", - "Notification Type": "Benachrichtigungs Dienst", + "Notification Type": "Benachrichtigungsdienst", Email: "E-Mail", Test: "Test", "Certificate Info": "Zertifikatsinfo", keywordDescription: "Suche nach einem Schlüsselwort in der HTML oder JSON Ausgabe. Bitte beachte, es wird in der Groß-/Kleinschreibung unterschieden.", - deleteMonitorMsg: "Bist du sicher das du den Monitor löschen möchtest?", + deleteMonitorMsg: "Bist du sicher, dass du den Monitor löschen möchtest?", deleteNotificationMsg: "Möchtest du diese Benachrichtigung wirklich für alle Monitore löschen?", resoverserverDescription: "Cloudflare ist als der Standardserver festgelegt, dieser kann jederzeit geändern werden.", "Resolver Server": "Auflösungsserver", rrtypeDescription: "Wähle den RR-Typ aus, welchen du überwachen möchtest.", "Last Result": "Letztes Ergebnis", - pauseMonitorMsg: "Bist du sicher das du den Monitor pausieren möchtest?", - clearEventsMsg: "Bist du sicher das du alle Ereignisse für diesen Monitor löschen möchtest?", - clearHeartbeatsMsg: "Bist du sicher das du alle Statistiken für diesen Monitor löschen möchtest?", + pauseMonitorMsg: "Bist du sicher, dass du den Monitor pausieren möchtest?", + clearEventsMsg: "Bist du sicher, dass du alle Ereignisse für diesen Monitor löschen möchtest?", + clearHeartbeatsMsg: "Bist du sicher, dass du alle Statistiken für diesen Monitor löschen möchtest?", "Clear Data": "Lösche Daten", Events: "Ereignisse", Heartbeats: "Statistiken", - confirmClearStatisticsMsg: "Bist du sicher das du ALLE Statistiken löschen möchtest?", + confirmClearStatisticsMsg: "Bist du dir wirklich sicher, dass du ALLE Statistiken löschen möchtest?", "Create your admin account": "Erstelle dein Admin Konto", "Repeat Password": "Wiederhole das Passwort", "Resource Record Type": "Resource Record Type", @@ -124,7 +124,7 @@ export default { backupDescription: "Es können alle Monitore und Benachrichtigungen in einer JSON-Datei gesichert werden.", backupDescription2: "PS: Verlaufs- und Ereignisdaten sind nicht enthalten.", backupDescription3: "Sensible Daten wie Benachrichtigungstoken sind in der Exportdatei enthalten, bitte bewahre sie sorgfältig auf.", - alertNoFile: "Bitte wähle eine Datei zum importieren aus.", + alertNoFile: "Bitte wähle eine Datei zum Importieren aus.", alertWrongFileType: "Bitte wähle eine JSON Datei aus.", "Clear all statistics": "Lösche alle Statistiken", importHandleDescription: "Wähle 'Vorhandene überspringen' aus, wenn jeder Monitor oder Benachrichtigung mit demselben Namen übersprungen werden soll. 'Überschreiben' löscht jeden vorhandenen Monitor sowie Benachrichtigungen.", @@ -133,14 +133,14 @@ export default { Options: "Optionen", confirmImportMsg: "Möchtest du das Backup wirklich importieren? Bitte stelle sicher, dass die richtige Import Option ausgewählt ist.", "Keep both": "Beide behalten", - twoFAVerifyLabel: "Bitte trage deinen Token ein um zu verifizieren das 2FA funktioniert", + twoFAVerifyLabel: "Bitte trage deinen Token ein, um zu verifizieren das 2FA funktioniert", "Verify Token": "Token verifizieren", "Setup 2FA": "2FA Einrichten", "Enable 2FA": "2FA Aktivieren", "Disable 2FA": "2FA deaktivieren", "2FA Settings": "2FA Einstellungen", - confirmEnableTwoFAMsg: "Bist du sicher das du 2FA aktivieren möchtest?", - confirmDisableTwoFAMsg: "Bist du sicher das du 2FA deaktivieren möchtest?", + confirmEnableTwoFAMsg: "Bist du sicher, dass du 2FA aktivieren möchtest?", + confirmDisableTwoFAMsg: "Bist du sicher, dass du 2FA deaktivieren möchtest?", tokenValidSettingsMsg: "Token gültig! Du kannst jetzt die 2FA Einstellungen speichern.", "Two Factor Authentication": "Zwei Faktor Authentifizierung", Active: "Aktiv", @@ -162,7 +162,7 @@ export default { Purple: "Lila", Pink: "Pink", "Search...": "Suchen...", - "Heartbeat Retry Interval": "Takt-Wiederholungsintervall", + "Heartbeat Retry Interval": "Heartbeat-Wiederholungsintervall", retryCheckEverySecond: "Versuche alle {0} Sekunden", "Import Backup": "Import Backup", "Export Backup": "Export Backup", @@ -178,10 +178,10 @@ export default { "Add a monitor": "Monitor hinzufügen", "Edit Status Page": "Bearbeite Statusseite", "Go to Dashboard": "Gehe zum Dashboard", - "Status Page": "Status Page", + "Status Page": "Status Seite", telegram: "Telegram", webhook: "Webhook", - smtp: "Email (SMTP)", + smtp: "E-Mail (SMTP)", discord: "Discord", teams: "Microsoft Teams", signal: "Signal", @@ -193,7 +193,7 @@ export default { octopush: "Octopush", promosms: "PromoSMS", lunasea: "LunaSea", - apprise: "Apprise (Support 50+ Notification services)", + apprise: "Apprise (Unterstützung für 50+ Benachrichtigungsdienste)", pushbullet: "Pushbullet", line: "Line Messenger", mattermost: "Mattermost", diff --git a/src/languages/es-ES.js b/src/languages/es-ES.js index 3fa207339..41254b51b 100644 --- a/src/languages/es-ES.js +++ b/src/languages/es-ES.js @@ -17,7 +17,7 @@ export default { pauseMonitorMsg: "¿Seguro que quieres pausar?", Settings: "Ajustes", Dashboard: "Panel", - "New Update": "Vueva actualización", + "New Update": "Nueva actualización", Language: "Idioma", Appearance: "Apariencia", Theme: "Tema", @@ -61,11 +61,11 @@ export default { Retries: "Reintentos", Advanced: "Avanzado", "Upside Down Mode": "Modo invertido", - "Max. Redirects": "Máx. redirecciones", + "Max. Redirects": "Redirecciones Máximas", "Accepted Status Codes": "Códigos de estado aceptados", Save: "Guardar", Notifications: "Notificaciones", - "Not available, please setup.": "No disponible, por favor configurar.", + "Not available, please setup.": "No disponible, por favor configúrelo.", "Setup Notification": "Configurar notificación", Light: "Claro", Dark: "Oscuro", @@ -83,11 +83,11 @@ export default { "New Password": "Nueva contraseña", "Repeat New Password": "Repetir nueva contraseña", "Update Password": "Actualizar contraseña", - "Disable Auth": "Deshabilitar Autenticación ", - "Enable Auth": "Habilitar Autenticación ", + "Disable Auth": "Deshabilitar Autenticación", + "Enable Auth": "Habilitar Autenticación", Logout: "Cerrar sesión", Leave: "Salir", - "I understand, please disable": "Lo comprendo, por favor deshabilitar", + "I understand, please disable": "Entiendo, por favor deshabilitar", Confirm: "Confirmar", Yes: "Sí", No: "No", @@ -100,7 +100,7 @@ export default { "Notification Type": "Tipo de notificación", Email: "Email", Test: "Test", - "Certificate Info": "Información del certificado ", + "Certificate Info": "Información del certificado", "Resolver Server": "Servidor de resolución", "Resource Record Type": "Tipo de Registro", "Last Result": "Último resultado", @@ -108,78 +108,78 @@ export default { "Repeat Password": "Repetir contraseña", respTime: "Tiempo de resp. (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", + Create: "Crear", + clearEventsMsg: "¿Está seguro de que desea eliminar todos los eventos de este monitor?", + clearHeartbeatsMsg: "¿Está seguro de que desea eliminar todos los latidos de este monitor?", + confirmClearStatisticsMsg: "¿Está seguro de que desea eliminar TODAS las estadísticas?", + "Clear Data": "Borrar Datos", + Events: "Eventos", + Heartbeats: "Latidos", + "Auto Get": "Obtener automáticamente", + enableDefaultNotificationDescription: "Para cada nuevo monitor, esta notificación estará habilitada de forma predeterminada. Aún puede deshabilitar la notificación por separado para cada monitor.", + "Default enabled": "Habilitado por defecto", + "Also apply to existing monitors": "También se aplica a monitores existentes", + Export: "Exportar", + Import: "Importar", + backupDescription: "Puede hacer una copia de seguridad de todos los monitores y todas las notificaciones en un archivo JSON.", + backupDescription2: "PD: el historial y los datos de eventos no están incluidos.", + backupDescription3: "Los datos confidenciales, como los tokens de notificación, se incluyen en el archivo de exportación. Guárdelo con cuidado.", + alertNoFile: "Seleccione un archivo para importar.", + alertWrongFileType: "Seleccione un archivo JSON.", + twoFAVerifyLabel: "Ingrese su token para verificar que 2FA está funcionando", + tokenValidSettingsMsg: "¡El token es válido! Ahora puede guardar la configuración de 2FA.", + confirmEnableTwoFAMsg: "¿Estás seguro de que quieres habilitar 2FA?", + confirmDisableTwoFAMsg: "¿Estás seguro de que quieres desactivar 2FA?", + "Apply on all existing monitors": "Aplicar en todos los monitores existentes", + "Verify Token": "Verificar token", + "Setup 2FA": "Configurar 2FA", + "Enable 2FA": "Habilitar 2FA", + "Disable 2FA": "Desactivar 2FA", + "2FA Settings": "Ajustes 2FA", + "Two Factor Authentication": "Autenticación de dos factores", + Active: "Activo", + Inactive: "Inactivo", 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.", + "Show URI": "Mostrar URI", + "Clear all statistics": "Borrar todas las estadísticas", + retryCheckEverySecond: "Reintentar cada {0} segundo.", + importHandleDescription: "Elija 'Omitir existente' si desea omitir todos los monitores o notificaciones con el mismo nombre. 'Sobrescribir' eliminará todos los monitores y notificaciones existentes.", + confirmImportMsg: "¿Estás seguro de importar la copia de seguridad? Asegúrese de haber seleccionado la opción de importación correcta.", + "Heartbeat Retry Interval": "Intervalo de reintento de latido", + "Import Backup": "Importar copia de seguridad", + "Export Backup": "Exportar copia de seguridad", + "Skip existing": "Omitir existente", + Overwrite: "Sobrescribir", + Options: "Opciones", + "Keep both": "Mantén ambos", + Tags: "Etiquetas", + "Add New below or Select...": "Agregar nuevo a continuación o Seleccionar...", + "Tag with this name already exist.": "La etiqueta con este nombre ya existe.", + "Tag with this value already exist.": "La etiqueta con este valor ya existe.", 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", - "Entry Page": "Entry Page", - statusPageNothing: "Nothing here, please add a group or a monitor.", - "No Services": "No Services", - "All Systems Operational": "All Systems Operational", - "Partially Degraded Service": "Partially Degraded Service", - "Degraded Service": "Degraded Service", - "Add Group": "Add Group", - "Add a monitor": "Add a monitor", - "Edit Status Page": "Edit Status Page", - "Go to Dashboard": "Go to Dashboard", - "Status Page": "Status Page", + "value (optional)": "valor (opcional)", + Gray: "Gris", + Red: "Rojo", + Orange: "Naranja", + Green: "Verde", + Blue: "Azul", + Indigo: "Índigo", + Purple: "Morado", + Pink: "Rosa", + "Search...": "Buscar...", + "Avg. Ping": "Ping promedio", + "Avg. Response": "Respuesta promedio", + "Entry Page": "Página de entrada", + statusPageNothing: "No hay nada aquí, agregue un grupo o un monitor.", + "No Services": "Sin servicio", + "All Systems Operational": "Todos los sistemas están operativos", + "Partially Degraded Service": "Servicio parcialmente degradado", + "Degraded Service": "Servicio degradado", + "Add Group": "Agregar Grupo", + "Add a monitor": "Agregar un monitor", + "Edit Status Page": "Editar página de estado", + "Go to Dashboard": "Ir al panel de control", + "Status Page": "Página de estado", telegram: "Telegram", webhook: "Webhook", smtp: "Email (SMTP)", @@ -194,7 +194,7 @@ export default { octopush: "Octopush", promosms: "PromoSMS", lunasea: "LunaSea", - apprise: "Apprise (Support 50+ Notification services)", + apprise: "Apprise (Admite más de 50 servicios de notificación)", pushbullet: "Pushbullet", line: "Line Messenger", mattermost: "Mattermost", diff --git a/src/languages/ko-KR.js b/src/languages/ko-KR.js index 9d5cb5bdf..8ad7e9600 100644 --- a/src/languages/ko-KR.js +++ b/src/languages/ko-KR.js @@ -108,78 +108,78 @@ export default { "Repeat Password": "비밀번호 재입력", respTime: "응답 시간 (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", - 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", - "Entry Page": "Entry Page", - statusPageNothing: "Nothing here, please add a group or a monitor.", - "No Services": "No Services", - "All Systems Operational": "All Systems Operational", - "Partially Degraded Service": "Partially Degraded Service", - "Degraded Service": "Degraded Service", - "Add Group": "Add Group", - "Add a monitor": "Add a monitor", - "Edit Status Page": "Edit Status Page", - "Go to Dashboard": "Go to Dashboard", - "Status Page": "Status Page", + Create: "생성하기", + clearEventsMsg: "정말로 이 모니터링부터 모든 이벤트를 제거할까요?", + clearHeartbeatsMsg: "정말로 이 모니터링부터 모든 하트비트를 제거할까요?", + confirmClearStatisticsMsg: "정말로 모든 통계치를 제거할까요?", + "Clear Data": "데이터 클리어", + Events: "이벤트", + Heartbeats: "하트비트", + "Auto Get": "자동 Get", + enableDefaultNotificationDescription: "모든 모니터링에 이 알림이 기본값으로 설정될거에요. 각각 모니터링에서 이 알림을 비활성화 할 수 있어요.", + "Default enabled": "기본값 ", + "Also apply to existing monitors": "기존 모니터링에도 적용되요.", + Export: "내보내기", + Import: "가져오기", + backupDescription: "모든 모니터링과 알림을 JSON 파일 형식에 저장할 수 있어요.", + backupDescription2: "(히스토리와 이벤트 데이터는 포함되어 있지 않아요.)", + backupDescription3: "알림 토큰과 같은 보안 데이터가 내보내기 파일에 포함되어 있으므로 관리에 주의해주세요.", + alertNoFile: "가져오기를 하기 위해 파일을 선택해주세요.", + alertWrongFileType: "JSON 파일을 선택해주세요.", + twoFAVerifyLabel: "2단계 인증이 정상적으로 등록됬는지 확인하기 위해 토큰을 입력해주세요.", + tokenValidSettingsMsg: "토큰이 정상 값 이에요! 2단계 인증 설정을 저장할 수 있어요.", + confirmEnableTwoFAMsg: "정말로 2단계 인증을 활성화 할까요?", + confirmDisableTwoFAMsg: "정말로 2단계 인증을 비활성화 할까요?", + "Apply on all existing monitors": "기존 모니터링에 모두 적용하기", + "Verify Token": "토큰 검증", + "Setup 2FA": "2단계 인증 설정하기", + "Enable 2FA": "2단계 인증 활성화", + "Disable 2FA": "2단계 인증 비활성화", + "2FA Settings": "2단계 인증 설정", + "Two Factor Authentication": "2단계 인증", + 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. Response": "평균 응답", + "Entry Page": "첫 페이지", + statusPageNothing: "아무것도 없어요. 새로운 그룹 또는 모니터링을 추가해주세요.", + "No Services": "서비스 없음", + "All Systems Operational": "모든 시스템 정상", + "Partially Degraded Service": "일부 시스템 비정상", + "Degraded Service": "모든 시스템 비정상", + "Add Group": "그룹 추가", + "Add a monitor": "모니터링 추가r", + "Edit Status Page": "상태 페이지 수정", + "Go to Dashboard": "대쉬보드로 가기", + "Status Page": "상태 페이지", telegram: "Telegram", webhook: "Webhook", smtp: "Email (SMTP)", @@ -194,7 +194,7 @@ export default { octopush: "Octopush", promosms: "PromoSMS", lunasea: "LunaSea", - apprise: "Apprise (Support 50+ Notification services)", + apprise: "Apprise (50개 이상 알림 서비스 )", pushbullet: "Pushbullet", line: "Line Messenger", mattermost: "Mattermost", diff --git a/src/pages/Details.vue b/src/pages/Details.vue index ee0c4948b..1363aa205 100644 --- a/src/pages/Details.vue +++ b/src/pages/Details.vue @@ -83,6 +83,7 @@ +
@@ -93,6 +94,7 @@
+
@@ -270,7 +272,10 @@ export default { }, tlsInfo() { - if (this.$root.tlsInfoList[this.monitor.id]) { + // Add: this.$root.tlsInfoList[this.monitor.id].certInfo + // Fix: TypeError: Cannot read properties of undefined (reading 'validTo') + // Reason: TLS Info object format is changed in 1.8.0, if for some reason, it cannot connect to the site after update to 1.8.0, the object is still in the old format. + if (this.$root.tlsInfoList[this.monitor.id] && this.$root.tlsInfoList[this.monitor.id].certInfo) { return this.$root.tlsInfoList[this.monitor.id]; }