From afd0ae6428ab6627cd14d751df00d5f0c6e63518 Mon Sep 17 00:00:00 2001 From: Nathan Neulinger <nneul@neulinger.org> Date: Fri, 27 Dec 2024 14:21:18 -0600 Subject: [PATCH 1/4] Initial support for setting a server identifier --- server/client.js | 1 + server/notification-providers/slack.js | 4 ++++ server/notification-providers/smtp.js | 5 +++++ src/components/settings/General.vue | 21 +++++++++++++++++++++ src/layouts/Layout.vue | 18 +++++++++++++++--- src/mixins/public.js | 12 ++++++++++++ src/pages/Setup.vue | 2 +- src/pages/SetupDatabase.vue | 2 +- 8 files changed, 60 insertions(+), 5 deletions(-) diff --git a/server/client.js b/server/client.js index 72f0a4e8e..421f89441 100644 --- a/server/client.js +++ b/server/client.js @@ -160,6 +160,7 @@ async function sendInfo(socket, hideVersion = false) { isContainer, dbType, primaryBaseURL: await setting("primaryBaseURL"), + serverIdentifier: await setting("serverIdentifier"), serverTimezone: await server.getTimezone(), serverTimezoneOffset: server.getTimezoneOffset(), }); diff --git a/server/notification-providers/slack.js b/server/notification-providers/slack.js index 5e25a1fbc..202aef12b 100644 --- a/server/notification-providers/slack.js +++ b/server/notification-providers/slack.js @@ -142,8 +142,12 @@ class Slack extends NotificationProvider { } const baseURL = await setting("primaryBaseURL"); + const serverIdentifier = await setting("serverIdentifier"); const title = "Uptime Kuma Alert"; + if (serverIdentifier) { + title = title + " (" + serverIdentifier + ")" + } let data = { "channel": notification.slackchannel, "username": notification.slackusername, diff --git a/server/notification-providers/smtp.js b/server/notification-providers/smtp.js index 9f3defa5e..4e614fa06 100644 --- a/server/notification-providers/smtp.js +++ b/server/notification-providers/smtp.js @@ -46,6 +46,11 @@ class SMTP extends NotificationProvider { let body = msg; if (heartbeatJSON) { body = `${msg}\nTime (${heartbeatJSON["timezone"]}): ${heartbeatJSON["localDateTime"]}`; + + const serverIdentifier = await setting("serverIdentifier"); + if (serverIdentifier) { + body = body + `\nServer Identifier: ${serverIdentifier}` + } } // subject and body are templated if ((monitorJSON && heartbeatJSON) || msg.endsWith("Testing")) { diff --git a/src/components/settings/General.vue b/src/components/settings/General.vue index 487c3ba3a..82df5e958 100644 --- a/src/components/settings/General.vue +++ b/src/components/settings/General.vue @@ -132,6 +132,27 @@ <div class="form-text"></div> </div> + <!-- Server Identifier --> + <div class="mb-4"> + <label class="form-label" for="serverIdentifier"> + {{ $t("Server Identifier") }} + </label> + + <div class="input-group mb-3"> + <input + id="serverIdentifier" + v-model="settings.serverIdentifier" + class="form-control" + name="serverIdentifier" + placeholder="" + pattern=".+" + autocomplete="new-password" + /> + </div> + + <div class="form-text"></div> + </div> + <!-- Steam API Key --> <div class="mb-4"> <label class="form-label" for="steamAPIKey"> diff --git a/src/layouts/Layout.vue b/src/layouts/Layout.vue index 9faedf589..2fe7d4020 100644 --- a/src/layouts/Layout.vue +++ b/src/layouts/Layout.vue @@ -13,7 +13,7 @@ <header v-if="! $root.isMobile" class="d-flex flex-wrap justify-content-center py-3 mb-3 border-bottom"> <router-link to="/dashboard" class="d-flex align-items-center mb-3 mb-md-0 me-md-auto text-dark text-decoration-none"> <object class="bi me-2 ms-4" width="40" height="40" data="/icon.svg" /> - <span class="fs-4 title">{{ $t("Uptime Kuma") }}</span> + <span class="fs-4 title">{{ $t("Uptime Kuma") }}{{ $root.serverIdentifierSuffix }}</span> </router-link> <a v-if="hasNewVersion" target="_blank" href="https://github.com/louislam/uptime-kuma/releases" class="btn btn-info me-3"> @@ -85,7 +85,7 @@ <header v-else class="d-flex flex-wrap justify-content-center pt-2 pb-2 mb-3"> <router-link to="/dashboard" class="d-flex align-items-center text-dark text-decoration-none"> <object class="bi" width="40" height="40" data="/icon.svg" /> - <span class="fs-4 title ms-2">Uptime Kuma</span> + <span class="fs-4 title ms-2">{{ $t("Uptime Kuma") }}{{ $root.serverIdentifierSuffix }}</span> </router-link> </header> @@ -170,7 +170,11 @@ export default { }, watch: { - + $route(to) { + if (this.serverIdentifierSuffix) { + this.updateTitle("Uptime Kuma" + this.$root.serverIdentifierSuffix); + } + } }, mounted() { @@ -188,6 +192,10 @@ export default { if (this.toastContainer != null) { this.toastContainerObserver.observe(this.toastContainer, { childList: true }); } + + if (this.$root.serverIdentifierSuffix) { + this.updateTitle("Uptime Kuma" + this.$root.serverIdentifierSuffix); + } }, beforeUnmount() { @@ -201,6 +209,10 @@ export default { */ clearToasts() { toast.clear(); + }, + + updateTitle(title) { + document.title = title; } }, diff --git a/src/mixins/public.js b/src/mixins/public.js index c87bfb358..f809a09c1 100644 --- a/src/mixins/public.js +++ b/src/mixins/public.js @@ -51,5 +51,17 @@ export default { return location.protocol + "//" + location.host; } }, + + serverIdentifierSuffix() { + if (this.$root.info.serverIdentifier) { + return " (" + this.$root.info.serverIdentifier + ")"; + } + + if (env === "development" || localStorage.dev === "dev") { + return " (dev)"; + } else { + return ""; + } + }, } }; diff --git a/src/pages/Setup.vue b/src/pages/Setup.vue index f681b7a82..f88758ce7 100644 --- a/src/pages/Setup.vue +++ b/src/pages/Setup.vue @@ -5,7 +5,7 @@ <div> <object width="64" height="64" data="/icon.svg" /> <div style="font-size: 28px; font-weight: bold; margin-top: 5px;"> - Uptime Kuma + {{ $t("Uptime Kuma") }} </div> </div> diff --git a/src/pages/SetupDatabase.vue b/src/pages/SetupDatabase.vue index 81738a98b..f4e6963b7 100644 --- a/src/pages/SetupDatabase.vue +++ b/src/pages/SetupDatabase.vue @@ -4,7 +4,7 @@ <div> <object width="64" height="64" data="/icon.svg" /> <div style="font-size: 28px; font-weight: bold; margin-top: 5px;"> - Uptime Kuma + {{ $t("Uptime Kuma") }} </div> </div> From 61629cd963f5c2522d92202b85c5854f8b6d5c74 Mon Sep 17 00:00:00 2001 From: Nathan Neulinger <nneul@neulinger.org> Date: Fri, 27 Dec 2024 14:34:18 -0600 Subject: [PATCH 2/4] Add description --- package-lock.json | 5 ++--- src/components/settings/General.vue | 4 +++- src/lang/en.json | 2 ++ 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8d3f58b4d..ac8d7961d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "uptime-kuma", - "version": "2.0.0-beta.0", + "version": "2.0.0-beta.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "uptime-kuma", - "version": "2.0.0-beta.0", + "version": "2.0.0-beta.1", "license": "MIT", "dependencies": { "@grpc/grpc-js": "~1.8.22", @@ -8332,7 +8332,6 @@ "integrity": "sha512-3/CE4aJX7LNEiE3i6FeodHmI/38GZtWCsAtsymScmzYapx8q1nVVb+eLcLSzATmCPXw5pT4TqVs1E0OmxAd9tw==", "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", "dev": true, - "license": "MIT", "dependencies": { "@eslint/eslintrc": "^1.2.2", "@humanwhocodes/config-array": "^0.9.2", diff --git a/src/components/settings/General.vue b/src/components/settings/General.vue index 82df5e958..3dbd8e950 100644 --- a/src/components/settings/General.vue +++ b/src/components/settings/General.vue @@ -150,7 +150,9 @@ /> </div> - <div class="form-text"></div> + <div class="form-text"> + {{ $t("serverIdentifierDescription") }} + </div> </div> <!-- Steam API Key --> diff --git a/src/lang/en.json b/src/lang/en.json index e215f1031..22babe20e 100644 --- a/src/lang/en.json +++ b/src/lang/en.json @@ -16,6 +16,8 @@ "General": "General", "Game": "Game", "Primary Base URL": "Primary Base URL", + "serverIdentifier": "Server Identifier", + "serverIdentifierDescription": "If provided, this will be appended in parentheses after Uptime Kuma in UI and notifications", "Version": "Version", "Check Update On GitHub": "Check Update On GitHub", "List": "List", From 0492276601e1bca47e04f10680d55bebd5d8ced7 Mon Sep 17 00:00:00 2001 From: Nathan Neulinger <nneul@neulinger.org> Date: Fri, 27 Dec 2024 14:46:41 -0600 Subject: [PATCH 3/4] clean up lint complaints --- server/notification-providers/slack.js | 4 ++-- server/notification-providers/smtp.js | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/server/notification-providers/slack.js b/server/notification-providers/slack.js index 202aef12b..3566fb7ef 100644 --- a/server/notification-providers/slack.js +++ b/server/notification-providers/slack.js @@ -144,9 +144,9 @@ class Slack extends NotificationProvider { const baseURL = await setting("primaryBaseURL"); const serverIdentifier = await setting("serverIdentifier"); - const title = "Uptime Kuma Alert"; + let title = "Uptime Kuma Alert"; if (serverIdentifier) { - title = title + " (" + serverIdentifier + ")" + title = title + " (" + serverIdentifier + ")"; } let data = { "channel": notification.slackchannel, diff --git a/server/notification-providers/smtp.js b/server/notification-providers/smtp.js index 4e614fa06..a62973bd7 100644 --- a/server/notification-providers/smtp.js +++ b/server/notification-providers/smtp.js @@ -1,5 +1,6 @@ const nodemailer = require("nodemailer"); const NotificationProvider = require("./notification-provider"); +const { setSettings, setting } = require("../util-server"); const { DOWN } = require("../../src/util"); const { Liquid } = require("liquidjs"); @@ -49,7 +50,7 @@ class SMTP extends NotificationProvider { const serverIdentifier = await setting("serverIdentifier"); if (serverIdentifier) { - body = body + `\nServer Identifier: ${serverIdentifier}` + body = body + `\nServer Identifier: ${serverIdentifier}`; } } // subject and body are templated From a8a8dcf1343925c2aa12a0cca11d7106c9c81342 Mon Sep 17 00:00:00 2001 From: Nathan Neulinger <nneul@neulinger.org> Date: Fri, 27 Dec 2024 14:49:25 -0600 Subject: [PATCH 4/4] remove unused --- server/notification-providers/smtp.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/notification-providers/smtp.js b/server/notification-providers/smtp.js index a62973bd7..2e2815024 100644 --- a/server/notification-providers/smtp.js +++ b/server/notification-providers/smtp.js @@ -1,6 +1,6 @@ const nodemailer = require("nodemailer"); const NotificationProvider = require("./notification-provider"); -const { setSettings, setting } = require("../util-server"); +const { setting } = require("../util-server"); const { DOWN } = require("../../src/util"); const { Liquid } = require("liquidjs");