diff --git a/server/routers/api-router.js b/server/routers/api-router.js index 04da8a95..55bf8ee1 100644 --- a/server/routers/api-router.js +++ b/server/routers/api-router.js @@ -133,10 +133,13 @@ router.post("/api", headerAuthMiddleware, async (request, response) => { const requestData = request.body; - console.log(requestData); + let hostname = "localhost"; + if (server.hostname) { + hostname = server.hostname; + } + const protocol = (server.isHTTPS) ? "wss" : "ws"; - // TODO: should not hard coded - let wsURL = "ws://localhost:3001"; + let wsURL = `${protocol}://${hostname}:${server.port}`; const socket = ioClient(wsURL, { transports: [ "websocket" ], diff --git a/server/server.js b/server/server.js index e46a45fc..65319f2e 100644 --- a/server/server.js +++ b/server/server.js @@ -79,7 +79,7 @@ log.info("server", "Importing this project modules"); log.debug("server", "Importing Monitor"); const Monitor = require("./model/monitor"); log.debug("server", "Importing Settings"); -const { getSettings, setSettings, setting, initJWTSecret, checkLogin, FBSD, doubleCheckPassword, startE2eTests, +const { getSettings, setSettings, setting, initJWTSecret, checkLogin, doubleCheckPassword, startE2eTests, allowDevAllOrigin } = require("./util-server"); @@ -104,20 +104,6 @@ const passwordHash = require("./password-hash"); const checkVersion = require("./check-version"); log.info("server", "Version: " + checkVersion.version); -// If host is omitted, the server will accept connections on the unspecified IPv6 address (::) when IPv6 is available and the unspecified IPv4 address (0.0.0.0) otherwise. -// Dual-stack support for (::) -// Also read HOST if not FreeBSD, as HOST is a system environment variable in FreeBSD -let hostEnv = FBSD ? null : process.env.HOST; -let hostname = args.host || process.env.UPTIME_KUMA_HOST || hostEnv; - -if (hostname) { - log.info("server", "Custom hostname: " + hostname); -} - -const port = [ args.port, process.env.UPTIME_KUMA_PORT, process.env.PORT, 3001 ] - .map(portValue => parseInt(portValue)) - .find(portValue => !isNaN(portValue)); - const disableFrameSameOrigin = !!process.env.UPTIME_KUMA_DISABLE_FRAME_SAMEORIGIN || args["disable-frame-sameorigin"] || false; const cloudflaredToken = args["cloudflared-token"] || process.env.UPTIME_KUMA_CLOUDFLARED_TOKEN || undefined; @@ -182,7 +168,7 @@ let needSetup = false; let setupDatabase = new SetupDatabase(args, server); if (setupDatabase.isNeedSetup()) { // Hold here and start a special setup page until user choose a database type - await setupDatabase.start(hostname, port); + await setupDatabase.start(server.hostname, server.port); } // Connect to database @@ -1749,11 +1735,11 @@ let needSetup = false; server.start(); - server.httpServer.listen(port, hostname, () => { - if (hostname) { - log.info("server", `Listening on ${hostname}:${port}`); + server.httpServer.listen(server.port, server.hostname, () => { + if (server.hostname) { + log.info("server", `Listening on ${server.hostname}:${server.port}`); } else { - log.info("server", `Listening on ${port}`); + log.info("server", `Listening on ${server.port}`); } startMonitors(); checkVersion.startInterval(); diff --git a/server/uptime-kuma-server.js b/server/uptime-kuma-server.js index da3d08bd..26fa7399 100644 --- a/server/uptime-kuma-server.js +++ b/server/uptime-kuma-server.js @@ -12,6 +12,7 @@ const { Settings } = require("./settings"); const dayjs = require("dayjs"); const childProcess = require("child_process"); const path = require("path"); +const { FBSD } = require("./util-server"); // DO NOT IMPORT HERE IF THE MODULES USED `UptimeKumaServer.getInstance()`, put at the bottom of this file instead. /** @@ -61,6 +62,23 @@ class UptimeKumaServer { */ jwtSecret = null; + /** + * Port + * @type {number} + */ + port = undefined; + + /** + * Hostname + * @type {string|undefined} + */ + hostname = undefined; + + /** + * Is SSL enabled? + */ + isHTTPS = false; + /** * Get the current instance of the server if it exists, otherwise * create a new instance. @@ -78,6 +96,23 @@ class UptimeKumaServer { * @param {object} args Arguments to initialise server with */ constructor(args) { + + // Port + this.port = [ args.port, process.env.UPTIME_KUMA_PORT, process.env.PORT, 3001 ] + .map(portValue => parseInt(portValue)) + .find(portValue => !isNaN(portValue)); + + // Hostname + // If host is omitted, the server will accept connections on the unspecified IPv6 address (::) when IPv6 is available and the unspecified IPv4 address (0.0.0.0) otherwise. + // Dual-stack support for (::) + // Also read HOST if not FreeBSD, as HOST is a system environment variable in FreeBSD + let hostEnv = FBSD ? null : process.env.HOST; + this.hostname = args.host || process.env.UPTIME_KUMA_HOST || hostEnv; + + if (this.hostname) { + log.info("server", "Custom hostname: " + this.hostname); + } + // SSL const sslKey = args["ssl-key"] || process.env.UPTIME_KUMA_SSL_KEY || process.env.SSL_KEY || undefined; const sslCert = args["ssl-cert"] || process.env.UPTIME_KUMA_SSL_CERT || process.env.SSL_CERT || undefined; @@ -87,6 +122,7 @@ class UptimeKumaServer { this.app = express(); if (sslKey && sslCert) { log.info("server", "Server Type: HTTPS"); + this.isHTTPS = true; this.httpServer = https.createServer({ key: fs.readFileSync(sslKey), cert: fs.readFileSync(sslCert), @@ -94,6 +130,7 @@ class UptimeKumaServer { }, this.app); } else { log.info("server", "Server Type: HTTP"); + this.isHTTPS = false; this.httpServer = http.createServer(this.app); }