You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.6 KiB
47 lines
1.6 KiB
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,
|
|
};
|