Skip to content

Commit a0da6ec

Browse files
committed
Update InstanceService, improve unlisted/banned network post filtering
1 parent 87cff47 commit a0da6ec

File tree

3 files changed

+35
-3
lines changed

3 files changed

+35
-3
lines changed

app/Services/InstanceService.php

+15-1
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,14 @@
77

88
class InstanceService
99
{
10+
const CACHE_KEY_BY_DOMAIN = 'pf:services:instance:by_domain:';
1011
const CACHE_KEY_BANNED_DOMAINS = 'instances:banned:domains';
1112
const CACHE_KEY_UNLISTED_DOMAINS = 'instances:unlisted:domains';
1213
const CACHE_KEY_NSFW_DOMAINS = 'instances:auto_cw:domains';
1314

1415
public static function getByDomain($domain)
1516
{
16-
return Cache::remember('pf:services:instance:by_domain:'.$domain, 3600, function() use($domain) {
17+
return Cache::remember(self::CACHE_KEY_BY_DOMAIN.$domain, 3600, function() use($domain) {
1718
return Instance::whereDomain($domain)->first();
1819
});
1920
}
@@ -50,4 +51,17 @@ public static function software($domain)
5051
return $instance->software;
5152
});
5253
}
54+
55+
public static function refresh()
56+
{
57+
Cache::forget(self::CACHE_KEY_BANNED_DOMAINS);
58+
Cache::forget(self::CACHE_KEY_UNLISTED_DOMAINS);
59+
Cache::forget(self::CACHE_KEY_NSFW_DOMAINS);
60+
61+
self::getBannedDomains();
62+
self::getUnlistedDomains();
63+
self::getNsfwDomains();
64+
65+
return true;
66+
}
5367
}

app/Services/NetworkTimelineService.php

+12-1
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,11 @@ public static function warmCache($force = false, $limit = 100)
7777
if(self::count() == 0 || $force == true) {
7878
$hideNsfw = config('instance.hide_nsfw_on_public_feeds');
7979
Redis::del(self::CACHE_KEY);
80+
$filteredDomains = collect(InstanceService::getBannedDomains())
81+
->merge(InstanceService::getUnlistedDomains())
82+
->unique()
83+
->values()
84+
->toArray();
8085
$ids = Status::whereNotNull('uri')
8186
->whereScope('public')
8287
->when($hideNsfw, function($q, $hideNsfw) {
@@ -88,7 +93,13 @@ public static function warmCache($force = false, $limit = 100)
8893
->where('created_at', '>', now()->subHours(config('instance.timeline.network.max_hours_old')))
8994
->orderByDesc('created_at')
9095
->limit($limit)
91-
->pluck('id');
96+
->pluck('uri', 'id');
97+
$ids = $ids->filter(function($k, $v) use($filteredDomains) {
98+
$domain = parse_url($k, PHP_URL_HOST);
99+
return !in_array($domain, $filteredDomains);
100+
})->map(function($k, $v) {
101+
return $v;
102+
})->flatten();
92103
foreach($ids as $id) {
93104
self::add($id);
94105
}

app/Util/ActivityPub/Helpers.php

+8-1
Original file line numberDiff line numberDiff line change
@@ -510,7 +510,14 @@ public static function storeStatus($url, $profile, $activity)
510510
$status->created_at->gt(now()->subHours(config('instance.timeline.network.max_hours_old'))) &&
511511
(config('instance.hide_nsfw_on_public_feeds') == true ? $status->is_nsfw == false : true)
512512
) {
513-
NetworkTimelineService::add($status->id);
513+
$filteredDomains = collect(InstanceService::getBannedDomains())
514+
->merge(InstanceService::getUnlistedDomains())
515+
->unique()
516+
->values()
517+
->toArray();
518+
if(!in_array($urlDomain, $filteredDomains)) {
519+
NetworkTimelineService::add($status->id);
520+
}
514521
}
515522

516523
IncrementPostCount::dispatch($pid)->onQueue('low');

0 commit comments

Comments
 (0)