summaryrefslogtreecommitdiffstats
path: root/server/config.js
diff options
context:
space:
mode:
Diffstat (limited to 'server/config.js')
-rw-r--r--server/config.js46
1 files changed, 46 insertions, 0 deletions
diff --git a/server/config.js b/server/config.js
new file mode 100644
index 0000000..515b904
--- /dev/null
+++ b/server/config.js
@@ -0,0 +1,46 @@
+const isFreeBSD = /^freebsd/.test(process.platform);
+
+// Interop with browser
+const args = (typeof process !== "undefined") ? require("args-parser")(process.argv) : {};
+
+// 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 = isFreeBSD ? null : process.env.HOST;
+const hostname = args.host || process.env.UPTIME_KUMA_HOST || hostEnv;
+
+const port = [ args.port, process.env.UPTIME_KUMA_PORT, process.env.PORT, 3001 ]
+ .map(portValue => parseInt(portValue))
+ .find(portValue => !isNaN(portValue));
+
+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;
+const sslKeyPassphrase = args["ssl-key-passphrase"] || process.env.UPTIME_KUMA_SSL_KEY_PASSPHRASE || process.env.SSL_KEY_PASSPHRASE || undefined;
+
+const isSSL = sslKey && sslCert;
+
+/**
+ * Get the local WebSocket URL
+ * @returns {string} The local WebSocket URL
+ */
+function getLocalWebSocketURL() {
+ const protocol = isSSL ? "wss" : "ws";
+ const host = hostname || "localhost";
+ return `${protocol}://${host}:${port}`;
+}
+
+const localWebSocketURL = getLocalWebSocketURL();
+
+const demoMode = args["demo"] || false;
+
+module.exports = {
+ args,
+ hostname,
+ port,
+ sslKey,
+ sslCert,
+ sslKeyPassphrase,
+ isSSL,
+ localWebSocketURL,
+ demoMode,
+};