mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-12-22 16:30:34 +01:00
fix: #13136, do not log 404s for AP requests
This commit is contained in:
@@ -64,6 +64,11 @@ Helpers.isUri = (value) => {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Helpers.assertAccept = accept => (accept && accept.split(',').some((value) => {
|
||||||
|
const parts = value.split(';').map(v => v.trim());
|
||||||
|
return activitypub._constants.acceptableTypes.includes(value || parts[0]);
|
||||||
|
}));
|
||||||
|
|
||||||
Helpers.isWebfinger = (value) => {
|
Helpers.isWebfinger = (value) => {
|
||||||
// N.B. returns normalized handle, so truthy check!
|
// N.B. returns normalized handle, so truthy check!
|
||||||
if (webfingerRegex.test(value) && !Helpers.isUri(value)) {
|
if (webfingerRegex.test(value) && !Helpers.isUri(value)) {
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ const validator = require('validator');
|
|||||||
|
|
||||||
const meta = require('../meta');
|
const meta = require('../meta');
|
||||||
const plugins = require('../plugins');
|
const plugins = require('../plugins');
|
||||||
|
const activitypub = require('../activitypub');
|
||||||
const middleware = require('../middleware');
|
const middleware = require('../middleware');
|
||||||
const helpers = require('../middleware/helpers');
|
const helpers = require('../middleware/helpers');
|
||||||
const { secureRandom } = require('../utils');
|
const { secureRandom } = require('../utils');
|
||||||
@@ -24,6 +25,12 @@ exports.handle404 = helpers.try(async (req, res) => {
|
|||||||
|
|
||||||
if (isClientScript.test(req.url)) {
|
if (isClientScript.test(req.url)) {
|
||||||
res.type('text/javascript').status(404).send('Not Found');
|
res.type('text/javascript').status(404).send('Not Found');
|
||||||
|
} else if (
|
||||||
|
activitypub.helpers.assertAccept(req.headers.accept) ||
|
||||||
|
(req.headers['Content-Type'] && activitypub._constants.acceptableTypes.includes(req.headers['Content-Type']))
|
||||||
|
) {
|
||||||
|
// todo: separate logging of AP 404s
|
||||||
|
res.sendStatus(404);
|
||||||
} else if (
|
} else if (
|
||||||
!res.locals.isAPI && (
|
!res.locals.isAPI && (
|
||||||
req.path.startsWith(`${relativePath}/assets/uploads`) ||
|
req.path.startsWith(`${relativePath}/assets/uploads`) ||
|
||||||
|
|||||||
@@ -16,10 +16,8 @@ middleware.assertS2S = async function (req, res, next) {
|
|||||||
return next('route');
|
return next('route');
|
||||||
}
|
}
|
||||||
|
|
||||||
const pass = (accept && accept.split(',').some((value) => {
|
const pass = activitypub.helpers.assertAccepts(accept) ||
|
||||||
const parts = value.split(';').map(v => v.trim());
|
(contentType && activitypub._constants.acceptableTypes.includes(contentType));
|
||||||
return activitypub._constants.acceptableTypes.includes(value || parts[0]);
|
|
||||||
})) || (contentType && activitypub._constants.acceptableTypes.includes(contentType));
|
|
||||||
|
|
||||||
if (!pass) {
|
if (!pass) {
|
||||||
return next('route');
|
return next('route');
|
||||||
|
|||||||
Reference in New Issue
Block a user