diff --git a/app/Livewire/Server/Security/Patches.php b/app/Livewire/Server/Security/Patches.php index b7d17a61d..eca4bbcd6 100644 --- a/app/Livewire/Server/Security/Patches.php +++ b/app/Livewire/Server/Security/Patches.php @@ -6,6 +6,7 @@ use App\Actions\Server\CheckUpdates; use App\Actions\Server\UpdatePackage; use App\Events\ServerPackageUpdated; use App\Models\Server; +use App\Notifications\Server\ServerPatchCheck; use Livewire\Component; class Patches extends Component @@ -96,6 +97,89 @@ class Patches extends Component } } + public function sendTestEmail() + { + if (! isDev()) { + $this->dispatch('error', message: 'Test email functionality is only available in development mode.'); + + return; + } + + try { + // Get current patch data or create test data if none exists + $testPatchData = $this->createTestPatchData(); + + // Send test notification + $this->server->team->notify(new ServerPatchCheck($this->server, $testPatchData)); + + $this->dispatch('success', 'Test email sent successfully! Check your email inbox.'); + } catch (\Exception $e) { + $this->dispatch('error', message: 'Failed to send test email: '.$e->getMessage()); + } + } + + private function createTestPatchData(): array + { + // If we have real patch data, use it + if (isset($this->updates) && is_array($this->updates) && count($this->updates) > 0) { + return [ + 'total_updates' => $this->totalUpdates, + 'updates' => $this->updates, + 'osId' => $this->osId, + 'package_manager' => $this->packageManager, + ]; + } + + // Otherwise create realistic test data + return [ + 'total_updates' => 8, + 'updates' => [ + [ + 'package' => 'docker-ce', + 'current_version' => '24.0.7-1', + 'new_version' => '25.0.1-1', + ], + [ + 'package' => 'nginx', + 'current_version' => '1.20.2-1', + 'new_version' => '1.22.1-1', + ], + [ + 'package' => 'kernel-generic', + 'current_version' => '5.15.0-89', + 'new_version' => '5.15.0-91', + ], + [ + 'package' => 'openssh-server', + 'current_version' => '8.9p1-3', + 'new_version' => '9.0p1-1', + ], + [ + 'package' => 'curl', + 'current_version' => '7.81.0-1', + 'new_version' => '7.85.0-1', + ], + [ + 'package' => 'git', + 'current_version' => '2.34.1-1', + 'new_version' => '2.39.1-1', + ], + [ + 'package' => 'python3', + 'current_version' => '3.10.6-1', + 'new_version' => '3.11.0-1', + ], + [ + 'package' => 'htop', + 'current_version' => '3.2.1-1', + 'new_version' => '3.2.2-1', + ], + ], + 'osId' => $this->osId ?? 'ubuntu', + 'package_manager' => $this->packageManager ?? 'apt', + ]; + } + public function render() { return view('livewire.server.security.patches'); diff --git a/resources/views/livewire/server/security/patches.blade.php b/resources/views/livewire/server/security/patches.blade.php index 560d512bf..f8b51f34e 100644 --- a/resources/views/livewire/server/security/patches.blade.php +++ b/resources/views/livewire/server/security/patches.blade.php @@ -22,6 +22,10 @@ soon.
Status notifications sent every week.
You can disable notifications in the notification settings." /> Check Now + @if (isDev()) + + Send Test Email (dev only) + @endif
Update your servers semi-automatically.