diff --git a/exec/chat_sec.js b/exec/chat_sec.js index 30adad7bdbd7ac238d932d0eabc4078e5c697977..9f41eeff0273bbea06be5a2c2b092175df90cc46 100644 --- a/exec/chat_sec.js +++ b/exec/chat_sec.js @@ -1,35 +1,38 @@ -// chat_sec.js +// $Id$ // Chat Section for any/all Synchronet command shells -// $Id$ +"use strict"; -load("sbbsdefs.js"); -load("nodedefs.js"); +require("sbbsdefs.js", 'USER_EXPERT'); +require("nodedefs.js", 'NODE_CHAT'); +require("text.js", 'R_Chat'); // Over-ride these default values by creating/modifying the [chat_sec] section in your ctrl/modopts.ini file -var irc_server = "irc.synchro.net 6667"; -var irc_channel = "#Synchronet" -var irc_seclevel = 90; // Minimum security level required to change the IRC server being connected to -var finger = true; var options = load("modopts.js", "chat_sec"); -if (options) { - if (options.irc_server) - irc_server = options.irc_server; - if (options.irc_channel) - irc_channel = options.irc_channel; - if (options.irc_seclevel) - irc_seclevel = options.irc_seclevel; - if (options.finger != undefined) - finger = options.finger; -} -var cmdkey; +if (!options) + options = {}; +if (options.irc === undefined) + options.irc = true; +if (options.irc_server === undefined) + options.irc_server = "irc.synchro.net 6667"; +if (options.irc_channel === undefined) + options.irc_channel = "#Synchronet"; +if (options.irc_seclevel === undefined) + options.irc_seclevel = 90; +if (options.finger === undefined) + options.finger = true; -if(user.compare_ars("rest C")) { - write("\r\nYou can't chat.\r\n"); +if(user.security.restrictions & UFLAG_C) { + write(bbs.text(R_Chat)); exit(0); } +function on_or_off(on) +{ + return bbs.text(on ? ON : OFF); +} + // Set continue point for main menu commands menu: while(1) { @@ -41,57 +44,56 @@ while(1) { } // Update node status - bbs.node_action=NODE_CHAT; + bbs.node_action = NODE_CHAT; bbs.nodesync(); - write("\r\n\001_\1y\001hChat: \001n"); + write("\r\n\x01_\x01y\x01hChat: \x01n"); - var keys = "ACDIJPQRST?\r"; - if(finger) + var keys = "ACDJLPQRST?\r"; + if(options.irc) + keys += "I"; + if(options.finger) keys += "F"; - switch(cmdkey=console.getkeys(keys,K_UPPER)) { + switch(console.getkeys(keys, K_UPPER)) { case "S": var val = user.chat_settings ^= CHAT_SPLITP; - write("\001n\r\nPrivate split-screen chat is now: \001h"); - write((val & CHAT_SPLITP)?"ON\001n":"OFF\001n"); - writeln(""); + write("\x01n\r\nPrivate split-screen chat is now: \x01h"); + writeln(on_or_off(val & CHAT_SPLITP)); break; case "A": var val = user.chat_settings ^= CHAT_NOACT; - write("\001n\r\nNode activity alerts are now: \001h"); - write((val & CHAT_NOACT)?"OFF\001n":"ON\001n"); + write("\x01n\r\nNode activity alerts are now: \x01h"); + writeln(on_or_off(!(val & CHAT_NOACT))); system.node_list[bbs.node_num-1].misc ^= NODE_AOFF; - writeln(""); break; case 'D': var val = user.chat_settings ^= CHAT_NOPAGE; - write("\001n\r\nNode chat-page ability is now: \001h"); - write((val & CHAT_NOPAGE)?"OFF\001n":"ON\001n"); + write("\x01n\r\nUser chat/messaging availability is now: \x01h"); + writeln(on_or_off(!(val & CHAT_NOPAGE))); system.node_list[bbs.node_num-1].misc ^= NODE_POFF; - writeln(""); break; case 'F': writeln(""); - bbs.exec("?finger"); + load("finger.js"); break; case 'I': writeln(""); - bbs.exec("?sbbsimsg"); + load("sbbsimsg.js"); break; case 'R': - { - var server=irc_server; - if(user.security.level >= irc_seclevel || user.security.exemptions&UFLAG_C) { - write("\r\n\001n\001y\001hIRC Server: "); - server=console.getstr(irc_server, 40, K_EDIT|K_LINE|K_AUTODEL); - if(console.aborted) - break; - } - write("\r\n\001n\001y\001hIRC Channel: "); - var channel=console.getstr(irc_channel, 40, K_EDIT|K_LINE|K_AUTODEL); - if(!console.aborted) - bbs.exec("?irc -a " + server + " " + channel); + { + var server=options.irc_server; + if(user.security.level >= options.irc_seclevel || user.security.exemptions&UFLAG_C) { + write("\r\n\x01n\x01y\x01hIRC Server: "); + server=console.getstr(options.irc_server, 40, K_EDIT|K_LINE|K_AUTODEL); + if(console.aborted) + break; } + write("\r\n\x01n\x01y\x01hIRC Channel: "); + var channel=console.getstr(options.irc_channel, 40, K_EDIT|K_LINE|K_AUTODEL); + if(!console.aborted) + bbs.exec("?irc -a " + server + " " + channel); // can't be load()ed because it calls exit() break; + } case 'J': bbs.multinode_chat(); break;