feat: log the last time a valid api token was seen, have v3 ping route go through setupApiRoute helper

isekai-main
Julian Lam 2 years ago
parent 7c780210a8
commit efa64032dd

@ -10,4 +10,6 @@ module.exports = {
categories: require('./categories'),
flags: require('./flags'),
files: require('./files'),
utils: require('./utils'),
};

@ -0,0 +1,11 @@
'use strict';
const db = require('../database');
const utils = module.exports;
// internal token management utilities only
utils.log = async (token) => {
await db.sortedSetAdd('tokens:lastSeen', Date.now(), token);
};

@ -16,6 +16,7 @@ const analytics = require('../analytics');
const privileges = require('../privileges');
const cacheCreate = require('../cache/lru');
const helpers = require('./helpers');
const api = require('../api');
const controllers = {
api: require('../controllers/api'),
@ -115,6 +116,15 @@ middleware.prepareAPI = function prepareAPI(req, res, next) {
next();
};
middleware.logApiUsage = async function logApiUsage(req, res, next) {
if (req.headers.hasOwnProperty('authorization')) {
const [, token] = req.headers.authorization.split(' ');
await api.utils.log(token);
}
next();
};
middleware.routeTouchIcon = function routeTouchIcon(req, res) {
if (meta.config['brand:touchIcon'] && validator.isURL(meta.config['brand:touchIcon'])) {
return res.redirect(meta.config['brand:touchIcon']);

@ -57,6 +57,7 @@ helpers.setupApiRoute = function (...args) {
middleware.maintenanceMode,
middleware.registrationComplete,
middleware.pluginHooks,
middleware.logApiUsage,
...middlewares,
];

@ -6,6 +6,7 @@ const plugins = require('../../plugins');
const middleware = require('../../middleware');
const writeControllers = require('../../controllers/write');
const helpers = require('../../controllers/helpers');
const { setupApiRoute } = require('../helpers');
const Write = module.exports;
@ -43,8 +44,8 @@ Write.reload = async (params) => {
router.use('/api/v3/files', require('./files')());
router.use('/api/v3/utilities', require('./utilities')());
router.get('/api/v3/ping', writeControllers.utilities.ping.get);
router.post('/api/v3/ping', middleware.authenticateRequest, middleware.ensureLoggedIn, writeControllers.utilities.ping.post);
setupApiRoute(router, 'get', '/api/v3/ping', writeControllers.utilities.ping.get);
setupApiRoute(router, 'post', '/api/v3/ping', writeControllers.utilities.ping.post);
/**
* Plugins can add routes to the Write API by attaching a listener to the

Loading…
Cancel
Save