From 74cc41d4fae0575ffe6e3d1fd549511f9e9406be Mon Sep 17 00:00:00 2001 From: noellabo Date: Mon, 2 May 2022 23:36:12 +0900 Subject: [PATCH] Add Content-Type and User-Agent for activity delivery --- app/Jobs/DeletePipeline/FanoutDeletePipeline.php | 7 ++++++- app/Jobs/SharePipeline/SharePipeline.php | 7 ++++++- app/Jobs/SharePipeline/UndoSharePipeline.php | 7 ++++++- app/Jobs/StatusPipeline/StatusActivityPubDeliver.php | 7 ++++++- app/Jobs/StatusPipeline/StatusDelete.php | 7 ++++++- app/Jobs/StoryPipeline/StoryDelete.php | 7 ++++++- app/Jobs/StoryPipeline/StoryExpire.php | 7 ++++++- app/Jobs/StoryPipeline/StoryFanout.php | 8 +++++++- app/Services/ActivityPubDeliveryService.php | 7 ++++++- 9 files changed, 55 insertions(+), 9 deletions(-) diff --git a/app/Jobs/DeletePipeline/FanoutDeletePipeline.php b/app/Jobs/DeletePipeline/FanoutDeletePipeline.php index e1a9a6d11..a5ee65ac3 100644 --- a/app/Jobs/DeletePipeline/FanoutDeletePipeline.php +++ b/app/Jobs/DeletePipeline/FanoutDeletePipeline.php @@ -63,7 +63,12 @@ class FanoutDeletePipeline implements ShouldQueue $requests = function($audience) use ($client, $activity, $profile, $payload) { foreach($audience as $url) { - $headers = HttpSignature::sign($profile, $url, $activity); + $version = config('pixelfed.version'); + $appUrl = config('app.url'); + $headers = HttpSignature::sign($profile, $url, $activity, [ + 'Content-Type' => 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"', + 'User-Agent' => "(Pixelfed/{$version}; +{$appUrl})", + ]); yield function() use ($client, $url, $headers, $payload) { return $client->postAsync($url, [ 'curl' => [ diff --git a/app/Jobs/SharePipeline/SharePipeline.php b/app/Jobs/SharePipeline/SharePipeline.php index 5425ce972..1534a9f07 100644 --- a/app/Jobs/SharePipeline/SharePipeline.php +++ b/app/Jobs/SharePipeline/SharePipeline.php @@ -129,7 +129,12 @@ class SharePipeline implements ShouldQueue $requests = function($audience) use ($client, $activity, $profile, $payload) { foreach($audience as $url) { - $headers = HttpSignature::sign($profile, $url, $activity); + $version = config('pixelfed.version'); + $appUrl = config('app.url'); + $headers = HttpSignature::sign($profile, $url, $activity, [ + 'Content-Type' => 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"', + 'User-Agent' => "(Pixelfed/{$version}; +{$appUrl})", + ]); yield function() use ($client, $url, $headers, $payload) { return $client->postAsync($url, [ 'curl' => [ diff --git a/app/Jobs/SharePipeline/UndoSharePipeline.php b/app/Jobs/SharePipeline/UndoSharePipeline.php index 04b2ede26..589a34fef 100644 --- a/app/Jobs/SharePipeline/UndoSharePipeline.php +++ b/app/Jobs/SharePipeline/UndoSharePipeline.php @@ -92,7 +92,12 @@ class UndoSharePipeline implements ShouldQueue $requests = function($audience) use ($client, $activity, $profile, $payload) { foreach($audience as $url) { - $headers = HttpSignature::sign($profile, $url, $activity); + $version = config('pixelfed.version'); + $appUrl = config('app.url'); + $headers = HttpSignature::sign($profile, $url, $activity, [ + 'Content-Type' => 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"', + 'User-Agent' => "(Pixelfed/{$version}; +{$appUrl})", + ]); yield function() use ($client, $url, $headers, $payload) { return $client->postAsync($url, [ 'curl' => [ diff --git a/app/Jobs/StatusPipeline/StatusActivityPubDeliver.php b/app/Jobs/StatusPipeline/StatusActivityPubDeliver.php index 759f5c72c..21295beb2 100644 --- a/app/Jobs/StatusPipeline/StatusActivityPubDeliver.php +++ b/app/Jobs/StatusPipeline/StatusActivityPubDeliver.php @@ -87,7 +87,12 @@ class StatusActivityPubDeliver implements ShouldQueue $requests = function($audience) use ($client, $activity, $profile, $payload) { foreach($audience as $url) { - $headers = HttpSignature::sign($profile, $url, $activity); + $version = config('pixelfed.version'); + $appUrl = config('app.url'); + $headers = HttpSignature::sign($profile, $url, $activity, [ + 'Content-Type' => 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"', + 'User-Agent' => "(Pixelfed/{$version}; +{$appUrl})", + ]); yield function() use ($client, $url, $headers, $payload) { return $client->postAsync($url, [ 'curl' => [ diff --git a/app/Jobs/StatusPipeline/StatusDelete.php b/app/Jobs/StatusPipeline/StatusDelete.php index 7ae3a822a..e0dc2a71c 100644 --- a/app/Jobs/StatusPipeline/StatusDelete.php +++ b/app/Jobs/StatusPipeline/StatusDelete.php @@ -144,7 +144,12 @@ class StatusDelete implements ShouldQueue $requests = function($audience) use ($client, $activity, $profile, $payload) { foreach($audience as $url) { - $headers = HttpSignature::sign($profile, $url, $activity); + $version = config('pixelfed.version'); + $appUrl = config('app.url'); + $headers = HttpSignature::sign($profile, $url, $activity, [ + 'Content-Type' => 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"', + 'User-Agent' => "(Pixelfed/{$version}; +{$appUrl})", + ]); yield function() use ($client, $url, $headers, $payload) { return $client->postAsync($url, [ 'curl' => [ diff --git a/app/Jobs/StoryPipeline/StoryDelete.php b/app/Jobs/StoryPipeline/StoryDelete.php index a66fafd4f..8f4353e50 100644 --- a/app/Jobs/StoryPipeline/StoryDelete.php +++ b/app/Jobs/StoryPipeline/StoryDelete.php @@ -108,7 +108,12 @@ class StoryDelete implements ShouldQueue $requests = function($audience) use ($client, $activity, $profile, $payload) { foreach($audience as $url) { - $headers = HttpSignature::sign($profile, $url, $activity); + $version = config('pixelfed.version'); + $appUrl = config('app.url'); + $headers = HttpSignature::sign($profile, $url, $activity, [ + 'Content-Type' => 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"', + 'User-Agent' => "(Pixelfed/{$version}; +{$appUrl})", + ]); yield function() use ($client, $url, $headers, $payload) { return $client->postAsync($url, [ 'curl' => [ diff --git a/app/Jobs/StoryPipeline/StoryExpire.php b/app/Jobs/StoryPipeline/StoryExpire.php index 52e1c8e6c..494d0d5da 100644 --- a/app/Jobs/StoryPipeline/StoryExpire.php +++ b/app/Jobs/StoryPipeline/StoryExpire.php @@ -125,7 +125,12 @@ class StoryExpire implements ShouldQueue $requests = function($audience) use ($client, $activity, $profile, $payload) { foreach($audience as $url) { - $headers = HttpSignature::sign($profile, $url, $activity); + $version = config('pixelfed.version'); + $appUrl = config('app.url'); + $headers = HttpSignature::sign($profile, $url, $activity, [ + 'Content-Type' => 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"', + 'User-Agent' => "(Pixelfed/{$version}; +{$appUrl})", + ]); yield function() use ($client, $url, $headers, $payload) { return $client->postAsync($url, [ 'curl' => [ diff --git a/app/Jobs/StoryPipeline/StoryFanout.php b/app/Jobs/StoryPipeline/StoryFanout.php index 28073fe37..12f37cbf0 100644 --- a/app/Jobs/StoryPipeline/StoryFanout.php +++ b/app/Jobs/StoryPipeline/StoryFanout.php @@ -79,7 +79,13 @@ class StoryFanout implements ShouldQueue $requests = function($audience) use ($client, $activity, $profile, $payload) { foreach($audience as $url) { - $headers = HttpSignature::sign($profile, $url, $activity); + $version = config('pixelfed.version'); + $appUrl = config('app.url'); + $proxy = config(''); + $headers = HttpSignature::sign($profile, $url, $activity, [ + 'Content-Type' => 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"', + 'User-Agent' => "(Pixelfed/{$version}; +{$appUrl})", + ]); yield function() use ($client, $url, $headers, $payload) { return $client->postAsync($url, [ 'curl' => [ diff --git a/app/Services/ActivityPubDeliveryService.php b/app/Services/ActivityPubDeliveryService.php index 00d6aa629..ead3316ed 100644 --- a/app/Services/ActivityPubDeliveryService.php +++ b/app/Services/ActivityPubDeliveryService.php @@ -49,7 +49,12 @@ class ActivityPubDeliveryService $body = $this->payload; $payload = json_encode($body); - $headers = HttpSignature::sign($this->sender, $this->to, $body); + $version = config('pixelfed.version'); + $appUrl = config('app.url'); + $headers = HttpSignature::sign($this->sender, $this->to, $body, [ + 'Content-Type' => 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"', + 'User-Agent' => "(Pixelfed/{$version}; +{$appUrl})", + ]); $ch = curl_init($this->to); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);