fix start and end times for recordings

Signed-off-by: si458 <simonsmith5521@gmail.com>

si458 committed Apr 16, 2025 at 18:07 UTC 1cd2bb26f07251d903943c4efcd58c3381af6a7b
3 files changed +10 -10
meshrelay.js
+6 -6
@@ -90,7 +90,7 @@ function recordingEntry (logfile, type, flags, data, func, tag) {
90 out = data + '\r\n' + utcDate.toUTCString() + ', ' + "<<<START>>>" + '\r\n';
91 } else if (type == 3) {
92 // End of log
93 - out = utcDate.toUTCString() + ', ' + "<<<END>>>" + '\r\n';
93 + out = new Date(Date.now() - 5000).toUTCString() + ', ' + "<<<END>>>" + '\r\n';
94 } else if (typeof data == 'string') {
95 // Log message
96 if (logfile.text == 1) {
@@ -121,20 +121,20 @@ function recordingEntry (logfile, type, flags, data, func, tag) {
121 if (typeof data == 'string') {
122 // String write
123 var blockData = Buffer.from(data), header = Buffer.alloc(16); // Header: Type (2) + Flags (2) + Size(4) + Time(8)
124 - header.writeInt16BE(type, 0); // Type (1 = Header, 2 = Network Data)
124 + header.writeInt16BE(type, 0); // Type (1 = Start, 2 = Network Data, 3 = End)
125 header.writeInt16BE(flags, 2); // Flags (1 = Binary, 2 = User)
126 header.writeInt32BE(blockData.length, 4); // Size
127 - header.writeIntBE(new Date(), 10, 6); // Time
127 + header.writeIntBE((type == 3 ? new Date(Date.now() - 5000) : new Date()), 10, 6); // Time
128 var block = Buffer.concat([header, blockData]);
129 require('fs').write(logfile.fd, block, 0, block.length, function () { func(logfile, tag); });
130 logfile.size += block.length;
131 } else {
132 // Binary write
133 var header = Buffer.alloc(16); // Header: Type (2) + Flags (2) + Size(4) + Time(8)
134 - header.writeInt16BE(type, 0); // Type (1 = Header, 2 = Network Data)
134 + header.writeInt16BE(type, 0); // Type (1 = Start, 2 = Network Data)
135 header.writeInt16BE(flags | 1, 2); // Flags (1 = Binary, 2 = User)
136 header.writeInt32BE(data.length, 4); // Size
137 - header.writeIntBE(new Date(), 10, 6); // Time
137 + header.writeIntBE((type == 3 ? new Date(Date.now() - 5000) : new Date()), 10, 6); // Time
138 var block = Buffer.concat([header, data]);
139 require('fs').write(logfile.fd, block, 0, block.length, function () { func(logfile, tag); });
140 logfile.size += block.length;
@@ -824,7 +824,7 @@ function CreateMeshRelayEx(parent, ws, req, domain, user, cookie) {
824
825 // Compute session length
826 var sessionLength = null;
827 - if (tag.logfile.startTime != null) { sessionLength = Math.round((Date.now() - tag.logfile.startTime) / 1000); }
827 + if (tag.logfile.startTime != null) { sessionLength = Math.round((Date.now() - tag.logfile.startTime) / 1000) - 5; }
828
829 // Add a event entry about this recording
830 var basefile = parent.parent.path.basename(tag.logfile.filename);
views/default.handlebars
+2 -2
@@ -17415,7 +17415,7 @@
17415 if (p52recordings != null) {
17416 var recdate = null;
17417 for (var i in p52recordings) {
17418 - var rec = p52recordings[i], rect = new Date(rec.time), day = printDate(rect);
17418 + var rec = p52recordings[i], rect = new Date(rec.startTime), day = printDate(rect);
17419 if (day != recdate) { recdate = day; x += '<tr><td class=userTableHeader colspan=4>' + day; }
17420 x += addRecordingHtml(i, rec);
17421 }
@@ -17433,7 +17433,7 @@
17433 function addRecordingHtml(i, rec) {
17434 var sessionLengthStr = '';
17435 if (rec.lengthTime) { sessionLengthStr = pad2(Math.floor(rec.lengthTime / 3600)) + ':' + pad2(Math.floor((rec.lengthTime % 3600) / 60)) + ':' + pad2(Math.floor(rec.lengthTime % 60)); }
17436 - var sessionStartStr = printTime(new Date(rec.time));
17436 + var sessionStartStr = printTime(new Date(rec.startTime));
17437 if (rec.sessionStart) { sessionStartStr = printTime(new Date(rec.sessionStart)); }
17438 var sessionSize = '';
17439 if (rec.size) { sessionSize = format("{0} Kb", Math.round(rec.size / 1024)); }
views/default3.handlebars
+2 -2
@@ -18681,7 +18681,7 @@
18681 if (p52recordings != null) {
18682 var recdate = null;
18683 for (var i in p52recordings) {
18684 - var rec = p52recordings[i], rect = new Date(rec.time), day = printDate(rect);
18684 + var rec = p52recordings[i], rect = new Date(rec.startTime), day = printDate(rect);
18685 if (day != recdate) { recdate = day; x += '<tr><td class=userTableHeader colspan=4>' + day; }
18686 x += addRecordingHtml(i, rec);
18687 }
@@ -18699,7 +18699,7 @@
18699 function addRecordingHtml(i, rec) {
18700 var sessionLengthStr = '';
18701 if (rec.lengthTime) { sessionLengthStr = pad2(Math.floor(rec.lengthTime / 3600)) + ':' + pad2(Math.floor((rec.lengthTime % 3600) / 60)) + ':' + pad2(Math.floor(rec.lengthTime % 60)); }
18702 - var sessionStartStr = printTime(new Date(rec.time));
18702 + var sessionStartStr = printTime(new Date(rec.startTime));
18703 if (rec.sessionStart) { sessionStartStr = printTime(new Date(rec.sessionStart)); }
18704 var sessionSize = '';
18705 if (rec.size) { sessionSize = format("{0} Kb", Math.round(rec.size / 1024)); }