Skip to content
Snippets Groups Projects

A web-based sbbsctrl implementation

Merged Rick Parrish requested to merge Ree/sbbsctrl into master
2 unresolved threads
+ 22
17
@@ -86,19 +86,20 @@ function handle_server_message(server, subtopic, subtopic2, message, packet) {
// sbbs/+/host/+/server/+/log
// Each server/+ and event sub-topics has a log child topic where all messages of all log levels (severity) will be published as well as a grandchild topic for each log level (0-7, decreasing in severity) of logged messages.
// Easier to handle here for all servers, instead of individually in the switch statement below
try {
level = subtopic2 === undefined ? packet.properties.userProperties.level : subtopic2;
} catch {
console.log('Unable to determine ' + server + ' log level: ' + JSON.stringify({server, subtopic, subtopic2, message, packet}));
level = -1;
}
$('#' + server + 'Log').append(`<tr class="${level_to_classname(level)}"><td style="white-space: nowrap;">${new Date().toLocaleString()}</td><td align="center">${level_to_description(level)}</td><td>${message}</td></tr>`);
if ($('#' + server + 'AutoScroll').is(':checked')) {
var tableWrapper = document.getElementById(server + 'TableWrapper');
tableWrapper.scrollTop = tableWrapper.scrollHeight;
if (subtopic2 !== undefined) {
var level = subtopic2;
try {
var dateTime = timestamp_to_date(packet.properties.userProperties.time).toLocaleString();
} catch {
var dateTime = new Date().toLocaleString();
}
$('#' + server + 'Log').append(`<tr class="${level_to_classname(level)}"><td style="white-space: nowrap;">${dateTime}</td><td align="center">${level_to_description(level)}</td><td>${message}</td></tr>`);
if ($('#' + server + 'AutoScroll').is(':checked')) {
var tableWrapper = document.getElementById(server + 'TableWrapper');
tableWrapper.scrollTop = tableWrapper.scrollHeight;
}
}
return;
}
@@ -166,13 +167,13 @@ function mqtt_message(topic, message, packet) {
break;
case 'log':
var level = arr[6];
try {
level = arr[6] === undefined ? packet.properties.userProperties.level : arr[6];
var dateTime = timestamp_to_date(packet.properties.userProperties.time).toLocaleString();
} catch {
console.log('Unable to determine event log level: ' + JSON.stringify({topic, message, packet}));
level = -1;
var dateTime = new Date().toLocaleString();
}
$('#eventsLog').append(`<tr class="${level_to_classname(level)}"><td style="white-space: nowrap;">${new Date().toLocaleString()}</td><td align="center">${level_to_description(level)}</td><td>${message}</td></tr>`);
$('#eventsLog').append(`<tr class="${level_to_classname(level)}"><td style="white-space: nowrap;">${dateTime}</td><td align="center">${level_to_description(level)}</td><td>${message}</td></tr>`);
var tab = document.getElementById('eventsTab');
tab.scrollTop = tab.scrollHeight;
@@ -209,6 +210,10 @@ function mqtt_message(topic, message, packet) {
}
}
function timestamp_to_date(timestamp) {
return new Date(timestamp.slice(0, 4), timestamp.slice(4, 6) - 1, timestamp.slice(6, 8), timestamp.slice(9, 11), timestamp.slice(11, 13), timestamp.slice(13, 15))
}
function update_clients() {
$('#clientsTable').empty();
@@ -224,7 +229,7 @@ function update_clients() {
// 20230813T151452-240 Telnet 0 <unknown user> ::1 localhost 59258 18256
var arr = lines[j].split('\t');
var logonTime = new Date(arr[0].slice(0, 4), arr[0].slice(4, 6) - 1, arr[0].slice(6, 8), arr[0].slice(9, 11), arr[0].slice(11, 13), arr[0].slice(13, 15));
var logonTime = timestamp_to_date(arr[0]);
var secondsElapsed = parseInt(((new Date()).getTime() - logonTime.getTime()) / 1000, 10);
var hoursElapsed = parseInt(Math.floor(secondsElapsed / 3600), 10);
secondsElapsed -= (hoursElapsed * 3600);
Loading