Browse Source

Update federation logic

Daniel Supernault 2 years ago
parent
commit
fefcbae911

+ 0 - 52
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;
         }

+ 0 - 51
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;

+ 7 - 21
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;
 	}