From f653641e2bf46e02efba8ac683448152551728ef Mon Sep 17 00:00:00 2001 From: Roardom Date: Fri, 19 Apr 2024 14:17:42 +0000 Subject: [PATCH] fix: connectivity check on external tracker The external tracker updates the peer row and doesn't touch the redis cache. --- app/Http/Controllers/TorrentPeerController.php | 2 +- app/Http/Controllers/User/UserController.php | 2 +- resources/views/livewire/user-active.blade.php | 4 +++- resources/views/torrent/peers.blade.php | 4 +++- resources/views/user/profile/show.blade.php | 4 +++- 5 files changed, 11 insertions(+), 5 deletions(-) diff --git a/app/Http/Controllers/TorrentPeerController.php b/app/Http/Controllers/TorrentPeerController.php index 9862ea7e4d..3c501cceab 100644 --- a/app/Http/Controllers/TorrentPeerController.php +++ b/app/Http/Controllers/TorrentPeerController.php @@ -30,7 +30,7 @@ public function index(int $id): \Illuminate\Contracts\View\Factory|\Illuminate\V 'torrent' => $torrent, 'peers' => Peer::query() ->with('user') - ->select(['torrent_id', 'user_id', 'uploaded', 'downloaded', 'left', 'port', 'agent', 'created_at', 'updated_at', 'seeder', 'active', 'visible']) + ->select(['torrent_id', 'user_id', 'uploaded', 'downloaded', 'left', 'port', 'agent', 'created_at', 'updated_at', 'seeder', 'active', 'visible', 'connectable']) ->selectRaw('INET6_NTOA(ip) as ip') ->where('torrent_id', '=', $id) ->orderByDesc('active') diff --git a/app/Http/Controllers/User/UserController.php b/app/Http/Controllers/User/UserController.php index e0962114e9..4d861792d8 100644 --- a/app/Http/Controllers/User/UserController.php +++ b/app/Http/Controllers/User/UserController.php @@ -90,7 +90,7 @@ public function show(Request $request, User $user): \Illuminate\Contracts\View\F 'invitedBy' => Invite::where('accepted_by', '=', $user->id)->first(), 'clients' => $user->peers() ->select('agent', 'port') - ->selectRaw('INET6_NTOA(ip) as ip, MIN(created_at) as created_at, MAX(updated_at) as updated_at, COUNT(*) as num_peers') + ->selectRaw('INET6_NTOA(ip) as ip, MIN(created_at) as created_at, MAX(updated_at) as updated_at, COUNT(*) as num_peers, MAX(connectable) as connectable') ->groupBy(['ip', 'port', 'agent']) ->where('active', '=', true) ->get(), diff --git a/resources/views/livewire/user-active.blade.php b/resources/views/livewire/user-active.blade.php index 7a1c986d08..7f80a97640 100644 --- a/resources/views/livewire/user-active.blade.php +++ b/resources/views/livewire/user-active.blade.php @@ -294,7 +294,9 @@ class="user-active__name" @php $connectable = null; - if (cache()->has('peers:connectable:' . $active->ip . '-' . $active->port . '-' . $active->agent)) { + if (config('announce.external_tracker.is_enabled')) { + $connectable = $active->connectable; + } elseif (cache()->has('peers:connectable:' . $active->ip . '-' . $active->port . '-' . $active->agent)) { $connectable = cache()->get('peers:connectable:' . $active->ip . '-' . $active->port . '-' . $active->agent); } @endphp diff --git a/resources/views/torrent/peers.blade.php b/resources/views/torrent/peers.blade.php index 1d2092f309..03d1ae38f1 100644 --- a/resources/views/torrent/peers.blade.php +++ b/resources/views/torrent/peers.blade.php @@ -106,7 +106,9 @@ class="nav-tab__link" @if (\config('announce.connectable_check') == true) @php $connectable = false; - if (cache()->has('peers:connectable:' . $peer->ip . '-' . $peer->port . '-' . $peer->agent)) { + if (config('announce.external_tracker.is_enabled')) { + $connectable = $peer->connectable; + } elseif (cache()->has('peers:connectable:' . $peer->ip . '-' . $peer->port . '-' . $peer->agent)) { $connectable = cache()->get('peers:connectable:' . $peer->ip . '-' . $peer->port . '-' . $peer->agent); } @endphp diff --git a/resources/views/user/profile/show.blade.php b/resources/views/user/profile/show.blade.php index 74a35ec206..bd045c8109 100644 --- a/resources/views/user/profile/show.blade.php +++ b/resources/views/user/profile/show.blade.php @@ -303,7 +303,9 @@ class="user-search__avatar" @if (\config('announce.connectable_check') == true) @php $connectable = false; - if (cache()->has('peers:connectable:' . $client->ip . '-' . $client->port . '-' . $client->agent)) { + if (config('announce.external_tracker.is_enabled')) { + $connectable = $client->connectable; + } elseif (cache()->has('peers:connectable:' . $client->ip . '-' . $client->port . '-' . $client->agent)) { $connectable = cache()->get('peers:connectable:' . $client->ip . '-' . $client->port . '-' . $client->agent); } @endphp