diff --git a/app/Jobs/InboxPipeline/InboxValidator.php b/app/Jobs/InboxPipeline/InboxValidator.php index 070746cd4..4913cf84b 100644 --- a/app/Jobs/InboxPipeline/InboxValidator.php +++ b/app/Jobs/InboxPipeline/InboxValidator.php @@ -70,58 +70,6 @@ class InboxValidator implements ShouldQueue return; } - if( $payload['type'] === 'Delete' && - ( ( is_string($payload['object']) && - $payload['object'] === $payload['actor'] ) || - ( is_array($payload['object']) && - isset($payload['object']['id'], $payload['object']['type']) && - $payload['object']['type'] === 'Person' && - $payload['actor'] === $payload['object']['id'] - )) - ) { - $actor = $payload['actor']; - $hash = strlen($actor) <= 48 ? - 'b:' . base64_encode($actor) : - 'h:' . hash('sha256', $actor); - - $lockKey = 'ap:inbox:actor-delete-exists:lock:' . $hash; - Cache::lock($lockKey, 10)->block(5, function () use( - $headers, - $payload, - $actor, - $hash, - $profile - ) { - $key = 'ap:inbox:actor-delete-exists:' . $hash; - $actorDelete = Cache::remember($key, now()->addMinutes(15), function() use($actor) { - return Profile::whereRemoteUrl($actor) - ->whereNotNull('domain') - ->exists(); - }); - if($actorDelete) { - if($this->verifySignature($headers, $profile, $payload) == true) { - Cache::set($key, false); - $profile = Profile::whereNotNull('domain') - ->whereNull('status') - ->whereRemoteUrl($actor) - ->first(); - if($profile) { - DeleteRemoteProfilePipeline::dispatchNow($profile); - } - return; - } else { - // Signature verification failed, exit. - return; - } - } else { - // Remote user doesn't exist, exit early. - return; - } - }); - - return; - } - if($profile->status != null) { return; } diff --git a/app/Jobs/InboxPipeline/InboxWorker.php b/app/Jobs/InboxPipeline/InboxWorker.php index 16ac4840a..7f5bee9a0 100644 --- a/app/Jobs/InboxPipeline/InboxWorker.php +++ b/app/Jobs/InboxPipeline/InboxWorker.php @@ -66,57 +66,6 @@ class InboxWorker implements ShouldQueue return; } - if( $payload['type'] === 'Delete' && - ( ( is_string($payload['object']) && - $payload['object'] === $payload['actor'] ) || - ( is_array($payload['object']) && - isset($payload['object']['id'], $payload['object']['type']) && - $payload['object']['type'] === 'Person' && - $payload['actor'] === $payload['object']['id'] - )) - ) { - $actor = $payload['actor']; - $hash = strlen($actor) <= 48 ? - 'b:' . base64_encode($actor) : - 'h:' . hash('sha256', $actor); - - $lockKey = 'ap:inbox:actor-delete-exists:lock:' . $hash; - Cache::lock($lockKey, 10)->block(5, function () use( - $headers, - $payload, - $actor, - $hash - ) { - $key = 'ap:inbox:actor-delete-exists:' . $hash; - $actorDelete = Cache::remember($key, now()->addMinutes(15), function() use($actor) { - return Profile::whereRemoteUrl($actor) - ->whereNotNull('domain') - ->exists(); - }); - if($actorDelete) { - if($this->verifySignature($headers, $payload) == true) { - Cache::set($key, false); - $profile = Profile::whereNotNull('domain') - ->whereNull('status') - ->whereRemoteUrl($actor) - ->first(); - if($profile) { - DeleteRemoteProfilePipeline::dispatchNow($profile); - } - return; - } else { - // Signature verification failed, exit. - return; - } - } else { - // Remote user doesn't exist, exit early. - return; - } - }); - - return; - } - if($this->verifySignature($headers, $payload) == true) { (new Inbox($headers, $profile, $payload))->handle(); return; diff --git a/app/Util/ActivityPub/Helpers.php b/app/Util/ActivityPub/Helpers.php index 809a55707..f71c95a64 100644 --- a/app/Util/ActivityPub/Helpers.php +++ b/app/Util/ActivityPub/Helpers.php @@ -419,9 +419,8 @@ class Helpers { $cw = true; } - $statusLockKey = 'helpers:status-lock:' . hash('sha256', $res['id']); - $status = Cache::lock($statusLockKey) - ->get(function () use( + if($res['type'] === 'Question') { + $status = self::storePoll( $profile, $res, $url, @@ -430,24 +429,11 @@ class Helpers { $cw, $scope, $id - ) { - - if($res['type'] === 'Question') { - $status = self::storePoll( - $profile, - $res, - $url, - $ts, - $reply_to, - $cw, - $scope, - $id - ); - return $status; - } - - return self::storeStatus($url, $profile, $res); - }); + ); + return $status; + } else { + $status = self::storeStatus($url, $profile, $res); + } return $status; }