From 0a506a3d6da5fa1f88e816ce32444d1ad689a011 Mon Sep 17 00:00:00 2001 From: echicken <> Date: Fri, 17 Nov 2017 15:41:15 +0000 Subject: [PATCH] Restrict bot command to level 90. Use sysop response semaphore files if queue method is disabled. --- xtrn/chat_pager/ircbot/pager.js | 20 ++++++++++++++++---- xtrn/chat_pager/page_sysop.js | 21 +++++++++++++++++---- 2 files changed, 33 insertions(+), 8 deletions(-) diff --git a/xtrn/chat_pager/ircbot/pager.js b/xtrn/chat_pager/ircbot/pager.js index 43a7c2b4c5..857a309a07 100644 --- a/xtrn/chat_pager/ircbot/pager.js +++ b/xtrn/chat_pager/ircbot/pager.js @@ -23,7 +23,9 @@ var settings = load_settings(fullpath(this.dir + '../settings.ini')); if (bot_cfg !== null && settings !== null) { - var queue = new Queue(settings.queue.queue_name); + if (!settings.queue.disabled) { + var queue = new Queue(settings.queue.queue_name); + } var timer = new Timer(); var scanner = new Scanner(settings.scanner); var messages = []; @@ -58,11 +60,21 @@ if (bot_cfg !== null && settings !== null) { } } - Bot_Commands["CHAT"] = new Bot_Command(0, false, false); + Bot_Commands["CHAT"] = new Bot_Command(90, false, false); Bot_Commands["CHAT"].usage = get_cmd_prefix() + "!chat [node]"; Bot_Commands["CHAT"].command = function (target, onick, ouh, srv, lbl, cmd) { - var valname = "chat_" + cmd[1]; - queue.write(system.timer, valname); + if (cmd.length > 0) { + var nn = parseInt(cmd[1]); + if (isNaN(nn) || nn < 1 || nn > system.node_list.length) { + return; + } else if (!settings.queue.disabled) { + var valname = "chat_" + cmd[1]; + queue.write(system.timer, valname); + } else { + var valname = system.temp_dir + "syspage_response." + cmd[1]; + file_touch(valname); + } + } } } else { diff --git a/xtrn/chat_pager/page_sysop.js b/xtrn/chat_pager/page_sysop.js index 083466c84a..6159bcb57b 100644 --- a/xtrn/chat_pager/page_sysop.js +++ b/xtrn/chat_pager/page_sysop.js @@ -3,6 +3,8 @@ load('frame.js'); load('progress-bar.js'); load(js.exec_dir + 'lib.js'); +// Flush any existing named values (valname) and return the last one +// (I haven't checked yet, but I assume Queue is FIFO) function get_last_queued_value(queue, valname) { var val, temp_val; while (typeof (temp_val = queue.read(valname)) !== 'undefined') { @@ -11,9 +13,17 @@ function get_last_queued_value(queue, valname) { return val; } +function get_node_response_time(filename) { + return (file_exists(filename) ? (file_date(filename) * 1000) : null); +} + function await_page_response(settings, frame) { - var queue = new Queue(settings.queue.queue_name); - var valname = "chat_" + bbs.node_num; + if (!settings.queue.disabled) { + var queue = new Queue(settings.queue.queue_name); + var valname = "chat_" + bbs.node_num; + } else { + var valname = system.temp_dir + 'syspage_response.' + bbs.node_num; + } var answered = false; var stime = system.timer; var utime = system.timer; @@ -29,10 +39,13 @@ function await_page_response(settings, frame) { progress_bar.set_progress( (((now - stime) * 1000) / settings.terminal.wait_time) * 100 ); - progress_bar.cycle(); utime = now; } - var val = get_last_queued_value(queue, valname); + var val = ( + !settings.queue.disabled + ? get_last_queued_value(queue, valname) + : get_node_response_time(valname) + ); if (typeof val == 'number' && val > stime) answered = true; frame.cycle(); bbs.node_sync(); -- GitLab