AP fixes: LD-signature, wrong owner for completed thres, account removal

This commit is contained in:
Michael 2018-10-09 05:04:24 +00:00
parent 4047952703
commit b5d73f840c
4 changed files with 26 additions and 8 deletions

10
composer.lock generated
View file

@ -332,11 +332,11 @@
},
{
"name": "friendica/json-ld",
"version": "1.0.0",
"version": "1.1.1",
"source": {
"type": "git",
"url": "https://git.friendi.ca/friendica/php-json-ld",
"reference": "a9ac64daf01cfd97e80c36a5104247d37c0ae5ef"
"reference": "ca3916d10d2ad9073b3b1eae383978dbe828e1e1"
},
"require": {
"ext-json": "*",
@ -355,11 +355,11 @@
{
"name": "Digital Bazaar, Inc.",
"email": "support@digitalbazaar.com",
"url": "http://digitalbazaar.com/"
"homepage": "http://digitalbazaar.com/"
},
{
"name": "Friendica Team",
"url": "https://friendi.ca/"
"homepage": "https://friendi.ca/"
}
],
"description": "A JSON-LD Processor and API implementation in PHP.",
@ -372,7 +372,7 @@
"Semantic Web",
"jsonld"
],
"time": "2018-09-28T00:01:12+00:00"
"time": "2018-10-08T20:41:00+00:00"
},
{
"name": "fxp/composer-asset-plugin",

View file

@ -18,6 +18,9 @@ use Friendica\Protocol\ActivityPub;
/**
* ActivityPub Protocol class
*
* To-Do:
* - Store Diaspora signature
*/
class Processor
{
@ -194,7 +197,14 @@ class Processor
$item['network'] = Protocol::ACTIVITYPUB;
$item['private'] = !in_array(0, $activity['receiver']);
$item['author-id'] = Contact::getIdForURL($activity['author'], 0, true);
$item['owner-id'] = Contact::getIdForURL($activity['actor'], 0, true);
if (empty($activity['thread-completion'])) {
$item['owner-id'] = Contact::getIdForURL($activity['actor'], 0, true);
} else {
logger('Ignoring actor because of thread completion.', LOGGER_DEBUG);
$item['owner-id'] = $item['author-id'];
}
$item['uri'] = $activity['id'];
$item['created'] = $activity['published'];
$item['edited'] = $activity['updated'];
@ -261,6 +271,9 @@ class Processor
$activity['type'] = 'Create';
$ldactivity = JsonLD::compact($activity);
$ldactivity['thread-completion'] = true;
ActivityPub\Receiver::processActivity($ldactivity);
logger('Activity ' . $url . ' had been fetched and processed.');
}

View file

@ -268,6 +268,11 @@ class Receiver
return;
}
// Internal flag for thread completion. See Processor.php
if (!empty($activity['thread-completion'])) {
$object_data['thread-completion'] = $activity['thread-completion'];
}
switch ($type) {
case 'as:Create':
case 'as:Announce':

View file

@ -103,9 +103,9 @@ class Notifier
$inboxes = ActivityPub\Transmitter::fetchTargetInboxesforUser(0);
foreach ($inboxes as $inbox) {
logger('Account removal for user ' . $uid . ' to ' . $inbox .' via ActivityPub', LOGGER_DEBUG);
logger('Account removal for user ' . $item_id . ' to ' . $inbox .' via ActivityPub', LOGGER_DEBUG);
Worker::add(['priority' => $a->queue['priority'], 'created' => $a->queue['created'], 'dont_fork' => true],
'APDelivery', Delivery::REMOVAL, '', $inbox, $uid);
'APDelivery', Delivery::REMOVAL, '', $inbox, $item_id);
}
return;