Skip to content

Commit a38c434

Browse files
committed
new realtime log page
1 parent b9d475c commit a38c434

File tree

8 files changed

+135
-413
lines changed

8 files changed

+135
-413
lines changed

app.js

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ const config = require('./config'),
77
getDayjs = require('./services/dayjs-wrapper'),
88
mongodb = require('./services/mongodb'),
99
morgan = require('morgan'),
10-
{ setupLogRetention } = require('./services/log-cleanup'),
11-
removeExpiredSubscriptions = require('./services/remove-expired-subscriptions');
10+
removeExpiredSubscriptions = require('./services/remove-expired-subscriptions'),
11+
websocket = require('./services/websocket');
1212

1313
let app, hbs, server, dayjs;
1414

@@ -69,13 +69,6 @@ async function startServer() {
6969
await initializeDayjs();
7070
await mongodb.connect('rsscloud', config.mongodbUri);
7171

72-
// Setup log retention TTL index
73-
try {
74-
await setupLogRetention();
75-
} catch (error) {
76-
console.error('Failed to setup log retention, continuing without it:', error);
77-
}
78-
7972
// Start cleanup scheduling
8073
scheduleCleanupTasks();
8174

@@ -87,6 +80,9 @@ async function startServer() {
8780
app.locals.host = '[' + app.locals.host + ']';
8881
}
8982

83+
// Initialize WebSocket server for /wsLog
84+
websocket.initialize(server);
85+
9086
console.log(`Listening at http://${app.locals.host}:${app.locals.port}`);
9187
})
9288
.on('error', (error) => {

config.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,5 @@ module.exports = {
2121
maxResourceSize: getNumericConfig('MAX_RESOURCE_SIZE', 256000),
2222
ctSecsResourceExpire: getNumericConfig('CT_SECS_RESOURCE_EXPIRE', 90000),
2323
minSecsBetweenPings: getNumericConfig('MIN_SECS_BETWEEN_PINGS', 0),
24-
requestTimeout: getNumericConfig('REQUEST_TIMEOUT', 4000),
25-
logRetentionHours: getNumericConfig('LOG_RETENTION_HOURS', 2)
24+
requestTimeout: getNumericConfig('REQUEST_TIMEOUT', 4000)
2625
};

controllers/view-log.js

Lines changed: 5 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -1,64 +1,11 @@
1-
2-
const ErrorResponse = require('../services/error-response'),
3-
errorResult = require('../services/error-result'),
4-
express = require('express'),
5-
getDayjs = require('../services/dayjs-wrapper'),
6-
mongodb = require('../services/mongodb'),
1+
const express = require('express'),
72
router = new express.Router();
83

9-
async function fetchVals(_db, _callback) {
10-
const dayjs = await getDayjs();
11-
const vals = {
12-
'eventlog': []
13-
},
14-
15-
res = await mongodb.get('rsscloud')
16-
.collection('events')
17-
.find()
18-
.sort({ time: -1 })
19-
.limit(1000)
20-
.toArray();
21-
22-
vals.eventlog = res.map(item => {
23-
item.id = item._id.toHexString();
24-
delete item._id;
25-
26-
item.headers = JSON.parse(item.headers);
27-
28-
// Format time for display (hour:minute AM/PM)
29-
item.time = dayjs(item.time).format('h:mmA');
30-
31-
return item;
32-
});
33-
34-
return vals;
35-
}
36-
37-
function processResponse(req, res, vals) {
38-
switch (req.accepts('html', 'json')) {
39-
case 'html':
40-
res.render('view-log', vals);
41-
break;
42-
case 'json':
43-
res.json(vals.eventlog);
44-
break;
45-
default:
46-
res.status(406).send('Not Acceptable');
47-
break;
48-
}
49-
}
50-
51-
function handleError(req, res, err) {
52-
if (!(err instanceof ErrorResponse)) {
53-
console.error(err);
54-
}
55-
processResponse(req, res, errorResult(err.message));
56-
}
57-
584
router.get('/', function(req, res) {
59-
fetchVals()
60-
.then(vals => processResponse(req, res, vals))
61-
.catch(err => handleError(req, res, err));
5+
res.render('view-log', {
6+
host: req.app.locals.host,
7+
port: req.app.locals.port
8+
});
629
});
6310

6411
module.exports = router;

0 commit comments

Comments
 (0)