More updates on Deletes, ActivityPub ACS in menu

This commit is contained in:
Bryan Ashby 2023-02-27 13:03:27 -07:00
parent 65e5fa1b77
commit b0fff20a02
No known key found for this signature in database
GPG Key ID: C2C1B501E4EFD994
3 changed files with 84 additions and 25 deletions

View File

@ -505,14 +505,30 @@ exports.getModule = class ActivityPubWebHandler extends WebHandlerModule {
if (inboxType !== collectionName) { if (inboxType !== collectionName) {
this.log.warn( this.log.warn(
{ inboxType, collectionName, objectId }, { inboxType, collectionName, objectId },
'Will not Delete object(s) from mismatched collection!' 'Will not Delete object: Collection mismatch'
); );
return nextObjInfo(null); return nextObjInfo(null);
} }
// Validate signature if (
!this._isSignatureEqual(
activity.signature,
objInfo.object.signature
)
) {
this.log.warn(
{ inboxType, collectionName, objectId },
'Will not Delete object: Signature mismatch'
);
return nextObjInfo(null);
}
break; return this._deleteObjectWithStats(
collectionName,
objInfo.object,
stats,
nextObjInfo
);
case Collections.Actors: case Collections.Actors:
// Validate signature; Delete Actor and Following entries if any // Validate signature; Delete Actor and Following entries if any
@ -526,21 +542,15 @@ exports.getModule = class ActivityPubWebHandler extends WebHandlerModule {
} }
return nextObjInfo(null); return nextObjInfo(null);
} else {
// it's unparsable, so we'll delete it
Collection.removeById(collectionName, objectId, err => {
if (err) {
this.log.warn(
{ objectId, collectionName },
'Failed to remove object'
);
stats.failed.push({ collectionName, objectId });
} else {
stats.deleted.push({ collectionName, objectId });
}
return nextObjInfo(null);
});
} }
// Malformed; we'll go ahead and remove
return this._deleteObjectWithStats(
collectionName,
objInfo.object,
stats,
nextObjInfo
);
}, },
err => { err => {
if (err) { if (err) {
@ -556,6 +566,32 @@ exports.getModule = class ActivityPubWebHandler extends WebHandlerModule {
return this.webServer.accepted(resp); return this.webServer.accepted(resp);
} }
_deleteObjectWithStats(collectionName, object, stats, cb) {
const objectId = _.isString(object) ? object : object.id;
const type = object.type;
Collection.removeById(collectionName, objectId, err => {
if (err) {
this.log.warn(
{ objectId, collectionName, type },
'Failed to remove object'
);
stats.failed.push({ collectionName, objectId, type });
} else {
stats.deleted.push({ collectionName, objectId, type });
}
return cb(null);
});
}
_isSignatureEqual(sigA, sigB) {
return (
sigA.type === sigB.type &&
sigA.creator === sigB.creator &&
sigA.signatureValue === sigB.signatureValue
);
}
_inboxFollowActivity(resp, remoteActor, activity) { _inboxFollowActivity(resp, remoteActor, activity) {
this.log.info( this.log.info(
{ remoteActorId: remoteActor.id, localActorId: activity.object }, { remoteActorId: remoteActor.id, localActorId: activity.object },

View File

@ -3,19 +3,35 @@
activityPubMenu: { activityPubMenu: {
desc: ActivityPub Menu desc: ActivityPub Menu
art: activitypub_menu art: activitypub_menu
prompt: activiytPubMenuCommand prompt: activityPubMenuCommand
submit: [ submit: [
{ {
value: {command: "S"} value: {command: "S"}
action: @menu:activityPubActorSearch action: [
{
acs: "AE1"
action: @menu:activityPubActorSearch
}
{
action: @menu:activityPubNotEnabled
}
]
} }
{ {
value: {command: "C"} value: {command: "C"}
action: @menu:activityPubUserConfig action: @menu:activityPubUserConfig
} }
{ {
value: {command: "S"} value: {command: "M"}
action: @menu:activityPubSocialManager action: [
{
acs: "AE1"
action: @menu:activityPubSocialManager
}
{
action: @menu:activityPubNotEnabled
}
]
} }
{ {
value: {command: "Q"} value: {command: "Q"}
@ -25,10 +41,6 @@
value: { command: "E" } value: { command: "E" }
action: @menu:privateMailMenu action: @menu:privateMailMenu
} }
{
value: { command: "G" }
action: @menu:fullLogoffSequence
}
] ]
} }
@ -82,6 +94,7 @@
} }
} }
} }
activityPubUserConfig: { activityPubUserConfig: {
desc: ActivityPub Config desc: ActivityPub Config
module: ./activitypub/user_config module: ./activitypub/user_config
@ -174,6 +187,7 @@
} }
} }
} }
activityPubSocialManager: { activityPubSocialManager: {
desc: ActivityPub Social Manager desc: ActivityPub Social Manager
module: ./activitypub/social_manager module: ./activitypub/social_manager
@ -207,6 +221,15 @@
} }
} }
} }
activityPubNotEnabled: {
desc: ActivityPub Not Enabled
art: activitypub_not_enabled
config: {
cls: true
pause: true
}
}
} }
prompts: { prompts: {