From 2fbb898c892c954c4bfbf645c5ed732b325842e5 Mon Sep 17 00:00:00 2001 From: peaklabs-dev <122374094+peaklabs-dev@users.noreply.github.com> Date: Mon, 3 Feb 2025 22:37:12 +0100 Subject: [PATCH] feat(ssl): regenerate SSL certs job --- app/Jobs/RegenerateSslCertJob.php | 66 +++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 app/Jobs/RegenerateSslCertJob.php diff --git a/app/Jobs/RegenerateSslCertJob.php b/app/Jobs/RegenerateSslCertJob.php new file mode 100644 index 000000000..387408b89 --- /dev/null +++ b/app/Jobs/RegenerateSslCertJob.php @@ -0,0 +1,66 @@ +server_id) { + $query->where('server_id', $this->server_id); + } + + if (! $this->force_regeneration) { + $query->where('valid_until', '<=', now()->addDays(14)); + } + + $certificates = $query->get(); + + if ($certificates->isEmpty()) { + return; + } + + $regenerated = collect(); + + foreach ($certificates as $certificate) { + try { + SSLHelper::generateSslCertificate( + commonName: $certificate->common_name, + subjectAlternativeNames: $certificate->subject_alternative_names, + resourceType: $certificate->resource_type, + resourceId: $certificate->resource_id, + serverId: $certificate->server_id, + validityDays: 365 + ); + $regenerated->push($certificate); + } catch (\Exception $e) { + Log::error('Failed to regenerate SSL certificate: '.$e->getMessage()); + } + } + + if ($regenerated->isNotEmpty()) { + $this->team?->notify(new SslExpirationNotification($regenerated)); + } + } +}