// config.js const path = require("path"); const fs = require("fs"); const nodeRoot = path.dirname(require.main.filename); const configPath = path.join(nodeRoot, "config.json"); // Default configuration let config = { listen: { ip: "0.0.0.0", port: 2222, }, http: { origins: ["*:*"], }, user: { name: null, password: null, }, ssh: { host: null, port: 22, term: "xterm-color", readyTimeout: 20000, keepaliveInterval: 120000, keepaliveCountMax: 10, }, terminal: { cursorBlink: true, scrollback: 10000, tabStopWidth: 8, bellStyle: "sound", }, header: { text: null, background: "green", }, session: { name: "WebSSH2", secret: "mysecret", }, options: { challengeButton: true, allowreauth: true, }, algorithms: { kex: [ "ecdh-sha2-nistp256", "ecdh-sha2-nistp384", "ecdh-sha2-nistp521", "diffie-hellman-group-exchange-sha256", "diffie-hellman-group14-sha1", ], cipher: [ "aes128-ctr", "aes192-ctr", "aes256-ctr", "aes128-gcm", "aes128-gcm@openssh.com", "aes256-gcm", "aes256-gcm@openssh.com", "aes256-cbc", ], hmac: ["hmac-sha2-256", "hmac-sha2-512", "hmac-sha1"], compress: ["none", "zlib@openssh.com", "zlib"], }, serverlog: { client: false, server: false, }, accesslog: false, verify: false, }; try { if (fs.existsSync(configPath)) { console.log("WebSSH2 service reading config from: " + configPath); config = require("read-config-ng")(configPath); } else { console.error( "\n\nERROR: Missing config.json for webssh. Current config: " + JSON.stringify(config) ); console.error("\n See config.json.sample for details\n\n"); } } catch (err) { console.error( "\n\nERROR: Missing config.json for webssh. Current config: " + JSON.stringify(config) ); console.error("\n See config.json.sample for details\n\n"); console.error("ERROR:\n\n " + err); } module.exports = config;