From cb2392f35177c2c2043b984b381580cc78a6ef52 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Tue, 26 Apr 2022 20:36:08 -0600 Subject: [PATCH] Update FederationController --- app/Http/Controllers/FederationController.php | 34 +++++++++++++++++++ app/Jobs/InboxPipeline/DeleteWorker.php | 9 ----- 2 files changed, 34 insertions(+), 9 deletions(-) diff --git a/app/Http/Controllers/FederationController.php b/app/Http/Controllers/FederationController.php index 297c9a463..0a8254cbc 100644 --- a/app/Http/Controllers/FederationController.php +++ b/app/Http/Controllers/FederationController.php @@ -121,6 +121,23 @@ class FederationController extends Controller $obj = json_decode($payload, true, 8); if(isset($obj['type']) && $obj['type'] === 'Delete') { + if(!isset($obj['id'])) { + return; + } + $lockKey = 'pf:ap:del-lock:' . hash('sha256', $obj['id']); + if( isset($obj['actor']) && + isset($obj['object']) && + isset($obj['id']) && + is_string($obj['id']) && + is_string($obj['actor']) && + is_string($obj['object']) && + $obj['actor'] == $obj['object'] + ) { + if(Cache::get($lockKey) !== null) { + return; + } + } + Cache::put($lockKey, 1, 3600); dispatch(new DeleteWorker($headers, $payload))->onQueue('delete'); } else { dispatch(new InboxValidator($username, $headers, $payload))->onQueue('high'); @@ -138,6 +155,23 @@ class FederationController extends Controller $obj = json_decode($payload, true, 8); if(isset($obj['type']) && $obj['type'] === 'Delete') { + if(!isset($obj['id'])) { + return; + } + $lockKey = 'pf:ap:del-lock:' . hash('sha256', $obj['id']); + if( isset($obj['actor']) && + isset($obj['object']) && + isset($obj['id']) && + is_string($obj['id']) && + is_string($obj['actor']) && + is_string($obj['object']) && + $obj['actor'] == $obj['object'] + ) { + if(Cache::get($lockKey) !== null) { + return; + } + } + Cache::put($lockKey, 1, 3600); dispatch(new DeleteWorker($headers, $payload))->onQueue('delete'); } else { dispatch(new InboxWorker($headers, $payload))->onQueue('high'); diff --git a/app/Jobs/InboxPipeline/DeleteWorker.php b/app/Jobs/InboxPipeline/DeleteWorker.php index 5ec791301..f40edc3ff 100644 --- a/app/Jobs/InboxPipeline/DeleteWorker.php +++ b/app/Jobs/InboxPipeline/DeleteWorker.php @@ -49,15 +49,6 @@ class DeleteWorker implements ShouldQueue $headers = $this->headers; $payload = json_decode($this->payload, true, 8); - if(isset($payload['id'])) { - $lockKey = 'pf:ap:del-lock:' . hash('sha256', $payload['id']); - if(Cache::get($lockKey) !== null) { - // Job processed already - return 1; - } - Cache::put($lockKey, 1, 300); - } - if(!isset($headers['signature']) || !isset($headers['date'])) { return; }