diff --git a/server/routers/api-router.js b/server/routers/api-router.js index 0b4982db..8b5d36f2 100644 --- a/server/routers/api-router.js +++ b/server/routers/api-router.js @@ -10,6 +10,7 @@ const { UptimeKumaServer } = require("../uptime-kuma-server"); const { UptimeCacheList } = require("../uptime-cache-list"); const { makeBadge } = require("badge-maker"); const { badgeConstants } = require("../config"); +const { Prometheus } = require("../prometheus"); let router = express.Router(); @@ -37,7 +38,7 @@ router.get("/api/push/:pushToken", async (request, response) => { let pushToken = request.params.pushToken; let msg = request.query.msg || "OK"; - let ping = request.query.ping || null; + let ping = parseInt(request.query.ping) || null; let statusString = request.query.status || "up"; let status = (statusString === "up") ? UP : DOWN; @@ -89,6 +90,7 @@ router.get("/api/push/:pushToken", async (request, response) => { io.to(monitor.user_id).emit("heartbeat", bean.toJSON()); UptimeCacheList.clearCache(monitor.id); Monitor.sendStats(io, monitor.id, monitor.user_id); + new Prometheus(monitor).update(bean, undefined); response.json({ ok: true, diff --git a/server/socket-handlers/status-page-socket-handler.js b/server/socket-handlers/status-page-socket-handler.js index 717aba9c..411bda55 100644 --- a/server/socket-handlers/status-page-socket-handler.js +++ b/server/socket-handlers/status-page-socket-handler.js @@ -276,7 +276,7 @@ module.exports.statusPageSocketHandler = (socket) => { let statusPage = R.dispense("status_page"); statusPage.slug = slug; statusPage.title = title; - statusPage.theme = "light"; + statusPage.theme = "auto"; statusPage.icon = ""; await R.store(statusPage); diff --git a/src/mixins/theme.js b/src/mixins/theme.js index 8d225267..2f7867df 100644 --- a/src/mixins/theme.js +++ b/src/mixins/theme.js @@ -39,6 +39,9 @@ export default { } if (this.path.startsWith("/status-page") || this.path.startsWith("/status")) { + if (this.statusPageTheme === "auto") { + return this.system; + } return this.statusPageTheme; } else { if (this.userTheme === "auto") { diff --git a/src/pages/EditMonitor.vue b/src/pages/EditMonitor.vue index 0b8e5507..997faf95 100644 --- a/src/pages/EditMonitor.vue +++ b/src/pages/EditMonitor.vue @@ -283,13 +283,13 @@
@@ -301,7 +301,7 @@ @@ -311,7 +311,7 @@
@@ -692,6 +692,13 @@ export default { ipOrHostnameRegexPattern: hostNameRegexPattern(), mqttIpOrHostnameRegexPattern: hostNameRegexPattern(true), gameList: null, + connectionStringTemplates: { + "sqlserver": "Server=,;Database=;User Id=;Password=;Encrypt=;TrustServerCertificate=;Connection Timeout=", + "postgres": "postgres://username:password@host:port/database", + "mysql": "mysql://username:password@host:port/database", + "redis": "redis://user:password@host:port", + "mongodb": "mongodb://username:password@host:port/database", + } }; }, @@ -853,6 +860,24 @@ message HealthCheckResponse { } }); } + + // Set default database connection string if empty or it is a template from another database monitor type + for (let monitorType in this.connectionStringTemplates) { + if (this.monitor.type === monitorType) { + let isTemplate = false; + for (let key in this.connectionStringTemplates) { + if (this.monitor.databaseConnectionString === this.connectionStringTemplates[key]) { + isTemplate = true; + break; + } + } + if (!this.monitor.databaseConnectionString || isTemplate) { + this.monitor.databaseConnectionString = this.connectionStringTemplates[monitorType]; + } + break; + } + } + }, currentGameObject(newGameObject, previousGameObject) { @@ -860,8 +885,7 @@ message HealthCheckResponse { this.monitor.port = newGameObject.options.port; } this.monitor.game = newGameObject.keys[0]; - } - + }, }, mounted() { this.init(); diff --git a/src/pages/StatusPage.vue b/src/pages/StatusPage.vue index defa458e..3c8bddc8 100644 --- a/src/pages/StatusPage.vue +++ b/src/pages/StatusPage.vue @@ -34,9 +34,13 @@ -
- - +
+ +