From 66b4f8c7732ad99d24ab2e5a5b08cc7a0e6e7c85 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Tue, 20 Apr 2021 23:18:07 -0600 Subject: [PATCH] Update AP Helpers, use instance filtering --- .../Controllers/Admin/AdminInstanceController.php | 2 ++ app/Util/ActivityPub/Helpers.php | 14 +++++++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/app/Http/Controllers/Admin/AdminInstanceController.php b/app/Http/Controllers/Admin/AdminInstanceController.php index 295875abb..ddb6e777f 100644 --- a/app/Http/Controllers/Admin/AdminInstanceController.php +++ b/app/Http/Controllers/Admin/AdminInstanceController.php @@ -127,6 +127,8 @@ trait AdminInstanceController } Cache::forget('instances:banned:domains'); + Cache::forget('instances:unlisted:domains'); + Cache::forget('instances:auto_cw:domains'); return response()->json([]); } diff --git a/app/Util/ActivityPub/Helpers.php b/app/Util/ActivityPub/Helpers.php index 24c83cc87..f6211c314 100644 --- a/app/Util/ActivityPub/Helpers.php +++ b/app/Util/ActivityPub/Helpers.php @@ -26,6 +26,7 @@ use App\Util\ActivityPub\HttpSignature; use Illuminate\Support\Str; use App\Services\ActivityPubFetchService; use App\Services\ActivityPubDeliveryService; +use App\Services\InstanceService; use App\Services\MediaPathService; use App\Services\MediaStorageService; use App\Jobs\MediaPipeline\MediaStoragePipeline; @@ -175,9 +176,7 @@ class Helpers { } } - $bannedInstances = Cache::remember('instances:banned:domains', now()->addHours(12), function() { - return Instance::whereBanned(true)->pluck('domain')->toArray(); - }); + $bannedInstances = InstanceService::getBannedDomains(); if(in_array($host, $bannedInstances)) { return false; @@ -328,6 +327,7 @@ class Helpers { $idDomain = parse_url($id, PHP_URL_HOST); $urlDomain = parse_url($url, PHP_URL_HOST); + if(!self::validateUrl($id)) { return; } @@ -356,6 +356,14 @@ class Helpers { } $ts = is_array($res['published']) ? $res['published'][0] : $res['published']; + if($scope == 'public' && in_array($urlDomain, InstanceService::getUnlistedDomains())) { + $scope = 'unlisted'; + } + + if(in_array($urlDomain, InstanceService::getNsfwDomains())) { + $cw = true; + } + $statusLockKey = 'helpers:status-lock:' . hash('sha256', $res['id']); $status = Cache::lock($statusLockKey) ->get(function () use(