diff --git a/app/Filament/Resources/ResultResource.php b/app/Filament/Resources/ResultResource.php index e50d95488..0b8cae2e8 100644 --- a/app/Filament/Resources/ResultResource.php +++ b/app/Filament/Resources/ResultResource.php @@ -121,7 +121,7 @@ public static function table(Table $table): Table Tables\Columns\TextColumn::make('id') ->label('ID') ->sortable(), - Tables\Columns\TextColumn::make('ip_address') + Tables\Columns\TextColumn::make('data.interface.externalIp') ->label('IP address') ->toggleable() ->toggledHiddenByDefault() @@ -132,13 +132,13 @@ public static function table(Table $table): Table ->toggleable() ->toggledHiddenByDefault() ->sortable(), - Tables\Columns\TextColumn::make('server_id') + Tables\Columns\TextColumn::make('data.server.id') ->label('Server ID') ->toggleable() ->sortable(query: function (Builder $query, string $direction): Builder { return $query->orderBy('data->server->id', $direction); }), - Tables\Columns\TextColumn::make('server_name') + Tables\Columns\TextColumn::make('data.server.name') ->toggleable() ->sortable(query: function (Builder $query, string $direction): Builder { return $query->orderBy('data->server->name', $direction); @@ -152,55 +152,64 @@ public static function table(Table $table): Table Tables\Columns\TextColumn::make('ping') ->toggleable() ->sortable(), - Tables\Columns\TextColumn::make('download_jitter') + Tables\Columns\TextColumn::make('data.download.latency.jitter') + ->label('Download jitter') ->toggleable() ->toggledHiddenByDefault() ->sortable(query: function (Builder $query, string $direction): Builder { return $query->orderBy('data->download->latency->jitter', $direction); }), - Tables\Columns\TextColumn::make('download_latency_high') + Tables\Columns\TextColumn::make('data.download.latency.high') + ->label('Download latency high') ->toggleable() ->toggledHiddenByDefault() ->sortable(query: function (Builder $query, string $direction): Builder { return $query->orderBy('data->download->latency->high', $direction); }), - Tables\Columns\TextColumn::make('download_latency_low') + Tables\Columns\TextColumn::make('data.download.latency.low') + ->label('Download latency low') ->toggleable() ->toggledHiddenByDefault() ->sortable(query: function (Builder $query, string $direction): Builder { return $query->orderBy('data->download->latency->low', $direction); }), - Tables\Columns\TextColumn::make('download_latency_iqm') + Tables\Columns\TextColumn::make('data.download.latency.iqm') + ->label('Download latency iqm') ->toggleable() ->toggledHiddenByDefault() ->sortable(query: function (Builder $query, string $direction): Builder { return $query->orderBy('data->download->latency->iqm', $direction); }), - Tables\Columns\TextColumn::make('upload_jitter') + Tables\Columns\TextColumn::make('data.upload.latency.jitter') + ->label('Upload jitter') ->toggleable() ->toggledHiddenByDefault() ->sortable(query: function (Builder $query, string $direction): Builder { return $query->orderBy('data->upload->latency->jitter', $direction); }), - Tables\Columns\TextColumn::make('upload_latency_high') + Tables\Columns\TextColumn::make('data.upload.latency.high') + ->label('Upload latency high') ->toggleable() ->toggledHiddenByDefault() ->sortable(query: function (Builder $query, string $direction): Builder { return $query->orderBy('data->upload->latency->high', $direction); }), - Tables\Columns\TextColumn::make('upload_latency_low') + Tables\Columns\TextColumn::make('data.upload.latency.low') + ->label('Upload latency low') ->toggleable() ->toggledHiddenByDefault() ->sortable(query: function (Builder $query, string $direction): Builder { return $query->orderBy('data->upload->latency->low', $direction); }), - Tables\Columns\TextColumn::make('upload_latency_iqm') + Tables\Columns\TextColumn::make('data.upload.latency.iqm') + ->label('Upload latency iqm') ->toggleable() ->toggledHiddenByDefault() ->sortable(query: function (Builder $query, string $direction): Builder { return $query->orderBy('data->upload->latency->iqm', $direction); }), - Tables\Columns\TextColumn::make('ping_jitter') + Tables\Columns\TextColumn::make('data.ping.jitter') + ->label('Ping jitter') ->toggleable() ->toggledHiddenByDefault() ->sortable(query: function (Builder $query, string $direction): Builder { diff --git a/app/Jobs/Speedtests/ExecuteOoklaSpeedtest.php b/app/Jobs/Speedtests/ExecuteOoklaSpeedtest.php index 2f7d056c5..6aed3e31b 100644 --- a/app/Jobs/Speedtests/ExecuteOoklaSpeedtest.php +++ b/app/Jobs/Speedtests/ExecuteOoklaSpeedtest.php @@ -42,26 +42,7 @@ public function __construct( */ public function handle(): void { - /** - * Check for an internet connection first. - */ - $ping = new Ping( - host: config('speedtest.ping_url'), - timeout: 3, - ); - - if ($ping->ping() === false) { - $this->result->update([ - 'data' => [ - 'type' => 'log', - 'level' => 'error', - 'message' => 'Could not resolve host.', - ], - 'status' => ResultStatus::Failed, - ]); - - SpeedtestFailed::dispatch($this->result); - + if (! $this->checkForInternetConnection()) { return; } @@ -104,4 +85,34 @@ public function handle(): void SpeedtestCompleted::dispatch($this->result); } + + protected function checkForInternetConnection(): bool + { + // Skip checking for internet connection if ping url isn't set (disabled) + if (blank(config('speedtest.ping_url'))) { + return true; + } + + $ping = new Ping( + host: config('speedtest.ping_url'), + timeout: 3, + ); + + if ($ping->ping() === false) { + $this->result->update([ + 'data' => [ + 'type' => 'log', + 'level' => 'error', + 'message' => 'Could not resolve host.', + ], + 'status' => ResultStatus::Failed, + ]); + + SpeedtestFailed::dispatch($this->result); + + return false; + } + + return true; + } } diff --git a/config/speedtest.php b/config/speedtest.php index 15398c7fc..4b62be480 100644 --- a/config/speedtest.php +++ b/config/speedtest.php @@ -4,9 +4,9 @@ return [ - 'build_date' => Carbon::parse('2024-06-07'), + 'build_date' => Carbon::parse('2024-06-09'), - 'build_version' => 'v0.20.3', + 'build_version' => 'v0.20.4', /** * General settings. @@ -29,7 +29,7 @@ /** * Speedtest settings. */ - 'ping_url' => env('SPEEDTEST_PING_URL', '1.1.1.1'), + 'ping_url' => env('SPEEDTEST_PING_URL'), 'schedule' => env('SPEEDTEST_SCHEDULE'),