From e5eca8bc43ad91d3a5ab0debee5515cf055efb1e Mon Sep 17 00:00:00 2001 From: "Rob Swindell (on Debian Linux)" <rob@synchro.net> Date: Mon, 12 Aug 2024 19:01:36 -0700 Subject: [PATCH] Add support for -v (verbose) option and modopts.ini Don't display remote host name/addr unless -v option is specified or verbosity=1 is set in modopts.ini. Allow the displayed messages to be customized or disabled as the sysop wishes via modopts.ini keys: - help_msg - connecting_msg - failed_connect_msg (e.g. set to a blank string to disable) The following settings are also now configurable via modopts.ini: - quiet (correlates with -q option) - pause (correlates with -P option) - clear (correlates with -C option) - timeout (correlates with -T option) - verbosity (correlates with -v option) ... a sysop can control the default behavior of all invocations of telgate.js or rlogin.js via a single file now (modopts.ini). The rlogin.js module will first look ing for the [rlogin] section in modopts.ini and if it doesn't exist, then [telgate] section. telgate.js just looks for the [telgate] section. For the #synchronet irc crew: Nelgin and Keyop --- exec/rlogin.js | 25 ++++++++++++++++++------- exec/telgate.js | 23 ++++++++++++++++------- 2 files changed, 34 insertions(+), 14 deletions(-) diff --git a/exec/rlogin.js b/exec/rlogin.js index 5593b57a90..c7bcb05b9b 100644 --- a/exec/rlogin.js +++ b/exec/rlogin.js @@ -9,6 +9,7 @@ // -m <telnet-gateway-mode> (Number or TG_* vars OR'd together, default: 0) // -p send current user alias and password as server and client-name values // -q don't display banner or pause prompt (quiet) +// -v increase verbosity (display remote host name/address/port in messages) // -P don't pause for user key-press // -C don't clear screen after successful session @@ -21,15 +22,21 @@ require("sbbsdefs.js", 'TG_RLOGINSWAP'); -var quiet = false; -var pause = true; -var clear = true; var mode; var addr; var client_name; var server_name; var term_type; -var timeout = 10; +var options; +if((options = load({}, "modopts.js","rlogin")) == null) { + if((options = load({}, "modopts.js","telgate")) == null) + options = {}; +} +var quiet = options.quiet === undefined ? false : options.quiet; +var pause = options.pause === undefined ? true : options.pause; +var clear = options.clear === undefined ? true : options.clear; +var timeout = options.timeout === undefined ? 10 : options.timeout; +var verbosity = options.verbosity === undefined ? 0 : options.verbosity; for(var i = 0; i < argv.length; i++) { var arg = argv[i]; @@ -60,6 +67,9 @@ for(var i = 0; i < argv.length; i++) { case 'C': clear = false; break; + case 'v': + ++verbosity; + break; case 'p': // send alias and password as expected by Synchronet client_name = user.security.password; server_name = user.alias; @@ -91,11 +101,12 @@ if(!addr) { alert(js.exec_file + ": No destination address specified"); exit(1); } +var remote_host = (verbosity > 0 ? addr : "remote host"); if(!quiet) { - write("\r\n\x01h\x01hPress \x01yCtrl-]\x01w for a control menu anytime.\r\n\r\n"); + write(options.help_msg || "\r\n\x01h\x01hPress \x01yCtrl-]\x01w for a control menu anytime.\r\n\r\n"); if(pause) console.pause(); - writeln("\x01h\x01yConnecting to: \x01w" + addr + "\x01n"); + write(format(options.connecting_msg || "\x01h\x01yConnecting to \x01w%s \x01n...\r\n", remote_host)); } mode = eval(mode); var result = bbs.rlogin_gate( @@ -107,6 +118,6 @@ var result = bbs.rlogin_gate( ,timeout ); if(result === false) - alert(js.exec_file + ": Failed to connect to: " + addr); + alert(options.failed_connect_msg || (js.exec_file + ": Failed to connect to " + remote_host)); else if(clear) console.clear(); diff --git a/exec/telgate.js b/exec/telgate.js index da83b70393..909133652a 100644 --- a/exec/telgate.js +++ b/exec/telgate.js @@ -7,6 +7,7 @@ // -T <connect-timeout-seconds> (default: 10 seconds) // -m <telnet-gateway-mode> (Number or TG_* vars OR'd together, default: 0) // -q don't display banner or pause prompt (quiet) +// -v increase verbosity (display remote host name/address/port in messages) // -P don't pause for user key-press // -C don't clear screen after successful session // -s <string-to-send after connect> (multiple may be specified) @@ -21,13 +22,17 @@ load("sbbsdefs.js"); "use strict"; -var quiet = false; -var pause = true; -var clear = true; var mode = 0; var addr; -var timeout = 10; var send = []; +var options; +if((options = load({}, "modopts.js","telgate")) == null) + options = {}; +var quiet = options.quiet === undefined ? false : options.quiet; +var pause = options.pause === undefined ? true : options.pause; +var clear = options.clear === undefined ? true : options.clear; +var timeout = options.timeout === undefined ? 10 : options.timeout; +var verbosity = options.verbosity === undefined ? 0 : options.verbosity; for(var i = 0; i < argv.length; i++) { var arg = argv[i]; @@ -52,6 +57,9 @@ for(var i = 0; i < argv.length; i++) { case 'C': clear = false; continue; + case 'v': + ++verbosity; + break; } var value = arg.length > 2 ? arg.substring(2) : argv[++i]; switch(arg[1]) { // value options @@ -76,15 +84,16 @@ if(!addr) { alert(js.exec_file + ": No destination address specified"); exit(1); } +var remote_host = (verbosity > 0 ? addr : "remote host"); if(!quiet) { - write("\r\n\x01h\x01hPress \x01yCtrl-]\x01w for a control menu anytime.\r\n\r\n"); + write(options.help_msg || "\r\n\x01h\x01hPress \x01yCtrl-]\x01w for a control menu anytime.\r\n\r\n"); if(pause) console.pause(); - writeln("\x01h\x01yConnecting to: \x01w" + addr + "\x01n"); + write(format(options.connecting_msg || "\x01h\x01yConnecting to \x01w%s \x01n...\r\n", remote_host)); } var result = bbs.telnet_gate(addr, mode, timeout, send); if(result === false) - alert(js.exec_file + ": Failed to connect to: " + addr); + alert(options.failed_connect_msg || (js.exec_file + ": Failed to connect to " + remote_host)); else if(clear) console.clear(); -- GitLab