Merge pull request #97 from immers-space/filter-fixes

fixup inboxFilter and bump apex
This commit is contained in:
Will Murphy 2023-06-23 16:20:53 -05:00 committed by GitHub
commit 74c6a64367
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 35 additions and 14 deletions

View file

@ -1,3 +1,9 @@
## Unreleased
### Fixed
* Fix irrelevant activities filter and allow deletes and updates through
* Fixed unverifiable delete detection for duplicate deliveries
## v1.5.1 (2023-06-23)
Efficiency and compatibility updates
### Fixed

View file

@ -92,16 +92,31 @@ async function actorOnDemand (req, res, next) {
} catch (err) { return next(err) }
next()
}
// Lots of servers are delivering inappropriate activities to Guppe, move the filtering up earlier in the process to save work
apex.net.inbox.post.slice(
const acceptablePublicActivities = ['delete', 'update']
apex.net.inbox.post.splice(
// just after standardizing the jsonld
apex.net.inbox.post.indexOf(apex.net.validators.jsonld) + 1,
0,
function (req, res, next) {
function inboxLogger (req, res, next) {
try {
const groupIRI = apex.utils.usernameToIRI(apex.actorParam)
if (!apex.audienceFromActivity(req.body).includes(groupIRI) && !req.body.object?.[0] === groupIRI) {
console.log('Ignoring irrelevant activity', req.body)
console.log('%s from %s to %s', req.body.type, req.body.actor?.[0], req.params[apex.actorParam])
} finally {
next()
}
},
// Lots of servers are delivering inappropriate activities to Guppe, move the filtering up earlier in the process to save work
function inboxFilter (req, res, next) {
try {
const groupIRI = apex.utils.usernameToIRI(req.params[apex.actorParam])
const activityAudience = apex.audienceFromActivity(req.body)
const activityType = req.body.type?.toLowerCase()
const activityObject = req.body.object?.[0]
if (
!activityAudience.includes(groupIRI) &&
activityObject !== groupIRI &&
!acceptablePublicActivities.includes(activityType)
) {
console.log('Ignoring irrelevant activity sent to %s: %j', groupIRI, req.body)
return res.status(202).send('Irrelevant activity ignored')
}
} catch (err) {

14
package-lock.json generated
View file

@ -10,7 +10,7 @@
"license": "AGPL-3.0-or-later",
"dependencies": {
"@small-tech/auto-encrypt": "^3.1.0",
"activitypub-express": "^4.4.0",
"activitypub-express": "^4.4.1",
"connect-history-api-fallback": "^2.0.0",
"cors": "^2.8.4",
"dotenv": "^16.0.3",
@ -1450,9 +1450,9 @@
}
},
"node_modules/activitypub-express": {
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/activitypub-express/-/activitypub-express-4.4.0.tgz",
"integrity": "sha512-viVA1g8FIEKM+f8nN5ow7MFJsevlu2j3HvCV91oDWWlLGR0JdW6uX30q46eZFiycJzAH3oMrTqPZTBjkjMfMbQ==",
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/activitypub-express/-/activitypub-express-4.4.1.tgz",
"integrity": "sha512-pMh3ylzYFn/psSojmCCcpwV9Tqu2JIPGAVJu6o2M4nGyA1OXpSsaF67EVn2+r4tU1mqGsQWHWTWSqCn1KuzLkg==",
"dependencies": {
"deepmerge": "^4.2.2",
"express": "^4.18.0",
@ -7084,9 +7084,9 @@
"requires": {}
},
"activitypub-express": {
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/activitypub-express/-/activitypub-express-4.4.0.tgz",
"integrity": "sha512-viVA1g8FIEKM+f8nN5ow7MFJsevlu2j3HvCV91oDWWlLGR0JdW6uX30q46eZFiycJzAH3oMrTqPZTBjkjMfMbQ==",
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/activitypub-express/-/activitypub-express-4.4.1.tgz",
"integrity": "sha512-pMh3ylzYFn/psSojmCCcpwV9Tqu2JIPGAVJu6o2M4nGyA1OXpSsaF67EVn2+r4tU1mqGsQWHWTWSqCn1KuzLkg==",
"requires": {
"deepmerge": "^4.2.2",
"express": "^4.18.0",

View file

@ -5,7 +5,7 @@
"main": "index.js",
"dependencies": {
"@small-tech/auto-encrypt": "^3.1.0",
"activitypub-express": "^4.4.0",
"activitypub-express": "^4.4.1",
"connect-history-api-fallback": "^2.0.0",
"cors": "^2.8.4",
"dotenv": "^16.0.3",