Synchronet now requires the libarchive development package (e.g. libarchive-dev on Debian-based Linux distros, libarchive.org for more info) to build successfully.

Commit dd2b44e9 authored by rswindell's avatar rswindell

New module for logon list / last-few-callers.

Install (for daily maintenance) with: 'jsexec logonlist install'
parent e1888d3e
......@@ -7,8 +7,11 @@
// @format.tab-size 4, @format.use-tabs true
require("sbbsdefs.js", 'SS_RLOGIN');
require("nodedefs.js", 'NODE_QUIET');
if(!bbs.mods.avatar_lib)
bbs.mods.avatar_lib = load({}, 'avatar_lib.js');
if(!bbs.mods.logonlist_lib)
bbs.mods.logonlist_lib = load({}, 'logonlist_lib.js');
load("fonts.js", "preload", "default");
if(!bbs.mods.userprops)
bbs.mods.userprops = load({}, "userprops.js");
......@@ -158,14 +161,9 @@ if(user.security.level==99 /* Sysop logging on */
// Last few callers
console.aborted=false;
console.clear(LIGHTGRAY);
logonlst=system.data_dir + "logon.lst"
if(file_size(logonlst)<1)
printf("\1n\1g\1hYou are the first caller of the day!\r\n");
else {
printf("\1n\1g\1hLast few callers:\1n\r\n");
console.printtail(logonlst, options.last_few_callers, P_NOATCODES|P_TRUNCATE|P_NOABORT);
}
console.crlf();
bbs.exec("?logonlist -l");
if(bbs.node_status != NODE_QUIET && ((system.settings&SYS_SYSSTAT) || !user.is_sysop))
bbs.mods.logonlist_lib.add();
// Auto-message
auto_msg=system.data_dir + "msgs/auto.msg"
......
// $Id$
// Logon List module (replaces old hard-coded logon.lst)
// Install with 'jsexec logonlist install'
"use strict";
function install()
{
var maint_event = "?logonlist -m";
var cnflib = load({}, "cnflib.js");
var main_cnf = cnflib.read("main.cnf");
if(!main_cnf)
return "Failed to read main.cnf";
if(main_cnf.sys_daily == maint_event)
return true;
if(main_cnf.sys_daily)
return format("System daily event already set to: '%s'", main_cnf.sys_daily);
main_cnf.sys_daily = maint_event;
if(!cnflib.write("main.cnf", undefined, main_cnf))
return "Failed to write main.cnf";
return true;
}
if(argv.indexOf('install') >= 0)
{
var result = install();
if(result !== true)
alert(result);
exit(result === true ? 0 : 1);
}
if(!js.global.bbs) {
alert("This module must be run from the BBS");
exit(1);
}
if(!bbs.mods.logonlist_lib)
bbs.mods.logonlist_lib = load({}, 'logonlist_lib.js');
var options = load("modopts.js", "logonlist");
if(!options)
options = {};
if(options.last_few_callers === undefined)
options.last_few_callers = 4;
if(options.backup_level === undefined)
options.backup_level = 10;
if(argv.indexOf('-m') >= 0) { // maintenance (daily)
bbs.mods.logonlist_lib.maint(options.backup_level);
exit();
}
require("text.js", 'LastFewCallersFmt');
var days_ago = 0;
var day = options.today || "Today";
if(argv.indexOf('-y') >= 0)
days_ago = 1, day = options.yesterday || "Yesterday";
// Returns true on success, string on error
function print(hdr, num, days_ago)
{
var list = bbs.mods.logonlist_lib.get(num, days_ago);
if(typeof list != 'object' || !list.length)
return false;
console.print(hdr);
for(var i in list) {
var record = list[i];
var date = new Date(record.time * 1000);
console.print(format(bbs.text(LastFewCallersFmt)
,record.node
,record.total
,record.user.alias
,record.user.location
,date.getHours()
,date.getMinutes()
,record.user.connection
,record.user.stats.logons_today
));
}
return true;
}
if(argv.indexOf('-l') >= 0) { // Last few callers?
if(!this.print(options.last_few_callers_msg || "\x01n\x01g\x01hLast few callers:\x01n\r\n"
,-options.last_few_callers))
console.print(options.first_caller_msg || "\x01n\x01g\x01hYou are the first caller of the day!");
console.crlf();
} else {
if(!this.print(format(options.logons_header_fmt || "\x01n\x01h\x01y\r\nLogons %s:\r\n", day)
,/* all: */0, days_ago))
console.print(format(options.noone_logged_on_fmt || "\r\nNo one logged on %s.", day.toLowerCase()));
console.crlf();
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment