Merge pull request #5856 from annando/ap-fixes

AP fixes: LD-signature, wrong owner for completed threads, account removal
This commit is contained in:
Tobias Diekershoff 2018-10-09 07:13:49 +02:00 committed by GitHub
commit 9305821b9d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 26 additions and 8 deletions

10
composer.lock generated
View file

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

View file

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

View file

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

View file

@ -103,9 +103,9 @@ class Notifier
$inboxes = ActivityPub\Transmitter::fetchTargetInboxesforUser(0); $inboxes = ActivityPub\Transmitter::fetchTargetInboxesforUser(0);
foreach ($inboxes as $inbox) { 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], 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; return;