diff --git a/xtrn/chat_pager/example-settings.ini b/xtrn/chat_pager/example-settings.ini index a028f0a9a07593bcc471affcd88daebe929eb8eb..e75252f60512c4aee7b720235f4e7d32a723de7e 100644 --- a/xtrn/chat_pager/example-settings.ini +++ b/xtrn/chat_pager/example-settings.ini @@ -18,3 +18,10 @@ irc_pull = true irc_server = irc.synchro.net irc_port = 6667 irc_channel = #my_bbs_channel + +[email] +enabled = true +recipients = sysop@mybbs.synchro.net,1234567890@sms.celluar.blah +from = noreply@mybbs.synchro.net +subject_format = %s is paging the sysop +body_format = %s is is paging the sysop to chat on %s diff --git a/xtrn/chat_pager/lib.js b/xtrn/chat_pager/lib.js index 0436894bebe0bacd9fccf95dc9ee05d4df376e6e..d21d3251119b8eb790ab8d54e7d7f1505c571737 100644 --- a/xtrn/chat_pager/lib.js +++ b/xtrn/chat_pager/lib.js @@ -82,3 +82,24 @@ var Scanner = function () { this.reset(); } + +function notify_via_email(settings, un) { + var usr = new User(un); + var subject = format(settings.subject_format, usr.alias); + var body = format(settings.body_format, usr.alias, system.name); + var rcpt_list = settings.recipients.split(',').map( + function (e) { return { to : e, to_net_type : 5, to_net_addr : e }; } + ); + var header = { + from : settings.from, + subject : subject, + to : rcpt_list[0].to, + to_net_type : 5, + to_net_addr : rcpt_list[0].to_net_addr + }; + rcpt_list.shift(); + var mb = new MsgBase('mail'); + mb.open(); + mb.save_msg(header, body, rcpt_list); + mb.close(); +} diff --git a/xtrn/chat_pager/page_sysop.js b/xtrn/chat_pager/page_sysop.js index 6538df15066ac93dfbcc2284fded6b1234d70a8f..79853b1b84904e0d0c569f4ac81cc80f3815a2db 100644 --- a/xtrn/chat_pager/page_sysop.js +++ b/xtrn/chat_pager/page_sysop.js @@ -8,17 +8,22 @@ function get_node_response_time(filename) { } function await_page_response(settings, frame) { + if (!settings.queue.disabled) { var queue = new Queue(settings.queue.queue_name); var valname = "chat_" + bbs.node_num; } else { var valname = system.ctrl_dir + 'syspage_response.' + bbs.node_num; } + + if (settings.email.enabled) notify_via_email(settings.email, user.number); + var answered = false; var stime = system.timer; var utime = system.timer; var progress_bar = new ProgressBar(1, 2, frame.width, frame); progress_bar.init(); + while ( (system.timer - stime) * 1000 < settings.terminal.wait_time && console.inkey(K_NONE, 5) == '' && @@ -43,12 +48,16 @@ function await_page_response(settings, frame) { bbs.node_sync(); yield(); } + progress_bar.set_progress(100); if (frame.cycle()) { console.gotoxy(console.screen_columns, console.screen_rows); } + if (settings.queue.disabled && file_exists(valname)) file_remove(valname); + return answered; + } function main() {