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 ,
} ;