From c4a2ce4e78cf90fc371a62c394f9523b5d62c102 Mon Sep 17 00:00:00 2001 From: Rolf Bachmann <1196109+rolfbachmann@users.noreply.github.com> Date: Tue, 19 Jul 2022 10:57:52 +0200 Subject: [PATCH 01/48] Add authentication support for ntfy --- server/notification-providers/ntfy.js | 11 +++++++++-- src/components/notifications/Ntfy.vue | 18 +++++++++++++++++- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/server/notification-providers/ntfy.js b/server/notification-providers/ntfy.js index 21f358f64..17d6d812a 100644 --- a/server/notification-providers/ntfy.js +++ b/server/notification-providers/ntfy.js @@ -8,12 +8,19 @@ class Ntfy extends NotificationProvider { async send(notification, msg, monitorJSON = null, heartbeatJSON = null) { let okMsg = "Sent Successfully."; try { - await axios.post(`${notification.ntfyserverurl}`, { + let headers = {}; + if (notification.ntfyusername.length > 0) { + headers = { + "Authorization": "Basic " + Buffer.from(notification.ntfyusername + ":" + notification.ntfypassword).toString("base64"), + }; + } + let data = { "topic": notification.ntfytopic, "message": msg, "priority": notification.ntfyPriority || 4, "title": "Uptime-Kuma", - }); + }; + await axios.post(`${notification.ntfyserverurl}`, data, { headers: headers }); return okMsg; diff --git a/src/components/notifications/Ntfy.vue b/src/components/notifications/Ntfy.vue index d9a83b499..a42dca302 100644 --- a/src/components/notifications/Ntfy.vue +++ b/src/components/notifications/Ntfy.vue @@ -11,7 +11,18 @@ - +
{{ $t("A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.") }}
+{{ $t('A list of Notification Services can be found in Home Assistant under "Developer Tools > Services" search for "notification" to find your device/phone name.') }}
{{ $t("Automations can optionally be triggered in Home Assistant:") }}
{{ $t("Trigger type:") }} Event
diff --git a/src/components/notifications/SMSManager.vue b/src/components/notifications/SMSManager.vue
index 25db624fc..1be952ae2 100644
--- a/src/components/notifications/SMSManager.vue
+++ b/src/components/notifications/SMSManager.vue
@@ -2,7 +2,7 @@
must be provided");
+}
+
+console.log("Base Lang: " + baseLangCode);
+console.log("Updating: " + langCode);
+
+copyFiles(langCode, baseLangCode);
+await updateLanguage(langCode, baseLangCode);
rmSync("./languages", { recursive: true });
+
console.log("Done. Fixing formatting by ESLint...");
diff --git a/package.json b/package.json
index d478a1d24..f5f78f3ac 100644
--- a/package.json
+++ b/package.json
@@ -51,8 +51,7 @@
"test-nodejs16": "docker build --progress plain -f test/ubuntu-nodejs16.dockerfile .",
"simple-dns-server": "node extra/simple-dns-server.js",
"simple-mqtt-server": "node extra/simple-mqtt-server.js",
- "update-language-files-with-base-lang": "cd extra/update-language-files && node index.js %npm_config_base_lang% && eslint ../../src/languages/**.js --fix",
- "update-language-files": "cd extra/update-language-files && node index.js && eslint ../../src/languages/**.js --fix",
+ "update-language-files": "cd extra/update-language-files && node index.js && cross-env-shell eslint ../../src/languages/$npm_config_language.js --fix",
"ncu-patch": "npm-check-updates -u -t patch",
"release-final": "node extra/update-version.js && npm run build-docker && node ./extra/press-any-key.js && npm run upload-artifacts && node ./extra/update-wiki-version.js",
"release-beta": "node extra/beta/update-version.js && npm run build && node ./extra/env2arg.js docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64,linux/arm/v7 -t louislam/uptime-kuma:$VERSION -t louislam/uptime-kuma:beta . --target release --push && node ./extra/press-any-key.js && npm run upload-artifacts",
diff --git a/src/languages/README.md b/src/languages/README.md
index d505476a8..eddd61022 100644
--- a/src/languages/README.md
+++ b/src/languages/README.md
@@ -1,10 +1,13 @@
# How to translate
1. Fork this repo.
-2. Create a language file (e.g. `zh-TW.js`). The filename must be ISO language code: http://www.lingoes.net/en/translator/langcode.htm
-3. Run `npm run update-language-files`. You can also use this command to check if there are new strings to translate for your language.
-4. Your language file should be filled in. You can translate now.
-5. Add it into `languageList` constant.
-6. Make a [pull request](https://github.com/louislam/uptime-kuma/pulls) when you have done.
+2. Run `npm run update-language-files --language=` where ``
+ is a valid ISO language code:
+ http://www.lingoes.net/en/translator/langcode.htm. You can also use
+ this command to check if there are new strings to
+ translate for your language.
+3. Your language file should be filled in. You can translate now.
+4. Add it into `languageList` constant.
+5. Make a [pull request](https://github.com/louislam/uptime-kuma/pulls) when you have done.
If you do not have programming skills, let me know in [the issues section](https://github.com/louislam/uptime-kuma/issues). I will assist you. 😏
From 230e5110b1db0527c763daa680fa556a06d3bd9b Mon Sep 17 00:00:00 2001
From: Kevin Falentio
Date: Sat, 8 Oct 2022 19:59:22 +0700
Subject: [PATCH 39/48] Fix typo in id-ID language file (#2202)
---
src/languages/id-ID.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/languages/id-ID.js b/src/languages/id-ID.js
index f8ee3ab78..fe5d35942 100644
--- a/src/languages/id-ID.js
+++ b/src/languages/id-ID.js
@@ -565,7 +565,7 @@ export default {
Examples: "Contoh",
"Home Assistant URL": "Home Assistant URL",
"Long-Lived Access Token": "Token Akses Berumur Panjang",
- "Long-Lived Access Token canbe created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Token Akses Berumur Panjang dapat dibuat dengan mengklik nama profil Anda (kiri bawah) dan menggulir ke bawah lalu klik Buat Token. ",
+ "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Token Akses Berumur Panjang dapat dibuat dengan mengklik nama profil Anda (kiri bawah) dan menggulir ke bawah lalu klik Buat Token. ",
"Notification Service": "Layanan Pemberitahuan",
"default: notify all devices": "bawaan: notifikasi seluruh perangkat",
"A listof Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "Daftar Layanan Pemberitahuan dapat ditemukan di Home Assistant pada \"Developer Tools > Services\" cari \"notification\" lalu cari nama perangkat Anda.",
From ad1a7c255f214d2ce0be9d71d0d232d246fb64f9 Mon Sep 17 00:00:00 2001
From: Louis Lam
Date: Sat, 8 Oct 2022 23:56:58 +0800
Subject: [PATCH 40/48] Drop exports.entryPage fully
---
server/server.js | 10 ++++------
1 file changed, 4 insertions(+), 6 deletions(-)
diff --git a/server/server.js b/server/server.js
index 620e5bb45..2efad753c 100644
--- a/server/server.js
+++ b/server/server.js
@@ -127,6 +127,7 @@ const StatusPage = require("./model/status_page");
const { cloudflaredSocketHandler, autoStart: cloudflaredAutoStart, stop: cloudflaredStop } = require("./socket-handlers/cloudflared-socket-handler");
const { proxySocketHandler } = require("./socket-handlers/proxy-socket-handler");
const { dockerSocketHandler } = require("./socket-handlers/docker-socket-handler");
+const { Settings } = require("./settings");
app.use(express.json());
@@ -155,9 +156,7 @@ let needSetup = false;
Database.init(args);
await initDatabase(testMode);
- const entryPage = (await getSettings("general"))["entryPage"];
- exports.entryPage = entryPage;
- UptimeKumaServer.getInstance().entryPage = entryPage;
+ server.entryPage = await Settings.get("entryPage");
await StatusPage.loadDomainMappingList();
log.info("server", "Adding route");
@@ -178,7 +177,7 @@ let needSetup = false;
log.debug("entry", `Request Domain: ${hostname}`);
- const uptimeKumaEntryPage = UptimeKumaServer.getInstance().entryPage;
+ const uptimeKumaEntryPage = server.entryPage;
if (hostname in StatusPage.domainMappingList) {
log.debug("entry", "This is a status page domain");
@@ -1087,8 +1086,7 @@ let needSetup = false;
}
await setSettings("general", data);
- exports.entryPage = data.entryPage;
- UptimeKumaServer.getInstance().entryPage = data.entryPage;
+ server.entryPage = data.entryPage;
callback({
ok: true,
From 1c8631af8d5b3547f1fff5bea1ee3da75b7ee45f Mon Sep 17 00:00:00 2001
From: Louis Lam
Date: Sun, 9 Oct 2022 16:02:47 +0800
Subject: [PATCH 41/48] Pin dependencies (#2205)
---
package-lock.json | 48 +++++++++++++++++++++++------------------------
package.json | 48 +++++++++++++++++++++++------------------------
2 files changed, 48 insertions(+), 48 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 4f2221714..6053fa5f5 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -12,47 +12,47 @@
"@louislam/sqlite3": "~15.0.6",
"args-parser": "~1.3.0",
"axios": "~0.27.0",
- "axios-ntlm": "^1.3.0",
- "badge-maker": "^3.3.1",
+ "axios-ntlm": "~1.3.0",
+ "badge-maker": "~3.3.1",
"bcryptjs": "~2.4.3",
"bree": "~7.1.5",
"cacheable-lookup": "~6.0.4",
- "chardet": "^1.3.0",
+ "chardet": "~1.4.0",
"check-password-strength": "^2.0.5",
- "cheerio": "^1.0.0-rc.10",
- "chroma-js": "^2.1.2",
+ "cheerio": "~1.0.0-rc.12",
+ "chroma-js": "~2.4.2",
"command-exists": "~1.2.9",
"compare-versions": "~3.6.0",
- "compression": "^1.7.4",
- "dayjs": "^1.11.0",
+ "compression": "~1.7.4",
+ "dayjs": "~1.11.5",
"express": "~4.17.3",
"express-basic-auth": "~1.2.1",
- "express-static-gzip": "^2.1.7",
+ "express-static-gzip": "~2.1.7",
"form-data": "~4.0.0",
"http-graceful-shutdown": "~3.1.7",
- "http-proxy-agent": "^5.0.0",
- "https-proxy-agent": "^5.0.0",
- "iconv-lite": "^0.6.3",
- "jsesc": "^3.0.2",
+ "http-proxy-agent": "~5.0.0",
+ "https-proxy-agent": "~5.0.1",
+ "iconv-lite": "~0.6.3",
+ "jsesc": "~3.0.2",
"jsonwebtoken": "~8.5.1",
- "jwt-decode": "^3.1.2",
- "limiter": "^2.1.0",
- "mqtt": "^4.2.8",
- "mssql": "^8.1.0",
+ "jwt-decode": "~3.1.2",
+ "limiter": "~2.1.0",
+ "mqtt": "~4.3.7",
+ "mssql": "~8.1.4",
"node-cloudflared-tunnel": "~1.0.9",
- "node-radius-client": "^1.0.0",
+ "node-radius-client": "~1.0.0",
"nodemailer": "~6.6.5",
"notp": "~2.0.3",
"password-hash": "~1.2.2",
- "pg": "^8.7.3",
- "pg-connection-string": "^2.5.0",
+ "pg": "~8.8.0",
+ "pg-connection-string": "~2.5.0",
"prom-client": "~13.2.0",
"prometheus-api-metrics": "~3.2.1",
"redbean-node": "0.1.4",
"socket.io": "~4.4.1",
"socket.io-client": "~4.4.1",
"socks-proxy-agent": "6.1.1",
- "tar": "^6.1.11",
+ "tar": "~6.1.11",
"tcp-ping": "~0.1.1",
"thirty-two": "~1.0.2"
},
@@ -82,18 +82,18 @@
"dns2": "~2.0.1",
"eslint": "~8.14.0",
"eslint-plugin-vue": "~8.7.1",
- "favico.js": "^0.3.10",
+ "favico.js": "~0.3.10",
"jest": "~27.2.5",
"postcss-html": "~1.5.0",
"postcss-rtlcss": "~3.7.2",
"postcss-scss": "~4.0.4",
- "prismjs": "^1.27.0",
+ "prismjs": "~1.29.0",
"qrcode": "~1.5.0",
"rollup-plugin-visualizer": "^5.6.0",
"sass": "~1.42.1",
"stylelint": "~14.7.1",
"stylelint-config-standard": "~25.0.0",
- "terser": "^5.15.0",
+ "terser": "~5.15.0",
"timezones-list": "~3.0.1",
"typescript": "~4.4.4",
"v-pagination-3": "~0.1.7",
@@ -106,7 +106,7 @@
"vue-i18n": "~9.1.9",
"vue-image-crop-upload": "~3.0.3",
"vue-multiselect": "~3.0.0-alpha.2",
- "vue-prism-editor": "^2.0.0-alpha.2",
+ "vue-prism-editor": "~2.0.0-alpha.2",
"vue-qrcode": "~1.0.0",
"vue-router": "~4.0.14",
"vue-toastification": "~2.0.0-rc.5",
diff --git a/package.json b/package.json
index f5f78f3ac..0c72722de 100644
--- a/package.json
+++ b/package.json
@@ -66,47 +66,47 @@
"@louislam/sqlite3": "~15.0.6",
"args-parser": "~1.3.0",
"axios": "~0.27.0",
- "axios-ntlm": "^1.3.0",
- "badge-maker": "^3.3.1",
+ "axios-ntlm": "~1.3.0",
+ "badge-maker": "~3.3.1",
"bcryptjs": "~2.4.3",
"bree": "~7.1.5",
"cacheable-lookup": "~6.0.4",
- "chardet": "^1.3.0",
+ "chardet": "~1.4.0",
"check-password-strength": "^2.0.5",
- "cheerio": "^1.0.0-rc.10",
- "chroma-js": "^2.1.2",
+ "cheerio": "~1.0.0-rc.12",
+ "chroma-js": "~2.4.2",
"command-exists": "~1.2.9",
"compare-versions": "~3.6.0",
- "compression": "^1.7.4",
- "dayjs": "^1.11.0",
+ "compression": "~1.7.4",
+ "dayjs": "~1.11.5",
"express": "~4.17.3",
"express-basic-auth": "~1.2.1",
- "express-static-gzip": "^2.1.7",
+ "express-static-gzip": "~2.1.7",
"form-data": "~4.0.0",
"http-graceful-shutdown": "~3.1.7",
- "http-proxy-agent": "^5.0.0",
- "https-proxy-agent": "^5.0.0",
- "iconv-lite": "^0.6.3",
- "jsesc": "^3.0.2",
+ "http-proxy-agent": "~5.0.0",
+ "https-proxy-agent": "~5.0.1",
+ "iconv-lite": "~0.6.3",
+ "jsesc": "~3.0.2",
"jsonwebtoken": "~8.5.1",
- "jwt-decode": "^3.1.2",
- "limiter": "^2.1.0",
- "mqtt": "^4.2.8",
- "mssql": "^8.1.0",
+ "jwt-decode": "~3.1.2",
+ "limiter": "~2.1.0",
+ "mqtt": "~4.3.7",
+ "mssql": "~8.1.4",
"node-cloudflared-tunnel": "~1.0.9",
- "node-radius-client": "^1.0.0",
+ "node-radius-client": "~1.0.0",
"nodemailer": "~6.6.5",
"notp": "~2.0.3",
"password-hash": "~1.2.2",
- "pg": "^8.7.3",
- "pg-connection-string": "^2.5.0",
+ "pg": "~8.8.0",
+ "pg-connection-string": "~2.5.0",
"prom-client": "~13.2.0",
"prometheus-api-metrics": "~3.2.1",
"redbean-node": "0.1.4",
"socket.io": "~4.4.1",
"socket.io-client": "~4.4.1",
"socks-proxy-agent": "6.1.1",
- "tar": "^6.1.11",
+ "tar": "~6.1.11",
"tcp-ping": "~0.1.1",
"thirty-two": "~1.0.2"
},
@@ -136,18 +136,18 @@
"dns2": "~2.0.1",
"eslint": "~8.14.0",
"eslint-plugin-vue": "~8.7.1",
- "favico.js": "^0.3.10",
+ "favico.js": "~0.3.10",
"jest": "~27.2.5",
"postcss-html": "~1.5.0",
"postcss-rtlcss": "~3.7.2",
"postcss-scss": "~4.0.4",
- "prismjs": "^1.27.0",
+ "prismjs": "~1.29.0",
"qrcode": "~1.5.0",
"rollup-plugin-visualizer": "^5.6.0",
"sass": "~1.42.1",
"stylelint": "~14.7.1",
"stylelint-config-standard": "~25.0.0",
- "terser": "^5.15.0",
+ "terser": "~5.15.0",
"timezones-list": "~3.0.1",
"typescript": "~4.4.4",
"v-pagination-3": "~0.1.7",
@@ -160,7 +160,7 @@
"vue-i18n": "~9.1.9",
"vue-image-crop-upload": "~3.0.3",
"vue-multiselect": "~3.0.0-alpha.2",
- "vue-prism-editor": "^2.0.0-alpha.2",
+ "vue-prism-editor": "~2.0.0-alpha.2",
"vue-qrcode": "~1.0.0",
"vue-router": "~4.0.14",
"vue-toastification": "~2.0.0-rc.5",
From 07f9aafd7bce1b6d5226744654070a2fc7d54745 Mon Sep 17 00:00:00 2001
From: Louis Lam
Date: Sun, 9 Oct 2022 16:50:47 +0800
Subject: [PATCH 42/48] Update to 1.18.4
---
package.json | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/package.json b/package.json
index 0c72722de..180bea289 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "uptime-kuma",
- "version": "1.18.3",
+ "version": "1.18.4",
"license": "MIT",
"repository": {
"type": "git",
@@ -38,7 +38,7 @@
"build-docker-nightly-amd64": "docker buildx build -f docker/dockerfile --platform linux/amd64 -t louislam/uptime-kuma:nightly-amd64 --target nightly . --push --progress plain",
"build-docker-pr-test": "docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64 -t louislam/uptime-kuma:pr-test --target pr-test . --push",
"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.18.3 && npm ci --production && npm run download-dist",
+ "setup": "git checkout 1.18.4 && npm ci --production && npm run download-dist",
"download-dist": "node extra/download-dist.js",
"mark-as-nightly": "node extra/mark-as-nightly.js",
"reset-password": "node extra/reset-password.js",
From 71af23cf0003c4a5086a9eb44abeabd1ccb8bdce Mon Sep 17 00:00:00 2001
From: Louis Lam
Date: Mon, 10 Oct 2022 02:47:24 +0800
Subject: [PATCH 43/48] Fix #2207
---
server/model/status_page.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/server/model/status_page.js b/server/model/status_page.js
index 7682272c9..68c7f8b04 100644
--- a/server/model/status_page.js
+++ b/server/model/status_page.js
@@ -58,7 +58,7 @@ class StatusPage extends BeanModel {
// Preload data
// Add jsesc, fix https://github.com/louislam/uptime-kuma/issues/2186
- const escapedJSONObject = jsesc(JSON.stringify(await StatusPage.getStatusPageData(statusPage)), {
+ const escapedJSONObject = jsesc(await StatusPage.getStatusPageData(statusPage), {
"isScriptContext": true
});
From bd42450e55dc29bdd1daddb1080aaa6d81b32912 Mon Sep 17 00:00:00 2001
From: Louis Lam
Date: Mon, 10 Oct 2022 16:23:32 +0800
Subject: [PATCH 44/48] Update vue-i18n from 9.1.9 to 9.2.2, force to use
production version of vue-i18n in order to improve the performance
---
package-lock.json | 186 +++++++++++++++++-----------------------------
package.json | 2 +-
src/i18n.js | 2 +-
3 files changed, 71 insertions(+), 119 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 6053fa5f5..44af14690 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "uptime-kuma",
- "version": "1.18.3",
+ "version": "1.18.4",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "uptime-kuma",
- "version": "1.18.3",
+ "version": "1.18.4",
"license": "MIT",
"dependencies": {
"@louislam/sqlite3": "~15.0.6",
@@ -103,7 +103,7 @@
"vue-chart-3": "3.0.9",
"vue-confirm-dialog": "~1.0.2",
"vue-contenteditable": "~3.0.4",
- "vue-i18n": "~9.1.9",
+ "vue-i18n": "~9.2.2",
"vue-image-crop-upload": "~3.0.3",
"vue-multiselect": "~3.0.0-alpha.2",
"vue-prism-editor": "~2.0.0-alpha.2",
@@ -2338,92 +2338,65 @@
"dev": true
},
"node_modules/@intlify/core-base": {
- "version": "9.1.10",
- "resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-9.1.10.tgz",
- "integrity": "sha512-So9CNUavB/IsZ+zBmk2Cv6McQp6vc2wbGi1S0XQmJ8Vz+UFcNn9MFXAe9gY67PreIHrbLsLxDD0cwo1qsxM1Nw==",
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-9.2.2.tgz",
+ "integrity": "sha512-JjUpQtNfn+joMbrXvpR4hTF8iJQ2sEFzzK3KIESOx+f+uwIjgw20igOyaIdhfsVVBCds8ZM64MoeNSx+PHQMkA==",
"dev": true,
"dependencies": {
- "@intlify/devtools-if": "9.1.10",
- "@intlify/message-compiler": "9.1.10",
- "@intlify/message-resolver": "9.1.10",
- "@intlify/runtime": "9.1.10",
- "@intlify/shared": "9.1.10",
- "@intlify/vue-devtools": "9.1.10"
+ "@intlify/devtools-if": "9.2.2",
+ "@intlify/message-compiler": "9.2.2",
+ "@intlify/shared": "9.2.2",
+ "@intlify/vue-devtools": "9.2.2"
},
"engines": {
- "node": ">= 10"
+ "node": ">= 14"
}
},
"node_modules/@intlify/devtools-if": {
- "version": "9.1.10",
- "resolved": "https://registry.npmjs.org/@intlify/devtools-if/-/devtools-if-9.1.10.tgz",
- "integrity": "sha512-SHaKoYu6sog3+Q8js1y3oXLywuogbH1sKuc7NSYkN3GElvXSBaMoCzW+we0ZSFqj/6c7vTNLg9nQ6rxhKqYwnQ==",
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/@intlify/devtools-if/-/devtools-if-9.2.2.tgz",
+ "integrity": "sha512-4ttr/FNO29w+kBbU7HZ/U0Lzuh2cRDhP8UlWOtV9ERcjHzuyXVZmjyleESK6eVP60tGC9QtQW9yZE+JeRhDHkg==",
"dev": true,
"dependencies": {
- "@intlify/shared": "9.1.10"
+ "@intlify/shared": "9.2.2"
},
"engines": {
- "node": ">= 10"
+ "node": ">= 14"
}
},
"node_modules/@intlify/message-compiler": {
- "version": "9.1.10",
- "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.1.10.tgz",
- "integrity": "sha512-+JiJpXff/XTb0EadYwdxOyRTB0hXNd4n1HaJ/a4yuV960uRmPXaklJsedW0LNdcptd/hYUZtCkI7Lc9J5C1gxg==",
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.2.2.tgz",
+ "integrity": "sha512-IUrQW7byAKN2fMBe8z6sK6riG1pue95e5jfokn8hA5Q3Bqy4MBJ5lJAofUsawQJYHeoPJ7svMDyBaVJ4d0GTtA==",
"dev": true,
"dependencies": {
- "@intlify/message-resolver": "9.1.10",
- "@intlify/shared": "9.1.10",
+ "@intlify/shared": "9.2.2",
"source-map": "0.6.1"
},
"engines": {
- "node": ">= 10"
- }
- },
- "node_modules/@intlify/message-resolver": {
- "version": "9.1.10",
- "resolved": "https://registry.npmjs.org/@intlify/message-resolver/-/message-resolver-9.1.10.tgz",
- "integrity": "sha512-5YixMG/M05m0cn9+gOzd4EZQTFRUu8RGhzxJbR1DWN21x/Z3bJ8QpDYj6hC4FwBj5uKsRfKpJQ3Xqg98KWoA+w==",
- "dev": true,
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/@intlify/runtime": {
- "version": "9.1.10",
- "resolved": "https://registry.npmjs.org/@intlify/runtime/-/runtime-9.1.10.tgz",
- "integrity": "sha512-7QsuByNzpe3Gfmhwq6hzgXcMPpxz8Zxb/XFI6s9lQdPLPe5Lgw4U1ovRPZTOs6Y2hwitR3j/HD8BJNGWpJnOFA==",
- "dev": true,
- "dependencies": {
- "@intlify/message-compiler": "9.1.10",
- "@intlify/message-resolver": "9.1.10",
- "@intlify/shared": "9.1.10"
- },
- "engines": {
- "node": ">= 10"
+ "node": ">= 14"
}
},
"node_modules/@intlify/shared": {
- "version": "9.1.10",
- "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-9.1.10.tgz",
- "integrity": "sha512-Om54xJeo1Vw+K1+wHYyXngE8cAbrxZHpWjYzMR9wCkqbhGtRV5VLhVc214Ze2YatPrWlS2WSMOWXR8JktX/IgA==",
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-9.2.2.tgz",
+ "integrity": "sha512-wRwTpsslgZS5HNyM7uDQYZtxnbI12aGiBZURX3BTR9RFIKKRWpllTsgzHWvj3HKm3Y2Sh5LPC1r0PDCKEhVn9Q==",
"dev": true,
"engines": {
- "node": ">= 10"
+ "node": ">= 14"
}
},
"node_modules/@intlify/vue-devtools": {
- "version": "9.1.10",
- "resolved": "https://registry.npmjs.org/@intlify/vue-devtools/-/vue-devtools-9.1.10.tgz",
- "integrity": "sha512-5l3qYARVbkWAkagLu1XbDUWRJSL8br1Dj60wgMaKB0+HswVsrR6LloYZTg7ozyvM621V6+zsmwzbQxbVQyrytQ==",
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/@intlify/vue-devtools/-/vue-devtools-9.2.2.tgz",
+ "integrity": "sha512-+dUyqyCHWHb/UcvY1MlIpO87munedm3Gn6E9WWYdWrMuYLcoIoOEVDWSS8xSwtlPU+kA+MEQTP6Q1iI/ocusJg==",
"dev": true,
"dependencies": {
- "@intlify/message-resolver": "9.1.10",
- "@intlify/runtime": "9.1.10",
- "@intlify/shared": "9.1.10"
+ "@intlify/core-base": "9.2.2",
+ "@intlify/shared": "9.2.2"
},
"engines": {
- "node": ">= 10"
+ "node": ">= 14"
}
},
"node_modules/@istanbuljs/load-nyc-config": {
@@ -16107,18 +16080,18 @@
}
},
"node_modules/vue-i18n": {
- "version": "9.1.10",
- "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-9.1.10.tgz",
- "integrity": "sha512-jpr7gV5KPk4n+sSPdpZT8Qx3XzTcNDWffRlHV/cT2NUyEf+sEgTTmLvnBAibjOFJ0zsUyZlVTAWH5DDnYep+1g==",
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-9.2.2.tgz",
+ "integrity": "sha512-yswpwtj89rTBhegUAv9Mu37LNznyu3NpyLQmozF3i1hYOhwpG8RjcjIFIIfnu+2MDZJGSZPXaKWvnQA71Yv9TQ==",
"dev": true,
"dependencies": {
- "@intlify/core-base": "9.1.10",
- "@intlify/shared": "9.1.10",
- "@intlify/vue-devtools": "9.1.10",
- "@vue/devtools-api": "^6.0.0-beta.7"
+ "@intlify/core-base": "9.2.2",
+ "@intlify/shared": "9.2.2",
+ "@intlify/vue-devtools": "9.2.2",
+ "@vue/devtools-api": "^6.2.1"
},
"engines": {
- "node": ">= 10"
+ "node": ">= 14"
},
"peerDependencies": {
"vue": "^3.0.0"
@@ -18279,71 +18252,50 @@
"dev": true
},
"@intlify/core-base": {
- "version": "9.1.10",
- "resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-9.1.10.tgz",
- "integrity": "sha512-So9CNUavB/IsZ+zBmk2Cv6McQp6vc2wbGi1S0XQmJ8Vz+UFcNn9MFXAe9gY67PreIHrbLsLxDD0cwo1qsxM1Nw==",
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-9.2.2.tgz",
+ "integrity": "sha512-JjUpQtNfn+joMbrXvpR4hTF8iJQ2sEFzzK3KIESOx+f+uwIjgw20igOyaIdhfsVVBCds8ZM64MoeNSx+PHQMkA==",
"dev": true,
"requires": {
- "@intlify/devtools-if": "9.1.10",
- "@intlify/message-compiler": "9.1.10",
- "@intlify/message-resolver": "9.1.10",
- "@intlify/runtime": "9.1.10",
- "@intlify/shared": "9.1.10",
- "@intlify/vue-devtools": "9.1.10"
+ "@intlify/devtools-if": "9.2.2",
+ "@intlify/message-compiler": "9.2.2",
+ "@intlify/shared": "9.2.2",
+ "@intlify/vue-devtools": "9.2.2"
}
},
"@intlify/devtools-if": {
- "version": "9.1.10",
- "resolved": "https://registry.npmjs.org/@intlify/devtools-if/-/devtools-if-9.1.10.tgz",
- "integrity": "sha512-SHaKoYu6sog3+Q8js1y3oXLywuogbH1sKuc7NSYkN3GElvXSBaMoCzW+we0ZSFqj/6c7vTNLg9nQ6rxhKqYwnQ==",
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/@intlify/devtools-if/-/devtools-if-9.2.2.tgz",
+ "integrity": "sha512-4ttr/FNO29w+kBbU7HZ/U0Lzuh2cRDhP8UlWOtV9ERcjHzuyXVZmjyleESK6eVP60tGC9QtQW9yZE+JeRhDHkg==",
"dev": true,
"requires": {
- "@intlify/shared": "9.1.10"
+ "@intlify/shared": "9.2.2"
}
},
"@intlify/message-compiler": {
- "version": "9.1.10",
- "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.1.10.tgz",
- "integrity": "sha512-+JiJpXff/XTb0EadYwdxOyRTB0hXNd4n1HaJ/a4yuV960uRmPXaklJsedW0LNdcptd/hYUZtCkI7Lc9J5C1gxg==",
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.2.2.tgz",
+ "integrity": "sha512-IUrQW7byAKN2fMBe8z6sK6riG1pue95e5jfokn8hA5Q3Bqy4MBJ5lJAofUsawQJYHeoPJ7svMDyBaVJ4d0GTtA==",
"dev": true,
"requires": {
- "@intlify/message-resolver": "9.1.10",
- "@intlify/shared": "9.1.10",
+ "@intlify/shared": "9.2.2",
"source-map": "0.6.1"
}
},
- "@intlify/message-resolver": {
- "version": "9.1.10",
- "resolved": "https://registry.npmjs.org/@intlify/message-resolver/-/message-resolver-9.1.10.tgz",
- "integrity": "sha512-5YixMG/M05m0cn9+gOzd4EZQTFRUu8RGhzxJbR1DWN21x/Z3bJ8QpDYj6hC4FwBj5uKsRfKpJQ3Xqg98KWoA+w==",
- "dev": true
- },
- "@intlify/runtime": {
- "version": "9.1.10",
- "resolved": "https://registry.npmjs.org/@intlify/runtime/-/runtime-9.1.10.tgz",
- "integrity": "sha512-7QsuByNzpe3Gfmhwq6hzgXcMPpxz8Zxb/XFI6s9lQdPLPe5Lgw4U1ovRPZTOs6Y2hwitR3j/HD8BJNGWpJnOFA==",
- "dev": true,
- "requires": {
- "@intlify/message-compiler": "9.1.10",
- "@intlify/message-resolver": "9.1.10",
- "@intlify/shared": "9.1.10"
- }
- },
"@intlify/shared": {
- "version": "9.1.10",
- "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-9.1.10.tgz",
- "integrity": "sha512-Om54xJeo1Vw+K1+wHYyXngE8cAbrxZHpWjYzMR9wCkqbhGtRV5VLhVc214Ze2YatPrWlS2WSMOWXR8JktX/IgA==",
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-9.2.2.tgz",
+ "integrity": "sha512-wRwTpsslgZS5HNyM7uDQYZtxnbI12aGiBZURX3BTR9RFIKKRWpllTsgzHWvj3HKm3Y2Sh5LPC1r0PDCKEhVn9Q==",
"dev": true
},
"@intlify/vue-devtools": {
- "version": "9.1.10",
- "resolved": "https://registry.npmjs.org/@intlify/vue-devtools/-/vue-devtools-9.1.10.tgz",
- "integrity": "sha512-5l3qYARVbkWAkagLu1XbDUWRJSL8br1Dj60wgMaKB0+HswVsrR6LloYZTg7ozyvM621V6+zsmwzbQxbVQyrytQ==",
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/@intlify/vue-devtools/-/vue-devtools-9.2.2.tgz",
+ "integrity": "sha512-+dUyqyCHWHb/UcvY1MlIpO87munedm3Gn6E9WWYdWrMuYLcoIoOEVDWSS8xSwtlPU+kA+MEQTP6Q1iI/ocusJg==",
"dev": true,
"requires": {
- "@intlify/message-resolver": "9.1.10",
- "@intlify/runtime": "9.1.10",
- "@intlify/shared": "9.1.10"
+ "@intlify/core-base": "9.2.2",
+ "@intlify/shared": "9.2.2"
}
},
"@istanbuljs/load-nyc-config": {
@@ -28795,15 +28747,15 @@
}
},
"vue-i18n": {
- "version": "9.1.10",
- "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-9.1.10.tgz",
- "integrity": "sha512-jpr7gV5KPk4n+sSPdpZT8Qx3XzTcNDWffRlHV/cT2NUyEf+sEgTTmLvnBAibjOFJ0zsUyZlVTAWH5DDnYep+1g==",
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-9.2.2.tgz",
+ "integrity": "sha512-yswpwtj89rTBhegUAv9Mu37LNznyu3NpyLQmozF3i1hYOhwpG8RjcjIFIIfnu+2MDZJGSZPXaKWvnQA71Yv9TQ==",
"dev": true,
"requires": {
- "@intlify/core-base": "9.1.10",
- "@intlify/shared": "9.1.10",
- "@intlify/vue-devtools": "9.1.10",
- "@vue/devtools-api": "^6.0.0-beta.7"
+ "@intlify/core-base": "9.2.2",
+ "@intlify/shared": "9.2.2",
+ "@intlify/vue-devtools": "9.2.2",
+ "@vue/devtools-api": "^6.2.1"
}
},
"vue-image-crop-upload": {
diff --git a/package.json b/package.json
index 180bea289..6f48fedd1 100644
--- a/package.json
+++ b/package.json
@@ -157,7 +157,7 @@
"vue-chart-3": "3.0.9",
"vue-confirm-dialog": "~1.0.2",
"vue-contenteditable": "~3.0.4",
- "vue-i18n": "~9.1.9",
+ "vue-i18n": "~9.2.2",
"vue-image-crop-upload": "~3.0.3",
"vue-multiselect": "~3.0.0-alpha.2",
"vue-prism-editor": "~2.0.0-alpha.2",
diff --git a/src/i18n.js b/src/i18n.js
index 4c19eb00d..902177cf1 100644
--- a/src/i18n.js
+++ b/src/i18n.js
@@ -1,4 +1,4 @@
-import { createI18n } from "vue-i18n/index";
+import { createI18n } from "vue-i18n/dist/vue-i18n.esm-browser.prod.js";
import en from "./languages/en";
const languageList = {
From 2ee8378814d5cf92dceabcf2d9e4e79505001f16 Mon Sep 17 00:00:00 2001
From: Louis Lam
Date: Tue, 11 Oct 2022 02:32:57 +0800
Subject: [PATCH 45/48] Update to 1.18.5
---
package.json | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/package.json b/package.json
index 6f48fedd1..b1a76d36a 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "uptime-kuma",
- "version": "1.18.4",
+ "version": "1.18.5",
"license": "MIT",
"repository": {
"type": "git",
@@ -38,7 +38,7 @@
"build-docker-nightly-amd64": "docker buildx build -f docker/dockerfile --platform linux/amd64 -t louislam/uptime-kuma:nightly-amd64 --target nightly . --push --progress plain",
"build-docker-pr-test": "docker buildx build -f docker/dockerfile --platform linux/amd64,linux/arm64 -t louislam/uptime-kuma:pr-test --target pr-test . --push",
"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.18.4 && npm ci --production && npm run download-dist",
+ "setup": "git checkout 1.18.5 && npm ci --production && npm run download-dist",
"download-dist": "node extra/download-dist.js",
"mark-as-nightly": "node extra/mark-as-nightly.js",
"reset-password": "node extra/reset-password.js",
From 180d881ac122fb8f85805153f2342725a4843851 Mon Sep 17 00:00:00 2001
From: Alexander Borzov <59200516+Borzoff@users.noreply.github.com>
Date: Tue, 11 Oct 2022 10:35:08 +0300
Subject: [PATCH 46/48] Update ru-RU.js (#2217)
---
src/languages/ru-RU.js | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/src/languages/ru-RU.js b/src/languages/ru-RU.js
index 0aaf09681..6922f51b8 100644
--- a/src/languages/ru-RU.js
+++ b/src/languages/ru-RU.js
@@ -393,6 +393,12 @@ export default {
alertaAlertState: "Состояние алерта",
alertaRecoverState: "Состояние восстановления",
Proxies: "Прокси",
+ "Setup Proxy": "Настройка Прокси",
+ "Proxy Protocol": "Протокол Прокси",
+ "Proxy Server": "Прокси",
+ "Proxy server has authentication": "Прокси имеет аутентификацию",
+ "Reverse Proxy": "Обратный прокси",
+ "No Proxy": "Без прокси",
default: "По умолчанию",
enabled: "Включено",
setAsDefault: "Установлено по умолчанию",
From cb5f90aa89eae0d84c7eb62c98c956b7055183a3 Mon Sep 17 00:00:00 2001
From: MagicFun1241
Date: Wed, 12 Oct 2022 19:27:50 +0300
Subject: [PATCH 47/48] Update Russian locale (#2218)
* Update ru-RU.js
* Remove duplicates
* Remove duplicates x2
* Revert to previous version for one translation
* Removed conflicting lines
* Remove conflicting 'Reverse Proxy' key
---
src/languages/ru-RU.js | 172 +++++++++++++++++++++++++++++++++++++++++
1 file changed, 172 insertions(+)
diff --git a/src/languages/ru-RU.js b/src/languages/ru-RU.js
index 6922f51b8..2e6fdf7be 100644
--- a/src/languages/ru-RU.js
+++ b/src/languages/ru-RU.js
@@ -406,4 +406,176 @@ export default {
proxyDescription: "Прокси должны быть привязаны к монитору, чтобы работать.",
enableProxyDescription: "Этот прокси не будет влиять на запросы монитора, пока не будет активирован. Вы можете контролировать временное отключение прокси для всех мониторов через статус активации.",
setAsDefaultProxyDescription: "Этот прокси будет по умолчанию включен для новых мониторов. Вы всё ещё можете отдельно отключать прокси в каждом мониторе.",
+ Invalid: "Недействительный",
+ AccessKeyId: "AccessKey ID",
+ SecretAccessKey: "AccessKey Secret",
+ PhoneNumbers: "PhoneNumbers",
+ TemplateCode: "TemplateCode",
+ SignName: "SignName",
+ "Sms template must contain parameters: ": "Шаблон СМС должен содержать параметры: ",
+ "Bark Endpoint": "Bark Endpoint",
+ "Bark Group": "Bark Group",
+ "Bark Sound": "Bark Sound",
+ WebHookUrl: "WebHookUrl",
+ SecretKey: "SecretKey",
+ "For safety, must use secret key": "В целях безопасности необходимо использовать секретный ключ",
+ "Device Token": "Токен устройства",
+ Platform: "Платформа",
+ iOS: "iOS",
+ Android: "Android",
+ Huawei: "Huawei",
+ High: "High",
+ Retry: "Повторить",
+ Topic: "Тема",
+ "WeCom Bot Key": "WeCom Bot Key",
+ User: "Пользователь",
+ Installed: "Установлено",
+ "Not installed": "Не установлено",
+ Running: "Запускается",
+ "Not running": "Не запускается",
+ "Remove Token": "Удалить токен",
+ Start: "Запустить",
+ Stop: "Остановить",
+ "Uptime Kuma": "Uptime Kuma",
+ Slug: "Slug",
+ "Accept characters:": "Принимаемые символы:",
+ startOrEndWithOnly: "Начинается или кончается только {0}",
+ "No consecutive dashes": "Без последовательных тире",
+ "The slug is already taken. Please choose another slug.": "The slug is already taken. Please choose another slug.",
+ "Page Not Found": "Страница не найдена",
+ wayToGetCloudflaredURL: "(Скачать cloudflared с {0})",
+ cloudflareWebsite: "Cloudflare Website",
+ "Message:": "Сообщение:",
+ "Don't know how to get the token? Please read the guide:": "Don't know how to get the token? Please read the guide:",
+ "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.": "The current connection may be lost if you are currently connecting via Cloudflare Tunnel. Are you sure want to stop it? Type your current password to confirm it.",
+ "HTTP Headers": "HTTP заголовки",
+ "Trust Proxy": "Доверять прокси",
+ "Other Software": "Другое программное обеспечение",
+ "For example: nginx, Apache and Traefik.": "К примеру: nginx, Apache и Traefik.",
+ "Please read": "Пожалуйста, прочитайте",
+ "Subject:": "Тема:",
+ "Valid To:": "Действителен до:",
+ "Days Remaining:": "Дней осталось:",
+ "Issuer:": "Издатель:",
+ "Fingerprint:": "Отпечаток:",
+ "No status pages": "Нет статусных страниц",
+ "Domain Name Expiry Notification": "Уведомление об истечении срока действия доменного имени",
+ Proxy: "Прокси",
+ "Date Created": "Дата создания",
+ HomeAssistant: "Home Assistant",
+ onebotHttpAddress: "OneBot HTTP Address",
+ onebotMessageType: "OneBot Message Type",
+ onebotGroupMessage: "Группа",
+ onebotPrivateMessage: "Private",
+ onebotUserOrGroupId: "Группа/ID пользователя",
+ onebotSafetyTips: "В целях безопасности необходимо установить токен доступа",
+ "PushDeer Key": "PushDeer Key",
+ "Footer Text": "Текст нижнего колонтитула",
+ "Show Powered By": "Показывать на чем создано",
+ "Domain Names": "Доменные имена",
+ signedInDisp: "Вы вошли как {0}",
+ signedInDispDisabled: "Аутентификация отключена.",
+ RadiusSecret: "Секрет Radius",
+ RadiusSecretDescription: "Общий секрет между клиентом и сервером",
+ RadiusCalledStationId: "Идентификатор вызываемой станции",
+ RadiusCalledStationIdDescription: "Идентификатор вызываемого устройства",
+ RadiusCallingStationId: "Идентификатор вызывающей станции",
+ RadiusCallingStationIdDescription: "Идентификатор вызывающего устройства",
+ "Certificate Expiry Notification": "Уведомление об истечении срока действия сертификата",
+ "API Username": "Имя пользователя API",
+ "API Key": "API ключ",
+ "Recipient Number": "Номер получателя",
+ "From Name/Number": "Имя/номер отправителя",
+ "Leave blank to use a shared sender number.": "Оставьте пустым, чтобы использовать общий номер отправителя.",
+ "Octopush API Version": "Версия API Octopush",
+ "Legacy Octopush-DM": "Legacy Octopush-DM",
+ endpoint: "endpoint",
+ octopushAPIKey: "\"API key\" из учетных данных HTTP API в панели управления",
+ octopushLogin: "\"Login\" из учетных данных HTTP API в панели управления",
+ promosmsLogin: "Логин API",
+ promosmsPassword: "Пароль API",
+ "pushoversounds pushover": "Pushover (default)",
+ "pushoversounds bike": "Bike",
+ "pushoversounds bugle": "Bugle",
+ "pushoversounds cashregister": "Cash Register",
+ "pushoversounds classical": "Classical",
+ "pushoversounds cosmic": "Cosmic",
+ "pushoversounds falling": "Falling",
+ "pushoversounds gamelan": "Gamelan",
+ "pushoversounds incoming": "Incoming",
+ "pushoversounds intermission": "Intermission",
+ "pushoversounds magic": "Magic",
+ "pushoversounds mechanical": "Mechanical",
+ "pushoversounds pianobar": "Piano Bar",
+ "pushoversounds siren": "Siren",
+ "pushoversounds spacealarm": "Space Alarm",
+ "pushoversounds tugboat": "Tug Boat",
+ "pushoversounds alien": "Alien Alarm (long)",
+ "pushoversounds climb": "Climb (long)",
+ "pushoversounds persistent": "Persistent (long)",
+ "pushoversounds echo": "Pushover Echo (long)",
+ "pushoversounds updown": "Up Down (long)",
+ "pushoversounds vibrate": "Vibrate Only",
+ "pushoversounds none": "None (silent)",
+ pushyAPIKey: "Secret API Key",
+ pushyToken: "Токен устройства",
+ "Using a Reverse Proxy?": "Используете обратный прокси?",
+ "Check how to config it for WebSocket": "Проверьте, как настроить его для WebSocket",
+ "Steam Game Server": "Steam Game Server",
+ "Most likely causes:": "Наиболее вероятные причины:",
+ "The resource is no longer available.": "Ресурс больше не доступен.",
+ "There might be a typing error in the address.": "В адресе может быть опечатка.",
+ "What you can try:": "Что вы можете попробовать:",
+ "Retype the address.": "Повторите адрес.",
+ "Go back to the previous page.": "Вернуться на предыдущую страницу.",
+ "Coming Soon": "Скоро",
+ wayToGetClickSendSMSToken: "Вы можете получить имя пользователя API и ключ API из {0} .",
+ "Connection String": "Строка подключения",
+ Query: "Запрос",
+ settingsCertificateExpiry: "Истекание TLS сертификата",
+ certificationExpiryDescription: "HTTPS Мониторы инициируют уведомление, когда срок действия сертификата TLS истечет:",
+ "Setup Docker Host": "Настроить Docker Host",
+ "Connection Type": "Тип соединения",
+ "Docker Daemon": "Docker Daemon",
+ deleteDockerHostMsg: "Are you sure want to delete this docker host for all monitors?",
+ socket: "Socket",
+ tcp: "TCP / HTTP",
+ "Docker Container": "Docker контейнер",
+ "Container Name / ID": "Название контейнера / ID",
+ "Docker Host": "Docker Host",
+ "Docker Hosts": "Docker Hosts",
+ "ntfy Topic": "ntfy Topic",
+ Domain: "Домен",
+ Workstation: "Workstation",
+ disableCloudflaredNoAuthMsg: "Вы находитесь в режиме без авторизации, пароль не требуется.",
+ trustProxyDescription: "Доверять заголовкам 'X-Forwarded-*'. Если вы хотите получить правильный IP-адрес клиента, а ваш Uptime Kuma находится под Nginx или Apache, вам следует включить этот параметр.",
+ wayToGetLineNotifyToken: "Вы можете получить токен доступа в {0}",
+ Examples: "Примеры",
+ "Home Assistant URL": "Home Assistant URL",
+ "Long-Lived Access Token": "Токен доступа с длительным сроком службы",
+ "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ": "Long-Lived Access Token can be created by clicking on your profile name (bottom left) and scrolling to the bottom then click Create Token. ",
+ "Notification Service": "Служба уведомлений",
+ "default: notify all devices": "по стандарту: уведомлять все устройства",
+ "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.": "A list of Notification Services can be found in Home Assistant under \"Developer Tools > Services\" search for \"notification\" to find your device/phone name.",
+ "Automations can optionally be triggered in Home Assistant:": "При желании автоматизацию можно активировать в Home Assistant.:",
+ "Trigger type:": "Тип триггера:",
+ "Event type:": "Тип события:",
+ "Event data:": "Данные события:",
+ "Then choose an action, for example switch the scene to where an RGB light is red.": "Затем выберите действие, например, переключите сцену на красный индикатор RGB..",
+ "Frontend Version": "Версия интерфейса",
+ "Frontend Version do not match backend version!": "Версия интерфейса не соответствует версии серверной части!",
+ "Base URL": "Базовый URL",
+ goAlertInfo: "GoAlert is a An open source application for on-call scheduling, automated escalations and notifications (like SMS or voice calls). Automatically engage the right person, the right way, and at the right time! {0}",
+ goAlertIntegrationKeyInfo: "Получить общий ключ интеграции API для сервиса в этом формате \"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\" обычно значение параметра токена скопированного URL.",
+ goAlert: "GoAlert",
+ backupOutdatedWarning: "Устарело: поскольку добавлено множество функций, а эта функция резервного копирования немного не поддерживается, она не может создать или восстановить полную резервную копию.",
+ backupRecommend: "Сделайте резервную копию тома или папки с данными (./data/) напрямую.",
+ "Optional": "Необязательно",
+ squadcast: "Squadcast",
+ SendKey: "SendKey",
+ "SMSManager API Docs": "Документация к API SMSManager ",
+ "Gateway Type": "Тип шлюза",
+ SMSManager: "SMSManager",
+ "You can divide numbers with": "Вы можете делить числа с",
+ "or": "или",
};
From f459ea845c6a1b192fa35efa44f3116aca921dd1 Mon Sep 17 00:00:00 2001
From: Matthew Nickson
Date: Wed, 12 Oct 2022 17:32:05 +0100
Subject: [PATCH 48/48] Added #2182 Add support for custom radius ports (#2197)
This commit adds support for the port to be specified when using the
radius monitor type. A check has been implemented to ensure that a null
value is not passed to the radius check function as could occur with
monitors that were created before this change was introduced. The
default port of 1812 is displayed when the user selects the radius
monitor in much the same way as the DNS port is handled. The port was
not included in the hostname in the form hostname:port in order to avoid
issues with IPv6 addresses and monitors that had been created before
this change was implemented.
Signed-off-by: Matthew Nickson
Signed-off-by: Matthew Nickson
---
server/model/monitor.js | 14 +++++++++++++-
server/util-server.js | 13 +++++++++++++
src/pages/EditMonitor.vue | 8 +++++---
3 files changed, 31 insertions(+), 4 deletions(-)
diff --git a/server/model/monitor.js b/server/model/monitor.js
index ac8925608..c0a3cce65 100644
--- a/server/model/monitor.js
+++ b/server/model/monitor.js
@@ -534,6 +534,17 @@ class Monitor extends BeanModel {
bean.ping = dayjs().valueOf() - startTime;
} else if (this.type === "radius") {
let startTime = dayjs().valueOf();
+
+ // Handle monitors that were created before the
+ // update and as such don't have a value for
+ // this.port.
+ let port;
+ if (this.port == null) {
+ port = 1812;
+ } else {
+ port = this.port;
+ }
+
try {
const resp = await radius(
this.hostname,
@@ -541,7 +552,8 @@ class Monitor extends BeanModel {
this.radiusPassword,
this.radiusCalledStationId,
this.radiusCallingStationId,
- this.radiusSecret
+ this.radiusSecret,
+ port
);
if (resp.code) {
bean.msg = resp.code;
diff --git a/server/util-server.js b/server/util-server.js
index cf303ba85..b975a43f3 100644
--- a/server/util-server.js
+++ b/server/util-server.js
@@ -291,6 +291,17 @@ exports.postgresQuery = function (connectionString, query) {
});
};
+/**
+ * Query radius server
+ * @param {string} hostname Hostname of radius server
+ * @param {string} username Username to use
+ * @param {string} password Password to use
+ * @param {string} calledStationId ID of called station
+ * @param {string} callingStationId ID of calling station
+ * @param {string} secret Secret to use
+ * @param {number} [port=1812] Port to contact radius server on
+ * @returns {Promise}
+ */
exports.radius = function (
hostname,
username,
@@ -298,9 +309,11 @@ exports.radius = function (
calledStationId,
callingStationId,
secret,
+ port = 1812,
) {
const client = new radiusClient({
host: hostname,
+ hostPort: port,
dictionaries: [ file ],
});
diff --git a/src/pages/EditMonitor.vue b/src/pages/EditMonitor.vue
index 99cbeb95f..6d1a7e512 100644
--- a/src/pages/EditMonitor.vue
+++ b/src/pages/EditMonitor.vue
@@ -97,8 +97,8 @@