fix: #13136, do not log 404s for AP requests

This commit is contained in:
Julian Lam
2025-02-20 12:24:17 -05:00
parent 7520e4f64d
commit 93f48409c5
3 changed files with 14 additions and 4 deletions

View File

@@ -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) => {
// N.B. returns normalized handle, so truthy check!
if (webfingerRegex.test(value) && !Helpers.isUri(value)) {

View File

@@ -6,6 +6,7 @@ const validator = require('validator');
const meta = require('../meta');
const plugins = require('../plugins');
const activitypub = require('../activitypub');
const middleware = require('../middleware');
const helpers = require('../middleware/helpers');
const { secureRandom } = require('../utils');
@@ -24,6 +25,12 @@ exports.handle404 = helpers.try(async (req, res) => {
if (isClientScript.test(req.url)) {
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 (
!res.locals.isAPI && (
req.path.startsWith(`${relativePath}/assets/uploads`) ||

View File

@@ -16,10 +16,8 @@ middleware.assertS2S = async function (req, res, next) {
return next('route');
}
const pass = (accept && accept.split(',').some((value) => {
const parts = value.split(';').map(v => v.trim());
return activitypub._constants.acceptableTypes.includes(value || parts[0]);
})) || (contentType && activitypub._constants.acceptableTypes.includes(contentType));
const pass = activitypub.helpers.assertAccepts(accept) ||
(contentType && activitypub._constants.acceptableTypes.includes(contentType));
if (!pass) {
return next('route');