From 314fa18bdcdab25147d4df3ca3ed754888188e3f Mon Sep 17 00:00:00 2001 From: Adam Stachowicz Date: Thu, 4 Nov 2021 00:19:04 +0100 Subject: [PATCH 001/174] Fix #871 --- src/components/notifications/Telegram.vue | 32 +++++++++-------------- 1 file changed, 12 insertions(+), 20 deletions(-) diff --git a/src/components/notifications/Telegram.vue b/src/components/notifications/Telegram.vue index 3fe287ee..0fa4dd55 100644 --- a/src/components/notifications/Telegram.vue +++ b/src/components/notifications/Telegram.vue @@ -25,13 +25,7 @@

- - - + {{ telegramGetUpdatesURL() }}

@@ -40,49 +34,47 @@ From 665c263c03936c063a3528047aa33001ce42801e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivan=20Bratovi=C4=87?= Date: Tue, 2 Nov 2021 11:51:45 +0100 Subject: [PATCH 002/174] Add db migrations for new basic auth fields --- db/patch-monitor-basicauth.sql | 10 ++++++++++ server/database.js | 1 + 2 files changed, 11 insertions(+) create mode 100644 db/patch-monitor-basicauth.sql diff --git a/db/patch-monitor-basicauth.sql b/db/patch-monitor-basicauth.sql new file mode 100644 index 00000000..3a33350d --- /dev/null +++ b/db/patch-monitor-basicauth.sql @@ -0,0 +1,10 @@ +-- You should not modify if this have pushed to Github, unless it does serious wrong with the db. +BEGIN TRANSACTION; + +ALTER TABLE monitor + ADD basicauth_user TEXT default null; + +ALTER TABLE monitor + ADD basicauth_pass TEXT default null; + +COMMIT; diff --git a/server/database.js b/server/database.js index 41d91e85..cc7247f1 100644 --- a/server/database.js +++ b/server/database.js @@ -52,6 +52,7 @@ class Database { "patch-http-monitor-method-body-and-headers.sql": true, "patch-2fa-invalidate-used-token.sql": true, "patch-notification_sent_history.sql": true, + "patch-monitor-basicauth.sql": true, } /** From 23736549f90eb86afcca919e99e06abfe66c3105 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivan=20Bratovi=C4=87?= Date: Tue, 2 Nov 2021 12:30:44 +0100 Subject: [PATCH 003/174] Implement HTTP basic auth feature --- server/model/monitor.js | 20 ++++++++++++++++++++ server/server.js | 4 ++++ src/pages/EditMonitor.vue | 10 ++++++++++ 3 files changed, 34 insertions(+) diff --git a/server/model/monitor.js b/server/model/monitor.js index fc329231..c80e941e 100644 --- a/server/model/monitor.js +++ b/server/model/monitor.js @@ -58,6 +58,8 @@ class Monitor extends BeanModel { method: this.method, body: this.body, headers: this.headers, + basicauth_user: this.basicauth_user, + basicauth_pass: this.basicauth_pass, hostname: this.hostname, port: this.port, maxretries: this.maxretries, @@ -80,6 +82,15 @@ class Monitor extends BeanModel { }; } + /** + * Encode user and password to Base64 encoding + * for HTTP "basic" auth, as per RFC-7617 + * @returns {string} + */ + encodeB64(user, pass) { + return btoa(user + ":" + pass); + } + /** * Parse to boolean * @returns {boolean} @@ -141,6 +152,14 @@ class Monitor extends BeanModel { // Do not do any queries/high loading things before the "bean.ping" let startTime = dayjs().valueOf(); + // HTTP basic auth + let basicauthHeader = {}; + if (this.basicauth_user) { + basicauthHeader = { + "Authorization": "Basic " + this.encodeB64(this.basicauth_user, this.basicauth_pass) + } + } + const options = { url: this.url, method: (this.method || "get").toLowerCase(), @@ -150,6 +169,7 @@ class Monitor extends BeanModel { "Accept": "*/*", "User-Agent": "Uptime-Kuma/" + version, ...(this.headers ? JSON.parse(this.headers) : {}), + ...(basicauthHeader) }, httpsAgent: new https.Agent({ maxCachedSessions: 0, // Use Custom agent to disable session reuse (https://github.com/nodejs/node/issues/3940) diff --git a/server/server.js b/server/server.js index d1fd7ff2..76d456c5 100644 --- a/server/server.js +++ b/server/server.js @@ -575,6 +575,8 @@ exports.entryPage = "dashboard"; bean.method = monitor.method; bean.body = monitor.body; bean.headers = monitor.headers; + bean.basicauth_user = monitor.basicauth_user; + bean.basicauth_pass = monitor.basicauth_pass; bean.interval = monitor.interval; bean.retryInterval = monitor.retryInterval; bean.hostname = monitor.hostname; @@ -1139,6 +1141,8 @@ exports.entryPage = "dashboard"; method: monitorListData[i].method || "GET", body: monitorListData[i].body, headers: monitorListData[i].headers, + basicauth_user: monitorListData[i].basicauth_user, + basicauth_pass: monitorListData[i].basicauth_pass, interval: monitorListData[i].interval, retryInterval: retryInterval, hostname: monitorListData[i].hostname, diff --git a/src/pages/EditMonitor.vue b/src/pages/EditMonitor.vue index 65c3dad6..18954968 100644 --- a/src/pages/EditMonitor.vue +++ b/src/pages/EditMonitor.vue @@ -265,6 +265,15 @@ + + +

{{ $t("HTTP Basic Auth") }}

+
+ + + + +
@@ -487,6 +496,7 @@ export default { this.monitor.headers = JSON.stringify(JSON.parse(this.monitor.headers), null, 4); } + if (this.isAdd) { this.$root.add(this.monitor, async (res) => { From 0dcb7aed21fe9d63ffbdc6c866e0d4cd4485b6c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivan=20Bratovi=C4=87?= Date: Tue, 2 Nov 2021 13:11:33 +0100 Subject: [PATCH 004/174] Delinting --- server/model/monitor.js | 6 +++--- src/pages/EditMonitor.vue | 3 +-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/server/model/monitor.js b/server/model/monitor.js index c80e941e..95ef3933 100644 --- a/server/model/monitor.js +++ b/server/model/monitor.js @@ -87,9 +87,9 @@ class Monitor extends BeanModel { * for HTTP "basic" auth, as per RFC-7617 * @returns {string} */ - encodeB64(user, pass) { + encodeB64(user, pass) { return btoa(user + ":" + pass); - } + } /** * Parse to boolean @@ -157,7 +157,7 @@ class Monitor extends BeanModel { if (this.basicauth_user) { basicauthHeader = { "Authorization": "Basic " + this.encodeB64(this.basicauth_user, this.basicauth_pass) - } + }; } const options = { diff --git a/src/pages/EditMonitor.vue b/src/pages/EditMonitor.vue index 18954968..f5099aa3 100644 --- a/src/pages/EditMonitor.vue +++ b/src/pages/EditMonitor.vue @@ -266,7 +266,7 @@ - +

{{ $t("HTTP Basic Auth") }}

@@ -496,7 +496,6 @@ export default { this.monitor.headers = JSON.stringify(JSON.parse(this.monitor.headers), null, 4); } - if (this.isAdd) { this.$root.add(this.monitor, async (res) => { From 179ca232bc85d6a7a0bbedc05d10be5f6e6a003e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivan=20Bratovi=C4=87?= Date: Thu, 4 Nov 2021 10:12:06 +0100 Subject: [PATCH 005/174] Minor refactor - change variable names and add commas to object definitions --- ...-basicauth.sql => patch-monitor-basic-auth.sql} | 4 ++-- server/database.js | 2 +- server/model/monitor.js | 14 +++++++------- server/server.js | 8 ++++---- src/pages/EditMonitor.vue | 4 ++-- 5 files changed, 16 insertions(+), 16 deletions(-) rename db/{patch-monitor-basicauth.sql => patch-monitor-basic-auth.sql} (66%) diff --git a/db/patch-monitor-basicauth.sql b/db/patch-monitor-basic-auth.sql similarity index 66% rename from db/patch-monitor-basicauth.sql rename to db/patch-monitor-basic-auth.sql index 3a33350d..de4bdefd 100644 --- a/db/patch-monitor-basicauth.sql +++ b/db/patch-monitor-basic-auth.sql @@ -2,9 +2,9 @@ BEGIN TRANSACTION; ALTER TABLE monitor - ADD basicauth_user TEXT default null; + ADD basic_auth_user TEXT default null; ALTER TABLE monitor - ADD basicauth_pass TEXT default null; + ADD basic_auth_pass TEXT default null; COMMIT; diff --git a/server/database.js b/server/database.js index cc7247f1..dfc739e0 100644 --- a/server/database.js +++ b/server/database.js @@ -52,7 +52,7 @@ class Database { "patch-http-monitor-method-body-and-headers.sql": true, "patch-2fa-invalidate-used-token.sql": true, "patch-notification_sent_history.sql": true, - "patch-monitor-basicauth.sql": true, + "patch-monitor-basic-auth.sql": true, } /** diff --git a/server/model/monitor.js b/server/model/monitor.js index 95ef3933..f3c823c3 100644 --- a/server/model/monitor.js +++ b/server/model/monitor.js @@ -58,8 +58,8 @@ class Monitor extends BeanModel { method: this.method, body: this.body, headers: this.headers, - basicauth_user: this.basicauth_user, - basicauth_pass: this.basicauth_pass, + basic_auth_user: this.basic_auth_user, + basic_auth_pass: this.basic_auth_pass, hostname: this.hostname, port: this.port, maxretries: this.maxretries, @@ -153,10 +153,10 @@ class Monitor extends BeanModel { let startTime = dayjs().valueOf(); // HTTP basic auth - let basicauthHeader = {}; - if (this.basicauth_user) { - basicauthHeader = { - "Authorization": "Basic " + this.encodeB64(this.basicauth_user, this.basicauth_pass) + let basicAuthHeader = {}; + if (this.basic_auth_user) { + basicAuthHeader = { + "Authorization": "Basic " + this.encodeB64(this.basic_auth_user, this.basic_auth_pass), }; } @@ -169,7 +169,7 @@ class Monitor extends BeanModel { "Accept": "*/*", "User-Agent": "Uptime-Kuma/" + version, ...(this.headers ? JSON.parse(this.headers) : {}), - ...(basicauthHeader) + ...(basicAuthHeader), }, httpsAgent: new https.Agent({ maxCachedSessions: 0, // Use Custom agent to disable session reuse (https://github.com/nodejs/node/issues/3940) diff --git a/server/server.js b/server/server.js index 76d456c5..b1678198 100644 --- a/server/server.js +++ b/server/server.js @@ -575,8 +575,8 @@ exports.entryPage = "dashboard"; bean.method = monitor.method; bean.body = monitor.body; bean.headers = monitor.headers; - bean.basicauth_user = monitor.basicauth_user; - bean.basicauth_pass = monitor.basicauth_pass; + bean.basic_auth_user = monitor.basic_auth_user; + bean.basic_auth_pass = monitor.basic_auth_pass; bean.interval = monitor.interval; bean.retryInterval = monitor.retryInterval; bean.hostname = monitor.hostname; @@ -1141,8 +1141,8 @@ exports.entryPage = "dashboard"; method: monitorListData[i].method || "GET", body: monitorListData[i].body, headers: monitorListData[i].headers, - basicauth_user: monitorListData[i].basicauth_user, - basicauth_pass: monitorListData[i].basicauth_pass, + basic_auth_user: monitorListData[i].basic_auth_user, + basic_auth_pass: monitorListData[i].basic_auth_pass, interval: monitorListData[i].interval, retryInterval: retryInterval, hostname: monitorListData[i].hostname, diff --git a/src/pages/EditMonitor.vue b/src/pages/EditMonitor.vue index f5099aa3..8b3157ea 100644 --- a/src/pages/EditMonitor.vue +++ b/src/pages/EditMonitor.vue @@ -270,9 +270,9 @@

{{ $t("HTTP Basic Auth") }}

- + - +
From 0481a241f3905dc23421a41de6b0ca80836f233c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivan=20Bratovi=C4=87?= Date: Thu, 4 Nov 2021 10:22:42 +0100 Subject: [PATCH 006/174] Add translated placeholders for editing basic auth --- src/pages/EditMonitor.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pages/EditMonitor.vue b/src/pages/EditMonitor.vue index 8b3157ea..108defb7 100644 --- a/src/pages/EditMonitor.vue +++ b/src/pages/EditMonitor.vue @@ -270,9 +270,9 @@

{{ $t("HTTP Basic Auth") }}

- + - +
From baf3612ece8cd143e1766583910b6ab16ecdd0a9 Mon Sep 17 00:00:00 2001 From: Thomas LEVEIL Date: Fri, 5 Nov 2021 11:27:19 +0100 Subject: [PATCH 007/174] =?UTF-8?q?=F0=9F=9A=B8=20Status=20page=20-=20add?= =?UTF-8?q?=20group=20action=20adds=20the=20new=20group=20at=20the=20top?= =?UTF-8?q?=20of=20the=20page?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/StatusPage.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/StatusPage.vue b/src/pages/StatusPage.vue index 87634f35..5a2b3551 100644 --- a/src/pages/StatusPage.vue +++ b/src/pages/StatusPage.vue @@ -459,7 +459,7 @@ export default { groupName = "Services"; } - this.$root.publicGroupList.push({ + this.$root.publicGroupList.unshift({ name: groupName, monitorList: [], }); From ba46fb6b1c126838eae55ed6b5a87de937e00ed7 Mon Sep 17 00:00:00 2001 From: Adam Stachowicz Date: Wed, 10 Nov 2021 09:11:19 +0100 Subject: [PATCH 008/174] Clickable URL --- src/components/notifications/Telegram.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/notifications/Telegram.vue b/src/components/notifications/Telegram.vue index 0fa4dd55..55ff7ec4 100644 --- a/src/components/notifications/Telegram.vue +++ b/src/components/notifications/Telegram.vue @@ -25,7 +25,7 @@

- {{ telegramGetUpdatesURL() }} + {{ telegramGetUpdatesURL() }}

From 2c85491ee011ca7f7ba655592eb292b2aa5733c7 Mon Sep 17 00:00:00 2001 From: Ivan Date: Thu, 11 Nov 2021 10:52:22 +0100 Subject: [PATCH 010/174] Replace body and header placeholder functions with translations --- src/languages/en.js | 2 ++ src/pages/EditMonitor.vue | 18 ++---------------- 2 files changed, 4 insertions(+), 16 deletions(-) diff --git a/src/languages/en.js b/src/languages/en.js index 15c3cd0f..37c1dd69 100644 --- a/src/languages/en.js +++ b/src/languages/en.js @@ -307,4 +307,6 @@ export default { steamApiKeyDescription: "For monitoring a Steam Game Server you need a Steam Web-API key. You can register your API key here: ", "Current User": "Current User", recent: "Recent", + headersPlaceholder: "Example:\n\{\n \"HeaderName\": \"HeaderValue\"\n}", + bodyPlaceholder: "Example:\n\{\n \"key\": \"value\"\n}", }; diff --git a/src/pages/EditMonitor.vue b/src/pages/EditMonitor.vue index 65c3dad6..332a9810 100644 --- a/src/pages/EditMonitor.vue +++ b/src/pages/EditMonitor.vue @@ -257,13 +257,13 @@
- +
- +
@@ -339,20 +339,6 @@ export default { return this.$root.baseURL + "/api/push/" + this.monitor.pushToken + "?msg=OK&ping="; }, - bodyPlaceholder() { - return `Example: -{ - "key": "value" -}`; - }, - - headersPlaceholder() { - return `Example: -{ - "HeaderName": "HeaderValue" -}`; - } - }, watch: { From 267654c987490d66bace688955badb156516649f Mon Sep 17 00:00:00 2001 From: Ivan Date: Thu, 11 Nov 2021 10:53:38 +0100 Subject: [PATCH 011/174] Replace hard-coded names for groups in Status page with translations --- src/languages/en.js | 3 +++ src/pages/StatusPage.vue | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/languages/en.js b/src/languages/en.js index 37c1dd69..273ece35 100644 --- a/src/languages/en.js +++ b/src/languages/en.js @@ -309,4 +309,7 @@ export default { recent: "Recent", headersPlaceholder: "Example:\n\{\n \"HeaderName\": \"HeaderValue\"\n}", bodyPlaceholder: "Example:\n\{\n \"key\": \"value\"\n}", + // Status page + "Untitled Group": "Untitled Group", + "Services": "Services", }; diff --git a/src/pages/StatusPage.vue b/src/pages/StatusPage.vue index ce0f94b5..82e46a74 100644 --- a/src/pages/StatusPage.vue +++ b/src/pages/StatusPage.vue @@ -468,10 +468,10 @@ export default { }, addGroup() { - let groupName = "Untitled Group"; + let groupName = this.$t("Untitled Group"); if (this.$root.publicGroupList.length === 0) { - groupName = "Services"; + groupName = this.$t("Services"); } this.$root.publicGroupList.push({ From 265cca9ed1db2cbbacf2dc4781407fb1e50a614a Mon Sep 17 00:00:00 2001 From: Ivan Date: Thu, 11 Nov 2021 10:54:09 +0100 Subject: [PATCH 012/174] Replace "Default" notification badge with translation --- src/languages/en.js | 1 + src/pages/EditMonitor.vue | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/languages/en.js b/src/languages/en.js index 273ece35..6f1a6b5f 100644 --- a/src/languages/en.js +++ b/src/languages/en.js @@ -307,6 +307,7 @@ export default { steamApiKeyDescription: "For monitoring a Steam Game Server you need a Steam Web-API key. You can register your API key here: ", "Current User": "Current User", recent: "Recent", + Default: "Default", headersPlaceholder: "Example:\n\{\n \"HeaderName\": \"HeaderValue\"\n}", bodyPlaceholder: "Example:\n\{\n \"key\": \"value\"\n}", // Status page diff --git a/src/pages/EditMonitor.vue b/src/pages/EditMonitor.vue index 332a9810..907ecfa6 100644 --- a/src/pages/EditMonitor.vue +++ b/src/pages/EditMonitor.vue @@ -215,7 +215,7 @@ {{ $t("Edit") }} - Default + {{ $t("Default") }} From 28f530394e69e1c5cea4382b2b9b74fc147daca9 Mon Sep 17 00:00:00 2001 From: Ivan Date: Thu, 11 Nov 2021 11:12:48 +0100 Subject: [PATCH 016/174] Add missing translation lookup for ClickSendSMS --- src/components/notifications/ClickSendSMS.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/notifications/ClickSendSMS.vue b/src/components/notifications/ClickSendSMS.vue index 2aed4184..4fbb2f41 100644 --- a/src/components/notifications/ClickSendSMS.vue +++ b/src/components/notifications/ClickSendSMS.vue @@ -3,7 +3,7 @@
{{ $t("apiCredentials") }} - here + {{ $t("here") }}
From 4cc433166e6f3efc2419db2af628912328bf2293 Mon Sep 17 00:00:00 2001 From: Ivan Date: Thu, 11 Nov 2021 11:14:21 +0100 Subject: [PATCH 017/174] Add missing translation for SMTP security option --- src/components/notifications/SMTP.vue | 2 +- src/languages/en.js | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/notifications/SMTP.vue b/src/components/notifications/SMTP.vue index 483917e3..ab660abe 100644 --- a/src/components/notifications/SMTP.vue +++ b/src/components/notifications/SMTP.vue @@ -10,7 +10,7 @@
- + - - -
- -
- - -
-
- - - - - - - - -
-
-
- -
- -
-
- - - - - - - - -
-
+
+ - - -

{{ $t("General") }}

- -
- -
- - -
- - -
- - -
- - -
-
- - -
-
- - -
- - -
- - -
- -
- - -
-
- - -
- - -
- - -
- -
-
-
- - -
- - -
- {{ $t("steamApiKeyDescription") }}https://steamcommunity.com/dev -
-
- - -
-

{{ $t("Monitor History") }}

-
- - -
-
- - -
- -
-
- -
- -
-
- - -
-

{{ $t("Notifications") }}

-

- {{ $t("Not available, please setup.") }} -

-

- {{ $t("notificationDescription") }} -

- - - - +
+
+ {{ subMenus[currentSubMenu].title }} +
+
+
- - -

{{ $t("Info") }}

- - {{ $t("Version") }}: {{ $root.info.version }}
- {{ $t("Check Update On GitHub") }}
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {{ $t("confirmClearStatisticsMsg") }} - - - {{ $t("confirmImportMsg") }} -
@@ -667,44 +126,66 @@ export default { .shadow-box { padding: 20px; + min-height: calc(100vh - 155px); + max-height: calc(100vh - 30px); } -.btn-check:active + .btn-outline-primary, -.btn-check:checked + .btn-outline-primary, -.btn-check:hover + .btn-outline-primary { - color: #fff; +footer { + color: #aaa; + font-size: 13px; + margin-top: 20px; + padding-bottom: 30px; + text-align: center; } -.dark { - .list-group-item { - background-color: $dark-bg2; - color: $dark-font-color; - } +.settings-menu { + flex: 0 0 auto; + width: 300px; - .btn-check:active + .btn-outline-primary, - .btn-check:checked + .btn-outline-primary, - .btn-check:hover + .btn-outline-primary { - color: #000; + .menu-item { + border-radius: 10px; + margin: 0.5em; + padding: 0.7em 1em; + cursor: pointer; } - #importBackup { - &::file-selector-button { - color: $primary; - background-color: $dark-bg; + .menu-item:hover { + background: $highlight-white; + + .dark & { + background: $dark-header-bg; } + } - &:hover:not(:disabled):not([readonly])::file-selector-button { - color: $dark-font-color2; - background-color: $primary; + .menu-item.active { + background: $highlight-white; + border-left: 4px solid $primary; + border-top-left-radius: 0; + border-bottom-left-radius: 0; + + .dark & { + background: $dark-header-bg; } } } -footer { - color: #aaa; - font-size: 13px; - margin-top: 20px; - padding-bottom: 30px; - text-align: center; +.settings-content { + flex: 0 0 auto; + width: calc(100% - 300px); + + .settings-content-header { + width: calc(100% + 20px); + border-bottom: 1px solid #dee2e6; + border-radius: 0 10px 0 0; + margin-top: -20px; + margin-right: -20px; + padding: 12.5px 1em; + font-size: 26px; + + .dark & { + background: $dark-header-bg; + border-bottom: 0; + } + } } From 369cad90c1c2e938a7651947dbffaed6bd2ebd4f Mon Sep 17 00:00:00 2001 From: Nelson Chan Date: Wed, 3 Nov 2021 17:03:40 +0800 Subject: [PATCH 031/174] WIP: Convert to use vue-router & improve layout WIP: Fix security page & improve layout WIP: Fix displaying current page UI: Improve spacing Chore: Improve styling --- src/components/settings/General.vue | 6 +-- src/components/settings/MonitorHistory.vue | 8 ++-- src/components/settings/Security.vue | 10 ++--- src/pages/Settings.vue | 51 ++++++++++------------ src/router.js | 46 +++++++++++++++++++ 5 files changed, 82 insertions(+), 39 deletions(-) diff --git a/src/components/settings/General.vue b/src/components/settings/General.vue index 308f21ae..a1b42d85 100644 --- a/src/components/settings/General.vue +++ b/src/components/settings/General.vue @@ -163,13 +163,13 @@ export default { computed: { settings() { - return this.$parent.$parent.settings; + return this.$parent.$parent.$parent.settings; }, saveSettings() { - return this.$parent.$parent.saveSettings; + return this.$parent.$parent.$parent.saveSettings; }, settingsLoaded() { - return this.$parent.$parent.settingsLoaded; + return this.$parent.$parent.$parent.settingsLoaded; }, guessTimezone() { return dayjs.tz.guess(); diff --git a/src/components/settings/MonitorHistory.vue b/src/components/settings/MonitorHistory.vue index 85853ea1..95efff0e 100644 --- a/src/components/settings/MonitorHistory.vue +++ b/src/components/settings/MonitorHistory.vue @@ -23,7 +23,7 @@ -
{{ $t("shrinkDatabaseDescription") }}
+
{{ $t("shrinkDatabaseDescription") }}

{{ $t("Change Password") }}
@@ -60,7 +61,7 @@ -
+
{{ $t("Two Factor Authentication") }}
@@ -82,7 +83,6 @@
-
@@ -244,13 +244,13 @@ export default { computed: { settings() { - return this.$parent.$parent.settings; + return this.$parent.$parent.$parent.settings; }, saveSettings() { - return this.$parent.$parent.saveSettings; + return this.$parent.$parent.$parent.saveSettings; }, settingsLoaded() { - return this.$parent.$parent.settingsLoaded; + return this.$parent.$parent.$parent.settingsLoaded; } }, diff --git a/src/pages/Settings.vue b/src/pages/Settings.vue index 9ff23415..0cff1367 100644 --- a/src/pages/Settings.vue +++ b/src/pages/Settings.vue @@ -8,21 +8,25 @@
- + +
- {{ subMenus[currentSubMenu].title }} + {{ subMenus[$route.name.split("-")[1]].title }}
- +
@@ -32,16 +36,6 @@ diff --git a/src/components/notifications/index.js b/src/components/notifications/index.js index 4b51569a..9ade03a1 100644 --- a/src/components/notifications/index.js +++ b/src/components/notifications/index.js @@ -22,6 +22,7 @@ import Matrix from "./Matrix.vue"; import AliyunSMS from "./AliyunSms.vue"; import DingDing from "./DingDing.vue"; import Bark from "./Bark.vue"; +import SerwerSMS from "./SerwerSMS.vue"; /** * Manage all notification form. @@ -52,7 +53,8 @@ const NotificationFormList = { "mattermost": Mattermost, "matrix": Matrix, "DingDing": DingDing, - "Bark": Bark + "Bark": Bark, + "serwersms": SerwerSMS } export default NotificationFormList diff --git a/src/languages/en.js b/src/languages/en.js index 0667509f..a6ad9510 100644 --- a/src/languages/en.js +++ b/src/languages/en.js @@ -308,4 +308,9 @@ export default { "Current User": "Current User", recent: "Recent", shrinkDatabaseDescription: "Trigger database VACUUM for SQLite. If your database is created after 1.10.0, AUTO_VACUUM is already enabled and this action is not needed.", + serwersms: "SerwerSMS.pl", + serwersmsAPIUser: "API Username (incl. webapi_ prefix)", + serwersmsAPIPassword: "API Password", + serwersmsPhoneNumber: "Phone number", + serwersmsSenderName: "SMS Sender Name (registered via customer portal)", }; diff --git a/src/languages/pl.js b/src/languages/pl.js index 082980d3..9c11a323 100644 --- a/src/languages/pl.js +++ b/src/languages/pl.js @@ -307,4 +307,9 @@ export default { recent: "Ostatnie", clicksendsms: "ClickSend SMS", apiCredentials: "Poświadczenia API", + serwersms: "SerwerSMS.pl", + serwersmsAPIUser: "Nazwa Użytkownika API (z prefiksem webapi_)", + serwersmsAPIPassword: "Hasło API", + serwersmsPhoneNumber: "Numer Telefonu", + serwersmsSenderName: "Nazwa Nadawcy (zatwierdzona w panelu klienta)", }; From 50593f3edf7a86688bc2b1ba0a57c1589db21980 Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Fri, 26 Nov 2021 16:31:19 +0800 Subject: [PATCH 049/174] [wip] lazy load language file --- src/components/settings/Appearance.vue | 10 +-- src/i18n.js | 89 +++++++++++--------------- src/main.js | 2 + src/mixins/lang.js | 27 ++++++++ 4 files changed, 67 insertions(+), 61 deletions(-) create mode 100644 src/mixins/lang.js diff --git a/src/components/settings/Appearance.vue b/src/components/settings/Appearance.vue index e0a3d643..63fbd40b 100644 --- a/src/components/settings/Appearance.vue +++ b/src/components/settings/Appearance.vue @@ -4,7 +4,7 @@ -
@@ -42,18 +42,22 @@ export default { HiddenInput, }, methods: { - telegramGetUpdatesURL(withToken = false) { + telegramGetUpdatesURL(mode = "masked") { let token = `<${this.$t("YOUR BOT TOKEN HERE")}>`; - if (this.$parent.notification.telegramBotToken && withToken) { - token = this.$parent.notification.telegramBotToken; + if (this.$parent.notification.telegramBotToken) { + if (mode === "withToken") { + token = this.$parent.notification.telegramBotToken; + } else if (mode === "masked") { + token = "*".repeat(this.$parent.notification.telegramBotToken.length); + } } return `https://api.telegram.org/bot${token}/getUpdates`; }, async autoGetTelegramChatID() { try { - let res = await axios.get(this.telegramGetUpdatesURL(true)); + let res = await axios.get(this.telegramGetUpdatesURL("withToken")); if (res.data.result.length >= 1) { let update = res.data.result[res.data.result.length - 1]; From 03aeab04219b6c4e2ef003aaddcb6301fc772f97 Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Mon, 6 Dec 2021 17:31:25 +0800 Subject: [PATCH 084/174] close issues that don't follow the issue template Copy from axios --- .github/workflows/close-issue.yml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 .github/workflows/close-issue.yml diff --git a/.github/workflows/close-issue.yml b/.github/workflows/close-issue.yml new file mode 100644 index 00000000..2127fe16 --- /dev/null +++ b/.github/workflows/close-issue.yml @@ -0,0 +1,17 @@ +name: 'Close Invalid Issues' + +on: + issues: + types: [opened] + +jobs: + auto_close_issues: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Automatically close issues that don't follow the issue template + uses: lucasbento/auto-close-issues@v1.0.2 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + issue-close-message: 'Hello! :wave: \n\nThis issue is being automatically closed because it does not follow the issue template. Please read the issue template carefully and follow all of the instructions when opening a new issue. \n\nThanks' From 88bc08e7b758377636fd286d5aec58170ebce226 Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Mon, 6 Dec 2021 17:36:18 +0800 Subject: [PATCH 085/174] Update close-issue.yml --- .github/workflows/close-issue.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/close-issue.yml b/.github/workflows/close-issue.yml index 2127fe16..f6eb0ebc 100644 --- a/.github/workflows/close-issue.yml +++ b/.github/workflows/close-issue.yml @@ -9,7 +9,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v1 - name: Automatically close issues that don't follow the issue template uses: lucasbento/auto-close-issues@v1.0.2 with: From c8e364911fbbc4be873c405f4b8704bc403c1a35 Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Mon, 6 Dec 2021 17:46:46 +0800 Subject: [PATCH 086/174] Delete close-issue.yml, no idea why not working --- .github/workflows/close-issue.yml | 17 ----------------- 1 file changed, 17 deletions(-) delete mode 100644 .github/workflows/close-issue.yml diff --git a/.github/workflows/close-issue.yml b/.github/workflows/close-issue.yml deleted file mode 100644 index f6eb0ebc..00000000 --- a/.github/workflows/close-issue.yml +++ /dev/null @@ -1,17 +0,0 @@ -name: 'Close Invalid Issues' - -on: - issues: - types: [opened] - -jobs: - auto_close_issues: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v1 - - name: Automatically close issues that don't follow the issue template - uses: lucasbento/auto-close-issues@v1.0.2 - with: - github-token: ${{ secrets.GITHUB_TOKEN }} - issue-close-message: 'Hello! :wave: \n\nThis issue is being automatically closed because it does not follow the issue template. Please read the issue template carefully and follow all of the instructions when opening a new issue. \n\nThanks' From f80215445607af4f02f9143a362f1c53e091bbe2 Mon Sep 17 00:00:00 2001 From: Ioma Taani Date: Mon, 6 Dec 2021 11:33:39 +0100 Subject: [PATCH 087/174] updated --- src/languages/it-IT.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/languages/it-IT.js b/src/languages/it-IT.js index f76a3581..20ee93db 100644 --- a/src/languages/it-IT.js +++ b/src/languages/it-IT.js @@ -351,4 +351,5 @@ export default { serwersmsAPIPassword: "Password API", serwersmsPhoneNumber: "Numero di Telefono", serwersmsSenderName: "Nome del mittente SMS (registrato via portale cliente)", + "stackfield": "Stackfield", }; From a041a7964aa22682661bfed08976122cc5c55a85 Mon Sep 17 00:00:00 2001 From: iooner Date: Tue, 7 Dec 2021 14:23:13 +0100 Subject: [PATCH 088/174] Fix typos --- src/languages/fr-FR.js | 48 +++++++++++++++++++++--------------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/src/languages/fr-FR.js b/src/languages/fr-FR.js index 92083a38..4cf863ef 100644 --- a/src/languages/fr-FR.js +++ b/src/languages/fr-FR.js @@ -1,5 +1,5 @@ export default { - languageName: "Français (France)", + languageName: "Français", checkEverySecond: "Vérifier toutes les {0} secondes", retryCheckEverySecond: "Réessayer toutes les {0} secondes.", retriesDescription: "Nombre d'essais avant que le service soit déclaré hors-ligne.", @@ -13,17 +13,17 @@ export default { pauseDashboardHome: "En pause", deleteMonitorMsg: "Êtes-vous sûr de vouloir supprimer cette sonde ?", deleteNotificationMsg: "Êtes-vous sûr de vouloir supprimer ce type de notifications ? Une fois désactivée, les services qui l'utilisent ne pourront plus envoyer de notifications.", - resoverserverDescription: "Le DNS de cloudflare est utilisé par défaut, mais vous pouvez le changer si vous le souhaitez.", - rrtypeDescription: "Veuillez séléctionner un type d'enregistrement DNS", + resoverserverDescription: "Le DNS de Cloudflare est utilisé par défaut, mais vous pouvez le changer si vous le souhaitez.", + rrtypeDescription: "Veuillez sélectionner un type d'enregistrement DNS", pauseMonitorMsg: "Êtes-vous sûr de vouloir mettre en pause cette sonde ?", enableDefaultNotificationDescription: "Pour chaque nouvelle sonde, cette notification sera activée par défaut. Vous pouvez toujours désactiver la notification séparément pour chaque sonde.", clearEventsMsg: "Êtes-vous sûr de vouloir supprimer tous les événements pour cette sonde ?", - clearHeartbeatsMsg: "Êtes-vous sûr de vouloir supprimer tous les vérifications pour cette sonde ?", - confirmClearStatisticsMsg: "Êtes-vous sûr de vouloir supprimer tous les statistiques ?", + clearHeartbeatsMsg: "Êtes-vous sûr de vouloir supprimer toutes les vérifications pour cette sonde ?", + confirmClearStatisticsMsg: "Êtes-vous sûr de vouloir supprimer toutes les statistiques ?", importHandleDescription: "Choisissez 'Ignorer l'existant' si vous voulez ignorer chaque sonde ou notification portant le même nom. L'option 'Écraser' supprime toutes les sondes et notifications existantes.", confirmImportMsg: "Êtes-vous sûr de vouloir importer la sauvegarde ? Veuillez vous assurer que vous avez sélectionné la bonne option d'importation.", twoFAVerifyLabel: "Veuillez saisir votre jeton pour vérifier que le système 2FA fonctionne.", - tokenValidSettingsMsg: "Le jeton est valide ; Vous pouvez maintenant sauvegarder les paramètres 2FA.", + tokenValidSettingsMsg: "Le jeton est valide. Vous pouvez maintenant sauvegarder les paramètres 2FA.", confirmEnableTwoFAMsg: "Êtes-vous sûr de vouloir activer le 2FA ?", confirmDisableTwoFAMsg: "Êtes-vous sûr de vouloir désactiver le 2FA ?", Settings: "Paramètres", @@ -68,9 +68,9 @@ export default { URL: "URL", Hostname: "Nom d'hôte / adresse IP", Port: "Port", - "Heartbeat Interval": "Intervale de vérification", + "Heartbeat Interval": "Intervalle de vérification", Retries: "Essais", - "Heartbeat Retry Interval": "Réessayer l'intervale de vérification", + "Heartbeat Retry Interval": "Réessayer l'intervalle de vérification", Advanced: "Avancé", "Upside Down Mode": "Mode inversé", "Max. Redirects": "Nombre maximum de redirections", @@ -107,8 +107,8 @@ export default { Password: "Mot de passe", "Remember me": "Se souvenir de moi", Login: "Se connecter", - "No Monitors, please": "Pas de sondes, veuillez ", - "add one": "en ajouter une.", + "No Monitors, please": "Pas de sondes, veuillez", + "add one": "en ajouter une", "Notification Type": "Type de notification", Email: "Email", Test: "Tester", @@ -132,7 +132,7 @@ export default { Heartbeats: "Vérfications", "Auto Get": "Récuperer automatiquement", backupDescription: "Vous pouvez sauvegarder toutes les sondes et toutes les notifications dans un fichier JSON.", - backupDescription2: "PS: Les données relatives à l'historique et aux événements ne sont pas incluses.", + backupDescription2: "PS : Les données relatives à l'historique et aux événements ne sont pas incluses.", backupDescription3: "Les données sensibles telles que les jetons de notification sont incluses dans le fichier d'exportation, veuillez les conserver soigneusement.", alertNoFile: "Veuillez sélectionner un fichier à importer.", alertWrongFileType: "Veuillez sélectionner un fichier JSON à importer.", @@ -196,7 +196,7 @@ export default { webhookJsonDesc: "{0} est bien/bon pour tous les serveurs HTTP modernes comme express.js", webhookFormDataDesc: "{multipart} est bien/bon pour du PHP, vous avez juste besoin de mettre le json via/depuis {decodeFunction}", smtp: "Email (SMTP)", - secureOptionNone: "Aucun / STARTTLS (25, 587)", + secureOptionNone: "Aucun/STARTTLS (25, 587)", secureOptionTLS: "TLS (465)", "Ignore TLS Error": "Ignorer les erreurs TLS", "From Email": "Depuis l'Email", @@ -217,7 +217,7 @@ export default { Recipients: "Destinataires", needSignalAPI: "Vous avez besoin d'un client Signal avec l'API REST.", wayToCheckSignalURL: "Vous pouvez regarder l'URL sur comment le mettre en place :", - signalImportant: "IMPORTANT: Vous ne pouvez pas mixer les groupes et les numéros en destinataires !", + signalImportant: "IMPORTANT : Vous ne pouvez pas mixer les groupes et les numéros en destinataires !", gotify: "Gotify", "Application Token": "Application Token", "Server URL": "Server URL", @@ -226,7 +226,7 @@ export default { "Icon Emoji": "Icon Emoji", "Channel Name": "Nom du salon", "Uptime Kuma URL": "Uptime Kuma URL", - aboutWebhooks: "Plus d'informations sur les Webhooks ici: {0}", + aboutWebhooks: "Plus d'informations sur les Webhooks ici : {0}", aboutChannelName: "Mettez le nom du salon dans {0} dans 'Channel Name' si vous voulez bypass le salon Webhook. Ex : #autre-salon", aboutKumaURL: "Si vous laissez l'URL d'Uptime Kuma vierge, elle redirigera vers la page du projet GitHub.", emojiCheatSheet: "Emoji cheat sheet : {0}", @@ -244,14 +244,14 @@ export default { Device: "Appareil", "Message Title": "Titre du message", "Notification Sound": "Son de notification", - "More info on:": "Plus d'informations sur: {0}", + "More info on:": "Plus d'informations sur : {0}", pushoverDesc1: "Priorité d'urgence (2) a par défaut 30 secondes de délai dépassé entre les tentatives et expierera après 1 heure.", pushoverDesc2: "Si vous voulez envoyer des notifications sur différents Appareils, remplissez le champ 'Device'.", "SMS Type": "SMS Type", octopushTypePremium: "Premium (Rapide - recommandé pour les alertes)", - octopushTypeLowCost: "A bas prix (Lent, bloqué de temps en temps par l'opérateur)", + octopushTypeLowCost: "À bas prix (Lent, bloqué de temps en temps par l'opérateur)", "Check octopush prices": "Vérifier les prix d'octopush {0}.", - octopushPhoneNumber: "Numéro de téléphone (format intérn., ex : +33612345678) ", + octopushPhoneNumber: "Numéro de téléphone (format int., ex : +33612345678) ", octopushSMSSender: "Nom de l'envoyer : 3-11 caractères alphanumériques avec espace (a-zA-Z0-9)", "LunaSea Device ID": "LunaSea Device ID", "Apprise URL": "Apprise URL", @@ -259,8 +259,8 @@ export default { "Read more:": "En savoir plus : {0}", "Status:": "Status : {0}", "Read more": "En savoir plus", - appriseInstalled: "Apprise est intallé.", - appriseNotInstalled: "Apprise n'est pas intallé. {0}", + appriseInstalled: "Apprise est installé.", + appriseNotInstalled: "Apprise n'est pas installé. {0}", "Access Token": "Access Token", "Channel access token": "Channel access token", "Line Developers Console": "Line Developers Console", @@ -278,30 +278,30 @@ export default { promosmsTypeFull: "SMS FULL - Version Premium des SMS, Vous pouvez mettre le nom de l'expéditeur (Vous devez vous enregistrer avant). Fiable pour les alertes.", promosmsTypeSpeed: "SMS SPEED - La plus haute des priorités dans le système. Très rapide et fiable mais cher (environ le double du prix d'un SMS FULL).", promosmsPhoneNumber: "Numéro de téléphone (Poiur les déstinataires Polonais, vous pouvez enlever les codes interna.)", - promosmsSMSSender: "SMS Expéditeur : Nom pré-enregistré ou l'un de base: InfoSMS, SMS Info, MaxSMS, INFO, SMS", + promosmsSMSSender: "SMS Expéditeur : Nom pré-enregistré ou l'un de base : InfoSMS, SMS Info, MaxSMS, INFO, SMS", "Primary Base URL": "Primary Base URL", emailCustomSubject: "Sujet personalisé", clicksendsms: "ClickSend SMS", - checkPrice: "Vérification {0} tarifs:", + checkPrice: "Vérification {0} tarifs :", apiCredentials: "Crédentials de l'API", octopushLegacyHint: "Vous utilisez l'ancienne version d'Octopush (2011-2020) ou la nouvelle version ?", "Feishu WebHookUrl": "Feishu WebHookURL", matrixHomeserverURL: "L'URL du serveur (avec http(s):// et le port de manière facultatif)", "Internal Room Id": "ID de la salle interne", - matrixDesc1: "Vous pouvez trouvez l'ID de salle interne en regardant dans la section avancée des paramètres dans le client Matrix. C'est sensé ressembler à: !QMdRCpUIfLwsfjxye6:home.server.", + matrixDesc1: "Vous pouvez trouver l'ID de salle interne en regardant dans la section avancée des paramètres dans le client Matrix. C'est censé ressembler à !QMdRCpUIfLwsfjxye6:home.server.", matrixDesc2: "Il est fortement recommandé de créer un nouvel utilisateur et de ne pas utiliser le jeton d'accès de votre propre utilisateur Matrix, car il vous donnera un accès complet à votre compte et à toutes les salles que vous avez rejointes. Au lieu de cela, créez un nouvel utilisateur et invitez-le uniquement dans la salle dans laquelle vous souhaitez recevoir la notification. Vous pouvez obtenir le jeton d'accès en exécutant {0}", Method: "Méthode", Body: "Le corps", Headers: "En-têtes", PushUrl: "Push URL", - HeadersInvalidFormat: "L'en-têtes de la requête n'est pas dans un format JSON valide: ", + HeadersInvalidFormat: "Les en-têtes de la requête ne sont pas dans un format JSON valide: ", BodyInvalidFormat: "Le corps de la requête n'est pas dans un format JSON valide: ", "Monitor History": "Historique de la sonde", clearDataOlderThan: "Garder l'historique des données de la sonde durant {0} jours.", PasswordsDoNotMatch: "Les mots de passe ne correspondent pas.", records: "Enregistrements", "One record": "Un enregistrement", - steamApiKeyDescription: "Pour surveiller un serveur Steam, vous avez besoin d'une clé Steam Web-API. Vous pouvez enregistrer votre clé ici: ", + steamApiKeyDescription: "Pour surveiller un serveur Steam, vous avez besoin d'une clé Steam Web-API. Vous pouvez enregistrer votre clé ici : ", "Current User": "Utilisateur actuel", recent: "Récent", }; From dcc91d6c7258707caf1df65eb07d3b21845dfc9e Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Wed, 8 Dec 2021 14:59:59 +0800 Subject: [PATCH 089/174] Fix #922 --- server/model/monitor.js | 12 ++++++++++++ server/routers/api-router.js | 12 ++++-------- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/server/model/monitor.js b/server/model/monitor.js index ab0c1d40..6aa614b7 100644 --- a/server/model/monitor.js +++ b/server/model/monitor.js @@ -296,6 +296,9 @@ class Monitor extends BeanModel { debug("heartbeatCount" + heartbeatCount + " " + time); if (heartbeatCount <= 0) { + // Fix #922, since previous heartbeat could be inserted by api, it should get from database + previousBeat = await Monitor.getPreviousHeartbeat(this.id); + throw new Error("No heartbeat in the time window"); } else { // No need to insert successful heartbeat for push type, so end here @@ -751,6 +754,15 @@ class Monitor extends BeanModel { debug("No notification, no need to send cert notification"); } } + + static async getPreviousHeartbeat(monitorID) { + return await R.getRow(` + SELECT status, time FROM heartbeat + WHERE id = (select MAX(id) from heartbeat where monitor_id = ?) + `, [ + monitorID + ]); + } } module.exports = Monitor; diff --git a/server/routers/api-router.js b/server/routers/api-router.js index 79e82837..70d94673 100644 --- a/server/routers/api-router.js +++ b/server/routers/api-router.js @@ -31,12 +31,7 @@ router.get("/api/push/:pushToken", async (request, response) => { throw new Error("Monitor not found or not active."); } - const previousHeartbeat = await R.getRow(` - SELECT status, time FROM heartbeat - WHERE id = (select MAX(id) from heartbeat where monitor_id = ?) - `, [ - monitor.id - ]); + const previousHeartbeat = await Monitor.getPreviousHeartbeat(monitor.id); let status = UP; if (monitor.isUpsideDown()) { @@ -157,8 +152,9 @@ router.get("/api/status-page/monitor-list", cache("5 minutes"), async (_request, JOIN tag ON monitor_tag.tag_id = tag.id WHERE monitor_tag.monitor_id = ?`, [monitor.id] - ); - return {...monitor, tags: tags} + ); + return { ...monitor, + tags: tags }; })); } From d4bfe57b7994231cbb48096706dac5555c9af9c0 Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Wed, 8 Dec 2021 15:04:18 +0800 Subject: [PATCH 090/174] minor: improve formatting --- server/routers/api-router.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/server/routers/api-router.js b/server/routers/api-router.js index 70d94673..1920cef7 100644 --- a/server/routers/api-router.js +++ b/server/routers/api-router.js @@ -153,8 +153,10 @@ router.get("/api/status-page/monitor-list", cache("5 minutes"), async (_request, ON monitor_tag.tag_id = tag.id WHERE monitor_tag.monitor_id = ?`, [monitor.id] ); - return { ...monitor, - tags: tags }; + return { + ...monitor, + tags: tags + }; })); } From 7899707582e4a0a9b766f906932505254278b3be Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Wed, 8 Dec 2021 15:17:37 +0800 Subject: [PATCH 091/174] update to 1.11.0 --- package.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 69aca8bb..38f018e9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "uptime-kuma", - "version": "1.10.2", + "version": "1.11.0", "license": "MIT", "repository": { "type": "git", @@ -30,13 +30,13 @@ "build-docker": "npm run build-docker-debian && npm run build-docker-alpine", "build-docker-alpine-base": "docker buildx build -f docker/alpine-base.dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:base-alpine . --push", "build-docker-debian-base": "docker buildx build -f docker/debian-base.dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:base-debian . --push", - "build-docker-alpine": "docker buildx build -f docker/dockerfile-alpine --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:alpine -t louislam/uptime-kuma:1-alpine -t louislam/uptime-kuma:1.10.2-alpine --target release . --push", - "build-docker-debian": "docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma -t louislam/uptime-kuma:1 -t louislam/uptime-kuma:1.10.2 -t louislam/uptime-kuma:debian -t louislam/uptime-kuma:1-debian -t louislam/uptime-kuma:1.10.2-debian --target release . --push", + "build-docker-alpine": "docker buildx build -f docker/dockerfile-alpine --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:alpine -t louislam/uptime-kuma:1-alpine -t louislam/uptime-kuma:1.11.0-alpine --target release . --push", + "build-docker-debian": "docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma -t louislam/uptime-kuma:1 -t louislam/uptime-kuma:1.11.0 -t louislam/uptime-kuma:debian -t louislam/uptime-kuma:1-debian -t louislam/uptime-kuma:1.11.0-debian --target release . --push", "build-docker-nightly": "docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:nightly --target nightly . --push", "build-docker-nightly-alpine": "docker buildx build -f docker/dockerfile-alpine --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:nightly-alpine --target nightly . --push", "build-docker-nightly-amd64": "docker buildx build -f docker/dockerfile --platform linux/amd64 -t louislam/uptime-kuma:nightly-amd64 --target nightly . --push --progress plain", "upload-artifacts": "docker buildx build -f docker/dockerfile --platform linux/amd64 -t louislam/uptime-kuma:upload-artifact --build-arg GITHUB_TOKEN --target upload-artifact . --progress plain", - "setup": "git checkout 1.10.2 && npm ci --production && npm run download-dist", + "setup": "git checkout 1.11.0 && npm ci --production && npm run download-dist", "download-dist": "node extra/download-dist.js", "update-version": "node extra/update-version.js", "mark-as-nightly": "node extra/mark-as-nightly.js", From c91f517121c28707dac0bd1f898e5f10f9682abc Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Wed, 8 Dec 2021 15:25:43 +0800 Subject: [PATCH 092/174] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index ea228166..d870d617 100644 --- a/README.md +++ b/README.md @@ -41,6 +41,8 @@ docker volume create uptime-kuma docker run -d --restart=always -p 3001:3001 -v uptime-kuma:/app/data --name uptime-kuma louislam/uptime-kuma:1 ``` +⚠️ Please use a **local volume** only. Other types such as NFS are not supported. + Browse to http://localhost:3001 after starting. ### 💪🏻 Non-Docker From f9cd0eb084bda06dd20d6a1d7533bf682a889fda Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Wed, 8 Dec 2021 15:35:44 +0800 Subject: [PATCH 093/174] fix upload-artifacts --- docker/dockerfile | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docker/dockerfile b/docker/dockerfile index efbbfe6f..a9984351 100644 --- a/docker/dockerfile +++ b/docker/dockerfile @@ -33,7 +33,7 @@ RUN apt update && \ COPY --from=build /app /app -ARG VERSION=1.9.1 +ARG VERSION ARG GITHUB_TOKEN ARG TARGETARCH ARG PLATFORM=debian diff --git a/package.json b/package.json index 38f018e9..1a5424df 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "build-docker-nightly": "docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:nightly --target nightly . --push", "build-docker-nightly-alpine": "docker buildx build -f docker/dockerfile-alpine --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:nightly-alpine --target nightly . --push", "build-docker-nightly-amd64": "docker buildx build -f docker/dockerfile --platform linux/amd64 -t louislam/uptime-kuma:nightly-amd64 --target nightly . --push --progress plain", - "upload-artifacts": "docker buildx build -f docker/dockerfile --platform linux/amd64 -t louislam/uptime-kuma:upload-artifact --build-arg GITHUB_TOKEN --target upload-artifact . --progress plain", + "upload-artifacts": "docker buildx build -f docker/dockerfile --platform linux/amd64 -t louislam/uptime-kuma:upload-artifact --build-arg VERSION --build-arg GITHUB_TOKEN --target upload-artifact . --progress plain", "setup": "git checkout 1.11.0 && npm ci --production && npm run download-dist", "download-dist": "node extra/download-dist.js", "update-version": "node extra/update-version.js", From 74f18a2b3f25e904acd0edb4fbeeb42bae97ee47 Mon Sep 17 00:00:00 2001 From: SiderealArt Date: Wed, 8 Dec 2021 17:23:13 +0800 Subject: [PATCH 094/174] update zh-TW translation --- src/languages/zh-TW.js | 48 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) diff --git a/src/languages/zh-TW.js b/src/languages/zh-TW.js index 337d9422..0e905260 100644 --- a/src/languages/zh-TW.js +++ b/src/languages/zh-TW.js @@ -14,7 +14,7 @@ export default { deleteMonitorMsg: "您確定要刪除此監測器嗎?", deleteNotificationMsg: "您確定要為所有監測器刪除此通知嗎?", resoverserverDescription: "Cloudflare 為預設伺服器。您可以隨時更換解析伺服器。", - rrtypeDescription: "選擇您想要監測的資源記錄", + rrtypeDescription: "選擇您想要監測的資源記錄類型", pauseMonitorMsg: "您確定要暫停嗎?", enableDefaultNotificationDescription: "預設情況下,新監測器將啟用此通知。您仍可分別停用各監測器的通知。", clearEventsMsg: "您確定要刪除此監測器的所有事件嗎?", @@ -307,4 +307,50 @@ export default { "Showing {from} to {to} of {count} records": "正在顯示 {count} 項記錄中的 {from} 至 {to} 項", steamApiKeyDescription: "若要監測 Steam 遊戲伺服器,您將需要 Steam Web-API 金鑰。您可以在此註冊您的 API 金鑰:", "Current User": "目前使用者", + recent: "最近", + Done: "完成", + Info: "資訊", + Security: "安全性", + "Steam API Key": "Steam API 金鑰", + "Shrink Database": "壓縮資料庫", + "Pick a RR-Type...": "選擇資源記錄類型...", + "Pick Accepted Status Codes...": "選擇可接受的狀態碼...", + Default: "預設", + "HTTP Options": "HTTP 選項", + "Create Incident": "建立事件", + Title: "標題", + Content: "內容", + Style: "樣式", + info: "資訊", + warning: "警告", + danger: "危險", + primary: "主要", + light: "淺色", + dark: "暗色", + Post: "發佈", + "Please input title and content": "請輸入標題及內容", + Created: "建立", + "Last Updated": "最後更新", + Unpin: "取消釘選", + "Switch to Light Theme": "切換至淺色佈景主題", + "Switch to Dark Theme": "切換至深色佈景主題", + "Show Tags": "顯示標籤", + "Hide Tags": "隱藏標籤", + Description: "說明", + "No monitors available.": "沒有可用的監測器。", + "Add one": "新增一個", + "No Monitors": "無監測器", + "Add one": "新增一個", + "Untitled Group": "未命名群組", + Services: "服務", + Discard: "捨棄", + Cancel: "取消", + "Powered by": "技術支援", + shrinkDatabaseDescription: "觸發 SQLite 的資料庫清理 (VACUUM)。如果您的資料庫是在 1.10.0 版本後建立,AUTO_VACUUM 已自動啟用,則無需此操作。", + serwersms: "SerwerSMS.pl", + serwersmsAPIUser: "API 使用者名稱 (包括 webapi_ 前綴)", + serwersmsAPIPassword: "API 密碼", + serwersmsPhoneNumber: "電話號碼", + serwersmsSenderName: "SMS 寄件人名稱 (由客戶入口網站註冊)", + "stackfield": "Stackfield", }; From 9473cd6919ababdc73f7e772080fdd8912a39836 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lars=20S=C3=B8rensen?= Date: Wed, 8 Dec 2021 11:14:10 +0100 Subject: [PATCH 095/174] Update da-DK.js translation --- src/languages/da-DK.js | 554 ++++++++++++++++++++++++++--------------- 1 file changed, 354 insertions(+), 200 deletions(-) diff --git a/src/languages/da-DK.js b/src/languages/da-DK.js index 66e7cb3d..22a2c369 100644 --- a/src/languages/da-DK.js +++ b/src/languages/da-DK.js @@ -1,201 +1,355 @@ export default { - languageName: "Danish (Danmark)", - Settings: "Indstillinger", - Dashboard: "Dashboard", - "New Update": "Opdatering tilgængelig", - Language: "Sprog", - Appearance: "Udseende", - Theme: "Tema", - General: "Generelt", - Version: "Version", - "Check Update On GitHub": "Tjek efter opdateringer på Github", - List: "Liste", - Add: "Tilføj", - "Add New Monitor": "Tilføj ny Overvåger", - "Quick Stats": "Oversigt", - Up: "Aktiv", - Down: "Inaktiv", - Pending: "Afventer", - Unknown: "Ukendt", - Pause: "Stands", - pauseDashboardHome: "Standset", - Name: "Navn", - Status: "Status", - DateTime: "Dato / Tid", - Message: "Beskeder", - "No important events": "Inden vigtige begivenheder", - Resume: "Fortsæt", - Edit: "Rediger", - Delete: "Slet", - Current: "Aktuelt", - Uptime: "Oppetid", - "Cert Exp.": "Certifikatets udløb", - days: "Dage", - day: "Dag", - "-day": "-Dage", - hour: "Timer", - "-hour": "-Timer", - checkEverySecond: "Tjek hvert {0} sekund", - Response: "Respons", - Ping: "Ping", - "Monitor Type": "Overvåger Type", - Keyword: "Nøgleord", - "Friendly Name": "Visningsnavn", - URL: "URL", - Hostname: "Hostname", - Port: "Port", - "Heartbeat Interval": "Taktinterval", - Retries: "Gentagelser", - retriesDescription: "Maksimalt antal gentagelser, før tjenesten markeres som inaktiv og sender en meddelelse.", - Advanced: "Avanceret", - ignoreTLSError: "Ignorere TLS/SSL web fejl", - "Upside Down Mode": "Omvendt tilstand", - upsideDownModeDescription: "Håndter tilstanden omvendt. Hvis tjenesten er tilgængelig, vises den som inaktiv.", - "Max. Redirects": "Maks. Omdirigeringer", - maxRedirectDescription: "Maksimalt antal omdirigeringer, der skal følges. Indstil til 0 for at deaktivere omdirigeringer.", - "Accepted Status Codes": "Tilladte HTTP-Statuskoder", - acceptedStatusCodesDescription: "Vælg de statuskoder, der stadig skal vurderes som vellykkede.", - Save: "Gem", - Notifications: "Underretninger", - "Not available, please setup.": "Ikke tilgængelige, opsæt venligst.", - "Setup Notification": "Opsæt underretninger", - Light: "Lys", - Dark: "Mørk", - Auto: "Auto", - "Theme - Heartbeat Bar": "Tema - Tidslinje", - Normal: "Normal", - Bottom: "Bunden", - None: "Ingen", - Timezone: "Tidszone", - "Search Engine Visibility": "Søgemaskine synlighed", - "Allow indexing": "Tillad indeksering", - "Discourage search engines from indexing site": "Frabed søgemaskiner at indeksere webstedet", - "Change Password": "Ændre adgangskode", - "Current Password": "Nuværende adgangskode", - "New Password": "Ny adgangskode", - "Repeat New Password": "Gentag den nye adgangskode", - passwordNotMatchMsg: "Adgangskoderne er ikke ens.", - "Update Password": "Opdater adgangskode", - "Disable Auth": "Deaktiver autentificering", - "Enable Auth": "Aktiver autentificering", - Logout: "Log ud", - notificationDescription: "Tildel underretninger til Overvåger(e), så denne funktion træder i kraft.", - Leave: "Verlassen", - "I understand, please disable": "Jeg er indforstået, deaktiver venligst", - Confirm: "Bekræft", - Yes: "Ja", - No: "Nej", - Username: "Brugernavn", - Password: "Adgangskode", - "Remember me": "Husk mig", - Login: "Log ind", - "No Monitors, please": "Ingen Overvågere", - "add one": "tilføj en", - "Notification Type": "Underretningstype", - Email: "E-Mail", - Test: "Test", - "Certificate Info": "Certifikatoplysninger", - keywordDescription: "Søg efter et søgeord i almindelig HTML- eller JSON -output. Bemærk, at der skelnes mellem store og små bogstaver.", - deleteMonitorMsg: "Er du sikker på, at du vil slette overvågeren?", - deleteNotificationMsg: "Er du sikker på, at du vil slette denne underretning for alle overvågere? ", - resoverserverDescription: "Cloudflare er standardserveren, den kan til enhver tid ændres.", - "Resolver Server": "Navne-server", - rrtypeDescription: "Vælg den type RR, du vil overvåge.", - "Last Result": "Seneste resultat", - pauseMonitorMsg: "Er du sikker på, at du vil standse Overvågeren?", - "Create your admin account": "Opret din administratorkonto", - "Repeat Password": "Gentag adgangskoden", - "Resource Record Type": "Resource Record Type", - respTime: "Resp. Tid (ms)", - notAvailableShort: "N/A", - Create: "Opret", - clearEventsMsg: "Er du sikker på vil slette alle events for denne Overvåger?", - clearHeartbeatsMsg: "Er du sikker på vil slette alle heartbeats for denne Overvåger?", - confirmClearStatisticsMsg: "Vil du helt sikkert slette ALLE statistikker?", - "Clear Data": "Ryd Data", - Events: "Events", - Heartbeats: "Heartbeats", - "Auto Get": "Auto-hent", - enableDefaultNotificationDescription: "For hver ny overvåger aktiveres denne underretning som standard. Du kan stadig deaktivere underretningen separat for hver skærm.", - "Default enabled": "Standard aktiveret", - "Also apply to existing monitors": "Anvend også på eksisterende overvågere", - Export: "Eksport", - Import: "Import", - backupDescription: "Du kan sikkerhedskopiere alle Overvågere og alle underretninger til en JSON-fil.", - backupDescription2: "PS: Historik og hændelsesdata er ikke inkluderet.", - backupDescription3: "Følsom data, f.eks. underretnings-tokener, er inkluderet i eksportfilen. Gem den sikkert.", - alertNoFile: "Vælg en fil der skal importeres.", - alertWrongFileType: "Vælg venligst en JSON-fil.", - twoFAVerifyLabel: "Indtast venligst dit token for at bekræfte, at 2FA fungerer", - tokenValidSettingsMsg: "Token er gyldigt! Du kan nu gemme 2FA -indstillingerne.", - confirmEnableTwoFAMsg: "Er du sikker på at du vil aktivere 2FA?", - confirmDisableTwoFAMsg: "Er du sikker på at du vil deaktivere 2FA?", - "Apply on all existing monitors": "Anvend på alle eksisterende overvågere", - "Verify Token": "Verificere Token", - "Setup 2FA": "Opsæt 2FA", - "Enable 2FA": "Aktiver 2FA", - "Disable 2FA": "Deaktiver 2FA", - "2FA Settings": "2FA Indstillinger", - "Two Factor Authentication": "To-Faktor Autentificering", - Active: "Aktive", - Inactive: "Inaktive", - Token: "Token", - "Show URI": "Vis URI", - "Clear all statistics": "Ryd alle Statistikker", - retryCheckEverySecond: "Prøv igen hvert {0} sekund.", - importHandleDescription: "Vælg 'Spring over eksisterende', hvis du vil springe over hver overvåger eller underretning med samme navn. 'Overskriv' sletter alle eksisterende overvågere og underretninger.", - confirmImportMsg: "Er du sikker på at importere sikkerhedskopien? Sørg for, at du har valgt den rigtige importindstilling.", - "Heartbeat Retry Interval": "Heartbeat Gentagelsesinterval", - "Import Backup": "Importer Backup", - "Export Backup": "Eksporter Backup", - "Skip existing": "Spring over eksisterende", - Overwrite: "Overskriv", - Options: "Valgmuligheder", - "Keep both": "Behold begge", - Tags: "Tags", - "Add New below or Select...": "Tilføj Nyt nedenfor eller Vælg ...", - "Tag with this name already exist.": "Et Tag med dette navn findes allerede.", - "Tag with this value already exist.": "Et Tag med denne værdi findes allerede.", - color: "farve", - "value (optional)": "værdi (valgfri)", - Gray: "Grå", - Red: "Rød", - Orange: "Orange", - Green: "Grøn", - Blue: "Blå", - Indigo: "Indigo", - Purple: "Lilla", - Pink: "Pink", - "Search...": "Søg...", - "Avg. Ping": "Gns. Ping", - "Avg. Response": "Gns. Respons", - "Entry Page": "Entry Side", - statusPageNothing: "Intet her, tilføj venligst en Gruppe eller en Overvåger.", - "No Services": "Ingen Tjenester", - "All Systems Operational": "Alle Systemer i Drift", - "Partially Degraded Service": "Delvist Forringet Service", - "Degraded Service": "Forringet Service", - "Add Group": "Tilføj Gruppe", - "Add a monitor": "Tilføj en Overvåger", - "Edit Status Page": "Rediger Statusside", - "Go to Dashboard": "Gå til Dashboard", - "Status Page": "Status Page", - telegram: "Telegram", - webhook: "Webhook", - smtp: "Email (SMTP)", - discord: "Discord", - teams: "Microsoft Teams", - signal: "Signal", - gotify: "Gotify", - slack: "Slack", - "rocket.chat": "Rocket.chat", - pushover: "Pushover", - pushy: "Pushy", - octopush: "Octopush", - promosms: "PromoSMS", - lunasea: "LunaSea", - apprise: "Apprise (Support 50+ Notification services)", - pushbullet: "Pushbullet", - line: "Line Messenger", - mattermost: "Mattermost", -}; + languageName: 'Danish (Danmark)', + Settings: 'Indstillinger', + Dashboard: 'Betjeningspanel', + 'New Update': 'Opdatering tilgængelig', + Language: 'Sprog', + Appearance: 'Udseende', + Theme: 'Tema', + General: 'Generelt', + Version: 'Version', + 'Check Update On GitHub': 'Tjek efter opdateringer på Github', + List: 'Liste', + Add: 'Tilføj', + 'Add New Monitor': 'Tilføj ny Overvåger', + 'Quick Stats': 'Oversigt', + Up: 'Aktiv', + Down: 'Inaktiv', + Pending: 'Afventer', + Unknown: 'Ukendt', + Pause: 'Stands', + pauseDashboardHome: 'Standset', + Name: 'Navn', + Status: 'Status', + DateTime: 'Dato / Tid', + Message: 'Beskeder', + 'No important events': 'Inden vigtige begivenheder', + Resume: 'Fortsæt', + Edit: 'Rediger', + Delete: 'Slet', + Current: 'Aktuelt', + Uptime: 'Oppetid', + 'Cert Exp.': 'Certifikatets udløb', + days: 'Dage', + day: 'Dag', + '-day': '-Dage', + hour: 'Timer', + '-hour': '-Timer', + checkEverySecond: 'Tjek hvert {0} sekund', + Response: 'Respons', + Ping: 'Ping', + 'Monitor Type': 'Overvåger Type', + Keyword: 'Nøgleord', + 'Friendly Name': 'Visningsnavn', + URL: 'URL', + Hostname: 'Hostname', + Port: 'Port', + 'Heartbeat Interval': 'Taktinterval', + Retries: 'Gentagelser', + retriesDescription: 'Maksimalt antal gentagelser, før tjenesten markeres som inaktiv og sender en meddelelse.', + Advanced: 'Avanceret', + ignoreTLSError: 'Ignorere TLS/SSL web fejl', + 'Upside Down Mode': 'Omvendt tilstand', + upsideDownModeDescription: 'Håndter tilstanden omvendt. Hvis tjenesten er tilgængelig, vises den som inaktiv.', + 'Max. Redirects': 'Maks. Omdirigeringer', + maxRedirectDescription: 'Maksimalt antal omdirigeringer, der skal følges. Indstil til 0 for at deaktivere omdirigeringer.', + 'Accepted Status Codes': 'Tilladte HTTP-Statuskoder', + acceptedStatusCodesDescription: 'Vælg de statuskoder, der stadig skal vurderes som vellykkede.', + Save: 'Gem', + Notifications: 'Underretninger', + 'Not available, please setup.': 'Ikke tilgængelige, opsæt venligst.', + 'Setup Notification': 'Opsæt underretninger', + Light: 'Lys', + Dark: 'Mørk', + Auto: 'Auto', + 'Theme - Heartbeat Bar': 'Tema - Tidslinje', + Normal: 'Normal', + Bottom: 'Bunden', + None: 'Ingen', + Timezone: 'Tidszone', + 'Search Engine Visibility': 'Søgemaskine synlighed', + 'Allow indexing': 'Tillad indeksering', + 'Discourage search engines from indexing site': 'Frabed søgemaskiner at indeksere webstedet', + 'Change Password': 'Ændre adgangskode', + 'Current Password': 'Nuværende adgangskode', + 'New Password': 'Ny adgangskode', + 'Repeat New Password': 'Gentag den nye adgangskode', + passwordNotMatchMsg: 'Adgangskoderne er ikke ens.', + 'Update Password': 'Opdater adgangskode', + 'Disable Auth': 'Deaktiver autentificering', + 'Enable Auth': 'Aktiver autentificering', + Logout: 'Log ud', + notificationDescription: 'Tildel underretninger til Overvåger(e), så denne funktion træder i kraft.', + Leave: 'Verlassen', + 'I understand, please disable': 'Jeg er indforstået, deaktiver venligst', + Confirm: 'Bekræft', + Yes: 'Ja', + No: 'Nej', + Username: 'Brugernavn', + Password: 'Adgangskode', + 'Remember me': 'Husk mig', + Login: 'Log ind', + 'No Monitors, please': 'Ingen Overvågere', + 'add one': 'tilføj en', + 'Notification Type': 'Underretningstype', + Email: 'E-Mail', + Test: 'Test', + 'Certificate Info': 'Certifikatoplysninger', + keywordDescription: 'Søg efter et søgeord i almindelig HTML- eller JSON -output. Bemærk, at der skelnes mellem store og små bogstaver.', + deleteMonitorMsg: 'Er du sikker på, at du vil slette overvågeren?', + deleteNotificationMsg: 'Er du sikker på, at du vil slette denne underretning for alle overvågere? ', + resoverserverDescription: 'Cloudflare er standardserveren, den kan til enhver tid ændres.', + 'Resolver Server': 'Navne-server', + rrtypeDescription: 'Vælg den type RR, du vil overvåge.', + 'Last Result': 'Seneste resultat', + pauseMonitorMsg: 'Er du sikker på, at du vil standse Overvågeren?', + 'Create your admin account': 'Opret din administratorkonto', + 'Repeat Password': 'Gentag adgangskoden', + 'Resource Record Type': 'Resource Record Type', + respTime: 'Resp. Tid (ms)', + notAvailableShort: 'N/A', + Create: 'Opret', + clearEventsMsg: 'Er du sikker på vil slette alle events for denne Overvåger?', + clearHeartbeatsMsg: 'Er du sikker på vil slette alle hjerteslag for denne Overvåger?', + confirmClearStatisticsMsg: 'Vil du helt sikkert slette ALLE statistikker?', + 'Clear Data': 'Ryd Data', + Events: 'Events', + Heartbeats: 'Hjerteslag', + 'Auto Get': 'Auto-hent', + enableDefaultNotificationDescription: 'For hver ny overvåger aktiveres denne underretning som standard. Du kan stadig deaktivere underretningen separat for hver skærm.', + 'Default enabled': 'Standard aktiveret', + 'Also apply to existing monitors': 'Anvend også på eksisterende overvågere', + Export: 'Eksport', + Import: 'Import', + backupDescription: 'Du kan sikkerhedskopiere alle Overvågere og alle underretninger til en JSON-fil.', + backupDescription2: 'PS: Historik og hændelsesdata er ikke inkluderet.', + backupDescription3: 'Følsom data, f.eks. underretnings-tokener, er inkluderet i eksportfilen. Gem den sikkert.', + alertNoFile: 'Vælg en fil der skal importeres.', + alertWrongFileType: 'Vælg venligst en JSON-fil.', + twoFAVerifyLabel: 'Indtast venligst dit token for at bekræfte, at 2FA fungerer', + tokenValidSettingsMsg: 'Token er gyldigt! Du kan nu gemme 2FA -indstillingerne.', + confirmEnableTwoFAMsg: 'Er du sikker på at du vil aktivere 2FA?', + confirmDisableTwoFAMsg: 'Er du sikker på at du vil deaktivere 2FA?', + 'Apply on all existing monitors': 'Anvend på alle eksisterende overvågere', + 'Verify Token': 'Verificere Token', + 'Setup 2FA': 'Opsæt 2FA', + 'Enable 2FA': 'Aktiver 2FA', + 'Disable 2FA': 'Deaktiver 2FA', + '2FA Settings': '2FA Indstillinger', + 'Two Factor Authentication': 'To-Faktor Autentificering', + Active: 'Aktive', + Inactive: 'Inaktive', + Token: 'Token', + 'Show URI': 'Vis URI', + 'Clear all statistics': 'Ryd alle Statistikker', + retryCheckEverySecond: 'Prøv igen hvert {0} sekund.', + importHandleDescription: "Vælg 'Spring over eksisterende', hvis du vil springe over hver overvåger eller underretning med samme navn. 'Overskriv' sletter alle eksisterende overvågere og underretninger.", + confirmImportMsg: 'Er du sikker på at importere sikkerhedskopien? Sørg for, at du har valgt den rigtige importindstilling.', + 'Heartbeat Retry Interval': 'Hjerteslag Gentagelsesinterval', + 'Import Backup': 'Importer Backup', + 'Export Backup': 'Eksporter Backup', + 'Skip existing': 'Spring over eksisterende', + Overwrite: 'Overskriv', + Options: 'Valgmuligheder', + 'Keep both': 'Behold begge', + Tags: 'Etiketter', + 'Add New below or Select...': 'Tilføj Nyt nedenfor eller Vælg ...', + 'Tag with this name already exist.': 'Et Tag med dette navn findes allerede.', + 'Tag with this value already exist.': 'Et Tag med denne værdi findes allerede.', + color: 'farve', + 'value (optional)': 'værdi (valgfri)', + Gray: 'Grå', + Red: 'Rød', + Orange: 'Orange', + Green: 'Grøn', + Blue: 'Blå', + Indigo: 'Indigo', + Purple: 'Lilla', + Pink: 'Pink', + 'Search...': 'Søg...', + 'Avg. Ping': 'Gns. Ping', + 'Avg. Response': 'Gns. Respons', + 'Entry Page': 'Entry Side', + statusPageNothing: 'Intet her, tilføj venligst en Gruppe eller en Overvåger.', + 'No Services': 'Ingen Tjenester', + 'All Systems Operational': 'Alle Systemer i Drift', + 'Partially Degraded Service': 'Delvist Forringet Service', + 'Degraded Service': 'Forringet Service', + 'Add Group': 'Tilføj Gruppe', + 'Add a monitor': 'Tilføj en Overvåger', + 'Edit Status Page': 'Rediger Statusside', + 'Go to Dashboard': 'Gå til Betjeningspanel', + 'Status Page': 'Statusside', + telegram: 'Telegram', + webhook: 'Webhook', + smtp: 'Email (SMTP)', + discord: 'Discord', + teams: 'Microsoft Teams', + signal: 'Signal', + gotify: 'Gotify', + slack: 'Slack', + 'rocket.chat': 'Rocket.chat', + pushover: 'Pushover', + pushy: 'Pushy', + octopush: 'Octopush', + promosms: 'PromoSMS', + lunasea: 'LunaSea', + apprise: 'Apprise (Understøtter 50+ Notifikationstjenester)', + pushbullet: 'Pushbullet', + line: 'Line Messenger', + mattermost: 'Mattermost', + 'Primary Base URL': 'Primær Basis-URL', + 'Push URL': 'Push URL', + needPushEvery: 'Du bør kalde denne webadresse hvert {0} sekund.', + pushOptionalParams: 'Valgfrie parametre: {0}', + defaultNotificationName: 'Min {notification} Advarsel ({number})', + here: 'her', + Required: 'Påkrævet', + 'Bot Token': 'Bot Token', + wayToGetTelegramToken: 'Du kan få et token fra {0}.', + 'Chat ID': 'Chat ID', + supportTelegramChatID: "Support Direct Chat / Group / Channel's Chat ID", + wayToGetTelegramChatID: "Du kan få dit chat-ID ved at sende en besked til bot'en og gå til denne URL for at se chat_id'et:", + 'YOUR BOT TOKEN HERE': 'DIT BOT TOKEN HER', + chatIDNotFound: 'Chat-ID blev ikke fundet; send venligst en besked til denne bot først ', + 'Post URL': 'Post URL', + 'Content Type': 'Indholdstype', + webhookJsonDesc: '{0} er god til alle moderne HTTP-servere som f.eks Express.js', + webhookFormDataDesc: "{multipart} er god til PHP. JSON'en skal parses med {decodeFunction}", + secureOptionNone: 'Ingen / STARTTLS (25, 587)', + secureOptionTLS: 'TLS (465)', + 'Ignore TLS Error': 'Ignorer TLS-fejl', + 'From Email': 'Afsender Email', + emailCustomSubject: 'Brugerdefineret Emne', + 'To Email': 'Modtager Email', + smtpCC: 'CC', + smtpBCC: 'BCC', + 'Discord Webhook URL': 'Discord Webhook URL', + wayToGetDiscordURL: 'Du kan få dette ved at gå til Serverindstillinger -> Integrationer -> Opret webhook ', + 'Bot Display Name': 'Bot Visningsnavn', + 'Prefix Custom Message': 'Præfiks Brugerdefineret Besked', + 'Hello @everyone is...': "Hello {'@'}everyone is...", + 'Webhook URL': 'Webhook URL', + wayToGetTeamsURL: 'Du kan lære, hvordan du laver en webhook URL {0}.', + Number: 'Nummer', + Recipients: 'Modtagere', + needSignalAPI: 'Du skal have en Signal-klient med REST API.', + wayToCheckSignalURL: 'Du kan tjekke denne URL for at se, hvordan du konfigurerer en:', + signalImportant: 'VIGTIGT: Du kan ikke blande grupper og numre i modtagere!', + 'Application Token': 'Program Token', + 'Server URL': 'Server URL', + Priority: 'Prioritet', + 'Icon Emoji': 'Icon Emoji', + 'Channel Name': 'Kanalnavn', + 'Uptime Kuma URL': 'Uptime Kuma URL', + aboutWebhooks: 'Mere info om Webhooks på: {0}', + aboutChannelName: 'Indtast kanalnavnet i {0} Kanalnavn feltet, hvis du vil omgå Webhook-kanalen. Eks: #anden-kanal', + aboutKumaURL: 'Hvis du efterlader Uptime Kuma URL-feltet tomt, vil det som standard gå til projektets GitHub-siden.', + emojiCheatSheet: 'Emoji cheat sheet: {0}', + clicksendsms: 'ClickSend SMS', + 'User Key': 'Bruger-Nøgle', + Device: 'Enhed', + 'Message Title': 'Besked Titel', + 'Notification Sound': 'Notifikationslyd', + 'More info on:': 'Mere info på: {0}', + pushoverDesc1: 'Nødprioritet (2) har som standard 30 sekunders timeout mellem genforsøg og udløber efter 1 time.', + pushoverDesc2: 'Hvis du vil sende meddelelser til forskellige enheder, skal du udfylde feltet Enhed.', + 'SMS Type': 'SMS Type', + octopushTypePremium: 'Premium (Hurtig - anbefales til advarsel)', + octopushTypeLowCost: 'Lavpris (Langsom - nogle gange blokeret af operatøren)', + checkPrice: 'Tjek {0} priser:', + apiCredentials: 'API legitimationsoplysninger', + octopushLegacyHint: 'Bruger du den ældre version af Octopush (2011-2020) eller den nye version?', + 'Check octopush prices': 'Tjek octopush priser {0}.', + octopushPhoneNumber: 'Telefonnummer (intl format, f.eks : +4512345678) ', + octopushSMSSender: 'SMS Afsender Navn : 3-11 alfanumeriske tegn og mellemrum (a-zA-Z0-9)', + 'LunaSea Device ID': 'LunaSea Enhed-ID', + 'Apprise URL': 'Apprise URL', + 'Example:': 'Eksempel: {0}', + 'Read more:': 'Læs mere: {0}', + 'Status:': 'Status: {0}', + 'Read more': 'Læs mere', + appriseInstalled: 'Apprise er installeret.', + appriseNotInstalled: 'Apprise er ikke installeret. {0}', + 'Access Token': 'Access Token', + 'Channel access token': 'kanaladgangstoken', + 'Line Developers Console': 'Line Udviklerkonsol', + lineDevConsoleTo: 'Line Udviklerkonsol - {0}', + 'Basic Settings': 'Basisindstillinger', + 'User ID': 'Bruger-ID', + 'Messaging API': 'Messaging API', + wayToGetLineChannelToken: "Tilgå først {0}, opret en udbyder og kanal (Messaging API), så kan du få kanaladgangstoken'et og bruger-ID'et fra de ovennævnte menupunkter.", + 'Icon URL': 'Ikon URL', + aboutIconURL: 'Du kan angive et link til et billede i "Ikon URL" for at tilsidesætte standardprofilbilledet. Vil ikke blive brugt, hvis Ikon Emoji er angivet.', + aboutMattermostChannelName: 'Du kan tilsidesætte standardkanalen, som Webhoo\'en sender til ved at indtaste kanalnavnet i feltet "Kanalnavn". Dette skal aktiveres i Mattermost Webhook-indstillingerne. Eks: #anden-kanal', + matrix: 'Matrix', + promosmsTypeEco: 'SMS ECO - billig, men langsom og ofte overbelastet. Begrænset kun til polske modtagere.', + promosmsTypeFlash: 'SMS FLASH - Beskeden vises automatisk på modtagerenheden. Begrænset kun til polske modtagere.', + promosmsTypeFull: 'SMS FULL - Premium-niveau af SMS, Du kan bruge dit "Sender Name" (Du skal først registrere navn). Pålidelig til advarsler.', + promosmsTypeSpeed: 'SMS SPEED - Højeste prioritet i systemet. Meget hurtig og pålidelig, men dyr (ca. to gange af SMS FULL pris).', + promosmsPhoneNumber: 'Telefonnummer (polske numre behøver ikke angive områdenumre)', + promosmsSMSSender: 'SMS Sender Name : Forudregistreret navn eller en af standarderne: InfoSMS, SMS Info, MaxSMS, INFO, SMS', + 'Feishu WebHookUrl': 'Feishu WebHookURL', + matrixHomeserverURL: 'Hjemmeserver-URL (med http(s):// og eventuel port)', + 'Internal Room Id': 'Intern Rum-ID', + matrixDesc1: 'Du kan finde det interne rum-ID ved at se i det avancerede afsnit af rumindstillingerne i din Matrix-klient. Det skulle ligne !QMdRCpUIfLwsfjxye6:home.server.', + matrixDesc2: "Det anbefales stærkt, at du opretter en ny bruger og ikke bruger din egen Matrix-brugers adgangstoken, da det giver fuld adgang til din konto og alle de rum, du har tilsluttet dig. I stedet skal du oprette en ny bruger og kun invitere den til det rum, du vil modtage meddelelsen i. Du kan få adgangstokenet ved at køre {0}", + Method: 'Metode', + Body: 'Body', + Headers: 'Headers', + PushUrl: 'Push URL', + HeadersInvalidFormat: '"request headers"-erne er ikke gyldige JSON: ', + BodyInvalidFormat: '"request body"-en er ikke gyldige JSON: ', + 'Monitor History': 'Overvåger Historik', + clearDataOlderThan: 'Gem overvågningshistorikdata i {0} dage.', + PasswordsDoNotMatch: 'Adgangskoderne stemmer ikke overens.', + records: 'forekomster', + 'One record': 'Én forekomst', + steamApiKeyDescription: 'For at overvåge en Steam Game Server skal du bruge en Steam Web-API nøgle. Du kan registrere din API-nøgle her: ', + 'Current User': 'Nuværende Bruger', + recent: 'Seneste', + Done: 'Færdig', + Info: 'Info', + Security: 'Sikkerhed', + 'Steam API Key': 'Steam API-nøgle', + 'Shrink Database': 'Krymp Database', + 'Pick a RR-Type...': 'Vælg en RR-Type...', + 'Pick Accepted Status Codes...': 'Vælg Accepterede Statuskoder...', + Default: 'Standard', + 'HTTP Options': 'HTTP Valgmuligheder', + 'Create Incident': 'Opret Annoncering', + Title: 'Titel', + Content: 'Indhold', + Style: 'Type', + info: 'info', + warning: 'advarsel', + danger: 'fare', + primary: 'primær', + light: 'lys', + dark: 'mørk', + Post: 'Udgiv', + 'Please input title and content': 'Indtast venligst titel og indhold', + Created: 'Oprettet', + 'Last Updated': 'Sidst Opdateret', + Unpin: 'Frigør', + 'Switch to Light Theme': 'Skift til Lys Tema', + 'Switch to Dark Theme': 'Skift til Mørkt Tema', + 'Show Tags': 'Vis Etiketter', + 'Hide Tags': 'Skjul Etiketter', + Description: 'Beskrivelse', + 'No monitors available.': 'No monitors available.', + 'Add one': 'Tilføj en', + 'No Monitors': 'Ingen Overvågere', + 'Untitled Group': 'Unavngivet Gruppe', + Services: 'Tjenester', + Discard: 'Kassér', + Cancel: 'Annullér', + 'Powered by': 'Drevet af', + shrinkDatabaseDescription: 'Udfør database VACUUM for SQLite. Hvis din database er oprettet efter 1.10.0, er AUTO_VACUUM allerede aktiveret, og denne handling er ikke nødvendig.', + serwersms: 'SerwerSMS.pl', + serwersmsAPIUser: 'API Brugernavn (inkl. webapi_ prefix)', + serwersmsAPIPassword: 'API Adgangskode', + serwersmsPhoneNumber: 'Telefonnummer', + serwersmsSenderName: 'SMS Afsender Navn (registreret via kundeportal)', + stackfield: 'Stackfield' +} \ No newline at end of file From 2ef2a42e872d23a7287168302b8c994b5728106b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lars=20S=C3=B8rensen?= Date: Wed, 8 Dec 2021 11:35:55 +0100 Subject: [PATCH 096/174] Fixed string enclosure as suggested by update-language-files --- src/languages/da-DK.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/languages/da-DK.js b/src/languages/da-DK.js index 22a2c369..04593d09 100644 --- a/src/languages/da-DK.js +++ b/src/languages/da-DK.js @@ -281,7 +281,7 @@ export default { wayToGetLineChannelToken: "Tilgå først {0}, opret en udbyder og kanal (Messaging API), så kan du få kanaladgangstoken'et og bruger-ID'et fra de ovennævnte menupunkter.", 'Icon URL': 'Ikon URL', aboutIconURL: 'Du kan angive et link til et billede i "Ikon URL" for at tilsidesætte standardprofilbilledet. Vil ikke blive brugt, hvis Ikon Emoji er angivet.', - aboutMattermostChannelName: 'Du kan tilsidesætte standardkanalen, som Webhoo\'en sender til ved at indtaste kanalnavnet i feltet "Kanalnavn". Dette skal aktiveres i Mattermost Webhook-indstillingerne. Eks: #anden-kanal', + aboutMattermostChannelName: `Du kan tilsidesætte standardkanalen, som Webhoo'en sender til ved at indtaste kanalnavnet i feltet "Kanalnavn". Dette skal aktiveres i Mattermost Webhook-indstillingerne. Eks: #anden-kanal`, matrix: 'Matrix', promosmsTypeEco: 'SMS ECO - billig, men langsom og ofte overbelastet. Begrænset kun til polske modtagere.', promosmsTypeFlash: 'SMS FLASH - Beskeden vises automatisk på modtagerenheden. Begrænset kun til polske modtagere.', @@ -293,7 +293,7 @@ export default { matrixHomeserverURL: 'Hjemmeserver-URL (med http(s):// og eventuel port)', 'Internal Room Id': 'Intern Rum-ID', matrixDesc1: 'Du kan finde det interne rum-ID ved at se i det avancerede afsnit af rumindstillingerne i din Matrix-klient. Det skulle ligne !QMdRCpUIfLwsfjxye6:home.server.', - matrixDesc2: "Det anbefales stærkt, at du opretter en ny bruger og ikke bruger din egen Matrix-brugers adgangstoken, da det giver fuld adgang til din konto og alle de rum, du har tilsluttet dig. I stedet skal du oprette en ny bruger og kun invitere den til det rum, du vil modtage meddelelsen i. Du kan få adgangstokenet ved at køre {0}", + matrixDesc2: 'Det anbefales stærkt, at du opretter en ny bruger og ikke bruger din egen Matrix-brugers adgangstoken, da det giver fuld adgang til din konto og alle de rum, du har tilsluttet dig. I stedet skal du oprette en ny bruger og kun invitere den til det rum, du vil modtage meddelelsen i. Du kan få adgangstokenet ved at køre {0}', Method: 'Metode', Body: 'Body', Headers: 'Headers', From a4841eb8aa8744d8e9439a5b164848bb4b9bb831 Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Thu, 9 Dec 2021 01:19:09 +0800 Subject: [PATCH 097/174] Fix #1016, .at() is not support in Safari --- src/pages/Settings.vue | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/pages/Settings.vue b/src/pages/Settings.vue index 3378a0e9..58162f57 100644 --- a/src/pages/Settings.vue +++ b/src/pages/Settings.vue @@ -49,8 +49,9 @@ export default { computed: { currentPage() { - let pathEnd = useRoute().path.split("/").at(-1); - if (pathEnd == "settings" || pathEnd == null) { + let pathSplit = useRoute().path.split("/"); + let pathEnd = pathSplit[pathSplit.length - 1]; + if (!pathEnd || pathEnd === "settings") { return "general"; } return pathEnd; From 8bb8b0a53c7f840d2d1ddff4987434474d34d28d Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Thu, 9 Dec 2021 01:23:49 +0800 Subject: [PATCH 098/174] update to 1.11.1 --- package.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 1a5424df..79ed1c30 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "uptime-kuma", - "version": "1.11.0", + "version": "1.11.1", "license": "MIT", "repository": { "type": "git", @@ -30,13 +30,13 @@ "build-docker": "npm run build-docker-debian && npm run build-docker-alpine", "build-docker-alpine-base": "docker buildx build -f docker/alpine-base.dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:base-alpine . --push", "build-docker-debian-base": "docker buildx build -f docker/debian-base.dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:base-debian . --push", - "build-docker-alpine": "docker buildx build -f docker/dockerfile-alpine --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:alpine -t louislam/uptime-kuma:1-alpine -t louislam/uptime-kuma:1.11.0-alpine --target release . --push", - "build-docker-debian": "docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma -t louislam/uptime-kuma:1 -t louislam/uptime-kuma:1.11.0 -t louislam/uptime-kuma:debian -t louislam/uptime-kuma:1-debian -t louislam/uptime-kuma:1.11.0-debian --target release . --push", + "build-docker-alpine": "docker buildx build -f docker/dockerfile-alpine --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:alpine -t louislam/uptime-kuma:1-alpine -t louislam/uptime-kuma:1.11.1-alpine --target release . --push", + "build-docker-debian": "docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma -t louislam/uptime-kuma:1 -t louislam/uptime-kuma:1.11.1 -t louislam/uptime-kuma:debian -t louislam/uptime-kuma:1-debian -t louislam/uptime-kuma:1.11.1-debian --target release . --push", "build-docker-nightly": "docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:nightly --target nightly . --push", "build-docker-nightly-alpine": "docker buildx build -f docker/dockerfile-alpine --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:nightly-alpine --target nightly . --push", "build-docker-nightly-amd64": "docker buildx build -f docker/dockerfile --platform linux/amd64 -t louislam/uptime-kuma:nightly-amd64 --target nightly . --push --progress plain", "upload-artifacts": "docker buildx build -f docker/dockerfile --platform linux/amd64 -t louislam/uptime-kuma:upload-artifact --build-arg VERSION --build-arg GITHUB_TOKEN --target upload-artifact . --progress plain", - "setup": "git checkout 1.11.0 && npm ci --production && npm run download-dist", + "setup": "git checkout 1.11.1 && npm ci --production && npm run download-dist", "download-dist": "node extra/download-dist.js", "update-version": "node extra/update-version.js", "mark-as-nightly": "node extra/mark-as-nightly.js", From cb3429d3c76a716bada58633f855e147e9ffb2bb Mon Sep 17 00:00:00 2001 From: titiscan Date: Thu, 9 Dec 2021 17:26:05 +0100 Subject: [PATCH 099/174] Update fr-FR.js typo fix --- src/languages/fr-FR.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/languages/fr-FR.js b/src/languages/fr-FR.js index 4cf863ef..bf98dd8d 100644 --- a/src/languages/fr-FR.js +++ b/src/languages/fr-FR.js @@ -129,7 +129,7 @@ export default { Create: "Créer", "Clear Data": "Effacer les données", Events: "Evénements", - Heartbeats: "Vérfications", + Heartbeats: "Vérifications", "Auto Get": "Récuperer automatiquement", backupDescription: "Vous pouvez sauvegarder toutes les sondes et toutes les notifications dans un fichier JSON.", backupDescription2: "PS : Les données relatives à l'historique et aux événements ne sont pas incluses.", From 728485d686ae424e3ad1e8791c581b47373bb91c Mon Sep 17 00:00:00 2001 From: Ioma Taani Date: Fri, 10 Dec 2021 09:08:01 +0100 Subject: [PATCH 100/174] updated translations --- src/languages/it-IT.js | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/src/languages/it-IT.js b/src/languages/it-IT.js index 20ee93db..4dd0bba0 100644 --- a/src/languages/it-IT.js +++ b/src/languages/it-IT.js @@ -185,21 +185,21 @@ export default { "Status Page": "Pagina di stato", defaultNotificationName: "Allarme {notification} ({number})", here: "qui", - "Required": "Richiesto", - "telegram": "Telegram", + Required: "Richiesto", + telegram: "Telegram", "Bot Token": "Token del Bot", - "You can get a token from": "Puoi ricevere un token da", + wayToGetTelegramToken: "Puoi ricevere un token da {0}.", "Chat ID": "ID Chat", supportTelegramChatID: "Supporta Chat dirette / di Gruppo / ID Canale", wayToGetTelegramChatID: "Puoi ricereve l'ID chat mandando un messaggio al bot andando in questo url per visualizzare il chat_id:", "YOUR BOT TOKEN HERE": "QUI IL TOKEN DEL BOT", chatIDNotFound: "Non trovo l'ID chat. Prima bisogna mandare un messaggio al bot", - "webhook": "Webhook", + webhook: "Webhook", "Post URL": "Post URL", "Content Type": "Content Type", webhookJsonDesc: "{0} va bene per qualsiasi server http moderno ad esempio express.js", webhookFormDataDesc: "{multipart} va bene per PHP, c'è solo bisogno di analizzare il json con {decodeFunction}", - "smtp": "E-mail (SMTP)", + smtp: "E-mail (SMTP)", secureOptionNone: "Nessuno / STARTTLS (25, 587)", secureOptionTLS: "TLS (465)", "Ignore TLS Error": "Ignora gli errori TLS", @@ -208,26 +208,26 @@ export default { "To Email": "Destinatario", smtpCC: "CC", smtpBCC: "CCn", - "discord": "Discord", + discord: "Discord", "Discord Webhook URL": "URL Webhook di Discord", wayToGetDiscordURL: "È possibile recuperarlo da Impostazioni server -> Integrazioni -> Creare Webhook", "Bot Display Name": "Nome del Bot", "Prefix Custom Message": "Prefisso per il messaggio personalizzato", "Hello @everyone is...": "Ciao a {'@'}everyone ...", - "teams": "Microsoft Teams", + teams: "Microsoft Teams", "Webhook URL": "URL Webhook", wayToGetTeamsURL: "È possibile imparare a creare un URL Webhook {0}.", - "signal": "Signal", - "Number": "Numero", - "Recipients": "Destinatari", + signal: "Signal", + Number: "Numero", + Recipients: "Destinatari", needSignalAPI: "È necessario avere un client Signal con le API REST.", wayToCheckSignalURL: "Controllare questo url per capire come impostarne uno:", signalImportant: "IMPORTANTE: Non è possibile mischiare gruppi e numeri all'interno dei destinatari!", - "gotify": "Gotify", + gotify: "Gotify", "Application Token": "Token Applicazione", "Server URL": "URL Server", - "Priority": "Priorità", - "slack": "Slack", + Priority: "Priorità", + slack: "Slack", "Icon Emoji": "Icona Emoji", "Channel Name": "Nome Canale", "Uptime Kuma URL": "Indirizzo Uptime Kuma", @@ -247,7 +247,7 @@ export default { line: "Line Messenger", mattermost: "Mattermost", "User Key": "Chiave Utente", - "Device": "Dispositivo", + Device: "Dispositivo", "Message Title": "Titolo Messaggio", "Notification Sound": "Suono di Notifica", "More info on:": "Maggiori informazioni su: {0}", @@ -281,7 +281,7 @@ export default { "Icon URL": "URL Icona", aboutIconURL: "È possibile impostare un collegameno a una immagine in \"URL Icona\" per modificare l'immagine di profilo. Non verrà utilizzata se è impostata l'Icona Emoji.", aboutMattermostChannelName: "È possibile modificare il canale predefinito che dove il webhook manda messaggi immettendo il nome del canale nel campo \"Nome Canale\". Questo va abilitato nelle impostazioni webhook di Mattermost webhook. P.E.: #altro-canale", - "matrix": "Matrix", + matrix: "Matrix", promosmsTypeEco: "SMS ECO - economico, ma lento e spesso sovraccarico. Limitato solamente a destinatari Polacchi.", promosmsTypeFlash: "SMS FLASH - Il messaggio sarà automaticamente mostrato sul dispositivo dei destinatari. Limitato solo a destinatari Polacchi.", promosmsTypeFull: "SMS FULL - Premium, È possibile utilizzare il proprio come come mittente (è necessario prima registrare il nome). Affidabile per gli allarmi.", @@ -339,7 +339,6 @@ export default { "No monitors available.": "Nessun monitoraggio disponibile.", "Add one": "Aggiungi", "No Monitors": "Nessun monitoraggio", - "Add one": "Aggiungi", "Untitled Group": "Gruppo senza titolo", Services: "Servizi", Discard: "Scarta", @@ -351,5 +350,5 @@ export default { serwersmsAPIPassword: "Password API", serwersmsPhoneNumber: "Numero di Telefono", serwersmsSenderName: "Nome del mittente SMS (registrato via portale cliente)", - "stackfield": "Stackfield", + stackfield: "Stackfield", }; From f793aa52640fbef24720d6aecd0dd7af022e573b Mon Sep 17 00:00:00 2001 From: Ioma Taani Date: Fri, 10 Dec 2021 09:26:55 +0100 Subject: [PATCH 101/174] better translations --- src/languages/it-IT.js | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/languages/it-IT.js b/src/languages/it-IT.js index 4dd0bba0..5a38a5aa 100644 --- a/src/languages/it-IT.js +++ b/src/languages/it-IT.js @@ -8,19 +8,19 @@ export default { maxRedirectDescription: "Numero massimo di redirezionamenti consentito. Per disabilitare impostare \"0\".", acceptedStatusCodesDescription: "Inserire i codici di stato considerati come risposte corrette.", passwordNotMatchMsg: "La password non coincide.", - notificationDescription: "Assegnare la notifica a uno o più elementi monitorati per metterla in funzione.", + notificationDescription: "Assegnare la notifica a uno o più oggetti monitorati per metterla in funzione.", keywordDescription: "Cerca la parola chiave nella risposta in html o JSON e fai distinzione tra maiuscole e minuscole", pauseDashboardHome: "In Pausa", - deleteMonitorMsg: "Si è certi di voler eliminare questo monitoraggio?", + deleteMonitorMsg: "Si è certi di voler eliminare questo oggetto monitorato?", deleteNotificationMsg: "Si è certi di voler eliminare questa notifica per tutti gli oggetti monitorati?", resoverserverDescription: "Cloudflare è il server predefinito, è possibile cambiare il server DNS.", rrtypeDescription: "Scegliere il tipo di RR che si vuole monitorare", pauseMonitorMsg: "Si è certi di voler mettere in pausa?", - enableDefaultNotificationDescription: "Per ogni nuovo monitoraggio questa notifica sarà abilitata di default. È comunque possibile disabilitare la notifica separatamente per ogni monitoraggio.", + enableDefaultNotificationDescription: "Per ogni nuovo oggetto monitorato questa notifica sarà abilitata di default. È comunque possibile disabilitare la notifica separatamente per ogni oggetto.", 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.", + importHandleDescription: "Selezionare 'Ignora gli esistenti' si vuole ignorare l'importazione degli oggetti monitorati o delle notifiche con lo stesso nome. 'Sovrascrivi' eliminerà ogni oggetto 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.", @@ -38,7 +38,7 @@ export default { "Check Update On GitHub": "Controlla aggiornamenti su GitHub", List: "Lista", Add: "Aggiungi", - "Add New Monitor": "Aggiungi un nuovo monitoraggio", + "Add New Monitor": "Aggiungi un nuovo oggetto da monitorare", "Quick Stats": "Statistiche rapide", Up: "Su", Down: "Giù", @@ -63,7 +63,7 @@ export default { "-hour": "-ore", Response: "Risposta", Ping: "Ping", - "Monitor Type": "Tipo di Monitoraggio", + "Monitor Type": "Modalità di monitoraggio", Keyword: "Parola chiave", "Friendly Name": "Nomignolo", URL: "URL", @@ -111,7 +111,7 @@ export default { Password: "Password", "Remember me": "Ricordami", Login: "Accesso", - "No Monitors, please": "Nessun monitoraggio, cortesemente", + "No Monitors, please": "Nessun oggetto monitorato,", "add one": "aggiungerne uno", "Notification Type": "Tipo di notifica", Email: "E-mail", @@ -173,13 +173,13 @@ export default { "Avg. Ping": "Tempo medio di risposta al ping", "Avg. Response": "Tempo medio di risposta", "Entry Page": "Pagina Principale", - statusPageNothing: "Non c'è nulla qui, aggiungere un gruppo oppure un monitoraggio.", + statusPageNothing: "Non c'è nulla qui, aggiungere un gruppo oppure un oggetto da monitorare.", "No Services": "Nessun Servizio", "All Systems Operational": "Tutti i sistemi sono funzionali", "Partially Degraded Service": "Servizio parzialmente degradato", "Degraded Service": "Servizio degradato", "Add Group": "Aggiungi Gruppo", - "Add a monitor": "Aggiungi un monitoraggio", + "Add a monitor": "Aggiungi un oggetto", "Edit Status Page": "Modifica pagina di stato", "Go to Dashboard": "Vai al Cruscotto", "Status Page": "Pagina di stato", @@ -188,10 +188,10 @@ export default { Required: "Richiesto", telegram: "Telegram", "Bot Token": "Token del Bot", - wayToGetTelegramToken: "Puoi ricevere un token da {0}.", + wayToGetTelegramToken: "È possibile ricevere un token da {0}.", "Chat ID": "ID Chat", supportTelegramChatID: "Supporta Chat dirette / di Gruppo / ID Canale", - wayToGetTelegramChatID: "Puoi ricereve l'ID chat mandando un messaggio al bot andando in questo url per visualizzare il chat_id:", + wayToGetTelegramChatID: "È possibile ricereve l'ID chat mandando un messaggio al bot e poi andando in questo URL per visualizzare il chat_id:", "YOUR BOT TOKEN HERE": "QUI IL TOKEN DEL BOT", chatIDNotFound: "Non trovo l'ID chat. Prima bisogna mandare un messaggio al bot", webhook: "Webhook", @@ -299,7 +299,7 @@ export default { PushUrl: "URL di Push", HeadersInvalidFormat: "L'intestazione di richiesta non è un JSON valido: ", BodyInvalidFormat: "Il corpo di richiesta non è un JSON valido: ", - "Monitor History": "Storico monitoraggio", + "Monitor History": "Storicizzazione", clearDataOlderThan: "Mantieni lo storico per {0} giorni.", PasswordsDoNotMatch: "Le password non corrispondono.", records: "records", @@ -323,22 +323,22 @@ export default { info: "informativo", warning: "attenzione", danger: "critico", - primary: "primario", + primary: "predefinito", light: "chiaro", dark: "scuro", Post: "Posta", "Please input title and content": "Inserire il titolo e il contenuto", Created: "Creato", "Last Updated": "Ultima modifica", - Unpin: "Stacca", + Unpin: "Rimuovi", "Switch to Light Theme": "Utilizza tema chiaro", "Switch to Dark Theme": "Utilizza tema scuro", "Show Tags": "Mostra etichette", "Hide Tags": "Nascondi etichette", Description: "Descrizione", - "No monitors available.": "Nessun monitoraggio disponibile.", + "No monitors available.": "Nessun oggetto monitorato disponibile.", "Add one": "Aggiungi", - "No Monitors": "Nessun monitoraggio", + "No Monitors": "Nessun oggetto monitorato inserito", "Untitled Group": "Gruppo senza titolo", Services: "Servizi", Discard: "Scarta", From 34ee342d3e5b35a458a13d61a5d7262373f0ed01 Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Sat, 11 Dec 2021 17:20:51 +0800 Subject: [PATCH 102/174] eslint --- src/languages/da-DK.js | 708 ++++++++++++++++++++--------------------- 1 file changed, 354 insertions(+), 354 deletions(-) diff --git a/src/languages/da-DK.js b/src/languages/da-DK.js index 04593d09..21f030ea 100644 --- a/src/languages/da-DK.js +++ b/src/languages/da-DK.js @@ -1,355 +1,355 @@ export default { - languageName: 'Danish (Danmark)', - Settings: 'Indstillinger', - Dashboard: 'Betjeningspanel', - 'New Update': 'Opdatering tilgængelig', - Language: 'Sprog', - Appearance: 'Udseende', - Theme: 'Tema', - General: 'Generelt', - Version: 'Version', - 'Check Update On GitHub': 'Tjek efter opdateringer på Github', - List: 'Liste', - Add: 'Tilføj', - 'Add New Monitor': 'Tilføj ny Overvåger', - 'Quick Stats': 'Oversigt', - Up: 'Aktiv', - Down: 'Inaktiv', - Pending: 'Afventer', - Unknown: 'Ukendt', - Pause: 'Stands', - pauseDashboardHome: 'Standset', - Name: 'Navn', - Status: 'Status', - DateTime: 'Dato / Tid', - Message: 'Beskeder', - 'No important events': 'Inden vigtige begivenheder', - Resume: 'Fortsæt', - Edit: 'Rediger', - Delete: 'Slet', - Current: 'Aktuelt', - Uptime: 'Oppetid', - 'Cert Exp.': 'Certifikatets udløb', - days: 'Dage', - day: 'Dag', - '-day': '-Dage', - hour: 'Timer', - '-hour': '-Timer', - checkEverySecond: 'Tjek hvert {0} sekund', - Response: 'Respons', - Ping: 'Ping', - 'Monitor Type': 'Overvåger Type', - Keyword: 'Nøgleord', - 'Friendly Name': 'Visningsnavn', - URL: 'URL', - Hostname: 'Hostname', - Port: 'Port', - 'Heartbeat Interval': 'Taktinterval', - Retries: 'Gentagelser', - retriesDescription: 'Maksimalt antal gentagelser, før tjenesten markeres som inaktiv og sender en meddelelse.', - Advanced: 'Avanceret', - ignoreTLSError: 'Ignorere TLS/SSL web fejl', - 'Upside Down Mode': 'Omvendt tilstand', - upsideDownModeDescription: 'Håndter tilstanden omvendt. Hvis tjenesten er tilgængelig, vises den som inaktiv.', - 'Max. Redirects': 'Maks. Omdirigeringer', - maxRedirectDescription: 'Maksimalt antal omdirigeringer, der skal følges. Indstil til 0 for at deaktivere omdirigeringer.', - 'Accepted Status Codes': 'Tilladte HTTP-Statuskoder', - acceptedStatusCodesDescription: 'Vælg de statuskoder, der stadig skal vurderes som vellykkede.', - Save: 'Gem', - Notifications: 'Underretninger', - 'Not available, please setup.': 'Ikke tilgængelige, opsæt venligst.', - 'Setup Notification': 'Opsæt underretninger', - Light: 'Lys', - Dark: 'Mørk', - Auto: 'Auto', - 'Theme - Heartbeat Bar': 'Tema - Tidslinje', - Normal: 'Normal', - Bottom: 'Bunden', - None: 'Ingen', - Timezone: 'Tidszone', - 'Search Engine Visibility': 'Søgemaskine synlighed', - 'Allow indexing': 'Tillad indeksering', - 'Discourage search engines from indexing site': 'Frabed søgemaskiner at indeksere webstedet', - 'Change Password': 'Ændre adgangskode', - 'Current Password': 'Nuværende adgangskode', - 'New Password': 'Ny adgangskode', - 'Repeat New Password': 'Gentag den nye adgangskode', - passwordNotMatchMsg: 'Adgangskoderne er ikke ens.', - 'Update Password': 'Opdater adgangskode', - 'Disable Auth': 'Deaktiver autentificering', - 'Enable Auth': 'Aktiver autentificering', - Logout: 'Log ud', - notificationDescription: 'Tildel underretninger til Overvåger(e), så denne funktion træder i kraft.', - Leave: 'Verlassen', - 'I understand, please disable': 'Jeg er indforstået, deaktiver venligst', - Confirm: 'Bekræft', - Yes: 'Ja', - No: 'Nej', - Username: 'Brugernavn', - Password: 'Adgangskode', - 'Remember me': 'Husk mig', - Login: 'Log ind', - 'No Monitors, please': 'Ingen Overvågere', - 'add one': 'tilføj en', - 'Notification Type': 'Underretningstype', - Email: 'E-Mail', - Test: 'Test', - 'Certificate Info': 'Certifikatoplysninger', - keywordDescription: 'Søg efter et søgeord i almindelig HTML- eller JSON -output. Bemærk, at der skelnes mellem store og små bogstaver.', - deleteMonitorMsg: 'Er du sikker på, at du vil slette overvågeren?', - deleteNotificationMsg: 'Er du sikker på, at du vil slette denne underretning for alle overvågere? ', - resoverserverDescription: 'Cloudflare er standardserveren, den kan til enhver tid ændres.', - 'Resolver Server': 'Navne-server', - rrtypeDescription: 'Vælg den type RR, du vil overvåge.', - 'Last Result': 'Seneste resultat', - pauseMonitorMsg: 'Er du sikker på, at du vil standse Overvågeren?', - 'Create your admin account': 'Opret din administratorkonto', - 'Repeat Password': 'Gentag adgangskoden', - 'Resource Record Type': 'Resource Record Type', - respTime: 'Resp. Tid (ms)', - notAvailableShort: 'N/A', - Create: 'Opret', - clearEventsMsg: 'Er du sikker på vil slette alle events for denne Overvåger?', - clearHeartbeatsMsg: 'Er du sikker på vil slette alle hjerteslag for denne Overvåger?', - confirmClearStatisticsMsg: 'Vil du helt sikkert slette ALLE statistikker?', - 'Clear Data': 'Ryd Data', - Events: 'Events', - Heartbeats: 'Hjerteslag', - 'Auto Get': 'Auto-hent', - enableDefaultNotificationDescription: 'For hver ny overvåger aktiveres denne underretning som standard. Du kan stadig deaktivere underretningen separat for hver skærm.', - 'Default enabled': 'Standard aktiveret', - 'Also apply to existing monitors': 'Anvend også på eksisterende overvågere', - Export: 'Eksport', - Import: 'Import', - backupDescription: 'Du kan sikkerhedskopiere alle Overvågere og alle underretninger til en JSON-fil.', - backupDescription2: 'PS: Historik og hændelsesdata er ikke inkluderet.', - backupDescription3: 'Følsom data, f.eks. underretnings-tokener, er inkluderet i eksportfilen. Gem den sikkert.', - alertNoFile: 'Vælg en fil der skal importeres.', - alertWrongFileType: 'Vælg venligst en JSON-fil.', - twoFAVerifyLabel: 'Indtast venligst dit token for at bekræfte, at 2FA fungerer', - tokenValidSettingsMsg: 'Token er gyldigt! Du kan nu gemme 2FA -indstillingerne.', - confirmEnableTwoFAMsg: 'Er du sikker på at du vil aktivere 2FA?', - confirmDisableTwoFAMsg: 'Er du sikker på at du vil deaktivere 2FA?', - 'Apply on all existing monitors': 'Anvend på alle eksisterende overvågere', - 'Verify Token': 'Verificere Token', - 'Setup 2FA': 'Opsæt 2FA', - 'Enable 2FA': 'Aktiver 2FA', - 'Disable 2FA': 'Deaktiver 2FA', - '2FA Settings': '2FA Indstillinger', - 'Two Factor Authentication': 'To-Faktor Autentificering', - Active: 'Aktive', - Inactive: 'Inaktive', - Token: 'Token', - 'Show URI': 'Vis URI', - 'Clear all statistics': 'Ryd alle Statistikker', - retryCheckEverySecond: 'Prøv igen hvert {0} sekund.', - importHandleDescription: "Vælg 'Spring over eksisterende', hvis du vil springe over hver overvåger eller underretning med samme navn. 'Overskriv' sletter alle eksisterende overvågere og underretninger.", - confirmImportMsg: 'Er du sikker på at importere sikkerhedskopien? Sørg for, at du har valgt den rigtige importindstilling.', - 'Heartbeat Retry Interval': 'Hjerteslag Gentagelsesinterval', - 'Import Backup': 'Importer Backup', - 'Export Backup': 'Eksporter Backup', - 'Skip existing': 'Spring over eksisterende', - Overwrite: 'Overskriv', - Options: 'Valgmuligheder', - 'Keep both': 'Behold begge', - Tags: 'Etiketter', - 'Add New below or Select...': 'Tilføj Nyt nedenfor eller Vælg ...', - 'Tag with this name already exist.': 'Et Tag med dette navn findes allerede.', - 'Tag with this value already exist.': 'Et Tag med denne værdi findes allerede.', - color: 'farve', - 'value (optional)': 'værdi (valgfri)', - Gray: 'Grå', - Red: 'Rød', - Orange: 'Orange', - Green: 'Grøn', - Blue: 'Blå', - Indigo: 'Indigo', - Purple: 'Lilla', - Pink: 'Pink', - 'Search...': 'Søg...', - 'Avg. Ping': 'Gns. Ping', - 'Avg. Response': 'Gns. Respons', - 'Entry Page': 'Entry Side', - statusPageNothing: 'Intet her, tilføj venligst en Gruppe eller en Overvåger.', - 'No Services': 'Ingen Tjenester', - 'All Systems Operational': 'Alle Systemer i Drift', - 'Partially Degraded Service': 'Delvist Forringet Service', - 'Degraded Service': 'Forringet Service', - 'Add Group': 'Tilføj Gruppe', - 'Add a monitor': 'Tilføj en Overvåger', - 'Edit Status Page': 'Rediger Statusside', - 'Go to Dashboard': 'Gå til Betjeningspanel', - 'Status Page': 'Statusside', - telegram: 'Telegram', - webhook: 'Webhook', - smtp: 'Email (SMTP)', - discord: 'Discord', - teams: 'Microsoft Teams', - signal: 'Signal', - gotify: 'Gotify', - slack: 'Slack', - 'rocket.chat': 'Rocket.chat', - pushover: 'Pushover', - pushy: 'Pushy', - octopush: 'Octopush', - promosms: 'PromoSMS', - lunasea: 'LunaSea', - apprise: 'Apprise (Understøtter 50+ Notifikationstjenester)', - pushbullet: 'Pushbullet', - line: 'Line Messenger', - mattermost: 'Mattermost', - 'Primary Base URL': 'Primær Basis-URL', - 'Push URL': 'Push URL', - needPushEvery: 'Du bør kalde denne webadresse hvert {0} sekund.', - pushOptionalParams: 'Valgfrie parametre: {0}', - defaultNotificationName: 'Min {notification} Advarsel ({number})', - here: 'her', - Required: 'Påkrævet', - 'Bot Token': 'Bot Token', - wayToGetTelegramToken: 'Du kan få et token fra {0}.', - 'Chat ID': 'Chat ID', - supportTelegramChatID: "Support Direct Chat / Group / Channel's Chat ID", - wayToGetTelegramChatID: "Du kan få dit chat-ID ved at sende en besked til bot'en og gå til denne URL for at se chat_id'et:", - 'YOUR BOT TOKEN HERE': 'DIT BOT TOKEN HER', - chatIDNotFound: 'Chat-ID blev ikke fundet; send venligst en besked til denne bot først ', - 'Post URL': 'Post URL', - 'Content Type': 'Indholdstype', - webhookJsonDesc: '{0} er god til alle moderne HTTP-servere som f.eks Express.js', - webhookFormDataDesc: "{multipart} er god til PHP. JSON'en skal parses med {decodeFunction}", - secureOptionNone: 'Ingen / STARTTLS (25, 587)', - secureOptionTLS: 'TLS (465)', - 'Ignore TLS Error': 'Ignorer TLS-fejl', - 'From Email': 'Afsender Email', - emailCustomSubject: 'Brugerdefineret Emne', - 'To Email': 'Modtager Email', - smtpCC: 'CC', - smtpBCC: 'BCC', - 'Discord Webhook URL': 'Discord Webhook URL', - wayToGetDiscordURL: 'Du kan få dette ved at gå til Serverindstillinger -> Integrationer -> Opret webhook ', - 'Bot Display Name': 'Bot Visningsnavn', - 'Prefix Custom Message': 'Præfiks Brugerdefineret Besked', - 'Hello @everyone is...': "Hello {'@'}everyone is...", - 'Webhook URL': 'Webhook URL', - wayToGetTeamsURL: 'Du kan lære, hvordan du laver en webhook URL {0}.', - Number: 'Nummer', - Recipients: 'Modtagere', - needSignalAPI: 'Du skal have en Signal-klient med REST API.', - wayToCheckSignalURL: 'Du kan tjekke denne URL for at se, hvordan du konfigurerer en:', - signalImportant: 'VIGTIGT: Du kan ikke blande grupper og numre i modtagere!', - 'Application Token': 'Program Token', - 'Server URL': 'Server URL', - Priority: 'Prioritet', - 'Icon Emoji': 'Icon Emoji', - 'Channel Name': 'Kanalnavn', - 'Uptime Kuma URL': 'Uptime Kuma URL', - aboutWebhooks: 'Mere info om Webhooks på: {0}', - aboutChannelName: 'Indtast kanalnavnet i {0} Kanalnavn feltet, hvis du vil omgå Webhook-kanalen. Eks: #anden-kanal', - aboutKumaURL: 'Hvis du efterlader Uptime Kuma URL-feltet tomt, vil det som standard gå til projektets GitHub-siden.', - emojiCheatSheet: 'Emoji cheat sheet: {0}', - clicksendsms: 'ClickSend SMS', - 'User Key': 'Bruger-Nøgle', - Device: 'Enhed', - 'Message Title': 'Besked Titel', - 'Notification Sound': 'Notifikationslyd', - 'More info on:': 'Mere info på: {0}', - pushoverDesc1: 'Nødprioritet (2) har som standard 30 sekunders timeout mellem genforsøg og udløber efter 1 time.', - pushoverDesc2: 'Hvis du vil sende meddelelser til forskellige enheder, skal du udfylde feltet Enhed.', - 'SMS Type': 'SMS Type', - octopushTypePremium: 'Premium (Hurtig - anbefales til advarsel)', - octopushTypeLowCost: 'Lavpris (Langsom - nogle gange blokeret af operatøren)', - checkPrice: 'Tjek {0} priser:', - apiCredentials: 'API legitimationsoplysninger', - octopushLegacyHint: 'Bruger du den ældre version af Octopush (2011-2020) eller den nye version?', - 'Check octopush prices': 'Tjek octopush priser {0}.', - octopushPhoneNumber: 'Telefonnummer (intl format, f.eks : +4512345678) ', - octopushSMSSender: 'SMS Afsender Navn : 3-11 alfanumeriske tegn og mellemrum (a-zA-Z0-9)', - 'LunaSea Device ID': 'LunaSea Enhed-ID', - 'Apprise URL': 'Apprise URL', - 'Example:': 'Eksempel: {0}', - 'Read more:': 'Læs mere: {0}', - 'Status:': 'Status: {0}', - 'Read more': 'Læs mere', - appriseInstalled: 'Apprise er installeret.', - appriseNotInstalled: 'Apprise er ikke installeret. {0}', - 'Access Token': 'Access Token', - 'Channel access token': 'kanaladgangstoken', - 'Line Developers Console': 'Line Udviklerkonsol', - lineDevConsoleTo: 'Line Udviklerkonsol - {0}', - 'Basic Settings': 'Basisindstillinger', - 'User ID': 'Bruger-ID', - 'Messaging API': 'Messaging API', - wayToGetLineChannelToken: "Tilgå først {0}, opret en udbyder og kanal (Messaging API), så kan du få kanaladgangstoken'et og bruger-ID'et fra de ovennævnte menupunkter.", - 'Icon URL': 'Ikon URL', - aboutIconURL: 'Du kan angive et link til et billede i "Ikon URL" for at tilsidesætte standardprofilbilledet. Vil ikke blive brugt, hvis Ikon Emoji er angivet.', - aboutMattermostChannelName: `Du kan tilsidesætte standardkanalen, som Webhoo'en sender til ved at indtaste kanalnavnet i feltet "Kanalnavn". Dette skal aktiveres i Mattermost Webhook-indstillingerne. Eks: #anden-kanal`, - matrix: 'Matrix', - promosmsTypeEco: 'SMS ECO - billig, men langsom og ofte overbelastet. Begrænset kun til polske modtagere.', - promosmsTypeFlash: 'SMS FLASH - Beskeden vises automatisk på modtagerenheden. Begrænset kun til polske modtagere.', - promosmsTypeFull: 'SMS FULL - Premium-niveau af SMS, Du kan bruge dit "Sender Name" (Du skal først registrere navn). Pålidelig til advarsler.', - promosmsTypeSpeed: 'SMS SPEED - Højeste prioritet i systemet. Meget hurtig og pålidelig, men dyr (ca. to gange af SMS FULL pris).', - promosmsPhoneNumber: 'Telefonnummer (polske numre behøver ikke angive områdenumre)', - promosmsSMSSender: 'SMS Sender Name : Forudregistreret navn eller en af standarderne: InfoSMS, SMS Info, MaxSMS, INFO, SMS', - 'Feishu WebHookUrl': 'Feishu WebHookURL', - matrixHomeserverURL: 'Hjemmeserver-URL (med http(s):// og eventuel port)', - 'Internal Room Id': 'Intern Rum-ID', - matrixDesc1: 'Du kan finde det interne rum-ID ved at se i det avancerede afsnit af rumindstillingerne i din Matrix-klient. Det skulle ligne !QMdRCpUIfLwsfjxye6:home.server.', - matrixDesc2: 'Det anbefales stærkt, at du opretter en ny bruger og ikke bruger din egen Matrix-brugers adgangstoken, da det giver fuld adgang til din konto og alle de rum, du har tilsluttet dig. I stedet skal du oprette en ny bruger og kun invitere den til det rum, du vil modtage meddelelsen i. Du kan få adgangstokenet ved at køre {0}', - Method: 'Metode', - Body: 'Body', - Headers: 'Headers', - PushUrl: 'Push URL', - HeadersInvalidFormat: '"request headers"-erne er ikke gyldige JSON: ', - BodyInvalidFormat: '"request body"-en er ikke gyldige JSON: ', - 'Monitor History': 'Overvåger Historik', - clearDataOlderThan: 'Gem overvågningshistorikdata i {0} dage.', - PasswordsDoNotMatch: 'Adgangskoderne stemmer ikke overens.', - records: 'forekomster', - 'One record': 'Én forekomst', - steamApiKeyDescription: 'For at overvåge en Steam Game Server skal du bruge en Steam Web-API nøgle. Du kan registrere din API-nøgle her: ', - 'Current User': 'Nuværende Bruger', - recent: 'Seneste', - Done: 'Færdig', - Info: 'Info', - Security: 'Sikkerhed', - 'Steam API Key': 'Steam API-nøgle', - 'Shrink Database': 'Krymp Database', - 'Pick a RR-Type...': 'Vælg en RR-Type...', - 'Pick Accepted Status Codes...': 'Vælg Accepterede Statuskoder...', - Default: 'Standard', - 'HTTP Options': 'HTTP Valgmuligheder', - 'Create Incident': 'Opret Annoncering', - Title: 'Titel', - Content: 'Indhold', - Style: 'Type', - info: 'info', - warning: 'advarsel', - danger: 'fare', - primary: 'primær', - light: 'lys', - dark: 'mørk', - Post: 'Udgiv', - 'Please input title and content': 'Indtast venligst titel og indhold', - Created: 'Oprettet', - 'Last Updated': 'Sidst Opdateret', - Unpin: 'Frigør', - 'Switch to Light Theme': 'Skift til Lys Tema', - 'Switch to Dark Theme': 'Skift til Mørkt Tema', - 'Show Tags': 'Vis Etiketter', - 'Hide Tags': 'Skjul Etiketter', - Description: 'Beskrivelse', - 'No monitors available.': 'No monitors available.', - 'Add one': 'Tilføj en', - 'No Monitors': 'Ingen Overvågere', - 'Untitled Group': 'Unavngivet Gruppe', - Services: 'Tjenester', - Discard: 'Kassér', - Cancel: 'Annullér', - 'Powered by': 'Drevet af', - shrinkDatabaseDescription: 'Udfør database VACUUM for SQLite. Hvis din database er oprettet efter 1.10.0, er AUTO_VACUUM allerede aktiveret, og denne handling er ikke nødvendig.', - serwersms: 'SerwerSMS.pl', - serwersmsAPIUser: 'API Brugernavn (inkl. webapi_ prefix)', - serwersmsAPIPassword: 'API Adgangskode', - serwersmsPhoneNumber: 'Telefonnummer', - serwersmsSenderName: 'SMS Afsender Navn (registreret via kundeportal)', - stackfield: 'Stackfield' -} \ No newline at end of file + languageName: "Danish (Danmark)", + Settings: "Indstillinger", + Dashboard: "Betjeningspanel", + "New Update": "Opdatering tilgængelig", + Language: "Sprog", + Appearance: "Udseende", + Theme: "Tema", + General: "Generelt", + Version: "Version", + "Check Update On GitHub": "Tjek efter opdateringer på Github", + List: "Liste", + Add: "Tilføj", + "Add New Monitor": "Tilføj ny Overvåger", + "Quick Stats": "Oversigt", + Up: "Aktiv", + Down: "Inaktiv", + Pending: "Afventer", + Unknown: "Ukendt", + Pause: "Stands", + pauseDashboardHome: "Standset", + Name: "Navn", + Status: "Status", + DateTime: "Dato / Tid", + Message: "Beskeder", + "No important events": "Inden vigtige begivenheder", + Resume: "Fortsæt", + Edit: "Rediger", + Delete: "Slet", + Current: "Aktuelt", + Uptime: "Oppetid", + "Cert Exp.": "Certifikatets udløb", + days: "Dage", + day: "Dag", + "-day": "-Dage", + hour: "Timer", + "-hour": "-Timer", + checkEverySecond: "Tjek hvert {0} sekund", + Response: "Respons", + Ping: "Ping", + "Monitor Type": "Overvåger Type", + Keyword: "Nøgleord", + "Friendly Name": "Visningsnavn", + URL: "URL", + Hostname: "Hostname", + Port: "Port", + "Heartbeat Interval": "Taktinterval", + Retries: "Gentagelser", + retriesDescription: "Maksimalt antal gentagelser, før tjenesten markeres som inaktiv og sender en meddelelse.", + Advanced: "Avanceret", + ignoreTLSError: "Ignorere TLS/SSL web fejl", + "Upside Down Mode": "Omvendt tilstand", + upsideDownModeDescription: "Håndter tilstanden omvendt. Hvis tjenesten er tilgængelig, vises den som inaktiv.", + "Max. Redirects": "Maks. Omdirigeringer", + maxRedirectDescription: "Maksimalt antal omdirigeringer, der skal følges. Indstil til 0 for at deaktivere omdirigeringer.", + "Accepted Status Codes": "Tilladte HTTP-Statuskoder", + acceptedStatusCodesDescription: "Vælg de statuskoder, der stadig skal vurderes som vellykkede.", + Save: "Gem", + Notifications: "Underretninger", + "Not available, please setup.": "Ikke tilgængelige, opsæt venligst.", + "Setup Notification": "Opsæt underretninger", + Light: "Lys", + Dark: "Mørk", + Auto: "Auto", + "Theme - Heartbeat Bar": "Tema - Tidslinje", + Normal: "Normal", + Bottom: "Bunden", + None: "Ingen", + Timezone: "Tidszone", + "Search Engine Visibility": "Søgemaskine synlighed", + "Allow indexing": "Tillad indeksering", + "Discourage search engines from indexing site": "Frabed søgemaskiner at indeksere webstedet", + "Change Password": "Ændre adgangskode", + "Current Password": "Nuværende adgangskode", + "New Password": "Ny adgangskode", + "Repeat New Password": "Gentag den nye adgangskode", + passwordNotMatchMsg: "Adgangskoderne er ikke ens.", + "Update Password": "Opdater adgangskode", + "Disable Auth": "Deaktiver autentificering", + "Enable Auth": "Aktiver autentificering", + Logout: "Log ud", + notificationDescription: "Tildel underretninger til Overvåger(e), så denne funktion træder i kraft.", + Leave: "Verlassen", + "I understand, please disable": "Jeg er indforstået, deaktiver venligst", + Confirm: "Bekræft", + Yes: "Ja", + No: "Nej", + Username: "Brugernavn", + Password: "Adgangskode", + "Remember me": "Husk mig", + Login: "Log ind", + "No Monitors, please": "Ingen Overvågere", + "add one": "tilføj en", + "Notification Type": "Underretningstype", + Email: "E-Mail", + Test: "Test", + "Certificate Info": "Certifikatoplysninger", + keywordDescription: "Søg efter et søgeord i almindelig HTML- eller JSON -output. Bemærk, at der skelnes mellem store og små bogstaver.", + deleteMonitorMsg: "Er du sikker på, at du vil slette overvågeren?", + deleteNotificationMsg: "Er du sikker på, at du vil slette denne underretning for alle overvågere? ", + resoverserverDescription: "Cloudflare er standardserveren, den kan til enhver tid ændres.", + "Resolver Server": "Navne-server", + rrtypeDescription: "Vælg den type RR, du vil overvåge.", + "Last Result": "Seneste resultat", + pauseMonitorMsg: "Er du sikker på, at du vil standse Overvågeren?", + "Create your admin account": "Opret din administratorkonto", + "Repeat Password": "Gentag adgangskoden", + "Resource Record Type": "Resource Record Type", + respTime: "Resp. Tid (ms)", + notAvailableShort: "N/A", + Create: "Opret", + clearEventsMsg: "Er du sikker på vil slette alle events for denne Overvåger?", + clearHeartbeatsMsg: "Er du sikker på vil slette alle hjerteslag for denne Overvåger?", + confirmClearStatisticsMsg: "Vil du helt sikkert slette ALLE statistikker?", + "Clear Data": "Ryd Data", + Events: "Events", + Heartbeats: "Hjerteslag", + "Auto Get": "Auto-hent", + enableDefaultNotificationDescription: "For hver ny overvåger aktiveres denne underretning som standard. Du kan stadig deaktivere underretningen separat for hver skærm.", + "Default enabled": "Standard aktiveret", + "Also apply to existing monitors": "Anvend også på eksisterende overvågere", + Export: "Eksport", + Import: "Import", + backupDescription: "Du kan sikkerhedskopiere alle Overvågere og alle underretninger til en JSON-fil.", + backupDescription2: "PS: Historik og hændelsesdata er ikke inkluderet.", + backupDescription3: "Følsom data, f.eks. underretnings-tokener, er inkluderet i eksportfilen. Gem den sikkert.", + alertNoFile: "Vælg en fil der skal importeres.", + alertWrongFileType: "Vælg venligst en JSON-fil.", + twoFAVerifyLabel: "Indtast venligst dit token for at bekræfte, at 2FA fungerer", + tokenValidSettingsMsg: "Token er gyldigt! Du kan nu gemme 2FA -indstillingerne.", + confirmEnableTwoFAMsg: "Er du sikker på at du vil aktivere 2FA?", + confirmDisableTwoFAMsg: "Er du sikker på at du vil deaktivere 2FA?", + "Apply on all existing monitors": "Anvend på alle eksisterende overvågere", + "Verify Token": "Verificere Token", + "Setup 2FA": "Opsæt 2FA", + "Enable 2FA": "Aktiver 2FA", + "Disable 2FA": "Deaktiver 2FA", + "2FA Settings": "2FA Indstillinger", + "Two Factor Authentication": "To-Faktor Autentificering", + Active: "Aktive", + Inactive: "Inaktive", + Token: "Token", + "Show URI": "Vis URI", + "Clear all statistics": "Ryd alle Statistikker", + retryCheckEverySecond: "Prøv igen hvert {0} sekund.", + importHandleDescription: "Vælg 'Spring over eksisterende', hvis du vil springe over hver overvåger eller underretning med samme navn. 'Overskriv' sletter alle eksisterende overvågere og underretninger.", + confirmImportMsg: "Er du sikker på at importere sikkerhedskopien? Sørg for, at du har valgt den rigtige importindstilling.", + "Heartbeat Retry Interval": "Hjerteslag Gentagelsesinterval", + "Import Backup": "Importer Backup", + "Export Backup": "Eksporter Backup", + "Skip existing": "Spring over eksisterende", + Overwrite: "Overskriv", + Options: "Valgmuligheder", + "Keep both": "Behold begge", + Tags: "Etiketter", + "Add New below or Select...": "Tilføj Nyt nedenfor eller Vælg ...", + "Tag with this name already exist.": "Et Tag med dette navn findes allerede.", + "Tag with this value already exist.": "Et Tag med denne værdi findes allerede.", + color: "farve", + "value (optional)": "værdi (valgfri)", + Gray: "Grå", + Red: "Rød", + Orange: "Orange", + Green: "Grøn", + Blue: "Blå", + Indigo: "Indigo", + Purple: "Lilla", + Pink: "Pink", + "Search...": "Søg...", + "Avg. Ping": "Gns. Ping", + "Avg. Response": "Gns. Respons", + "Entry Page": "Entry Side", + statusPageNothing: "Intet her, tilføj venligst en Gruppe eller en Overvåger.", + "No Services": "Ingen Tjenester", + "All Systems Operational": "Alle Systemer i Drift", + "Partially Degraded Service": "Delvist Forringet Service", + "Degraded Service": "Forringet Service", + "Add Group": "Tilføj Gruppe", + "Add a monitor": "Tilføj en Overvåger", + "Edit Status Page": "Rediger Statusside", + "Go to Dashboard": "Gå til Betjeningspanel", + "Status Page": "Statusside", + telegram: "Telegram", + webhook: "Webhook", + smtp: "Email (SMTP)", + discord: "Discord", + teams: "Microsoft Teams", + signal: "Signal", + gotify: "Gotify", + slack: "Slack", + "rocket.chat": "Rocket.chat", + pushover: "Pushover", + pushy: "Pushy", + octopush: "Octopush", + promosms: "PromoSMS", + lunasea: "LunaSea", + apprise: "Apprise (Understøtter 50+ Notifikationstjenester)", + pushbullet: "Pushbullet", + line: "Line Messenger", + mattermost: "Mattermost", + "Primary Base URL": "Primær Basis-URL", + "Push URL": "Push URL", + needPushEvery: "Du bør kalde denne webadresse hvert {0} sekund.", + pushOptionalParams: "Valgfrie parametre: {0}", + defaultNotificationName: "Min {notification} Advarsel ({number})", + here: "her", + Required: "Påkrævet", + "Bot Token": "Bot Token", + wayToGetTelegramToken: "Du kan få et token fra {0}.", + "Chat ID": "Chat ID", + supportTelegramChatID: "Support Direct Chat / Group / Channel's Chat ID", + wayToGetTelegramChatID: "Du kan få dit chat-ID ved at sende en besked til bot'en og gå til denne URL for at se chat_id'et:", + "YOUR BOT TOKEN HERE": "DIT BOT TOKEN HER", + chatIDNotFound: "Chat-ID blev ikke fundet; send venligst en besked til denne bot først ", + "Post URL": "Post URL", + "Content Type": "Indholdstype", + webhookJsonDesc: "{0} er god til alle moderne HTTP-servere som f.eks Express.js", + webhookFormDataDesc: "{multipart} er god til PHP. JSON'en skal parses med {decodeFunction}", + secureOptionNone: "Ingen / STARTTLS (25, 587)", + secureOptionTLS: "TLS (465)", + "Ignore TLS Error": "Ignorer TLS-fejl", + "From Email": "Afsender Email", + emailCustomSubject: "Brugerdefineret Emne", + "To Email": "Modtager Email", + smtpCC: "CC", + smtpBCC: "BCC", + "Discord Webhook URL": "Discord Webhook URL", + wayToGetDiscordURL: "Du kan få dette ved at gå til Serverindstillinger -> Integrationer -> Opret webhook ", + "Bot Display Name": "Bot Visningsnavn", + "Prefix Custom Message": "Præfiks Brugerdefineret Besked", + "Hello @everyone is...": "Hello {'@'}everyone is...", + "Webhook URL": "Webhook URL", + wayToGetTeamsURL: "Du kan lære, hvordan du laver en webhook URL {0}.", + Number: "Nummer", + Recipients: "Modtagere", + needSignalAPI: "Du skal have en Signal-klient med REST API.", + wayToCheckSignalURL: "Du kan tjekke denne URL for at se, hvordan du konfigurerer en:", + signalImportant: "VIGTIGT: Du kan ikke blande grupper og numre i modtagere!", + "Application Token": "Program Token", + "Server URL": "Server URL", + Priority: "Prioritet", + "Icon Emoji": "Icon Emoji", + "Channel Name": "Kanalnavn", + "Uptime Kuma URL": "Uptime Kuma URL", + aboutWebhooks: "Mere info om Webhooks på: {0}", + aboutChannelName: "Indtast kanalnavnet i {0} Kanalnavn feltet, hvis du vil omgå Webhook-kanalen. Eks: #anden-kanal", + aboutKumaURL: "Hvis du efterlader Uptime Kuma URL-feltet tomt, vil det som standard gå til projektets GitHub-siden.", + emojiCheatSheet: "Emoji cheat sheet: {0}", + clicksendsms: "ClickSend SMS", + "User Key": "Bruger-Nøgle", + Device: "Enhed", + "Message Title": "Besked Titel", + "Notification Sound": "Notifikationslyd", + "More info on:": "Mere info på: {0}", + pushoverDesc1: "Nødprioritet (2) har som standard 30 sekunders timeout mellem genforsøg og udløber efter 1 time.", + pushoverDesc2: "Hvis du vil sende meddelelser til forskellige enheder, skal du udfylde feltet Enhed.", + "SMS Type": "SMS Type", + octopushTypePremium: "Premium (Hurtig - anbefales til advarsel)", + octopushTypeLowCost: "Lavpris (Langsom - nogle gange blokeret af operatøren)", + checkPrice: "Tjek {0} priser:", + apiCredentials: "API legitimationsoplysninger", + octopushLegacyHint: "Bruger du den ældre version af Octopush (2011-2020) eller den nye version?", + "Check octopush prices": "Tjek octopush priser {0}.", + octopushPhoneNumber: "Telefonnummer (intl format, f.eks : +4512345678) ", + octopushSMSSender: "SMS Afsender Navn : 3-11 alfanumeriske tegn og mellemrum (a-zA-Z0-9)", + "LunaSea Device ID": "LunaSea Enhed-ID", + "Apprise URL": "Apprise URL", + "Example:": "Eksempel: {0}", + "Read more:": "Læs mere: {0}", + "Status:": "Status: {0}", + "Read more": "Læs mere", + appriseInstalled: "Apprise er installeret.", + appriseNotInstalled: "Apprise er ikke installeret. {0}", + "Access Token": "Access Token", + "Channel access token": "kanaladgangstoken", + "Line Developers Console": "Line Udviklerkonsol", + lineDevConsoleTo: "Line Udviklerkonsol - {0}", + "Basic Settings": "Basisindstillinger", + "User ID": "Bruger-ID", + "Messaging API": "Messaging API", + wayToGetLineChannelToken: "Tilgå først {0}, opret en udbyder og kanal (Messaging API), så kan du få kanaladgangstoken'et og bruger-ID'et fra de ovennævnte menupunkter.", + "Icon URL": "Ikon URL", + aboutIconURL: "Du kan angive et link til et billede i \"Ikon URL\" for at tilsidesætte standardprofilbilledet. Vil ikke blive brugt, hvis Ikon Emoji er angivet.", + aboutMattermostChannelName: "Du kan tilsidesætte standardkanalen, som Webhoo'en sender til ved at indtaste kanalnavnet i feltet \"Kanalnavn\". Dette skal aktiveres i Mattermost Webhook-indstillingerne. Eks: #anden-kanal", + matrix: "Matrix", + promosmsTypeEco: "SMS ECO - billig, men langsom og ofte overbelastet. Begrænset kun til polske modtagere.", + promosmsTypeFlash: "SMS FLASH - Beskeden vises automatisk på modtagerenheden. Begrænset kun til polske modtagere.", + promosmsTypeFull: "SMS FULL - Premium-niveau af SMS, Du kan bruge dit \"Sender Name\" (Du skal først registrere navn). Pålidelig til advarsler.", + promosmsTypeSpeed: "SMS SPEED - Højeste prioritet i systemet. Meget hurtig og pålidelig, men dyr (ca. to gange af SMS FULL pris).", + promosmsPhoneNumber: "Telefonnummer (polske numre behøver ikke angive områdenumre)", + promosmsSMSSender: "SMS Sender Name : Forudregistreret navn eller en af standarderne: InfoSMS, SMS Info, MaxSMS, INFO, SMS", + "Feishu WebHookUrl": "Feishu WebHookURL", + matrixHomeserverURL: "Hjemmeserver-URL (med http(s):// og eventuel port)", + "Internal Room Id": "Intern Rum-ID", + matrixDesc1: "Du kan finde det interne rum-ID ved at se i det avancerede afsnit af rumindstillingerne i din Matrix-klient. Det skulle ligne !QMdRCpUIfLwsfjxye6:home.server.", + matrixDesc2: "Det anbefales stærkt, at du opretter en ny bruger og ikke bruger din egen Matrix-brugers adgangstoken, da det giver fuld adgang til din konto og alle de rum, du har tilsluttet dig. I stedet skal du oprette en ny bruger og kun invitere den til det rum, du vil modtage meddelelsen i. Du kan få adgangstokenet ved at køre {0}", + Method: "Metode", + Body: "Body", + Headers: "Headers", + PushUrl: "Push URL", + HeadersInvalidFormat: "\"request headers\"-erne er ikke gyldige JSON: ", + BodyInvalidFormat: "\"request body\"-en er ikke gyldige JSON: ", + "Monitor History": "Overvåger Historik", + clearDataOlderThan: "Gem overvågningshistorikdata i {0} dage.", + PasswordsDoNotMatch: "Adgangskoderne stemmer ikke overens.", + records: "forekomster", + "One record": "Én forekomst", + steamApiKeyDescription: "For at overvåge en Steam Game Server skal du bruge en Steam Web-API nøgle. Du kan registrere din API-nøgle her: ", + "Current User": "Nuværende Bruger", + recent: "Seneste", + Done: "Færdig", + Info: "Info", + Security: "Sikkerhed", + "Steam API Key": "Steam API-nøgle", + "Shrink Database": "Krymp Database", + "Pick a RR-Type...": "Vælg en RR-Type...", + "Pick Accepted Status Codes...": "Vælg Accepterede Statuskoder...", + Default: "Standard", + "HTTP Options": "HTTP Valgmuligheder", + "Create Incident": "Opret Annoncering", + Title: "Titel", + Content: "Indhold", + Style: "Type", + info: "info", + warning: "advarsel", + danger: "fare", + primary: "primær", + light: "lys", + dark: "mørk", + Post: "Udgiv", + "Please input title and content": "Indtast venligst titel og indhold", + Created: "Oprettet", + "Last Updated": "Sidst Opdateret", + Unpin: "Frigør", + "Switch to Light Theme": "Skift til Lys Tema", + "Switch to Dark Theme": "Skift til Mørkt Tema", + "Show Tags": "Vis Etiketter", + "Hide Tags": "Skjul Etiketter", + Description: "Beskrivelse", + "No monitors available.": "No monitors available.", + "Add one": "Tilføj en", + "No Monitors": "Ingen Overvågere", + "Untitled Group": "Unavngivet Gruppe", + Services: "Tjenester", + Discard: "Kassér", + Cancel: "Annullér", + "Powered by": "Drevet af", + shrinkDatabaseDescription: "Udfør database VACUUM for SQLite. Hvis din database er oprettet efter 1.10.0, er AUTO_VACUUM allerede aktiveret, og denne handling er ikke nødvendig.", + serwersms: "SerwerSMS.pl", + serwersmsAPIUser: "API Brugernavn (inkl. webapi_ prefix)", + serwersmsAPIPassword: "API Adgangskode", + serwersmsPhoneNumber: "Telefonnummer", + serwersmsSenderName: "SMS Afsender Navn (registreret via kundeportal)", + stackfield: "Stackfield", +}; From 5ee5ea909df537ce1a9e63e9c29b36e90ef48ffd Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Sat, 11 Dec 2021 20:59:31 +0800 Subject: [PATCH 103/174] Add Github Action: close-incorrect-issue.yml --- .github/workflows/close-incorrect-issue.yml | 26 ++ extra/close-incorrect-issue.js | 57 ++++ package-lock.json | 348 +++++++++++++++++++- package.json | 1 + 4 files changed, 430 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/close-incorrect-issue.yml create mode 100644 extra/close-incorrect-issue.js diff --git a/.github/workflows/close-incorrect-issue.yml b/.github/workflows/close-incorrect-issue.yml new file mode 100644 index 00000000..026022df --- /dev/null +++ b/.github/workflows/close-incorrect-issue.yml @@ -0,0 +1,26 @@ + +name: Close Incorrect Issue + +on: + issues: + types: [opened] + +jobs: + close-incorrect-issue: + runs-on: ${{ matrix.os }} + + strategy: + matrix: + os: [ubuntu-latest] + node-version: [16.x] + + steps: + - uses: actions/checkout@v2 + + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v2 + with: + node-version: ${{ matrix.node-version }} + cache: 'npm' + - run: npm ci + - run: node extra/close-incorrect-issue.js ${{ secrets.GITHUB_TOKEN }} ${{ github.event.issue.number }} ${{ github.event.issue.user.login }} diff --git a/extra/close-incorrect-issue.js b/extra/close-incorrect-issue.js new file mode 100644 index 00000000..be4ed808 --- /dev/null +++ b/extra/close-incorrect-issue.js @@ -0,0 +1,57 @@ +const github = require("@actions/github"); + +(async () => { + try { + const token = process.argv[2]; + const issueNumber = process.argv[3]; + const username = process.argv[4]; + + const client = github.getOctokit(token).rest; + + const issue = { + owner: "louislam", + repo: "uptime-kuma", + number: issueNumber, + }; + + const labels = ( + await client.issues.listLabelsOnIssue({ + owner: issue.owner, + repo: issue.repo, + issue_number: issue.number + }) + ).data.map(({ name }) => name); + + if (labels.length === 0) { + console.log("Bad format here"); + + await client.issues.addLabels({ + owner: issue.owner, + repo: issue.repo, + issue_number: issue.number, + labels: ["invalid-format"] + }); + + // Add the issue closing comment + await client.issues.createComment({ + owner: issue.owner, + repo: issue.repo, + issue_number: issue.number, + body: `@${username}: Hello! :wave:\n\nThis issue is being automatically closed because it does not follow the issue template. Please DO NOT open a blank issue` + }); + + // Close the issue + await client.issues.update({ + owner: issue.owner, + repo: issue.repo, + issue_number: issue.number, + state: "closed" + }); + } else { + console.log("Pass!"); + } + } catch (e) { + console.log(e); + } + +})(); diff --git a/package-lock.json b/package-lock.json index 4790d60e..6b6c75cc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "uptime-kuma", - "version": "1.10.2", + "version": "1.11.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "uptime-kuma", - "version": "1.10.2", + "version": "1.11.1", "license": "MIT", "dependencies": { "@fortawesome/fontawesome-svg-core": "~1.2.36", @@ -64,6 +64,7 @@ "vuedraggable": "~4.1.0" }, "devDependencies": { + "@actions/github": "~5.0.0", "@babel/eslint-parser": "~7.15.8", "@babel/preset-env": "^7.15.8", "@types/bootstrap": "~5.1.6", @@ -89,6 +90,27 @@ "node": "14.* || >=16.*" } }, + "node_modules/@actions/github": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@actions/github/-/github-5.0.0.tgz", + "integrity": "sha512-QvE9eAAfEsS+yOOk0cylLBIO/d6WyWIOvsxxzdrPFaud39G6BOkUwScXZn1iBzQzHyu9SBkkLSWlohDWdsasAQ==", + "dev": true, + "dependencies": { + "@actions/http-client": "^1.0.11", + "@octokit/core": "^3.4.0", + "@octokit/plugin-paginate-rest": "^2.13.3", + "@octokit/plugin-rest-endpoint-methods": "^5.1.1" + } + }, + "node_modules/@actions/http-client": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-1.0.11.tgz", + "integrity": "sha512-VRYHGQV1rqnROJqdMvGUbY/Kn8vriQe/F9HR2AlYHzmKuM/p3kjNuXhmdBfcVgsvRWTz5C5XW5xvndZrVBuAYg==", + "dev": true, + "dependencies": { + "tunnel": "0.0.6" + } + }, "node_modules/@babel/code-frame": { "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", @@ -2716,6 +2738,135 @@ "node": ">=10" } }, + "node_modules/@octokit/auth-token": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz", + "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==", + "dev": true, + "dependencies": { + "@octokit/types": "^6.0.3" + } + }, + "node_modules/@octokit/core": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.5.1.tgz", + "integrity": "sha512-omncwpLVxMP+GLpLPgeGJBF6IWJFjXDS5flY5VbppePYX9XehevbDykRH9PdCdvqt9TS5AOTiDide7h0qrkHjw==", + "dev": true, + "dependencies": { + "@octokit/auth-token": "^2.4.4", + "@octokit/graphql": "^4.5.8", + "@octokit/request": "^5.6.0", + "@octokit/request-error": "^2.0.5", + "@octokit/types": "^6.0.3", + "before-after-hook": "^2.2.0", + "universal-user-agent": "^6.0.0" + } + }, + "node_modules/@octokit/endpoint": { + "version": "6.0.12", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz", + "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", + "dev": true, + "dependencies": { + "@octokit/types": "^6.0.3", + "is-plain-object": "^5.0.0", + "universal-user-agent": "^6.0.0" + } + }, + "node_modules/@octokit/endpoint/node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@octokit/graphql": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz", + "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==", + "dev": true, + "dependencies": { + "@octokit/request": "^5.6.0", + "@octokit/types": "^6.0.3", + "universal-user-agent": "^6.0.0" + } + }, + "node_modules/@octokit/openapi-types": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-11.2.0.tgz", + "integrity": "sha512-PBsVO+15KSlGmiI8QAzaqvsNlZlrDlyAJYcrXBCvVUxCp7VnXjkwPoFHgjEJXx3WF9BAwkA6nfCUA7i9sODzKA==", + "dev": true + }, + "node_modules/@octokit/plugin-paginate-rest": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.17.0.tgz", + "integrity": "sha512-tzMbrbnam2Mt4AhuyCHvpRkS0oZ5MvwwcQPYGtMv4tUa5kkzG58SVB0fcsLulOZQeRnOgdkZWkRUiyBlh0Bkyw==", + "dev": true, + "dependencies": { + "@octokit/types": "^6.34.0" + }, + "peerDependencies": { + "@octokit/core": ">=2" + } + }, + "node_modules/@octokit/plugin-rest-endpoint-methods": { + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.13.0.tgz", + "integrity": "sha512-uJjMTkN1KaOIgNtUPMtIXDOjx6dGYysdIFhgA52x4xSadQCz3b/zJexvITDVpANnfKPW/+E0xkOvLntqMYpviA==", + "dev": true, + "dependencies": { + "@octokit/types": "^6.34.0", + "deprecation": "^2.3.1" + }, + "peerDependencies": { + "@octokit/core": ">=3" + } + }, + "node_modules/@octokit/request": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.2.tgz", + "integrity": "sha512-je66CvSEVf0jCpRISxkUcCa0UkxmFs6eGDRSbfJtAVwbLH5ceqF+YEyC8lj8ystKyZTy8adWr0qmkY52EfOeLA==", + "dev": true, + "dependencies": { + "@octokit/endpoint": "^6.0.1", + "@octokit/request-error": "^2.1.0", + "@octokit/types": "^6.16.1", + "is-plain-object": "^5.0.0", + "node-fetch": "^2.6.1", + "universal-user-agent": "^6.0.0" + } + }, + "node_modules/@octokit/request-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", + "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", + "dev": true, + "dependencies": { + "@octokit/types": "^6.0.3", + "deprecation": "^2.0.0", + "once": "^1.4.0" + } + }, + "node_modules/@octokit/request/node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@octokit/types": { + "version": "6.34.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.34.0.tgz", + "integrity": "sha512-s1zLBjWhdEI2zwaoSgyOFoKSl109CUcVBCc7biPJ3aAf6LGLU6szDvi31JPU7bxfla2lqfhjbbg/5DdFNxOwHw==", + "dev": true, + "dependencies": { + "@octokit/openapi-types": "^11.2.0" + } + }, "node_modules/@popperjs/core": { "version": "2.10.2", "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.10.2.tgz", @@ -3932,6 +4083,12 @@ "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz", "integrity": "sha1-mrVie5PmBiH/fNrF2pczAn3x0Ms=" }, + "node_modules/before-after-hook": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.2.tgz", + "integrity": "sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ==", + "dev": true + }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -4838,6 +4995,12 @@ "node": ">= 0.6" } }, + "node_modules/deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", + "dev": true + }, "node_modules/destroy": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", @@ -13443,6 +13606,15 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" }, + "node_modules/tunnel": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", + "dev": true, + "engines": { + "node": ">=0.6.11 <=0.7.0 || >=0.7.3" + } + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -13664,6 +13836,12 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/universal-user-agent": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", + "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", + "dev": true + }, "node_modules/universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", @@ -14469,6 +14647,27 @@ } }, "dependencies": { + "@actions/github": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@actions/github/-/github-5.0.0.tgz", + "integrity": "sha512-QvE9eAAfEsS+yOOk0cylLBIO/d6WyWIOvsxxzdrPFaud39G6BOkUwScXZn1iBzQzHyu9SBkkLSWlohDWdsasAQ==", + "dev": true, + "requires": { + "@actions/http-client": "^1.0.11", + "@octokit/core": "^3.4.0", + "@octokit/plugin-paginate-rest": "^2.13.3", + "@octokit/plugin-rest-endpoint-methods": "^5.1.1" + } + }, + "@actions/http-client": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-1.0.11.tgz", + "integrity": "sha512-VRYHGQV1rqnROJqdMvGUbY/Kn8vriQe/F9HR2AlYHzmKuM/p3kjNuXhmdBfcVgsvRWTz5C5XW5xvndZrVBuAYg==", + "dev": true, + "requires": { + "tunnel": "0.0.6" + } + }, "@babel/code-frame": { "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", @@ -16350,6 +16549,127 @@ "rimraf": "^3.0.2" } }, + "@octokit/auth-token": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz", + "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==", + "dev": true, + "requires": { + "@octokit/types": "^6.0.3" + } + }, + "@octokit/core": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.5.1.tgz", + "integrity": "sha512-omncwpLVxMP+GLpLPgeGJBF6IWJFjXDS5flY5VbppePYX9XehevbDykRH9PdCdvqt9TS5AOTiDide7h0qrkHjw==", + "dev": true, + "requires": { + "@octokit/auth-token": "^2.4.4", + "@octokit/graphql": "^4.5.8", + "@octokit/request": "^5.6.0", + "@octokit/request-error": "^2.0.5", + "@octokit/types": "^6.0.3", + "before-after-hook": "^2.2.0", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/endpoint": { + "version": "6.0.12", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz", + "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", + "dev": true, + "requires": { + "@octokit/types": "^6.0.3", + "is-plain-object": "^5.0.0", + "universal-user-agent": "^6.0.0" + }, + "dependencies": { + "is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true + } + } + }, + "@octokit/graphql": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz", + "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==", + "dev": true, + "requires": { + "@octokit/request": "^5.6.0", + "@octokit/types": "^6.0.3", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/openapi-types": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-11.2.0.tgz", + "integrity": "sha512-PBsVO+15KSlGmiI8QAzaqvsNlZlrDlyAJYcrXBCvVUxCp7VnXjkwPoFHgjEJXx3WF9BAwkA6nfCUA7i9sODzKA==", + "dev": true + }, + "@octokit/plugin-paginate-rest": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.17.0.tgz", + "integrity": "sha512-tzMbrbnam2Mt4AhuyCHvpRkS0oZ5MvwwcQPYGtMv4tUa5kkzG58SVB0fcsLulOZQeRnOgdkZWkRUiyBlh0Bkyw==", + "dev": true, + "requires": { + "@octokit/types": "^6.34.0" + } + }, + "@octokit/plugin-rest-endpoint-methods": { + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.13.0.tgz", + "integrity": "sha512-uJjMTkN1KaOIgNtUPMtIXDOjx6dGYysdIFhgA52x4xSadQCz3b/zJexvITDVpANnfKPW/+E0xkOvLntqMYpviA==", + "dev": true, + "requires": { + "@octokit/types": "^6.34.0", + "deprecation": "^2.3.1" + } + }, + "@octokit/request": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.2.tgz", + "integrity": "sha512-je66CvSEVf0jCpRISxkUcCa0UkxmFs6eGDRSbfJtAVwbLH5ceqF+YEyC8lj8ystKyZTy8adWr0qmkY52EfOeLA==", + "dev": true, + "requires": { + "@octokit/endpoint": "^6.0.1", + "@octokit/request-error": "^2.1.0", + "@octokit/types": "^6.16.1", + "is-plain-object": "^5.0.0", + "node-fetch": "^2.6.1", + "universal-user-agent": "^6.0.0" + }, + "dependencies": { + "is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true + } + } + }, + "@octokit/request-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", + "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", + "dev": true, + "requires": { + "@octokit/types": "^6.0.3", + "deprecation": "^2.0.0", + "once": "^1.4.0" + } + }, + "@octokit/types": { + "version": "6.34.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.34.0.tgz", + "integrity": "sha512-s1zLBjWhdEI2zwaoSgyOFoKSl109CUcVBCc7biPJ3aAf6LGLU6szDvi31JPU7bxfla2lqfhjbbg/5DdFNxOwHw==", + "dev": true, + "requires": { + "@octokit/openapi-types": "^11.2.0" + } + }, "@popperjs/core": { "version": "2.10.2", "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.10.2.tgz", @@ -17379,6 +17699,12 @@ "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz", "integrity": "sha1-mrVie5PmBiH/fNrF2pczAn3x0Ms=" }, + "before-after-hook": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.2.tgz", + "integrity": "sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ==", + "dev": true + }, "binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -18090,6 +18416,12 @@ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" }, + "deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", + "dev": true + }, "destroy": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", @@ -24575,6 +24907,12 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" }, + "tunnel": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", + "dev": true + }, "type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -24728,6 +25066,12 @@ "@types/unist": "^2.0.2" } }, + "universal-user-agent": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", + "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", + "dev": true + }, "universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", diff --git a/package.json b/package.json index 79ed1c30..32c51176 100644 --- a/package.json +++ b/package.json @@ -109,6 +109,7 @@ "vuedraggable": "~4.1.0" }, "devDependencies": { + "@actions/github": "~5.0.0", "@babel/eslint-parser": "~7.15.8", "@babel/preset-env": "^7.15.8", "@types/bootstrap": "~5.1.6", From 8050cb8e99fed911f69b78b2d99994e2f180ef14 Mon Sep 17 00:00:00 2001 From: Philipp Bischoff Date: Sat, 11 Dec 2021 23:43:12 +0100 Subject: [PATCH 104/174] implement google chat notification type --- server/notification-providers/google-chat.js | 46 ++++++++++++++++++++ server/notification.js | 2 + src/components/notifications/GoogleChat.vue | 13 ++++++ src/components/notifications/index.js | 2 + 4 files changed, 63 insertions(+) create mode 100644 server/notification-providers/google-chat.js create mode 100644 src/components/notifications/GoogleChat.vue diff --git a/server/notification-providers/google-chat.js b/server/notification-providers/google-chat.js new file mode 100644 index 00000000..f73f4b5a --- /dev/null +++ b/server/notification-providers/google-chat.js @@ -0,0 +1,46 @@ +const NotificationProvider = require("./notification-provider"); +const axios = require("axios"); +const { setting } = require("../util-server"); +const { getMonitorRelativeURL } = require("../../src/util"); + +class GoogleChat extends NotificationProvider { + + name = "Google Chat"; + + async send(notification, msg, monitorJSON = null, heartbeatJSON = null) { + let okMsg = "Sent Successfully."; + try { + // Google Chat message formatting: https://developers.google.com/chat/api/guides/message-formats/basic + + let textMsg = '' + if (heartbeatJSON && heartbeatJSON.status === UP) { + textMsg = `✅ Application is back online`; + } else { + textMsg = `🔴 Application went down`; + } + + if (monitorJSON && monitorJSON.name) { + textMsg += `\n*${monitorJSON.name}*`; + } + + textMsg += `\n${msg}`; + + const baseURL = await setting("primaryBaseURL"); + if (baseURL) { + textMsg += `\n${baseURL + getMonitorRelativeURL(monitorJSON.id)}`; + } + + const data = { + "text": textMsg, + }; + + await axios.post(notification.googleChatWebhookURL, data); + return okMsg; + } catch (error) { + this.throwGeneralAxiosError(error); + } + + } +} + +module.exports = GoogleChat; diff --git a/server/notification.js b/server/notification.js index 3eb5f97b..56a7e84d 100644 --- a/server/notification.js +++ b/server/notification.js @@ -25,6 +25,7 @@ const DingDing = require("./notification-providers/dingding"); const Bark = require("./notification-providers/bark"); const SerwerSMS = require("./notification-providers/serwersms"); const Stackfield = require("./notification-providers/stackfield"); +const GoogleChat = require("./notification-providers/google-chat"); class Notification { @@ -62,6 +63,7 @@ class Notification { new Bark(), new SerwerSMS(), new Stackfield(), + new GoogleChat() ]; for (let item of list) { diff --git a/src/components/notifications/GoogleChat.vue b/src/components/notifications/GoogleChat.vue new file mode 100644 index 00000000..c19cae0d --- /dev/null +++ b/src/components/notifications/GoogleChat.vue @@ -0,0 +1,13 @@ + diff --git a/src/components/notifications/index.js b/src/components/notifications/index.js index 155a1ab2..67810610 100644 --- a/src/components/notifications/index.js +++ b/src/components/notifications/index.js @@ -24,6 +24,7 @@ import DingDing from "./DingDing.vue"; import Bark from "./Bark.vue"; import SerwerSMS from "./SerwerSMS.vue"; import Stackfield from './Stackfield.vue'; +import GoogleChat from './GoogleChat.vue'; /** * Manage all notification form. @@ -57,6 +58,7 @@ const NotificationFormList = { "Bark": Bark, "serwersms": SerwerSMS, "stackfield": Stackfield, + "Google Chat": GoogleChat } export default NotificationFormList From 83984668608fc9f3ff8e01f6c90fec4d8ecffff3 Mon Sep 17 00:00:00 2001 From: Philipp Bischoff Date: Sat, 11 Dec 2021 23:50:03 +0100 Subject: [PATCH 105/174] order notification types by name --- src/components/notifications/index.js | 40 +++++++++++++-------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/src/components/notifications/index.js b/src/components/notifications/index.js index 67810610..a7c967ed 100644 --- a/src/components/notifications/index.js +++ b/src/components/notifications/index.js @@ -32,33 +32,33 @@ import GoogleChat from './GoogleChat.vue'; * @type { Record } */ const NotificationFormList = { - "telegram": Telegram, - "webhook": Webhook, - "smtp": STMP, + "AliyunSMS": AliyunSMS, + "apprise": Apprise, + "Bark": Bark, + "clicksendsms": ClickSendSMS, + "DingDing": DingDing, "discord": Discord, - "teams": Teams, - "signal": Signal, + "smtp": STMP, + "Feishu": Feishu, + "Google Chat": GoogleChat, "gotify": Gotify, - "slack": Slack, - "rocket.chat": RocketChat, - "pushover": Pushover, - "pushy": Pushy, + "line": Line, + "lunasea": LunaSea, + "matrix": Matrix, + "mattermost": Mattermost, "octopush": Octopush, "promosms": PromoSMS, - "clicksendsms": ClickSendSMS, - "lunasea": LunaSea, - "Feishu": Feishu, - "AliyunSMS": AliyunSMS, - "apprise": Apprise, "pushbullet": Pushbullet, - "line": Line, - "mattermost": Mattermost, - "matrix": Matrix, - "DingDing": DingDing, - "Bark": Bark, + "pushover": Pushover, + "pushy": Pushy, + "rocket.chat": RocketChat, "serwersms": SerwerSMS, + "signal": Signal, + "slack": Slack, "stackfield": Stackfield, - "Google Chat": GoogleChat + "teams": Teams, + "telegram": Telegram, + "webhook": Webhook } export default NotificationFormList From a71569379ea9bbab2360ed0b129865124721ebf3 Mon Sep 17 00:00:00 2001 From: Philipp Bischoff Date: Sun, 12 Dec 2021 00:01:12 +0100 Subject: [PATCH 106/174] add missing import --- server/notification-providers/google-chat.js | 1 + 1 file changed, 1 insertion(+) diff --git a/server/notification-providers/google-chat.js b/server/notification-providers/google-chat.js index f73f4b5a..897dd691 100644 --- a/server/notification-providers/google-chat.js +++ b/server/notification-providers/google-chat.js @@ -2,6 +2,7 @@ const NotificationProvider = require("./notification-provider"); const axios = require("axios"); const { setting } = require("../util-server"); const { getMonitorRelativeURL } = require("../../src/util"); +const { UP } = require("../../src/util"); class GoogleChat extends NotificationProvider { From 8ad6bd31d40f67c58f542cfc8775765eed7cb47b Mon Sep 17 00:00:00 2001 From: Philipp Bischoff Date: Sun, 12 Dec 2021 00:08:33 +0100 Subject: [PATCH 107/174] Revert "order notification types by name" This reverts commit 83984668608fc9f3ff8e01f6c90fec4d8ecffff3. --- src/components/notifications/index.js | 40 +++++++++++++-------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/src/components/notifications/index.js b/src/components/notifications/index.js index a7c967ed..67810610 100644 --- a/src/components/notifications/index.js +++ b/src/components/notifications/index.js @@ -32,33 +32,33 @@ import GoogleChat from './GoogleChat.vue'; * @type { Record } */ const NotificationFormList = { - "AliyunSMS": AliyunSMS, - "apprise": Apprise, - "Bark": Bark, - "clicksendsms": ClickSendSMS, - "DingDing": DingDing, - "discord": Discord, + "telegram": Telegram, + "webhook": Webhook, "smtp": STMP, - "Feishu": Feishu, - "Google Chat": GoogleChat, + "discord": Discord, + "teams": Teams, + "signal": Signal, "gotify": Gotify, - "line": Line, - "lunasea": LunaSea, - "matrix": Matrix, - "mattermost": Mattermost, + "slack": Slack, + "rocket.chat": RocketChat, + "pushover": Pushover, + "pushy": Pushy, "octopush": Octopush, "promosms": PromoSMS, + "clicksendsms": ClickSendSMS, + "lunasea": LunaSea, + "Feishu": Feishu, + "AliyunSMS": AliyunSMS, + "apprise": Apprise, "pushbullet": Pushbullet, - "pushover": Pushover, - "pushy": Pushy, - "rocket.chat": RocketChat, + "line": Line, + "mattermost": Mattermost, + "matrix": Matrix, + "DingDing": DingDing, + "Bark": Bark, "serwersms": SerwerSMS, - "signal": Signal, - "slack": Slack, "stackfield": Stackfield, - "teams": Teams, - "telegram": Telegram, - "webhook": Webhook + "Google Chat": GoogleChat } export default NotificationFormList From 56dfa05642e4d84290ea8939609be0721e3fdf16 Mon Sep 17 00:00:00 2001 From: dhfhfk Date: Sun, 12 Dec 2021 18:56:10 +0900 Subject: [PATCH 108/174] Update Ko-KR.js --- src/languages/ko-KR.js | 84 +++++++++++++++++++++++++++++++++++++++--- 1 file changed, 78 insertions(+), 6 deletions(-) diff --git a/src/languages/ko-KR.js b/src/languages/ko-KR.js index ad7b4337..a9ff4b60 100644 --- a/src/languages/ko-KR.js +++ b/src/languages/ko-KR.js @@ -194,7 +194,7 @@ export default { "Post URL": "Post URL", "Content Type": "Content Type", webhookJsonDesc: "{0}은 express.js와 같은 최신 HTTP 서버에 적합해요.", - webhookFormDataDesc: "{multipart}은 PHP에 적합해요. {decodeFunction}를 기준으로 json을 디코딩하면 돼요.", + webhookFormDataDesc: "{multipart}은 PHP에 적합해요. {decodeFunction}를 기준으로 json을 디코딩하면 되어요.", smtp: "Email (SMTP)", secureOptionNone: "없음 / STARTTLS (25, 587)", secureOptionTLS: "TLS (465)", @@ -245,7 +245,7 @@ export default { "Message Title": "메시지 제목", "Notification Sound": "알림음", "More info on:": "자세한 정보: {0}", - pushoverDesc1: "긴급 우선 순위 (2)는 재시도 사이에 기본적으로 30초의 타임아웃이 있고, 1시간 후에 만료돼요.", + pushoverDesc1: "긴급 우선 순위 (2)는 재시도 사이에 기본적으로 30초의 타임아웃이 있고, 1시간 후에 만료되어요.", pushoverDesc2: "다른 장치에 알림을 보내려면 장치칸을 입력해주세요.", "SMS Type": "SMS 종류", octopushTypePremium: "프리미엄 (빠름) - 알림 기능에 적합해요)", @@ -270,13 +270,85 @@ export default { "Messaging API": "Messaging API 메뉴", wayToGetLineChannelToken: "먼저 {0}에 액세스하고, 공급자 및 채널 (Messaging API)을 만든 다음, 각 메뉴 밑에 언급된 메뉴에서 채널 액세스 토큰과 사용자 ID를 얻을 수 있어요.", "Icon URL": "아이콘 URL", - aboutIconURL: "\"Icon URL\"에 사진 링크를 입력해 프로필 사진을 설정할 수 있어요. 아이콘 이모지가 설정되어 있으면 적용되지 않을 거예요.", + aboutIconURL: "\"아이콘 URL\"에 사진 링크를 입력해 프로필 사진을 설정할 수 있어요. 아이콘 이모지가 설정되어 있으면 적용되지 않을 거예요.", aboutMattermostChannelName: "채널 이름을 입력하면 Webhook이 게시할 기본 채널을 재설정할 수 있어요. 이 설정은 Mattermost 웹훅 설정에서 활성화해야 해요. 예: #기타-채널", - matrix: "매트릭스", + matrix: "Matrix", promosmsTypeEco: "SMS ECO - 저렴하지만 느리고 가끔 과부하에 걸려요. 폴란드 수신자만 사용할 수 있어요. ", - promosmsTypeFlash: "SMS FLASH - 메시지가 받는 사람 장치에 자동으로 표시돼요. 폴란드 수신자만 사용할 수 있어요.", + promosmsTypeFlash: "SMS FLASH - 메시지가 받는 사람 장치에 자동으로 표시되어요. 폴란드 수신자만 사용할 수 있어요.", promosmsTypeFull: "SMS FULL - SMS 프리미엄 티어, 보내는 사람 이름을 먼저 등록해야 해요. 알림 기능에 적합해요.", promosmsTypeSpeed: "SMS SPEED - 시스템에서 가장 높은 우선순위예요. 매우 빠르고 신뢰할 수 있지만 비용이 많이 들어요 (SMS 전체 가격의 약 두 배).", - promosmsPhoneNumber: "전화 번호 (폴란드 수신자라면 지역번호를 적지 않아도 돼요.)", + promosmsPhoneNumber: "전화 번호 (폴란드 수신자라면 지역번호를 적지 않아도 되어요.)", promosmsSMSSender: "SMS 보내는 사람 이름 : 미리 등록된 이름 혹은 기본값 중 하나예요: InfoSMS, SMS Info, MaxSMS, INFO, SMS", + "Primary Base URL": "기본 URL", + "Push URL": "Push URL", + needPushEvery: "You should call this URL every {0} seconds.", + pushOptionalParams: "Optional parameters: {0}", + emailCustomSubject: "Custom Subject", + clicksendsms: "ClickSend SMS", + checkPrice: "{0} 가격 확인:", + apiCredentials: "API credentials", + octopushLegacyHint: "Octopush 레거시 버전 (2011-2020) 을 사용하시나요? 아니면 새 버전을 사용하시나요?", + "Feishu WebHookUrl": "Feishu WebHookURL", + matrixHomeserverURL: "Homeserver URL (with http(s):// and optionally port)", + "Internal Room Id": "내부 방 ID", + matrixDesc1: "Matrix 클라이언트 방 설정의 고급 섹션에서 내부 방 ID를 찾을 수 있어요. 내부 방 ID는 이렇게 생겼답니다: !QMdRCpUIfLwsfjxye6:home.server.", + matrixDesc2: "사용자의 모든 방에 대한 엑세스가 허용될 수 있어서 새로운 사용자를 만들고 원하는 방에만 초대한 후 엑세스 토큰을 사용하는 것이 좋아요. {0} 이 명령어를 통해 엑세스 토큰을 얻을 수 있어요.", + Method: "Method", + Body: "Body", + Headers: "Headers", + PushUrl: "Push URL", + HeadersInvalidFormat: "요청 Headers의 JSON 형식이 올바르지 않아요: ", + BodyInvalidFormat: "요청 Body의 JSON 형식이 올바르지 않아요: ", + "Monitor History": "모니터링 기록", + clearDataOlderThan: "모니터링 기록을 {0}일 동안 저장해요.", + PasswordsDoNotMatch: "비밀번호가 일치하지 않아요.", + records: "records", + "One record": "One record", + steamApiKeyDescription: "스팀 게임 서버를 모니터링하려면 Steam Web API 키가 필요해요. API 키는 하단 사이트에서 등록할 수 있어요: ", + "Current User": "현재 사용자", + recent: "최근", + Done: "완료", + Info: "정보", + Security: "보안", + "Steam API Key": "Steam API Key", + "Shrink Database": "데이터베이스 축소", + "Pick a RR-Type...": "RR-Type을 골라주세요...", + "Pick Accepted Status Codes...": "상태 코드를 골라주세요...", + Default: "기본", + "HTTP Options": "HTTP 옵션", + "Create Incident": "인시던트 만들기", + Title: "제목", + Content: "내용", + Style: "스타일", + info: "정보", + warning: "경고", + danger: "위험", + primary: "기본", + light: "라이트", + dark: "다크", + Post: "올리기", + "Please input title and content": "제목과 내용을 작성해주세요.", + Created: "생성 날짜", + "Last Updated": "마지막 업데이트", + Unpin: "제거", + "Switch to Light Theme": "라이트 테마로 전환", + "Switch to Dark Theme": "다크 테마로 전환", + "Show Tags": "태그 보이기", + "Hide Tags": "태그 숨기기", + Description: "설명", + "No monitors available.": "모니터링이 없어요.", + "Add one": "추가하기", + "No Monitors": "모니터링 없음", + "Untitled Group": "이름없는 그룹", + Services: "서비스", + Discard: "취소", + Cancel: "취소", + "Powered by": "Powered by", + shrinkDatabaseDescription: "SQLite 데이터베이스 VACUUM을 트리거해요. 만약 데이터베이스가 1.10.0 버전 이후에 생성되었다면 AUTO_VACUUM이 설정되어 있어 이 작업은 필요 없을 거에요.", + serwersms: "SerwerSMS.pl", + serwersmsAPIUser: "API Usename (webapi_ 접두사 포함)", + serwersmsAPIPassword: "API 비밀번호", + serwersmsPhoneNumber: "휴대전화 번호", + serwersmsSenderName: "보내는 사람 이름 (registered via customer portal)", + stackfield: "Stackfield", }; From aa92727a61e6df38ed0868a8f1d8e3df347d848a Mon Sep 17 00:00:00 2001 From: Ponkhy Date: Sun, 12 Dec 2021 21:52:51 +0100 Subject: [PATCH 109/174] Updated de-De --- src/languages/de-DE.js | 45 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/src/languages/de-DE.js b/src/languages/de-DE.js index e6b7710c..6c2dd1f1 100644 --- a/src/languages/de-DE.js +++ b/src/languages/de-DE.js @@ -304,4 +304,49 @@ export default { "One record": "Ein Eintrag", steamApiKeyDescription: "Um einen Steam Game Server zu überwachen, wird ein Steam Web-API-Schlüssel benötigt. Dieser kann hier registriert werden: ", "Current User": "Aktueller Benutzer", + recent: "Letzte", + Done: "Fertig", + Info: "Info", + Security: "Sicherheit", + "Steam API Key": "Steam API Key", + "Shrink Database": "Datenbank verkleinern", + "Pick a RR-Type...": "Wähle ein RR-Typ aus...", + "Pick Accepted Status Codes...": "Wähle akzeptierte Statuscodes aus...", + Default: "Standard", + "HTTP Options": "HTTP Optionen", + "Create Incident": "Vorfall erstellen", + Title: "Titel", + Content: "Inhalt", + Style: "Stil", + info: "info", + warning: "warnung", + danger: "gefahr", + primary: "primär", + light: "hell", + dark: "dunkel", + Post: "Eintrag", + "Please input title and content": "Bitte Titel und Inhalt eingeben", + Created: "Erstellt", + "Last Updated": "Zuletzt aktualisiert", + Unpin: "Loslösen", + "Switch to Light Theme": "Zu hellem Thema wechseln", + "Switch to Dark Theme": "Zum dunklen Thema wechseln", + "Show Tags": "Tags anzeigen", + "Hide Tags": "Tags ausblenden", + Description: "Beschreibung", + "No monitors available.": "Keine Monitore verfügbar.", + "Add one": "Füge eins hinzu", + "No Monitors": "Keine Monitore", + "Untitled Group": "Gruppe ohne Titel", + Services: "Dienste", + Discard: "Verwerfen", + Cancel: "Abbrechen", + "Powered by": "Powered by", + shrinkDatabaseDescription: "Löse VACUUM für die SQLite Datenbank aus. Wenn die Datenbank nach 1.10.0 erstellt wurde, ist AUTO_VACUUM bereits aktiviert und diese Aktion ist nicht erforderlich.", + serwersms: "SerwerSMS.pl", + serwersmsAPIUser: "API Benutzername (inkl. webapi_ prefix)", + serwersmsAPIPassword: "API Passwort", + serwersmsPhoneNumber: "Telefonnummer", + serwersmsSenderName: "Name des SMS-Absenders (über Kundenportal registriert)", + "stackfield": "Stackfield", }; From b10cecb362548cad285f60701544e9754e46e115 Mon Sep 17 00:00:00 2001 From: Erik Date: Tue, 14 Dec 2021 17:59:26 +0100 Subject: [PATCH 110/174] Added sl-SI language Added sl-SI language --- src/components/settings/Security.vue | 6 + src/i18n.js | 1 + src/languages/sl-SI.js | 355 +++++++++++++++++++++++++++ 3 files changed, 362 insertions(+) create mode 100644 src/languages/sl-SI.js diff --git a/src/components/settings/Security.vue b/src/components/settings/Security.vue index 4ef6b3d9..c94c3915 100644 --- a/src/components/settings/Security.vue +++ b/src/components/settings/Security.vue @@ -126,6 +126,12 @@

Bitte mit Vorsicht nutzen.

+ + From a6072a0e306d44c5a5094601e8d6661e31f50878 Mon Sep 17 00:00:00 2001 From: Philipp Bischoff Date: Wed, 15 Dec 2021 13:40:21 +0100 Subject: [PATCH 114/174] google chat: only show offline message in notification when service went down --- server/notification-providers/google-chat.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/server/notification-providers/google-chat.js b/server/notification-providers/google-chat.js index 897dd691..1610553c 100644 --- a/server/notification-providers/google-chat.js +++ b/server/notification-providers/google-chat.js @@ -2,7 +2,7 @@ const NotificationProvider = require("./notification-provider"); const axios = require("axios"); const { setting } = require("../util-server"); const { getMonitorRelativeURL } = require("../../src/util"); -const { UP } = require("../../src/util"); +const { DOWN, UP } = require("../../src/util"); class GoogleChat extends NotificationProvider { @@ -15,16 +15,16 @@ class GoogleChat extends NotificationProvider { let textMsg = '' if (heartbeatJSON && heartbeatJSON.status === UP) { - textMsg = `✅ Application is back online`; - } else { - textMsg = `🔴 Application went down`; + textMsg = `✅ Application is back online\n`; + } else if (heartbeatJSON && heartbeatJSON.status === DOWN) { + textMsg = `🔴 Application went down\n`; } if (monitorJSON && monitorJSON.name) { - textMsg += `\n*${monitorJSON.name}*`; + textMsg += `*${monitorJSON.name}*\n`; } - textMsg += `\n${msg}`; + textMsg += `${msg}`; const baseURL = await setting("primaryBaseURL"); if (baseURL) { From a42932a43efd66b347c9493c3ebbba7dff07aada Mon Sep 17 00:00:00 2001 From: Louis Lam Date: Thu, 16 Dec 2021 15:09:10 +0800 Subject: [PATCH 115/174] Simulate Chrome's request Accept header. Better handling of #1067 --- server/model/monitor.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/model/monitor.js b/server/model/monitor.js index 6aa614b7..c4441d63 100644 --- a/server/model/monitor.js +++ b/server/model/monitor.js @@ -168,7 +168,7 @@ class Monitor extends BeanModel { ...(this.body ? { data: JSON.parse(this.body) } : {}), timeout: this.interval * 1000 * 0.8, headers: { - "Accept": "*/*", + "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9", "User-Agent": "Uptime-Kuma/" + version, ...(this.headers ? JSON.parse(this.headers) : {}), ...(basicAuthHeader), From 0de7fb69f67d295fb28e43edbe540812c5a03b26 Mon Sep 17 00:00:00 2001 From: MrEddX <66828538+MrEddX@users.noreply.github.com> Date: Fri, 17 Dec 2021 12:29:53 +0200 Subject: [PATCH 116/174] Update bg-BG.js Added new fields. Translated new fields. --- src/languages/bg-BG.js | 43 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/src/languages/bg-BG.js b/src/languages/bg-BG.js index 3ae95b36..180b766d 100644 --- a/src/languages/bg-BG.js +++ b/src/languages/bg-BG.js @@ -308,4 +308,47 @@ export default { "Current User": "Текущ потребител", recent: "Скорошни", shrinkDatabaseDescription: "Инициира \"VACUUM\" за \"SQLite\" база данни. Ако Вашата база данни е създадена след версия 1.10.0, \"AUTO_VACUUM\" функцията е активна и това действие не нужно.", + Done: "Готово", + Info: "Информация", + Security: "Сигурност", + "Steam API Key": "Steam API ключ", + "Shrink Database": "Редуциране база данни", + "Pick a RR-Type...": "Изберете вида на ресурсния запис за мониторитане...", + "Pick Accepted Status Codes...": "Изберете статус кодове, които да се считат за успешен отговор...", + Default: "По подразбиране", + "HTTP Options": "HTTP Опции", + "Create Incident": "Създаване на инцидент", + Title: "Заглавие", + Content: "Съдържание", + Style: "Стил", + info: "информация", + warning: "предупреждение", + danger: "опасност", + primary: "основен", + light: "светъл", + dark: "тъмен", + Post: "Публикувай", + "Please input title and content": "Моля, въведете заглавие и съдържание", + Created: "Създаден", + "Last Updated": "Последно обновен", + Unpin: "Откачи", + "Switch to Light Theme": "Превключи към светла тема", + "Switch to Dark Theme": "Превключи към тъмна тема", + "Show Tags": "Покажи етикети", + "Hide Tags": "Скрий етикети", + Description: "Описание", + "No monitors available.": "Няма налични монитори.", + "Add one": "Добави един", + "No Monitors": "Няма монитори", + "Untitled Group": "Група без заглавие", + Services: "Услуги", + Discard: "Премахни", + Cancel: "Отмени", + "Powered by": "Създадено чрез", + serwersms: "SerwerSMS.pl", + serwersmsAPIUser: "API Потребителско име (вкл. webapi_ prefix)", + serwersmsAPIPassword: "API Парола", + serwersmsPhoneNumber: "Телефон номер", + serwersmsSenderName: "SMS Подател име (регистриран през клиентския портал)", + stackfield: "Stackfield", }; From 624cd862a5e38980cfce5b25b78acc0451ea45dc Mon Sep 17 00:00:00 2001 From: Nelson Chan Date: Sun, 19 Dec 2021 13:30:53 +0800 Subject: [PATCH 117/174] Feat: Expose SMTP DKIM settings --- server/notification-providers/smtp.js | 8 ++ src/assets/app.scss | 14 +++ src/components/ToggleSection.vue | 67 ++++++++++++ src/components/notifications/SMTP.vue | 147 ++++++++++++++++---------- src/icon.js | 2 + src/languages/en.js | 10 +- 6 files changed, 191 insertions(+), 57 deletions(-) create mode 100644 src/components/ToggleSection.vue diff --git a/server/notification-providers/smtp.js b/server/notification-providers/smtp.js index 14429bca..1be68aea 100644 --- a/server/notification-providers/smtp.js +++ b/server/notification-providers/smtp.js @@ -15,6 +15,14 @@ class SMTP extends NotificationProvider { tls: { rejectUnauthorized: notification.smtpIgnoreTLSError || false, }, + dkim: { + domainName: notification.smtpDkimDomain, + keySelector: notification.smtpDkimKeySelector, + privateKey: notification.smtpDkimPrivateKey, + hashAlgo: notification.smtpDkimHashAlgo, + headerFieldNames: notification.smtpDkimheaderFieldNames, + skipFields: notification.smtpDkimskipFields, + } }; // Should fix the issue in https://github.com/louislam/uptime-kuma/issues/26#issuecomment-896373904 diff --git a/src/assets/app.scss b/src/assets/app.scss index 5578946b..cec64467 100644 --- a/src/assets/app.scss +++ b/src/assets/app.scss @@ -313,6 +313,20 @@ textarea.form-control { opacity: 0; } +.slide-fade-up-enter-active { + transition: all 0.2s $easing-in; +} + +.slide-fade-up-leave-active { + transition: all 0.2s $easing-in; +} + +.slide-fade-up-enter-from, +.slide-fade-up-leave-to { + transform: translateY(-50px); + opacity: 0; +} + .monitor-list { &.scrollbar { min-height: calc(100vh - 240px); diff --git a/src/components/ToggleSection.vue b/src/components/ToggleSection.vue new file mode 100644 index 00000000..bc6028d7 --- /dev/null +++ b/src/components/ToggleSection.vue @@ -0,0 +1,67 @@ + + + + + diff --git a/src/components/notifications/SMTP.vue b/src/components/notifications/SMTP.vue index ab660abe..899f8f9b 100644 --- a/src/components/notifications/SMTP.vue +++ b/src/components/notifications/SMTP.vue @@ -1,82 +1,117 @@