diff --git a/exec/slog.js b/exec/slog.js index 17e4bfdee6bfdaef34e0f3c5d68c7acac89c347d..ceab18d1f74f65f5cb85ec9777e82320d1bc595e 100644 --- a/exec/slog.js +++ b/exec/slog.js @@ -1,58 +1,91 @@ -writeln("\r\nSynchronet System/Node Statistics Log Viewer v1.02\n"); - -var reverse = false; -var pause = false; - -while(argv.length > 0) { - switch(argv.shift().toUpperCase()) { - case "/REVERSE": - case "/R": - reverse = true; - break; - case "/PAUSE": - case "/P": - pause = true; - break; +(function() { + writeln("\r\nSynchronet System/Node Statistics Log Viewer v1.02\n"); + + var sfile = new File(system.ctrl_dir + "csts.dab"); + var list = []; + var reverse = false; + var show_totals = false; + + var total_logons = 0; + var total_timeon = 0; + var total_uls = 0; + var total_ulb = 0; + var total_dls = 0; + var total_dlb = 0; + var total_posts = 0; + var total_emails = 0; + var total_fbacks = 0; + + while(argv.length > 0) { + switch(argv.shift().toUpperCase()) { + case "/REVERSE": + case "/R": + reverse = true; + break; + case "/TOTALS": + case "/T": + show_totals = true; + break; + } } -} - - -var sfile = new File(system.ctrl_dir + "csts.dab"); -var list = []; - -if(!file_exists(sfile.name)) - throw(sfile.name + " does not exist"); -if(!sfile.open('r+')) - throw("error opening " + sfile.name); - -while(sfile.position <= file_size(sfile.name) - 40) { - - timestamp = sfile.readBin(); - logons = sfile.readBin(); - timeon = sfile.readBin(); - uls = sfile.readBin(); - ulb = sfile.readBin(); - dls = sfile.readBin(); - dlb = sfile.readBin(); - posts = sfile.readBin(); - emails = sfile.readBin(); - fbacks = sfile.readBin(); - - yesterday = timestamp-(24*60*60); /* 1 day less than stamp */ - - list.unshift( - strftime("%x",yesterday) + - format(" T:%5lu L:%3lu P:%3lu E:%3lu F:%3lu U:%6luk %3lu D:%6luk %3lu", - timeon,logons,posts,emails,fbacks,ulb/1024,uls,dlb/1024,dls) - ); -} - -if(reverse) - list.reverse(); - -for each(var i in list) - print(i); - -sfile.close(); + + if(!file_exists(sfile.name)) + throw(sfile.name + " does not exist"); + if(!sfile.open('r+b')) + throw("error opening " + sfile.name); + + while(sfile.position <= file_size(sfile.name) - 40) { + + var timestamp = sfile.readBin(); + var logons = sfile.readBin(); + var timeon = sfile.readBin(); + var uls = sfile.readBin(); + var ulb = sfile.readBin(); + var dls = sfile.readBin(); + var dlb = sfile.readBin(); + var posts = sfile.readBin(); + var emails = sfile.readBin(); + var fbacks = sfile.readBin(); + + if(show_totals) { + total_logons += logons; + total_timeon += timeon; + total_uls += uls; + total_ulb += uls; + total_dls += uls; + total_dlb += uls; + total_posts += posts; + total_emails += emails; + total_fbacks += fbacks; + } + + list.unshift( + strftime("%x",timestamp-(24*60*60)) + + format(" T:%5lu L:%3lu P:%3lu E:%3lu F:%3lu U:%6luk %3lu D:%6luk %3lu", + timeon,logons,posts,emails,fbacks,ulb/1024,uls,dlb/1024,dls) + ); + } + + sfile.close(); + + if(reverse) + list.reverse(); + + for each(var i in list) + writeln(i); + + if(show_totals) { + writeln(""); + writeln(format("%-*s: %d",20,"Total Time",total_timeon)); + writeln(format("%-*s: %d",20,"Total Logons",total_logons)); + writeln(format("%-*s: %d - %dk",20,"Total U/L",total_uls, total_ulb)); + writeln(format("%-*s: %d - %dk",20,"Total D/L",total_dls, total_dlb)); + writeln(format("%-*s: %d",20,"Total Posts",total_posts)); + writeln(format("%-*s: %d",20,"Total E-Mails",total_emails)); + writeln(format("%-*s: %d",20,"Total Feedback",total_fbacks)); + } + + writeln(""); +})();